@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
38 lines (33 loc) • 1.25 kB
JavaScript
/* eslint-env browser */
import usage from './menu.usage.js';
export default function(host) {
host.view.define('menu', function(el, config, data, context) {
const { name = 'filter', item, itemConfig, limit, emptyText, onClick, onInit, onChange } = config;
if (emptyText !== false && emptyText !== '') {
el.setAttribute('emptyText', emptyText || 'No items');
}
if (Array.isArray(data)) {
const composedItemConfig = this.composeConfig({
view: 'menu-item',
content: item,
onClick: typeof onClick === 'function'
? onClick
: typeof onChange === 'function'
? (data) => onChange(data, name)
: undefined
}, itemConfig);
return host.view.renderList(
el,
composedItemConfig,
data,
context,
0,
host.view.listLimit(limit, 25)
).then(() => {
if (typeof onInit === 'function') {
onInit(data.find(item => item.selected), name);
}
});
}
}, { usage });
}