0.1.6 • Published 9 years ago
cinco v0.1.6
cinco
HTML5 as ES6 objects - easy to manipulate and render. Handy for rapid prototyping. Is isomorphic.
Overview
Example on how to create a HTML5 document and then render it to string
import { Document, Element } from cinco;
// Create a new HTML5 document
let document = new Document()
.add(
new Element('title').text('Good morning')
);
// Update DOM
if ( new Date().getHours > 12 ) {
document.find('title').get(0).text('Good evening');
}
// Render to string
document.render(); // see results below
<!doctype html>
<meta charset="utf-8" />
<title>Good morning</title>
ES5 support
var cinco = require('cinco/dist'),
Element = cinco.Element,
Document = cinco.Document;
Element
new Element(
{ String | Function } selector,
{ Object | Function }? attributes,
{ [Element] | Elements | Function | [Function] }? children
)
// Create a h1 element
let myElement = new Element('h1');
// Get HTML source as string
myElement.render() // <h1></h1>
You can declare attributes in the selector as well:
new Element('h1#foo.bar.barz'); // <h1 id="foo" class="bar barz"></h1>
Attributes
Attributes are passed as an object:
new Element('a', { 'href': '/' }); // <a href="/"></a>
// You can also use the `attr` method
new Element('a').attr('href', '/'); // <a href="/"></a>
// Pass a function
You can also pass functions:
var props = {
signedIn: true,
user: {
id: 123
}
}
new Element('a', { href: () => '/' }); // <a href="/"></a>
new Element('a', { href: async() => await async() }); // You can use async functions
Manipulate text
let p = new Element('p');
// Setter
p.text('Hello world!') // <p>Hello world!</p>
// Gettter
p.text(); // Hello world!
Conditional rendering
The conditions, if one evaluated to false, will skip the rendering of the element.
new Element('p').condition(true); // <p></p>
new Element('p').condition(false); //
// You can use functions
let element = new Element('p').condition(async() => await async());
// Whether or not all conditions return to true
element.satisfies(); // true|false
Append children
new Element('foo').add(new Element('bar')); // <foo><bar></bar></foo>
Clearing all children
new Element('foo').add(new Element('bar')).empty(); // <foo></foo>
Remove a child
let form = new Element('form');
let fieldset = new Element('fieldset');
form.add(fieldset);
form.render(); // <form><fieldset></fieldset></form>
// Act like an array filter() => true gets removed
form.remove(child => child.is('fieldset'));
form.render(); // <form></form>
Find
Utility to find and manipulate elements. Returns Elements
let form = new Element('form').add(
new Element('fieldset').add(
new Element('legend').text('Legend'),
new Element('section.form-group').add(
new Element('button')
)
)
);
// Find button and add text to it
form.find('button').each(button => button.text('Click me!'));
// Find an element by text
form.findByText('Click me!');
// Find an element by text using a regex
form.findByText(/click/i);
Classes
let elem = new Element('.c1', { className: 'c2 c3' }); // <div class="c1 c2 c3"></div>
let elem = new Element('.c1', { className: ['c2', 'c3'] }); // <div class="c1 c2 c3"></div>
let elem = new Element('.c1').addClass('c2', 'c3'); // <div class="c1 c2 c3"></div>
elem.removeClass('c3'); // <div class="c1 c2"></div>
elem.hasClass('c3'); // false
0.1.6
9 years ago
0.1.5
10 years ago
0.1.3
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.12
10 years ago
0.0.11
10 years ago
0.0.10
10 years ago
0.0.9
10 years ago
0.0.8
10 years ago
0.0.7
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago