3.3.1 • Published 6 years ago
create-element-ns v3.3.1
create-element-ns
dom createElement and createElementNS hyperscript with svg, namespace and selector support
• Example • Features • API • License
Example
var CE = require('create-element-ns')
var el = CE.el
// selectors or attributes
var divEl1 = el('div.c1#i1[style="color:blue"].c2', {onclick: function() {}})(),
divEl2 = el('div.i1', {style: {color: 'blue'}, props:{className: 'c1 c2', , onclick: function() {}}})(),
divEl3 = el('div.c1#i1[style="color:blue"].c2')({onclick: function() {}}),
// namespace in different ways
var circleEl1 = el('svg:circle')(),
circleEl2 = el.svg('circle')(),
circleEl3 = el('circle[xmlns=http://www.w3.org/2000/svg]')
circleEl3 = el('circle', {xmlns : 'http://www.w3.org/2000/svg'})
// partial application to create multiple modified clones
var pFn = el('p'),
pEl = pFn({textContent: 'x'})
// factory functions can be nested, with or without arrays
var olFn = el('ol', el('li', 'one'), [el('li', 'two'), el('li', 'three')]),
olEl = pFn()Features
- namespaced tag and namespaced attribute support
- svg namespace and utility functions pre-defined
- w3 string selector API, including attributes
- element decorators for element properties and attributes
- ability to inject a
document APIfor server and/or testing (e.g.jsdom) - ability to create an element or an element factory
- ability to create additional namespaces and utility namespaced functions
There are many hyperscript modules out there (docrel, create-element-from-selector, domator, makeelement, simpel to name a few) but they either don't support namespaces, like svg or are more oriented to virtual-dom applications.
API
Main methods
To create an element factory (function that return a DOM Element):
el(definition [, options][, content])=>elementFactoryel.svg(definition [, options][, content])=>elementFactoryelementFactory([optionObject])=>DOM Element
Parameters and outputs
definition: a string selector,elementFactoryor DOM Elementoptions:{properties:{}, attributes:{}, style:{}, dataset:{}}or{props:{}, attrs:{}, style:{}, dataset:{}}content: optional series or array of string,ElementorelementFactory
Optional additional utilities
CE.global.documentinjects an external document API likejsdom. Uses the globaldocumentif not specified.CE.namespacesadds additional namespace prefix (svg is already defined). E.g.CE.namespaces.xlink: 'http://www.w3.org/1999/xlink'CE.decoratorsto add element decorators E.g.CE.decorators.a = CE.decorators.attributes
License
3.3.1
6 years ago
3.3.0
9 years ago
3.2.1
9 years ago
3.2.0
9 years ago
3.1.0
9 years ago
3.0.1
9 years ago
3.0.0
9 years ago
2.1.2
9 years ago
2.1.1
9 years ago
2.0.1
9 years ago
2.0.0
9 years ago
1.1.2
10 years ago
1.1.1
10 years ago
1.0.1
10 years ago
1.0.0
10 years ago
0.7.0
10 years ago
0.6.0
10 years ago
0.5.0
10 years ago
0.4.0
10 years ago
0.3.0
10 years ago
0.2.0
10 years ago
0.1.0
10 years ago
0.0.1
10 years ago