import '@material/web/list/list.js'; import '../m3/NavigationDrawer'; import '../m3/NavigationDrawerModal'; import { mdiAccountGroupOutline, mdiMenuOpen, mdiViewDashboardOutline } from '@mdi/js'; import MdIcon from '@osm/Components/MdIcon'; import {VnodeCollectionItem} from '@osm/typings/jsx'; import {isMobile} from '@osm/utils/misc'; import {collect} from 'collect.js'; import { Children, Vnode } from 'mithril'; import Stream from 'mithril/stream'; import { Attributes, Component } from 'mithril-utilities'; import {DrawerEntry} from './DrawerEntry'; export interface DrawerAttributes extends Attributes { open: Stream; } export default class Drawer extends Component { open!: Stream; oninit(vnode: Vnode) { super.oninit(vnode); this.open = vnode.attrs.open ?? Stream(!isMobile()); } view(vnode: Vnode): Children { // noinspection LocalVariableNamingConventionJS const DrawerTag = isMobile() ? 'md-navigation-drawer-modal' : 'md-navigation-drawer'; return ( {DrawerTag === 'md-navigation-drawer-modal' && } {this.entries().values().all()} ); } entries() { return collect({ dashboard: {__('Dashboard')}, users: {__('Utenti')} }); } onMobileMenuButtonClick() { this.open(!this.open()); } }