UNPKG

bd-widgets

Version:

a library of user interface widgets built with Backdraft

62 lines (55 loc) 2.14 kB
import {Component, e, render} from '../../bd-core/lib.js'; import Button from '../src/button/Button.js'; import StateButton from '../src/stateButton/StateButton.js'; import Input from '../src/input/Input.js'; import InputInteger from '../src/input/InputInteger.js'; import InputNumber from '../src/input/InputNumber.js'; import InputBoolean from '../src/input/InputBoolean.js'; import InputMap from '../src/input/InputMap.js'; import ListBox from '../src/listBox/ListBox.js'; import ComboBox from '../src/comboBox/ComboBox.js'; /* eslint-disable no-console */ const componentTypes = { button: Button, statebutton: StateButton, input: Input, inputinteger: InputInteger, inputnumber: InputNumber, inputboolean: InputBoolean, inputmap: InputMap, listbox: ListBox, comboBox: ComboBox }; function monitor(component) { component.constructor.watchables.forEach(prop => { component.watch(prop, (newValue, oldValue) => { console.log(`[${prop}]`, newValue, '[old:', oldValue, ']'); }); }); component.constructor.events.forEach(name => component.advise(name, event => console.log(event))); window.z = component; } class Top extends Component { bdElements() { let componentType; const ctorParams = {}; const qString = decodeURIComponent(window.location.search.substring(1)); ((qString && qString.split('#')[0]) || '').split('&').forEach(arg => { arg = arg.trim(); if (/=/.test(arg)) { arg = arg.split('=').map(s => s.trim()); ctorParams[arg[0]] = arg[1]; } else if (componentTypes[arg.toLowerCase()]) { componentType = componentTypes[arg.toLowerCase()]; } else { ctorParams[arg] = true; } }); return e('div', e('div', e(Button, { label: 'Focusable-1' })), e('div', e(componentType, Object.assign(ctorParams, { bdAttach: monitor }))), e('div', e(Button, { label: 'Focusable-2' })),); } } render(Top, document.getElementById('root'));