* primeicons * primeng * quill
npm install table-tools
"architect": {
...
"build": {
...
"options": {
...
"styles": [
...
"node_modules/primeicons/primeicons.css",
"node_modules/primeng/resources/primeng.css",
"node_modules/primeng/resources/themes/nova-light/theme.css"
]
`
Importation de la librarie
`
npm install table-tools --save
`
$3
`
import {TableToolsModule} from 'table-tools';
`
Annexes Columns : Columns interface.
$3
import { BodyTable, Column } from 'table-tools';
@Component({
selector: 'moncomponent',
template:
export interface BodyTable {
rows: any[];
columns: Array;
canEdit?: boolean;
canAdd?: boolean;
canDelete?: boolean;
onReject?: {rowData: any, error: string};
contextMenu?: ContextMenuRow;
config?: ConfigList;
callbacks?: Callbacks;
paginator?: Paginator;
}
rows: any[]; columns: Array; |
import { Column, SortType } from 'table-tools';
import { Validators } from '@angular/forms';
export const columns: Array= [
[
{ rowspan: 3, field: "id", header: "ID (rowspan: 3)" },
{ colspan: 3, header: "Col 2 (colspan 4)" }
], [
{ rowspan: 2, field: "name", header: "Name (rowspan: 2)", inputType: "input", validators: [Validators.required, Validators.maxLength(10)], contextMenuHeader: {
STRING: {
active: true,
callback: (sortType: SortType) => {
return new Promise((resolve, reject) => {
// Traitement sur colonne avec requête si vous le souhaitez
...
return resolve(newResult);
});
}
}
} },
{ colspan: 2, header: "Col 4 (colspan: 2)" }
], [
{ field: "date", header: "Date", inputType: "date", contextMenuHeader: { DATE: { active: true }}, tooltip: { text: "Test info bulle" },
validators: [Validators.required, Validators.pattern('[0-9]{2}\/{1}[0-9]{2}\/{1}[0-9]{4}')] },
{ field: "description", header: "Description", inputType: "input", contextMenuHeader: { MULTISELECT: { active: true } },
tooltip: { callback: (col: Column, value) => {
return new Promise((resolve, reject) => setTimeout(() => resolve("Nouveau info bulle (" + value[col.field] + ")"), 2000));
}} }
]
]
export interface Callbacks {
onSort?: {
title: (newTitle: any) => Promise;
};
contextMenu?: {
show: (value: any) => boolean;
}
}
export interface Paginator {
rows: number;
callback?: (first: number, rows: number) => Promise;
rowsPerPageOptions?: number[];
pageLinkSize?: number;
}