@simplybuilder/core-dom
v2.0.1
Published
DOM manipulation module for @simplybuilder/core. Provides element creation, attribute management, DOM tree construction, and element removal with optional event module integration.
Maintainers
Readme
@simplybuilder/core-dom
DOM manipulation module for @simplybuilder/core. Provides element creation, attribute management, DOM tree construction, and element removal with optional event module integration.
Installation
pnpm add @simplybuilder/core-domUsage
import { createHTMLElement, createSVGElement, createFromStruct, removeElement, domModuleExtends } from '@simplybuilder/core-dom';
// Simple element creation
const btn = createHTMLElement({
element: { type: 'button', attr: [{ name: 'class', value: 'primary' }] },
});
// Nested DOM from struct
const section = createFromStruct({
struct: {
element: 'section',
dataset: { state: 'main' },
children: [
{ element: 'h1', text: 'Title' },
{ element: 'p', text: 'Content' },
],
},
});
// Element removal with cleanup
removeElement(section);
// → removes from store, cleans up event listeners, removes from DOM
// Integration with event module (optional, zero dependency)
import { eventRegister, addEventToStore, removeAllEventsFromStore } from '@simplybuilder/core-event';
domModuleExtends({
name: 'SBCoreEvent',
version: '2.0.0',
EventActions: { /* registered actions */ },
addEventToStore,
removeAllEventsFromStore,
});
// Now createFromStruct processes struct.event config
const el = createFromStruct({
struct: { element: 'button', event: { type: 'click', action: 'handleClick' } },
});API
domModuleExtends(data)— Register an extension module (e.g., EventModule) for declarative event bindingcreateHTMLElement(options)— Create HTML elements with attributes, dataset, shadow DOMcreateSVGElement(options)— Create SVG elements with namespaced attributescreateFromStruct(struct)— Build nested DOM trees from struct with optional event bindingremoveElement(element)— Remove element, clean up store and event listeners recursivelyaddElementToStore({ key, value })— Store element reference by keygetElementFromStore(key)— Retrieve stored element by keyremoveElementFromStore({ key, mode, EventModule? })— Remove from store (mode 1: with event cleanup, mode 2: store only)setAttr({ element, attrs })— Set attributes on elementsetAttrNS({ element, attrs })— Set namespaced attributessetData({ element, dataset })— Set dataset propertiesDomModule— Frozen singleton with all capabilities
Build from Source
pnpm install
pnpm build