hswidget
Version:
Helpful Scripts UI widgets
59 lines • 5.84 kB
JavaScript
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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