import '@material/mwc-checkbox'; import {collect} from 'collect.js'; import type {Children, Vnode} from 'mithril'; import Component from '../Component'; import TableCell from './TableCell'; declare global { namespace JSX { interface IntrinsicElements { 'TableRow': TableRow; } } } export type TableRowAttributes = {checkable?: boolean}; export default class TableRow extends Component { view(vnode: Vnode) { this.attrs.addClassNames('mdc-data-table__row'); return ( {this.checkbox(vnode.children as Children[])} {vnode.children} ); } checkbox(children: Children[]): Children { if (!this.attrs.has('checkable')) { return <>; } for (const child of children) { const attributes = collect((child as Vnode).attrs); if (attributes.get('type') === 'checkbox') { break; } } return ; } }