mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-25 07:47:55 +01:00
46 lines
1011 B
TypeScript
46 lines
1011 B
TypeScript
|
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<TableRowAttributes> {
|
||
|
view(vnode: Vnode<TableRowAttributes>) {
|
||
|
this.attrs.addClassNames('mdc-data-table__row');
|
||
|
return (
|
||
|
<tr {...this.attrs.all()}>
|
||
|
{this.checkbox(vnode.children as Children[])}
|
||
|
{vnode.children}
|
||
|
</tr>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
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 <TableCell type="checkbox" />;
|
||
|
}
|
||
|
}
|