import '@material/mwc-dialog'; import '@material/mwc-fab'; import collect from 'collect.js'; import {Children} from 'mithril'; import DataTable from '../DataTable/DataTable'; import TableBody from '../DataTable/TableBody'; import TableCell from '../DataTable/TableCell'; import TableHead from '../DataTable/TableHead'; import TableHeadCell from '../DataTable/TableHeadCell'; import TableHeadRow from '../DataTable/TableHeadRow'; import TableRow from '../DataTable/TableRow'; import Mdi from '../Mdi'; import Page from '../Page'; export type ColumnT = { id?: string, title: string, type: 'checkbox' | 'numeric' | null } /** * @abstract */ export default class RecordsPage extends Page { columns: Object | Array; rows: Array> = []; dialogs: Array; tableColumns(): Children { return collect(this.columns) .map( (column: ColumnT | string, id: string) => ( {typeof column === 'string' ? column : column.title} ) ) .toArray(); } tableRows(): Children { if (this.rows.length === 0) { return ( {this.__('Non sono presenti dati')} ); } return this.rows.map((row, index) => ( {row.map((cell, index_) => {cell})} )); } view(vnode) { return ( <>

{this.title}

{this.tableColumns()} {this.tableRows()} {this.dialogs} ); } oncreate(vnode) { super.oncreate(vnode); $('mwc-fab#add-record') .on('click', function () { $(this) .next('mwc-dialog#add-record-dialog') .get(0) .open(); }); } }