sveltfy
Version:
A material design framework/component library for Svelte, with full support for light and dark themes and customisability.
22 lines (20 loc) • 615 B
JavaScript
const filter = (classes) => classes.filter((x) => !!x);
const format = (classes) => classes.split(' ').filter((x) => !!x);
/**
* @param node {Element}
* @param classes {Array<string>}
*/
export default (node, _classes) => {
let classes = _classes;
node.classList.add(...format(filter(classes).join(' ')));
return {
update(_newClasses) {
const newClasses = _newClasses;
newClasses.forEach((klass, i) => {
if (klass) node.classList.add(...format(klass));
else if (classes[i]) node.classList.remove(...format(classes[i]));
});
classes = newClasses;
},
};
};