1.0.0 • Published 3 months ago

simple-dom-make v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
3 months ago

Simple DOM builder

Lightweight, no headache JSON to DOM utility.

What is does

Feed it a JS object, get a DOM element back.

What is doesn't

Replace a templating engine, or any kind of state management. This was never meant to replace React or anything.

Why use it ?

No config, lightweight, and does the heavy lifting for building a DOM from JS.

Nice to use for vanilla JS websites that need to remain nice and simple.

Usage

Most basic

import DomTreeBuilder from 'simple-dom-make';

// Get your root element
const rootElement = document.querySelector("#root");

// Build the inside as an object literal
const tree = {
    tag: "div",
    attributes: {
        "class": "container"
    },
    children: [
        {
            tag:"p",
            content: "A text paragraph"
        },
        {
            tag: "p",
            children: [
                {
                    tag: "TEXTNODE",
                    content: "The start of this phrase, "
                },
                {
                    tag: "b",
                    content: "followed by bold words"
                },
                {
                    tag: "TEXTNODE",
                    content: " to make a statement."
                }
            ]
        }
    ]
}
// Tada.
rootElement.append(DomTreeBuilder.make(tree));

This would output the following HTML in your browser :

<div class="container">
    <p>A text paragraph</p>
    <p>The start of this phrase, <b>followed by bold words</b> to make a statement."</p>
</div>

Dynamic

Use any kind of logic to build your tree.

const users = [
    {
        id: 35,
        name: "John Doe"
    },
    
    {
        id: 53,
        name: "Jane Don't"
    }
]

const usersTree = {
    tag: "div",
    attributes: {
        "class": "container"
    },
    children: users.map(user => ({
        tag: "div",
        attributes: {
            "class": "card",
            "data-user-id": user.id
        },
        children: [
            {
                tag: "h4",
                content: user.name
            }
        ]
    }))
}
rootElement.append(DomTreeBuilder.make(usersTree));

This would output the following HTML in your browser :

<div class="container">
    <div class="card" data-user-id="35">
        <h4>John Doe</h4>
    </div>
    <div class="card" data-user-id="53">
        <h4>Jane Don't</h4>
    </div>
</div>

The JS object in details

What you can feed the make method with. | Property | Type | Note | | ----------------------- | ------ | --------------------------------------------------------------------------------------------- | | tag | string | Should be an HTML tag (a, abbr, div...) or "TEXTNODE" if you only want to give it plain text. | | attributes (optional) | object | Key value pairs, where the key is the attribute name, and the value its value. | | content (optional) | string | Text content of the element - shortcut for putting a TEXTNODE as a child element | | children (optional) | array | An array of that same structure |