
PRO DOM Generator
Very simple DOM generator with types declaration.
Why?
Installation
From NPM
npm install dom-plus
pnpm add dom-plus
yarn add dom-plus
Then import it to your project.
import { h } from 'dom-plus'
const { h } = require('dom-plus')
In browser
<script src="https://unpkg.com/dom-plus"></script>
<script>
const { h } = window.DOMPlus
</script>
Or... Why not ESM?
import { h } from 'https://unpkg.com/dom-plus?module'
Usage
General usage
const block = h('div', { class: 'foo', style: 'color: red' }, [
h('span', 'bar'),
'baz',
])
console.info(block.outerHTML)
CSS styles
Why not use CSS styles as an object?
const redBlock = h('div', { style: { color: 'red' } }, 'Hey, I am red!')
.$css({
backgroundColor: 'black',
})
.$css('font-size', '2em')
It's working! Even with the types!
Class names
const block = h('div', { class: ['foo', 'bar'] }, 'Hey, I have classes!')
.$addClass('baz')
.$removeClass('foo')
Needless to say, it's working too!!
Event listeners
const button = h(
'button',
{
onClick: () => {
alert('Hello, world!')
},
},
'Click me!'
)
const stop = button.$on('click', (e) => {
e.preventDefault()
e.stopPropagation()
alert('This alert will be shown only once!')
stop()
})
IT JUST WORKS!!!
Pass through Element as first argument
So you can modify the element.
const block = h(
document.querySelector('#some-element'),
{ class: 'foo' },
'Hey, I am a block!'
)
block.$css('color', 'red').$addClass('bar')
Why are you still reading this?!! Just try it!!!!!
MIT License
Copyright (c) 2023-present dragon-fish