45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import '@maicol07/material-web-additions/data-table/data-table.js';
|
|
|
|
import {
|
|
mdiChevronLeft,
|
|
mdiChevronRight,
|
|
mdiPageFirst,
|
|
mdiPageLast
|
|
} from '@mdi/js';
|
|
|
|
import MdIcon from '@osm/Components/MdIcon';
|
|
import {
|
|
Children,
|
|
Vnode
|
|
} from 'mithril';
|
|
import {
|
|
Attributes,
|
|
Component
|
|
} from 'mithril-utilities';
|
|
|
|
export interface DataTableAttributes extends Attributes {
|
|
inProgress?: boolean;
|
|
paginated?: boolean;
|
|
currentPageSize?: number;
|
|
pageSizesLabel?: string;
|
|
paginationTotalLabel?: string;
|
|
}
|
|
|
|
export default class DataTable<A extends DataTableAttributes = DataTableAttributes> extends Component<A> {
|
|
view(vnode: Vnode<A>) {
|
|
return (
|
|
<md-data-table pageSizesLabel={__('Righe per pagina:')} paginationTotalLabel={__(':firstRow-:lastRow di :totalRows')} {...vnode.attrs}>
|
|
{this.contents(vnode)}
|
|
<MdIcon icon={mdiPageFirst} slot="pagination-first-button-icon"/>
|
|
<MdIcon icon={mdiChevronLeft} slot="pagination-previous-button-icon"/>
|
|
<MdIcon icon={mdiChevronRight} slot="pagination-next-button-icon"/>
|
|
<MdIcon icon={mdiPageLast} slot="pagination-last-button-icon"/>
|
|
</md-data-table>
|
|
);
|
|
}
|
|
|
|
contents(vnode: Vnode<A>): Children {
|
|
return vnode.children;
|
|
}
|
|
}
|