@layers-app/shared 0.0.34 → 0.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{KanbanLayout-TOvxA69t.js → KanbanLayout-VHRhOh9W.js} +1 -1
- package/dist/{TimeLine-Cnlt3oFe.js → TimeLine-BByQEycM.js} +3 -3
- package/dist/components/ColorPicker/ColorPicker.d.ts +1 -0
- package/dist/components/table/FrontTable.d.ts +35 -0
- package/dist/components/table/api.d.ts +33 -0
- package/dist/components/table/components/Table.d.ts +1 -0
- package/dist/components/table/components/TableAggregation.d.ts +1 -0
- package/dist/components/table/components/TableCell.d.ts +11 -0
- package/dist/components/table/components/TableHeaderCell.d.ts +17 -0
- package/dist/components/table/components/TableHeaders.d.ts +1 -0
- package/dist/components/table/components/TableMenu.d.ts +4 -0
- package/dist/components/table/components/TablePagination.d.ts +1 -0
- package/dist/components/table/components/TablePanel.d.ts +1 -0
- package/dist/components/table/components/TableRow.d.ts +15 -0
- package/dist/components/table/components/TableRows.d.ts +15 -0
- package/dist/components/table/components/TableSearch.d.ts +1 -0
- package/dist/components/table/components/TableSkeleton.d.ts +11 -0
- package/dist/components/table/components/TableTitle.d.ts +16 -0
- package/dist/components/table/constants.d.ts +25 -0
- package/dist/components/table/export.d.ts +9 -0
- package/dist/components/table/helpers/columns.d.ts +35 -0
- package/dist/components/table/helpers/filter.d.ts +52 -0
- package/dist/components/table/helpers/formatters.d.ts +76 -0
- package/dist/components/table/hooks/TableProvider.d.ts +59 -0
- package/dist/components/table/hooks/useColumnsResizing.d.ts +5 -0
- package/dist/components/table/hooks/useCreateTable.d.ts +54 -0
- package/dist/components/table/hooks/useSaveRowCount.d.ts +1 -0
- package/dist/components/table/hooks/useSorting.d.ts +2 -0
- package/dist/components/table/hooks/useTableStore.d.ts +53 -0
- package/dist/components/table/selectors.d.ts +4042 -0
- package/dist/components/table/store.d.ts +98 -0
- package/dist/components/table/types.d.ts +104 -0
- package/dist/index-De7pQ4GG.js +66447 -0
- package/dist/index.d.ts +7 -0
- package/dist/{index.esm-DA_ykpoW.js → index.esm-CKK13a1d.js} +1 -1
- package/dist/index.js +180 -119
- package/dist/index.umd.cjs +464 -84
- package/package.json +1 -1
- package/dist/index-AIgzpQJB.js +0 -39586
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { StoreApi, UseBoundStore } from 'zustand';
|
|
2
|
+
import { TableAPI } from './api';
|
|
3
|
+
import { TableFilterComparisonOption, TableFilterSettings, TableFilterValue } from './helpers/filter';
|
|
4
|
+
import { TableColumnState, TableColumnType, TableProps, TableSortModel } from './types';
|
|
5
|
+
export type UseStore = UseBoundStore<StoreApi<Store>>;
|
|
6
|
+
export interface TableFilterRow extends TableFilterSettings {
|
|
7
|
+
id: string;
|
|
8
|
+
field: {
|
|
9
|
+
value: string;
|
|
10
|
+
label: string;
|
|
11
|
+
type: TableColumnType;
|
|
12
|
+
};
|
|
13
|
+
comparison: TableFilterComparisonOption;
|
|
14
|
+
value: TableFilterValue;
|
|
15
|
+
}
|
|
16
|
+
export type Store = {
|
|
17
|
+
sort: TableSortModel | null;
|
|
18
|
+
page: number;
|
|
19
|
+
pageSize: number;
|
|
20
|
+
selected: string[];
|
|
21
|
+
expanded: string[];
|
|
22
|
+
pinnedTop: string[];
|
|
23
|
+
pinnedBottom: string[];
|
|
24
|
+
search: string;
|
|
25
|
+
columnsState: Partial<Record<string, Partial<TableColumnState>>>;
|
|
26
|
+
filterState: {
|
|
27
|
+
rows: TableFilterRow[];
|
|
28
|
+
combiner: 'and' | 'or';
|
|
29
|
+
};
|
|
30
|
+
props: Required<TableProps>;
|
|
31
|
+
rootRef: HTMLDivElement;
|
|
32
|
+
scrollRef: HTMLDivElement;
|
|
33
|
+
api: TableAPI;
|
|
34
|
+
};
|
|
35
|
+
export type CreateTableStoreProps = {
|
|
36
|
+
defaultPage?: number;
|
|
37
|
+
defaultSort?: TableSortModel;
|
|
38
|
+
defaultPageSize?: number;
|
|
39
|
+
defaultSearch?: string;
|
|
40
|
+
defaultPinnedTop?: string[];
|
|
41
|
+
defaultPinnedBottom?: string[];
|
|
42
|
+
id?: string;
|
|
43
|
+
saveState?: boolean;
|
|
44
|
+
};
|
|
45
|
+
export declare const createTableStore: (props?: CreateTableStoreProps) => {
|
|
46
|
+
useStore: UseBoundStore<Omit<StoreApi<Store>, "persist"> & {
|
|
47
|
+
persist: {
|
|
48
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<Store, {
|
|
49
|
+
page: number;
|
|
50
|
+
sort: TableSortModel | null;
|
|
51
|
+
search: string;
|
|
52
|
+
pageSize: number;
|
|
53
|
+
}>>) => void;
|
|
54
|
+
clearStorage: () => void;
|
|
55
|
+
rehydrate: () => Promise<void> | void;
|
|
56
|
+
hasHydrated: () => boolean;
|
|
57
|
+
onHydrate: (fn: (state: Store) => void) => () => void;
|
|
58
|
+
onFinishHydration: (fn: (state: Store) => void) => () => void;
|
|
59
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<Store, {
|
|
60
|
+
page: number;
|
|
61
|
+
sort: TableSortModel | null;
|
|
62
|
+
search: string;
|
|
63
|
+
pageSize: number;
|
|
64
|
+
}>>;
|
|
65
|
+
};
|
|
66
|
+
}>;
|
|
67
|
+
api: {
|
|
68
|
+
setPageSize: (v: number) => void;
|
|
69
|
+
setPage: (v: number) => void;
|
|
70
|
+
setSort: (v: TableSortModel | null) => void;
|
|
71
|
+
downloadCSV: () => void;
|
|
72
|
+
downloadExcel: () => void;
|
|
73
|
+
setSelected: (selected: string[]) => void;
|
|
74
|
+
toggleColumn: (v: string) => void;
|
|
75
|
+
setVisibleColumns: (v: string[]) => void;
|
|
76
|
+
setSearch: (v: string) => void;
|
|
77
|
+
setPrevPage: () => void;
|
|
78
|
+
setNextPage: () => void;
|
|
79
|
+
setColumnWidth: (field: string, setWidth: number) => void;
|
|
80
|
+
toggleRowExpand: (id: string) => void;
|
|
81
|
+
setHeaderWidth: (id: string, width: number) => void;
|
|
82
|
+
setRootRef: (rootRef: HTMLDivElement) => void;
|
|
83
|
+
setScrollRef: (scrollRef: HTMLDivElement) => void;
|
|
84
|
+
calculateColumnWidths: (clear?: boolean) => void;
|
|
85
|
+
selectVisibleRows: () => void;
|
|
86
|
+
unselectVisibleRows: () => void;
|
|
87
|
+
unselectRow: (id: string) => void;
|
|
88
|
+
selectRow: (id: string) => void;
|
|
89
|
+
addFilterRow: (field?: string) => void;
|
|
90
|
+
removeFilterRow: (id: string) => void;
|
|
91
|
+
changeFilterRow: ({ id, ...newRow }: Pick<TableFilterRow, "id"> & Partial<Omit<TableFilterRow, "id">>) => void;
|
|
92
|
+
setFilterCombiner: (combiner: "and" | "or") => void;
|
|
93
|
+
clearFilter: () => void;
|
|
94
|
+
setAutosize: () => void;
|
|
95
|
+
removeAutosize: () => void;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export type CreateTableReturn = ReturnType<typeof createTableStore>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import { Numbers } from './helpers/formatters';
|
|
3
|
+
export type TableProps<ITEM extends TableRowModel = TableRowModel> = {
|
|
4
|
+
rows: ITEM[];
|
|
5
|
+
columns: TableColumnsProp<ITEM>;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
selection?: boolean;
|
|
8
|
+
sorting?: boolean;
|
|
9
|
+
searching?: boolean;
|
|
10
|
+
pagination?: boolean;
|
|
11
|
+
expanding?: boolean;
|
|
12
|
+
virtualization?: boolean;
|
|
13
|
+
pageSizeOptions?: number[];
|
|
14
|
+
rowCount?: number | null;
|
|
15
|
+
rowHeight?: number;
|
|
16
|
+
headerHeight?: number;
|
|
17
|
+
exportFileName?: string;
|
|
18
|
+
};
|
|
19
|
+
export type TableRowModel = {
|
|
20
|
+
id: string;
|
|
21
|
+
__children?: TableRowModel[];
|
|
22
|
+
};
|
|
23
|
+
export type TableColumnAlign = 'left' | 'right' | 'center';
|
|
24
|
+
export type TableColumnPin = 'left' | 'right';
|
|
25
|
+
export type TableRowPin = 'left' | 'right';
|
|
26
|
+
export type TableExportSettings<ITEM = TableRowModel> = {
|
|
27
|
+
header?: string;
|
|
28
|
+
value?: (item: ITEM, value: any) => string | number | null;
|
|
29
|
+
};
|
|
30
|
+
export declare const tableColumnNumberTypes: readonly ["number", "currency", "percent", "ratio"];
|
|
31
|
+
export type TableColumnNumberType = (typeof tableColumnNumberTypes)[number];
|
|
32
|
+
export declare const tableColumnDateTypes: readonly ["day", "month", "quarter", "year", "datetime", "date"];
|
|
33
|
+
export type TableColumnDateType = (typeof tableColumnDateTypes)[number];
|
|
34
|
+
export type TableColumnType = 'string' | 'boolean' | TableColumnNumberType | TableColumnDateType;
|
|
35
|
+
export type TableColumnsProp<ITEM extends TableRowModel = TableRowModel, COL extends TableColumnDef<ITEM> = TableColumnDef<ITEM>> = (COL | TableColumnGroupDef<ITEM, COL>)[];
|
|
36
|
+
export type TableColumnGroupDef<ITEM extends TableRowModel = TableRowModel, COL extends TableColumnDef<ITEM> = TableColumnDef<ITEM>> = {
|
|
37
|
+
header: ReactNode;
|
|
38
|
+
id: string;
|
|
39
|
+
children: TableColumnsProp<ITEM, COL>;
|
|
40
|
+
headerStyle?: CSSProperties;
|
|
41
|
+
};
|
|
42
|
+
export type TableColumnDef<ITEM = TableRowModel> = {
|
|
43
|
+
field: string;
|
|
44
|
+
sortField?: string;
|
|
45
|
+
header: ReactNode;
|
|
46
|
+
headerTooltip?: ReactNode;
|
|
47
|
+
hidden?: boolean;
|
|
48
|
+
minWidth?: number;
|
|
49
|
+
maxWidth?: number;
|
|
50
|
+
align?: TableColumnAlign;
|
|
51
|
+
render?: (item: ITEM, value: any) => ReactNode;
|
|
52
|
+
cellStyle?: CSSProperties;
|
|
53
|
+
fullCellStyle?: CSSProperties;
|
|
54
|
+
headerStyle?: CSSProperties;
|
|
55
|
+
headerContentStyle?: CSSProperties;
|
|
56
|
+
sortable?: boolean;
|
|
57
|
+
pinned?: TableColumnPin;
|
|
58
|
+
resizable?: boolean;
|
|
59
|
+
exportable?: boolean;
|
|
60
|
+
filterable?: boolean;
|
|
61
|
+
filters?: {
|
|
62
|
+
field: string;
|
|
63
|
+
title: string;
|
|
64
|
+
type?: TableColumnType;
|
|
65
|
+
}[];
|
|
66
|
+
group?: string;
|
|
67
|
+
exportSettings?: TableExportSettings<ITEM> | TableExportSettings<ITEM>[];
|
|
68
|
+
management?: {
|
|
69
|
+
show: boolean;
|
|
70
|
+
};
|
|
71
|
+
width?: number;
|
|
72
|
+
flex?: number;
|
|
73
|
+
children?: TableColumnDef<ITEM>[];
|
|
74
|
+
aggregation?: {
|
|
75
|
+
type?: 'sum' | 'avg' | 'min' | 'max' | 'count';
|
|
76
|
+
render?: (value: ITEM[]) => ReactNode;
|
|
77
|
+
};
|
|
78
|
+
type?: TableColumnType | ({
|
|
79
|
+
type: 'number' | 'ratio';
|
|
80
|
+
} & Numbers.FormatterProps) | ({
|
|
81
|
+
type: 'percent';
|
|
82
|
+
} & Numbers.FormatterProps) | ({
|
|
83
|
+
type: 'currency';
|
|
84
|
+
} & Numbers.FormatterProps) | ({
|
|
85
|
+
type: 'date';
|
|
86
|
+
} & DateColumnProps);
|
|
87
|
+
};
|
|
88
|
+
export type TableSortDirection = 'desc' | 'asc';
|
|
89
|
+
export type TableSortModel = {
|
|
90
|
+
field: string;
|
|
91
|
+
sort: TableSortDirection;
|
|
92
|
+
};
|
|
93
|
+
export type TableColumnState = TableColumnDef & {
|
|
94
|
+
id: string;
|
|
95
|
+
computedWidth?: number;
|
|
96
|
+
setWidth?: number;
|
|
97
|
+
finalWidth?: number;
|
|
98
|
+
};
|
|
99
|
+
export type RowMeta = {
|
|
100
|
+
main: boolean;
|
|
101
|
+
};
|
|
102
|
+
export type DateColumnProps = {
|
|
103
|
+
format?: string;
|
|
104
|
+
};
|