@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
38 lines (33 loc) • 992 B
JavaScript
/* eslint-env browser */
import usage from './toggle-group.usage.js';
export default function(host) {
host.view.define('toggle', function(el, config, data, context) {
const {
content,
disabled = false,
onToggle,
value,
text = String(value).replace(/^./, m => m.toUpperCase())
} = config;
let {
checked = false
} = config;
if (disabled) {
el.classList.add('disabled');
} else if (typeof onToggle === 'function') {
el.addEventListener('click', () => {
checked = !checked;
onToggle(checked, value);
});
el.classList.add('onclick');
}
if (checked) {
el.classList.add('checked');
}
if (content) {
return host.view.render(el, content, data, context);
} else {
el.textContent = text;
}
}, { usage });
}