jiro-ui
Version:
A Mithril.js UI library based from construct-ui
81 lines (71 loc) • 2.27 kB
text/typescript
import m from 'mithril';
import { Button, Drawer, DrawerPosition, Switch, Select } from '@/';
import { Example } from '@shared/examples';
const EXAMPLE_SRC = 'components/drawer/examples/index.ts';
export class DrawerExample {
private closeOnEscapeKey = true;
private closeOnOutsideClick = true;
private hasBackdrop = true;
private inline = false;
private isOpen = false;
private position: DrawerPosition = 'right';
public view() {
return m(Example, { options: this.renderOptions(), src: EXAMPLE_SRC }, [
m('.cui-example-overflow-hidden', [
m(Drawer, {
closeOnEscapeKey: this.closeOnEscapeKey,
closeOnOutsideClick: this.closeOnOutsideClick,
content: [
m('h4', 'Drawer Content'),
m(Button, {
label: 'Close Drawer',
onclick: () => this.isOpen = false
})
],
hasBackdrop: this.hasBackdrop,
position: this.position,
isOpen: this.isOpen,
inline: this.inline,
onClose: () => this.isOpen = false
})
]),
m(Button, {
label: 'Show drawer',
intent: 'primary',
onclick: () => this.isOpen = !this.isOpen
})
]);
}
private renderOptions() {
return [
m('h5', 'Position'),
m(Select, {
options: Object.keys(DrawerPosition).map(key => DrawerPosition[key]),
onchange: (e: Event) => this.position = (e.target as HTMLInputElement).value as DrawerPosition,
size: 'xs',
fluid: true,
value: this.position
}),
m(Switch, {
checked: this.closeOnEscapeKey,
label: 'Close on ESC key',
onchange: () => this.closeOnEscapeKey = !this.closeOnEscapeKey
}),
m(Switch, {
checked: this.closeOnOutsideClick,
label: 'Close on outer click',
onchange: () => this.closeOnOutsideClick = !this.closeOnOutsideClick
}),
m(Switch, {
checked: this.inline,
label: 'Render inline',
onchange: () => this.inline = !this.inline
}),
m(Switch, {
checked: this.hasBackdrop,
label: 'Has backdrop',
onchange: () => this.hasBackdrop = !this.hasBackdrop
})
];
}
}