API Reference
Every public Domma call, searchable - and a one-page cheat sheet
All calls
Search by name or description, sort by any column, or right-click the table to filter by module, group and export.
Cheat sheet
Domma Reference
Complete API cheat sheet for rapid development
Global Aliases
Quick access to all Domma functionality via global shortcuts
Core Aliases
$Domma()
_Domma.utils
MDomma.models
DDomma.dates()
SDomma.storage
DOM Manipulation
90+ jQuery-compatible methods for selecting, traversing, and manipulating DOM elements
Selectors
$('.class'), $('#id'), $('tag')
$(element), $('<div>new</div>')
$(element), $('<div>new</div>')
$(selector)
Select elements
$(selector, context)
Select within context
$(element)
Wrap element
$(html)
Create elements
Traversal (22)
$('.item').parent().addClass('active')
find(selector)
Find descendants
parent(), parents()
Navigate up
children()
Direct children
siblings()
Siblings
next(), prev()
Adjacent
first(), last(), eq()
Position
filter(), not(), is()
Filter
Content
$('#output').html('<b>Bold</b>')
html()
Get/set HTML
text()
Get/set text
val()
Get/set value
Attributes
$('img').attr('src', 'image.jpg')
attr(), removeAttr()
Attributes
prop(), removeProp()
Properties
data(), removeData()
Data attributes
CSS & Classes
$('.box').addClass('active').css('color', 'red')
addClass()
Add classes
removeClass()
Remove classes
toggleClass()
Toggle classes
hasClass()
Check class
css()
Get/set styles
Events (22+)
$('.btn').on('click', handler)
$('.list').on('click', '.item', handler)
$('.list').on('click', '.item', handler)
on(event, handler)
Bind event
on(event, selector, handler)
Delegate
off(), one()
Remove, once
trigger()
Fire event
click(), focus(), etc.
Shortcuts
Utilities (_)
120+ Lodash-compatible utility functions for data manipulation
Array Methods
_.map([1,2,3], x => x * 2)
_.filter(users, u => u.active)
_.filter(users, u => u.active)
map, filter, reduce
Transform
forEach, each
Iterate
find, findIndex
Search
sortBy, orderBy
Sort
chunk, partition
Split
Object Methods
_.pick(obj, ['name', 'age'])
_.groupBy(users, 'role')
_.groupBy(users, 'role')
keys, values, entries
Access
pick, omit
Select fields
merge, assign
Combine
groupBy, countBy
Group
String Methods
_.camelCase('hello world')
_.template('Hello {{name}}')(data)
_.template('Hello {{name}}')(data)
camelCase, kebabCase
Case
capitalize, upperFirst
Format
template
Templates
escape, unescape
Safety
Function Methods
_.debounce(fn, 300)
_.throttle(fn, 100)
_.throttle(fn, 100)
debounce
Delay execution
throttle
Limit frequency
once
Execute once
memoize
Cache results
Models (M)
Reactive data models with validation, computed properties, and pub/sub
Model Creation
const user = M.create({
name: 'John',
age: 30
})
name: 'John',
age: 30
})
M.create(data)
Create model
M.extend(proto)
Prototype
model.get(key)
Get value
model.set(key, value)
Set value
Reactivity
model.on('change:name', handler)
M.publish('topic', data)
M.publish('topic', data)
model.on(event, handler)
Listen changes
M.publish(topic, data)
Publish
M.subscribe(topic, handler)
Subscribe
Storage (S)
Enhanced localStorage wrapper with JSON support and fallbacks
Storage Operations
S.set('user', {name: 'John'})
const user = S.get('user')
const user = S.get('user')
S.set(key, value)
Store data
S.get(key, default)
Retrieve data
S.remove(key)
Delete item
S.clear()
Clear all
S.keys()
List keys
UI Elements
19 pre-built UI components with consistent API
Core Elements
Domma.elements.modal('#my-modal')
Domma.elements.alert('Hello!')
Domma.elements.alert('Hello!')
modal, dialog
Overlays
toast, alert
Messages
tabs, accordion
Containers
dropdown, tooltip
Overlays
carousel, timeline
Content
Quick Actions
Copy these common patterns for rapid development
Common Patterns
AJAX Form Submit
Dynamic List
Event Delegation
Modal Confirmation
<div class="hero hero-center bg-ambient-float-orbs">
<div class="hero-content">
<div class="hero-title">Domma Reference</div>
<div class="hero-subtitle">Complete API cheat sheet for rapid development</div>
</div>
</div>
<!-- Aliases Section -->
<div class="section-intro">
<h2><span data-icon="star" class="icon"></span> Global Aliases</h2>
<p>Quick access to all Domma functionality via global shortcuts</p>
</div>
<div class="reference-grid">
<div class="reference-card">
<div class="reference-header">
<span data-icon="edit" class="icon"></span>
<h3>Core Aliases</h3>
</div>
<div class="reference-body">
<div class="method-item">
<span><span class="alias-badge">$</span><span class="method-name">Domma()</span></span>
<button type="button" class="copy-btn" data-copy="$('.selector')" title="Copy example">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span><span class="alias-badge">_</span><span class="method-name">Domma.utils</span></span>
<button type="button" class="copy-btn" data-copy="_.map(array, fn)" title="Copy example">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span><span class="alias-badge">M</span><span class="method-name">Domma.models</span></span>
<button type="button" class="copy-btn" data-copy="M.create({})" title="Copy example">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span><span class="alias-badge">D</span><span class="method-name">Domma.dates()</span></span>
<button type="button" class="copy-btn" data-copy="D().format('YYYY-MM-DD')" title="Copy example">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span><span class="alias-badge">S</span><span class="method-name">Domma.storage</span></span>
<button type="button" class="copy-btn" data-copy="S.set('key', value)" title="Copy example">
<span data-icon="copy" class="icon"></span>
</button>
</div>
</div>
</div>
</div>
<!-- DOM Methods Section -->
<div class="section-intro">
<h2><span data-icon="layout" class="icon"></span> DOM Manipulation</h2>
<p>90+ jQuery-compatible methods for selecting, traversing, and manipulating DOM elements</p>
</div>
<div class="reference-grid">
<!-- Selectors -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="search" class="icon"></span>
<h3>Selectors</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('.class'), $('#id'), $('tag')<br>$(element), $('<div>new</div>')</div>
<div class="method-item">
<span class="method-name">$(selector)</span>
<span class="method-desc">Select elements</span>
</div>
<div class="method-item">
<span class="method-name">$(selector, context)</span>
<span class="method-desc">Select within context</span>
</div>
<div class="method-item">
<span class="method-name">$(element)</span>
<span class="method-desc">Wrap element</span>
</div>
<div class="method-item">
<span class="method-name">$(html)</span>
<span class="method-desc">Create elements</span>
</div>
</div>
</div>
<!-- Traversal -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="arrow-right" class="icon"></span>
<h3>Traversal (22)</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('.item').parent().addClass('active')</div>
<div class="method-item">
<span class="method-name">find(selector)</span>
<span class="method-desc">Find descendants</span>
</div>
<div class="method-item">
<span class="method-name">parent(), parents()</span>
<span class="method-desc">Navigate up</span>
</div>
<div class="method-item">
<span class="method-name">children()</span>
<span class="method-desc">Direct children</span>
</div>
<div class="method-item">
<span class="method-name">siblings()</span>
<span class="method-desc">Siblings</span>
</div>
<div class="method-item">
<span class="method-name">next(), prev()</span>
<span class="method-desc">Adjacent</span>
</div>
<div class="method-item">
<span class="method-name">first(), last(), eq()</span>
<span class="method-desc">Position</span>
</div>
<div class="method-item">
<span class="method-name">filter(), not(), is()</span>
<span class="method-desc">Filter</span>
</div>
</div>
</div>
<!-- Content -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="edit" class="icon"></span>
<h3>Content</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('#output').html('<b>Bold</b>')</div>
<div class="method-item">
<span class="method-name">html()</span>
<span class="method-desc">Get/set HTML</span>
</div>
<div class="method-item">
<span class="method-name">text()</span>
<span class="method-desc">Get/set text</span>
</div>
<div class="method-item">
<span class="method-name">val()</span>
<span class="method-desc">Get/set value</span>
</div>
</div>
</div>
<!-- Attributes -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="tag" class="icon"></span>
<h3>Attributes</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('img').attr('src', 'image.jpg')</div>
<div class="method-item">
<span class="method-name">attr(), removeAttr()</span>
<span class="method-desc">Attributes</span>
</div>
<div class="method-item">
<span class="method-name">prop(), removeProp()</span>
<span class="method-desc">Properties</span>
</div>
<div class="method-item">
<span class="method-name">data(), removeData()</span>
<span class="method-desc">Data attributes</span>
</div>
</div>
</div>
<!-- CSS/Classes -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="palette" class="icon"></span>
<h3>CSS & Classes</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('.box').addClass('active').css('color', 'red')</div>
<div class="method-item">
<span class="method-name">addClass()</span>
<span class="method-desc">Add classes</span>
</div>
<div class="method-item">
<span class="method-name">removeClass()</span>
<span class="method-desc">Remove classes</span>
</div>
<div class="method-item">
<span class="method-name">toggleClass()</span>
<span class="method-desc">Toggle classes</span>
</div>
<div class="method-item">
<span class="method-name">hasClass()</span>
<span class="method-desc">Check class</span>
</div>
<div class="method-item">
<span class="method-name">css()</span>
<span class="method-desc">Get/set styles</span>
</div>
</div>
</div>
<!-- Events -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="zap" class="icon"></span>
<h3>Events (22+)</h3>
</div>
<div class="reference-body">
<div class="quick-example">$('.btn').on('click', handler)<br>$('.list').on('click', '.item', handler)</div>
<div class="method-item">
<span class="method-name">on(event, handler)</span>
<span class="method-desc">Bind event</span>
</div>
<div class="method-item">
<span class="method-name">on(event, selector, handler)</span>
<span class="method-desc">Delegate</span>
</div>
<div class="method-item">
<span class="method-name">off(), one()</span>
<span class="method-desc">Remove, once</span>
</div>
<div class="method-item">
<span class="method-name">trigger()</span>
<span class="method-desc">Fire event</span>
</div>
<div class="method-item">
<span class="method-name">click(), focus(), etc.</span>
<span class="method-desc">Shortcuts</span>
</div>
</div>
</div>
</div>
<!-- Utils Section -->
<div class="section-intro">
<h2><span data-icon="layers" class="icon"></span> Utilities (_)</h2>
<p>120+ Lodash-compatible utility functions for data manipulation</p>
</div>
<div class="reference-grid">
<!-- Array -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="list" class="icon"></span>
<h3>Array Methods</h3>
</div>
<div class="reference-body">
<div class="quick-example">_.map([1,2,3], x => x * 2)<br>_.filter(users, u => u.active)</div>
<div class="method-item">
<span class="method-name">map, filter, reduce</span>
<span class="method-desc">Transform</span>
</div>
<div class="method-item">
<span class="method-name">forEach, each</span>
<span class="method-desc">Iterate</span>
</div>
<div class="method-item">
<span class="method-name">find, findIndex</span>
<span class="method-desc">Search</span>
</div>
<div class="method-item">
<span class="method-name">sortBy, orderBy</span>
<span class="method-desc">Sort</span>
</div>
<div class="method-item">
<span class="method-name">chunk, partition</span>
<span class="method-desc">Split</span>
</div>
</div>
</div>
<!-- Object -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="package" class="icon"></span>
<h3>Object Methods</h3>
</div>
<div class="reference-body">
<div class="quick-example">_.pick(obj, ['name', 'age'])<br>_.groupBy(users, 'role')</div>
<div class="method-item">
<span class="method-name">keys, values, entries</span>
<span class="method-desc">Access</span>
</div>
<div class="method-item">
<span class="method-name">pick, omit</span>
<span class="method-desc">Select fields</span>
</div>
<div class="method-item">
<span class="method-name">merge, assign</span>
<span class="method-desc">Combine</span>
</div>
<div class="method-item">
<span class="method-name">groupBy, countBy</span>
<span class="method-desc">Group</span>
</div>
</div>
</div>
<!-- String -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="type" class="icon"></span>
<h3>String Methods</h3>
</div>
<div class="reference-body">
<div class="quick-example">_.camelCase('hello world')<br>_.template('Hello {{name}}')(data)</div>
<div class="method-item">
<span class="method-name">camelCase, kebabCase</span>
<span class="method-desc">Case</span>
</div>
<div class="method-item">
<span class="method-name">capitalize, upperFirst</span>
<span class="method-desc">Format</span>
</div>
<div class="method-item">
<span class="method-name">template</span>
<span class="method-desc">Templates</span>
</div>
<div class="method-item">
<span class="method-name">escape, unescape</span>
<span class="method-desc">Safety</span>
</div>
</div>
</div>
<!-- Function -->
<div class="reference-card">
<div class="reference-header">
<span data-icon="code" class="icon"></span>
<h3>Function Methods</h3>
</div>
<div class="reference-body">
<div class="quick-example">_.debounce(fn, 300)<br>_.throttle(fn, 100)</div>
<div class="method-item">
<span class="method-name">debounce</span>
<span class="method-desc">Delay execution</span>
</div>
<div class="method-item">
<span class="method-name">throttle</span>
<span class="method-desc">Limit frequency</span>
</div>
<div class="method-item">
<span class="method-name">once</span>
<span class="method-desc">Execute once</span>
</div>
<div class="method-item">
<span class="method-name">memoize</span>
<span class="method-desc">Cache results</span>
</div>
</div>
</div>
</div>
<!-- Models Section -->
<div class="section-intro">
<h2><span data-icon="database" class="icon"></span> Models (M)</h2>
<p>Reactive data models with validation, computed properties, and pub/sub</p>
</div>
<div class="reference-grid">
<div class="reference-card">
<div class="reference-header">
<span data-icon="plus" class="icon"></span>
<h3>Model Creation</h3>
</div>
<div class="reference-body">
<div class="quick-example">const user = M.create({<br> name: 'John',<br> age: 30<br>})</div>
<div class="method-item">
<span class="method-name">M.create(data)</span>
<span class="method-desc">Create model</span>
</div>
<div class="method-item">
<span class="method-name">M.extend(proto)</span>
<span class="method-desc">Prototype</span>
</div>
<div class="method-item">
<span class="method-name">model.get(key)</span>
<span class="method-desc">Get value</span>
</div>
<div class="method-item">
<span class="method-name">model.set(key, value)</span>
<span class="method-desc">Set value</span>
</div>
</div>
</div>
<div class="reference-card">
<div class="reference-header">
<span data-icon="bell" class="icon"></span>
<h3>Reactivity</h3>
</div>
<div class="reference-body">
<div class="quick-example">model.on('change:name', handler)<br>M.publish('topic', data)</div>
<div class="method-item">
<span class="method-name">model.on(event, handler)</span>
<span class="method-desc">Listen changes</span>
</div>
<div class="method-item">
<span class="method-name">M.publish(topic, data)</span>
<span class="method-desc">Publish</span>
</div>
<div class="method-item">
<span class="method-name">M.subscribe(topic, handler)</span>
<span class="method-desc">Subscribe</span>
</div>
</div>
</div>
</div>
<!-- More sections would continue similarly... -->
<!-- For brevity, I'll include key sections -->
<!-- Storage Section -->
<div class="section-intro">
<h2><span data-icon="save" class="icon"></span> Storage (S)</h2>
<p>Enhanced localStorage wrapper with JSON support and fallbacks</p>
</div>
<div class="reference-grid">
<div class="reference-card">
<div class="reference-header">
<span data-icon="database" class="icon"></span>
<h3>Storage Operations</h3>
</div>
<div class="reference-body">
<div class="quick-example">S.set('user', {name: 'John'})<br>const user = S.get('user')</div>
<div class="method-item">
<span class="method-name">S.set(key, value)</span>
<span class="method-desc">Store data</span>
</div>
<div class="method-item">
<span class="method-name">S.get(key, default)</span>
<span class="method-desc">Retrieve data</span>
</div>
<div class="method-item">
<span class="method-name">S.remove(key)</span>
<span class="method-desc">Delete item</span>
</div>
<div class="method-item">
<span class="method-name">S.clear()</span>
<span class="method-desc">Clear all</span>
</div>
<div class="method-item">
<span class="method-name">S.keys()</span>
<span class="method-desc">List keys</span>
</div>
</div>
</div>
</div>
<!-- Elements Section -->
<div class="section-intro">
<h2><span data-icon="grid" class="icon"></span> UI Elements</h2>
<p>19 pre-built UI components with consistent API</p>
</div>
<div class="reference-grid">
<div class="reference-card">
<div class="reference-header">
<span data-icon="window" class="icon"></span>
<h3>Core Elements</h3>
</div>
<div class="reference-body">
<div class="quick-example">Domma.elements.modal('#my-modal')<br>Domma.elements.alert('Hello!')</div>
<div class="method-item">
<span class="method-name">modal, dialog</span>
<span class="method-desc">Overlays</span>
</div>
<div class="method-item">
<span class="method-name">toast, alert</span>
<span class="method-desc">Messages</span>
</div>
<div class="method-item">
<span class="method-name">tabs, accordion</span>
<span class="method-desc">Containers</span>
</div>
<div class="method-item">
<span class="method-name">dropdown, tooltip</span>
<span class="method-desc">Overlays</span>
</div>
<div class="method-item">
<span class="method-name">carousel, timeline</span>
<span class="method-desc">Content</span>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="section-intro">
<h2><span data-icon="lightning" class="icon"></span> Quick Actions</h2>
<p>Copy these common patterns for rapid development</p>
</div>
<div class="reference-grid">
<div class="reference-card">
<div class="reference-header">
<span data-icon="copy" class="icon"></span>
<h3>Common Patterns</h3>
</div>
<div class="reference-body">
<div class="method-item">
<span class="method-name">AJAX Form Submit</span>
<button type="button" class="copy-btn" data-copy="$('#form').on('submit', e => { e.preventDefault(); Domma.http.post('/api', new FormData(e.target)); })">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span class="method-name">Dynamic List</span>
<button type="button" class="copy-btn" data-copy="const list = data.map(item => `<li>${item.name}</li>`).join(''); $('#list').html(list);">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span class="method-name">Event Delegation</span>
<button type="button" class="copy-btn" data-copy="$('.container').on('click', '.item', function() { $(this).toggleClass('active'); });">
<span data-icon="copy" class="icon"></span>
</button>
</div>
<div class="method-item">
<span class="method-name">Modal Confirmation</span>
<button type="button" class="copy-btn" data-copy="if (await Domma.elements.confirm('Delete item?')) { /* Delete logic */ }">
<span data-icon="copy" class="icon"></span>
</button>
</div>
</div>
</div>
</div>/**
* Domma Reference - from public/showcase/reference.
*/
export function mount(root) {
$('.copy-btn').on('click', function (e) {
e.preventDefault();
const text = $(this).data('copy');
if (navigator.clipboard) {
navigator.clipboard.writeText(text).then(() => {
showCopyFeedback(this);
});
} else {
// Fallback for older browsers
const textArea = document.createElement('textarea');
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
showCopyFeedback(this);
}
});
function showCopyFeedback(button) {
const $btn = $(button);
const originalIcon = $btn.find('.icon').attr('data-icon');
// Change to check icon
$btn.find('.icon').attr('data-icon', 'check');
$btn.css('color', 'var(--dm-color-success)');
// Reset after 2 seconds
setTimeout(() => {
$btn.find('.icon').attr('data-icon', originalIcon);
$btn.css('color', '');
}, 2000);
}
// Enhance hover effects
$('.reference-card').on('mouseenter', function () {
$(this).addClass('shadow-lg');
}).on('mouseleave', function () {
$(this).removeClass('shadow-lg');
});
}