UNPKG

hswidget

Version:
59 lines 5.84 kB
import m from "mithril"; import { Log } from 'hsutil'; const log = new Log('Button'); import { EnabledWidget } from './Widget'; import { Icon } from "./Icon"; import { State } from "./support/State"; export class Button extends EnabledWidget { oninit(node) { node.state.pressed = false; node.state.pressing = (down) => node.state.pressed = this.enabled ? down : false; if (!this.state) { const numValues = node.attrs.numValues || node.children.length || 1; const initial = node.attrs.initial ?? 0; const transition = node.attrs.transition ?? State.transitions.cycle; this.state = new State(numValues, initial, transition); } if (node.attrs.stateAccess) { node.attrs.stateAccess(this.state); } } view(node) { const s = node.state; this.enable(!node.attrs.disable); return m(`.hs_button.state${s.state.getValue()}`, this.attrs(node.attrs, { class: s.pressed ? 'hs_pressed' : undefined, onclick: () => { if (this.enabled) { const newValue = s.state.advance(); node.attrs.onclick(newValue); } }, onmousedown: () => s.pressing(true), onmouseup: () => s.pressing(false) }), node.children.length > 1 ? node.children[s.state.getValue()] : node.children); } } export class OnOffButton extends Button { oninit(node) { const initial = node.attrs.initial ?? 0; this.state = new State(2, initial); super.oninit(node); } view(node) { node.attrs.class = ['hs_onoff_button', node.attrs.class || ''].join(' '); return super.view(node); } } OnOffButton.states = ['off', 'on']; export class IconButton extends Button { oninit(node) { super.oninit(node); } view(node) { node.attrs.class = ['hs_icon_button', node.attrs.class || ''].join(' '); node.children[0] = m(Icon, { mdi: node.attrs.mdi }); return super.view(node); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0J1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrREEsT0FBTyxDQUFDLE1BQXFCLFNBQVMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQWUsUUFBUSxDQUFDO0FBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEUsT0FBTyxFQUFxQixhQUFhLEVBQXNCLE1BQ2xDLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQWMsUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQXdCLE1BQ1QsaUJBQWlCLENBQUM7QUE4Qy9DLE1BQU0sT0FBTyxNQUFPLFNBQVEsYUFBYTtJQVFyQyxNQUFNLENBQUMsSUFBNkI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFnQixJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEdB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