mig-schema-table 5.0.2 → 5.0.4
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/mig-schema-table.d.ts +156 -0
- package/dist/mig-schema-table.es.js +32 -31
- package/dist/mig-schema-table.umd.js +1 -1
- package/package.json +7 -7
- package/dist/component/Refresher/index.d.ts +0 -8
- package/dist/component/SchemaTable/ColumnResizers/index.d.ts +0 -8
- package/dist/component/SchemaTable/Td/index.d.ts +0 -10
- package/dist/component/SchemaTable/Th/index.d.ts +0 -9
- package/dist/component/SchemaTable/ThMenu/FilterMenuComponent/index.d.ts +0 -14
- package/dist/component/SchemaTable/ThMenu/index.d.ts +0 -25
- package/dist/component/SchemaTable/constants.d.ts +0 -2
- package/dist/component/SchemaTable/index.d.ts +0 -85
- package/dist/component/SchemaTable/index.test.d.ts +0 -1
- package/dist/component/SchemaTable/renderDataToExcel/index.d.ts +0 -3
- package/dist/component/hooks/useIsAllRowsChecked.d.ts +0 -1
- package/dist/component/hooks/useOnColumnsWidthsChange.d.ts +0 -1
- package/dist/component/hooks/useResizeObserver.d.ts +0 -4
- package/dist/component/inc/column.d.ts +0 -4
- package/dist/component/inc/constant.d.ts +0 -15
- package/dist/component/inc/date.d.ts +0 -1
- package/dist/component/inc/string.d.ts +0 -1
- package/dist/component/index.d.ts +0 -9
- package/dist/component/provider/SchemaTableContext.d.ts +0 -42
- package/dist/component/types.d.ts +0 -33
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { default as default_2 } from 'react';
|
|
2
|
+
import { default as default_3 } from 'react-window-infinite-loader';
|
|
3
|
+
import { Dispatch } from 'react';
|
|
4
|
+
import { InputHTMLAttributes } from 'react';
|
|
5
|
+
import { JSX as JSX_2 } from 'react/jsx-runtime';
|
|
6
|
+
import { oas31 } from 'openapi3-ts';
|
|
7
|
+
import { SetStateAction } from 'react';
|
|
8
|
+
import { VariableSizeGrid } from 'react-window';
|
|
9
|
+
import { VariableSizeListProps } from 'react-window';
|
|
10
|
+
|
|
11
|
+
export declare const DEFAULT_DATE_FORMAT = "dd MMM yyyy";
|
|
12
|
+
|
|
13
|
+
export declare const DEFAULT_DATE_TIME_FORMAT = "dd MMM yyyy HH:mm";
|
|
14
|
+
|
|
15
|
+
export declare enum EColumnFilterStatus {
|
|
16
|
+
UNAVAILABLE = "UNAVAILABLE",
|
|
17
|
+
AVAILABLE = "AVAILABLE",
|
|
18
|
+
ACTIVE = "ACTIVE"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export declare interface IColumnConfig<T> {
|
|
22
|
+
FilterMenu?: default_2.ComponentType<IFilterMenuComponentProps>;
|
|
23
|
+
align?: "start" | "center" | "end";
|
|
24
|
+
dateFormat?: string;
|
|
25
|
+
defaultSortDesc?: boolean;
|
|
26
|
+
filter?: (rowData: T, columnFilterValue: unknown) => boolean;
|
|
27
|
+
hidden?: boolean;
|
|
28
|
+
hoverTitle?: string;
|
|
29
|
+
isFilterable?: boolean;
|
|
30
|
+
order?: number;
|
|
31
|
+
TdBody?: default_2.ComponentType<ITdBodyProps<T> & Record<string, unknown>>;
|
|
32
|
+
tdBodyProps?: Record<string, unknown>;
|
|
33
|
+
renderData?: (rowData: T, dataIndex: number) => string;
|
|
34
|
+
showTimezones?: false;
|
|
35
|
+
sort?: (a: T, b: T, sortAsc: boolean) => number;
|
|
36
|
+
sortByValue?: boolean;
|
|
37
|
+
isSortable?: boolean;
|
|
38
|
+
title?: string | default_2.ReactElement;
|
|
39
|
+
width?: number;
|
|
40
|
+
timezone?: "Asia/Jakarta" | "Europe/Amsterdam";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
declare interface IColumnFilterMap {
|
|
44
|
+
[propName: string]: unknown;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export declare interface ICustomElementProps {
|
|
48
|
+
renderData?: IRenderData[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export declare interface IFilterMenuComponentProps<T = any> {
|
|
52
|
+
columnFilterValue?: T;
|
|
53
|
+
onChange: (newValue: T | undefined, persistState?: boolean) => void;
|
|
54
|
+
onInputKeyDown: (e: default_2.KeyboardEvent<HTMLElement>) => void;
|
|
55
|
+
propIsRequired: boolean;
|
|
56
|
+
propName: string;
|
|
57
|
+
propSchema?: oas31.SchemaObject;
|
|
58
|
+
translate: (key: string, ...args: Array<string | number>) => string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare interface IRefresherProps {
|
|
62
|
+
refresh: () => void;
|
|
63
|
+
period?: number;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export declare interface IRenderData {
|
|
67
|
+
_index: number;
|
|
68
|
+
[key: string]: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export declare interface ISchemaTableProps<T> {
|
|
72
|
+
Heading?: default_2.ComponentType<VariableSizeListProps & {
|
|
73
|
+
setFilterSortColumn?: (sortColumn: string, sortAsc: boolean) => void;
|
|
74
|
+
sortAsc?: boolean;
|
|
75
|
+
sortColumn?: string;
|
|
76
|
+
sortedRenderData?: IRenderData[];
|
|
77
|
+
}>;
|
|
78
|
+
checkedIndexes?: number[];
|
|
79
|
+
config?: {
|
|
80
|
+
[propName: string]: IColumnConfig<T>;
|
|
81
|
+
};
|
|
82
|
+
CustomSearchInput?: default_2.ComponentType<InputHTMLAttributes<HTMLInputElement>>;
|
|
83
|
+
CustomElement?: default_2.ComponentType<ICustomElementProps>;
|
|
84
|
+
customElementProps?: {
|
|
85
|
+
[controlProp: string]: unknown;
|
|
86
|
+
};
|
|
87
|
+
data: T[] | ((getDataProps: ITableDataState) => Promise<T[]>);
|
|
88
|
+
defaultColumnFilters?: IColumnFilterMap;
|
|
89
|
+
defaultSortAsc?: boolean;
|
|
90
|
+
defaultSortColumn?: string;
|
|
91
|
+
disabledCheckedIndexes?: number[];
|
|
92
|
+
enableAutoFocus?: boolean;
|
|
93
|
+
enableRowCounter?: boolean;
|
|
94
|
+
getRowClassName?: (rowData: T, dataIndex: number, filteredSortedData: IRenderData[]) => string;
|
|
95
|
+
getRowSelected?: (rowData: T, dataIndex: number) => boolean;
|
|
96
|
+
getSearchQueryFilterResult?: (rowData: T, searchQuery: string) => boolean;
|
|
97
|
+
infiniteLoaderRef?: default_2.LegacyRef<default_3>;
|
|
98
|
+
isColumnFilterable?: boolean;
|
|
99
|
+
isExportable?: boolean;
|
|
100
|
+
isResizable?: boolean;
|
|
101
|
+
isSearchable?: boolean;
|
|
102
|
+
isSortable?: boolean;
|
|
103
|
+
maxHeight?: number | "100%";
|
|
104
|
+
setCheckedIndexes?: Dispatch<SetStateAction<number[]>>;
|
|
105
|
+
onRowClick?: (rowData: T, dataIndex: number, event: default_2.MouseEvent) => void;
|
|
106
|
+
onRowDoubleClick?: (rowData: T, dataIndex: number, event: default_2.MouseEvent) => void;
|
|
107
|
+
onSearchEnter?: (searchQuery: string) => void;
|
|
108
|
+
onTableDataStateChange?: (newTableDataState: ITableDataState) => void;
|
|
109
|
+
rowHeight?: number;
|
|
110
|
+
schema: oas31.SchemaObject;
|
|
111
|
+
searchPlaceholder?: string;
|
|
112
|
+
settingsStorageKey?: string;
|
|
113
|
+
style?: default_2.CSSProperties;
|
|
114
|
+
translate?: (key: string, ...args: Array<string | number>) => string;
|
|
115
|
+
useFilterStateHash?: boolean;
|
|
116
|
+
width?: number;
|
|
117
|
+
variableSizeGridRef?: default_2.RefObject<VariableSizeGrid>;
|
|
118
|
+
loadMoreItems?: (startIndex: number, stopIndex: number) => void | Promise<void>;
|
|
119
|
+
itemCount?: number;
|
|
120
|
+
displayTimezone?: "Europe/Amsterdam" | "Asia/Jakarta";
|
|
121
|
+
autoRender?: boolean;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export declare interface ITableDataState {
|
|
125
|
+
columnFilterMap: IColumnFilterMap;
|
|
126
|
+
searchQuery: string;
|
|
127
|
+
sortColumn?: string;
|
|
128
|
+
sortAsc?: boolean;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export declare interface ITdBodyProps<T> {
|
|
132
|
+
rowData: T;
|
|
133
|
+
dataIndex: number;
|
|
134
|
+
rowIndex: number;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
declare interface IThProps {
|
|
138
|
+
index: number;
|
|
139
|
+
style: default_2.CSSProperties;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export declare const MINIMUM_COLUMN_WIDTH = 25;
|
|
143
|
+
|
|
144
|
+
export declare const Refresher: default_2.MemoExoticComponent<({ refresh, period }: IRefresherProps) => JSX_2.Element>;
|
|
145
|
+
|
|
146
|
+
export declare const RESIZER_WIDTH = 3;
|
|
147
|
+
|
|
148
|
+
export declare const SchemaTable: typeof SchemaTable_2;
|
|
149
|
+
|
|
150
|
+
declare const SchemaTable_2: <T>({ CustomElement, CustomSearchInput, Heading, autoRender, checkedIndexes, config, customElementProps, data, defaultColumnFilters, defaultSortAsc, defaultSortColumn, disabledCheckedIndexes, displayTimezone, enableAutoFocus, enableRowCounter, getRowClassName, getRowSelected, getSearchQueryFilterResult, infiniteLoaderRef, isColumnFilterable, isExportable, isResizable, isSearchable, isSortable, itemCount, loadMoreItems, maxHeight, onRowClick, onRowDoubleClick, onSearchEnter, onTableDataStateChange, rowHeight, schema, searchPlaceholder, setCheckedIndexes, settingsStorageKey, style, translate, useFilterStateHash, variableSizeGridRef, width, }: ISchemaTableProps<T>) => JSX_2.Element;
|
|
151
|
+
|
|
152
|
+
export declare const Th: typeof Th_2;
|
|
153
|
+
|
|
154
|
+
declare const Th_2: <T>({ index, style }: IThProps) => JSX_2.Element;
|
|
155
|
+
|
|
156
|
+
export { }
|
|
@@ -176,7 +176,7 @@ const Me = Ft.createContext({
|
|
|
176
176
|
}
|
|
177
177
|
} else
|
|
178
178
|
te(L._index);
|
|
179
|
-
ee(E),
|
|
179
|
+
ee(E), _e.current?.focus();
|
|
180
180
|
},
|
|
181
181
|
[
|
|
182
182
|
b,
|
|
@@ -188,7 +188,7 @@ const Me = Ft.createContext({
|
|
|
188
188
|
ee,
|
|
189
189
|
x
|
|
190
190
|
]
|
|
191
|
-
),
|
|
191
|
+
), _e = e.useRef(null);
|
|
192
192
|
if (!L || !B)
|
|
193
193
|
return null;
|
|
194
194
|
if (!T || s && !s[L._index])
|
|
@@ -197,7 +197,7 @@ const Me = Ft.createContext({
|
|
|
197
197
|
return /* @__PURE__ */ t("div", { ...B, onMouseDown: P, children: /* @__PURE__ */ t("div", { style: { textAlign: "center" }, children: /* @__PURE__ */ t(
|
|
198
198
|
"input",
|
|
199
199
|
{
|
|
200
|
-
ref:
|
|
200
|
+
ref: _e,
|
|
201
201
|
type: "checkbox",
|
|
202
202
|
readOnly: !0,
|
|
203
203
|
checked: b?.includes(L._index),
|
|
@@ -287,7 +287,7 @@ const nn = ({ index: r, style: o }) => {
|
|
|
287
287
|
P.push(
|
|
288
288
|
B ? "mig-schema-table__th--sortable" : "mig-schema-table__th--unsortable"
|
|
289
289
|
), oe !== void 0 && P.push("mig-schema-table__th--sorted"), U && P.push("mig-schema-table__th--dragging"), le && P.push("mig-schema-table__th--drop-target");
|
|
290
|
-
const { format:
|
|
290
|
+
const { format: _e } = L || {}, {
|
|
291
291
|
align: Z,
|
|
292
292
|
defaultSortDesc: w,
|
|
293
293
|
showTimezones: E = !y,
|
|
@@ -309,8 +309,8 @@ const nn = ({ index: r, style: o }) => {
|
|
|
309
309
|
]), ce = M.includes(C), me = e.useCallback(
|
|
310
310
|
(j) => {
|
|
311
311
|
const he = j.currentTarget;
|
|
312
|
-
ee((
|
|
313
|
-
if (
|
|
312
|
+
ee((ye) => {
|
|
313
|
+
if (ye?.propName !== C)
|
|
314
314
|
return {
|
|
315
315
|
propConfig: G,
|
|
316
316
|
propIsRequired: ce,
|
|
@@ -320,16 +320,16 @@ const nn = ({ index: r, style: o }) => {
|
|
|
320
320
|
});
|
|
321
321
|
},
|
|
322
322
|
[G, ce, C, ee]
|
|
323
|
-
),
|
|
323
|
+
), Ce = e.useMemo(() => k !== void 0 ? k : _e === "date-time" && E ? `${h(C)} (${h(y || Te)})` : h(C), [k, _e, E, h, C, y]), se = e.useCallback(
|
|
324
324
|
(j, he) => {
|
|
325
325
|
if (!b || !p)
|
|
326
326
|
return;
|
|
327
|
-
const
|
|
328
|
-
V.splice(
|
|
327
|
+
const ye = b.indexOf(j), V = [...b];
|
|
328
|
+
V.splice(ye, 1);
|
|
329
329
|
const D = V.indexOf(he);
|
|
330
330
|
V.splice(D + 1, 0, j), v(V);
|
|
331
|
-
const be = [...p], fe = be[
|
|
332
|
-
be.splice(
|
|
331
|
+
const be = [...p], fe = be[ye];
|
|
332
|
+
be.splice(ye, 1), be.splice(D + 1, 0, fe), ne(new Uint16Array(be)), x && localStorage.setItem(
|
|
333
333
|
`${x}.columnNames`,
|
|
334
334
|
JSON.stringify(V)
|
|
335
335
|
);
|
|
@@ -409,7 +409,7 @@ const nn = ({ index: r, style: o }) => {
|
|
|
409
409
|
Z && P.push(`text-${Z}`);
|
|
410
410
|
}
|
|
411
411
|
let Q = G?.hoverTitle;
|
|
412
|
-
return !Q && typeof
|
|
412
|
+
return !Q && typeof Ce == "string" && (Q = Ce), /* @__PURE__ */ O(
|
|
413
413
|
"div",
|
|
414
414
|
{
|
|
415
415
|
className: P.join(" "),
|
|
@@ -428,7 +428,7 @@ const nn = ({ index: r, style: o }) => {
|
|
|
428
428
|
style: { lineHeight: "44px" },
|
|
429
429
|
onClick: A,
|
|
430
430
|
children: [
|
|
431
|
-
/* @__PURE__ */ t("span", { className: "mig-schema-table__th__label-body-text", children:
|
|
431
|
+
/* @__PURE__ */ t("span", { className: "mig-schema-table__th__label-body-text", children: Ce }),
|
|
432
432
|
oe === void 0 ? null : /* @__PURE__ */ t("span", { className: "mig-schema-table__th__sort-icon", children: oe ? "↓" : "↑" })
|
|
433
433
|
]
|
|
434
434
|
}
|
|
@@ -971,7 +971,7 @@ const hn = ({
|
|
|
971
971
|
onTableDataStateChange: re,
|
|
972
972
|
rowHeight: B = 36,
|
|
973
973
|
schema: P,
|
|
974
|
-
searchPlaceholder:
|
|
974
|
+
searchPlaceholder: _e,
|
|
975
975
|
setCheckedIndexes: Z,
|
|
976
976
|
settingsStorageKey: w,
|
|
977
977
|
style: E,
|
|
@@ -980,7 +980,7 @@ const hn = ({
|
|
|
980
980
|
variableSizeGridRef: ce,
|
|
981
981
|
width: me
|
|
982
982
|
}) => {
|
|
983
|
-
const [
|
|
983
|
+
const [Ce, se] = e.useState(), [Ae, Re] = e.useState(), [Pe, Je] = e.useState(-1), [Le, Ze] = e.useState(-1), [Q, j] = e.useState(), [he, ye] = e.useState(), V = _ instanceof Function, [D, be] = e.useState(
|
|
984
984
|
V ? void 0 : _
|
|
985
985
|
), [fe, qe] = e.useState(), [a, ke] = e.useState({
|
|
986
986
|
searchQuery: "",
|
|
@@ -1044,8 +1044,8 @@ const hn = ({
|
|
|
1044
1044
|
}),
|
|
1045
1045
|
[P]
|
|
1046
1046
|
), We = w ? localStorage.getItem(`${w}.columnNames`) : null, Fe = w ? localStorage.getItem(`${w}.columnWidths`) : null, Y = e.useMemo(() => {
|
|
1047
|
-
if (
|
|
1048
|
-
return
|
|
1047
|
+
if (Ce)
|
|
1048
|
+
return Ce;
|
|
1049
1049
|
const n = We ? JSON.parse(We) : void 0;
|
|
1050
1050
|
let l = Object.keys(ae);
|
|
1051
1051
|
if (Z && l.unshift(K), u) {
|
|
@@ -1070,7 +1070,7 @@ const hn = ({
|
|
|
1070
1070
|
return n?.length === l.length ? n : l;
|
|
1071
1071
|
}, [
|
|
1072
1072
|
u,
|
|
1073
|
-
|
|
1073
|
+
Ce,
|
|
1074
1074
|
Z,
|
|
1075
1075
|
ae,
|
|
1076
1076
|
We
|
|
@@ -1337,10 +1337,11 @@ const hn = ({
|
|
|
1337
1337
|
), Ye = e.useCallback(() => B, [B]), ue = e.useMemo(() => Gt(ie), [ie]), $e = e.useMemo(
|
|
1338
1338
|
() => X ? X.length : 0,
|
|
1339
1339
|
[X]
|
|
1340
|
-
),
|
|
1340
|
+
), pe = e.useMemo(() => {
|
|
1341
1341
|
const n = B * $e;
|
|
1342
1342
|
let l;
|
|
1343
|
-
C && (l = C === "100%" ? Oe.height : C)
|
|
1343
|
+
if (C && (l = C === "100%" ? Oe.height : C, !l))
|
|
1344
|
+
return 0;
|
|
1344
1345
|
const c = l ? l - st.height - bt : 0;
|
|
1345
1346
|
return c && c < n ? c : n;
|
|
1346
1347
|
}, [
|
|
@@ -1417,12 +1418,12 @@ const hn = ({
|
|
|
1417
1418
|
}, [w]), Ke = e.useCallback(
|
|
1418
1419
|
(n) => !X || !D || !ne || !le ? !0 : D[X[n]._index] !== void 0,
|
|
1419
1420
|
[le, ne, X, D]
|
|
1420
|
-
), Rt = e.useMemo(() => !(D && !Ie) && !ne ? /* @__PURE__ */ t(
|
|
1421
|
+
), Rt = e.useMemo(() => pe ? !(D && !Ie) && !ne ? /* @__PURE__ */ t(
|
|
1421
1422
|
"div",
|
|
1422
1423
|
{
|
|
1423
1424
|
style: {
|
|
1424
1425
|
width: ue,
|
|
1425
|
-
height: Math.max(50,
|
|
1426
|
+
height: Math.max(50, pe),
|
|
1426
1427
|
border: "1px solid #BBB",
|
|
1427
1428
|
textAlign: "center",
|
|
1428
1429
|
display: "flex",
|
|
@@ -1444,7 +1445,7 @@ const hn = ({
|
|
|
1444
1445
|
{
|
|
1445
1446
|
className: "mig-schema-table__tbody",
|
|
1446
1447
|
estimatedRowHeight: B,
|
|
1447
|
-
height:
|
|
1448
|
+
height: pe,
|
|
1448
1449
|
width: ue,
|
|
1449
1450
|
columnWidth: Be,
|
|
1450
1451
|
rowHeight: Ye,
|
|
@@ -1464,7 +1465,7 @@ const hn = ({
|
|
|
1464
1465
|
}),
|
|
1465
1466
|
children: pt
|
|
1466
1467
|
},
|
|
1467
|
-
`tbody_${
|
|
1468
|
+
`tbody_${pe}_${ue}_${a.sortColumn}_${a.sortAsc}_${a.searchQuery}_${De}_${ie.join(
|
|
1468
1469
|
" "
|
|
1469
1470
|
)}`
|
|
1470
1471
|
)
|
|
@@ -1474,7 +1475,7 @@ const hn = ({
|
|
|
1474
1475
|
{
|
|
1475
1476
|
className: "mig-schema-table__tbody",
|
|
1476
1477
|
estimatedRowHeight: B,
|
|
1477
|
-
height:
|
|
1478
|
+
height: pe,
|
|
1478
1479
|
width: ue,
|
|
1479
1480
|
columnWidth: Be,
|
|
1480
1481
|
rowHeight: Ye,
|
|
@@ -1483,10 +1484,10 @@ const hn = ({
|
|
|
1483
1484
|
ref: ce,
|
|
1484
1485
|
children: pt
|
|
1485
1486
|
},
|
|
1486
|
-
`tbody_${
|
|
1487
|
+
`tbody_${pe}_${ue}_${a.sortColumn}_${a.sortAsc}_${a.searchQuery}_${De}_${ie.join(
|
|
1487
1488
|
" "
|
|
1488
1489
|
)}`
|
|
1489
|
-
), [
|
|
1490
|
+
) : null, [
|
|
1490
1491
|
De,
|
|
1491
1492
|
ie,
|
|
1492
1493
|
Be,
|
|
@@ -1504,7 +1505,7 @@ const hn = ({
|
|
|
1504
1505
|
a.sortAsc,
|
|
1505
1506
|
a.sortColumn,
|
|
1506
1507
|
D,
|
|
1507
|
-
|
|
1508
|
+
pe,
|
|
1508
1509
|
ce
|
|
1509
1510
|
]), Ot = e.useMemo(
|
|
1510
1511
|
() => ({
|
|
@@ -1541,7 +1542,7 @@ const hn = ({
|
|
|
1541
1542
|
setCustomColumnWidths: Re,
|
|
1542
1543
|
setDropTargetIndex: Ze,
|
|
1543
1544
|
setFilterSortColumn: He,
|
|
1544
|
-
setLastCheckChangedRowIndex:
|
|
1545
|
+
setLastCheckChangedRowIndex: ye,
|
|
1545
1546
|
setMenuConfig: j,
|
|
1546
1547
|
settingsStorageKey: w,
|
|
1547
1548
|
sortedRenderData: X,
|
|
@@ -1570,7 +1571,7 @@ const hn = ({
|
|
|
1570
1571
|
type: "search",
|
|
1571
1572
|
name: "search",
|
|
1572
1573
|
autoComplete: "off",
|
|
1573
|
-
placeholder:
|
|
1574
|
+
placeholder: _e || k("search..."),
|
|
1574
1575
|
value: a.searchQuery,
|
|
1575
1576
|
onChange: At,
|
|
1576
1577
|
onKeyDown: at,
|
|
@@ -1647,7 +1648,7 @@ const hn = ({
|
|
|
1647
1648
|
columnWidths: ie,
|
|
1648
1649
|
resizeColumnIndex: Pe,
|
|
1649
1650
|
setResizeColumnIndex: Je,
|
|
1650
|
-
tableBodyHeight:
|
|
1651
|
+
tableBodyHeight: pe
|
|
1651
1652
|
}
|
|
1652
1653
|
) : null
|
|
1653
1654
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(M,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("react-dom"),require("react-window"),require("date-fns"),require("date-fns/locale"),require("mig-data-tools"),require("lodash"),require("react-datepicker"),require("date-fns/locale/nl"),require("@date-fns/tz"),require("@floating-ui/react-dom"),require("react-window-infinite-loader"),require("exceljs"),require("file-saver")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-dom","react-window","date-fns","date-fns/locale","mig-data-tools","lodash","react-datepicker","date-fns/locale/nl","@date-fns/tz","@floating-ui/react-dom","react-window-infinite-loader","exceljs","file-saver"],e):(M=typeof globalThis<"u"?globalThis:M||self,e(M["mig-schema-table"]={},M.jsxRuntime,M.React,M.ReactDOM,M.reactWindow,M.dateFns,M.locale,M.migDataTools,M.lodash,M.DatePicker,M.nl,M.tz,M.reactDom,M.InfiniteLoader,M.exceljs,M.fileSaver))})(this,(function(M,e,t,kt,Pe,Ve,xt,F,_e,ot,it,Fe,We,Mt,Tt,Dt){"use strict";function Et(n){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const a in n)if(a!=="default"){const h=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(r,a,h.get?h:{enumerable:!0,get:()=>n[a]})}}return r.default=n,Object.freeze(r)}const Lt=Et(t),He=(n,r)=>Ve.format(n,r,{locale:xt.nl}).replace(".",""),At={"Europe/Amsterdam":"AMS","Europe/Berlin":"AMS","Asia/Jakarta":"JKT","Asia/Bangkok":"JKT",showingFilteredCountOfTotalCount:"Showing {0} of {1}"};function lt(n,...r){let a=At[n]||F.unCamel(n);return r.forEach((h,_)=>{a=a.replace(`{${_}}`,`${h}`)}),a}const R="SELECT_ALL_COLUMN_NAME",at=40,Je="dd MMM yyyy",Le="dd MMM yyyy HH:mm",Ge=25,ct=50,dt=3;var fe=(n=>(n.GT="GT",n.LT="LT",n.EQ="EQ",n))(fe||{}),xe=(n=>(n.UNAVAILABLE="UNAVAILABLE",n.AVAILABLE="AVAILABLE",n.ACTIVE="ACTIVE",n))(xe||{});const Me=Lt.createContext({checkedIndexes:[],columnNames:[],columnWidths:new Uint16Array,config:{},disabledCheckedIndexes:[],dropTargetIndex:-1,isColumnFilterable:!1,isItemLoaded:()=>!1,isSortable:!1,properties:{},required:[],setCustomColumnNames:F.emptyFn,setCustomColumnWidths:F.emptyFn,setDropTargetIndex:F.emptyFn,setFilterSortColumn:F.emptyFn,setLastCheckChangedRowIndex:F.emptyFn,setMenuConfig:F.emptyFn,tableDataState:{searchQuery:"",columnFilterMap:{},sortColumn:"",sortAsc:!1},translate:F.emptyFn}),It={type:"boolean"},Nt=({columnIndex:n,rowIndex:r,style:a})=>{const{checkedIndexes:h,columnNames:_,config:c,disabledCheckedIndexes:S,displayTimezone:p,getRowClassName:W,getRowSelected:j,isItemLoaded:D,lastCheckChangedRowIndex:O,onRowClick:E,onRowDoubleClick:w,properties:$,setCheckedIndexes:G,setLastCheckChangedRowIndex:te,sortedRenderData:T,sourceData:o,translate:f}=t.useContext(Me),b=_[n],y=b===R?It:$[b],Z=c?c[b]:void 0,ne=t.useCallback(v=>{G&&G(I=>I&&I.includes(v)?I.filter(L=>L!==v):I?[...I,v]:[v])},[G]),ce=D(r),re=t.useCallback(v=>{if(!o||!T||!E||!ce)return;const{rowIndex:I}=v.currentTarget.dataset;if(!I)return;const k=T[parseInt(I,10)];E(o[k._index],k._index,v)},[ce,E,T,o]),C=t.useCallback(v=>{if(!o||!T||!w||!D)return;const{rowIndex:I}=v.currentTarget.dataset;if(!I)return;const k=T[parseInt(I,10)];w(o[k._index],k._index,v)},[D,w,T,o]),A=T?T[r]:void 0,{showTimezones:ie,TdBody:X}=Z||{},se=t.useMemo(()=>p?null:F.timeZone.startsWith("Europe/")?"Asia/Jakarta":"Europe/Amsterdam",[p]),Q=t.useMemo(()=>{if(!A||!T)return;let v=b===R?void 0:A[b];if(y?.format&&y.format==="date-time"&&ie!==!1){const k=o?o[A._index]:void 0,L=k?k[b]:void 0,de=L?new Date(L):void 0;de&&se&&(v=`${F.localeFormatInTimeZone(de,se,Le)} (${f(se)})`)}const I=["mig-schema-table__td",`mig-schema-table__td--${r%2?"odd":"even"}`,`mig-schema-table__td--prop-${b}`];switch(o&&j&&j(o[A._index],A._index)&&I.push("mig-schema-table__td--selected"),o&&W&&I.push(W(o[A._index],A._index,T)),y?.type){case"boolean":I.push(`text-${Z?.align||"center"}`);break;case"number":case"integer":I.push(`text-${Z?.align||"end"}`);break;default:Z?.align&&I.push(`text-${Z.align}`)}return{"data-row-index":r,"data-column-index":n,style:a,className:I.join(" "),title:v,onClick:b===R?void 0:re,onDoubleClick:b===R?void 0:C}},[A,T,b,y,ie,r,o,j,W,n,a,re,C,se,f,Z]),V=t.useCallback(v=>{if(!ne||!A)return;const I=parseInt(v.currentTarget.dataset.rowIndex);if(v.shiftKey&&O!==void 0){const k=h?.includes(O)?O:void 0;if(k!==void 0&&T){const L=r;for(const de of _e.range(L>k?k+1:L,L>k?L+1:k)){const me=T[de]._index;(!S||!S.includes(me))&&ne(me)}}}else ne(A._index);te(I),Ce.current?.focus()},[h,S,O,ne,A,r,te,T]),Ce=t.useRef(null);if(!A||!Q)return null;if(!D||o&&!o[A._index])return e.jsx("div",{...Q,children:"loading"});if(b===R)return e.jsx("div",{...Q,onMouseDown:V,children:e.jsx("div",{style:{textAlign:"center"},children:e.jsx("input",{ref:Ce,type:"checkbox",readOnly:!0,checked:h?.includes(A._index),disabled:S?.includes(A._index)})})});if(X&&o)return e.jsx("div",{...Q,children:e.jsx(X,{dataIndex:A._index,rowData:o[A._index],rowIndex:r,...Z?.tdBodyProps})});const J=A[b];return y?.format==="url"&&J?e.jsx("a",{href:J,target:"_blank",rel:"noopener noreferrer",...Q,children:J}):e.jsx("div",{...Q,children:J})},ut=t.memo(Nt);function St(){const{checkedIndexes:n,disabledCheckedIndexes:r,sortedRenderData:a}=t.useContext(Me);return t.useMemo(()=>{const h=[...a||[]].filter(_=>(n?n.includes(_._index):!0)||(r?!r.includes(_._index):!0));return n?.length!==0&&h.length===n?.length},[n,r,a])}function ht(n,r,a){return!!(n&&a?.isSortable!==!1&&(r||a?.renderData||a?.sort))}function ft(){const{setCustomColumnWidths:n,settingsStorageKey:r}=t.useContext(Me);return t.useCallback(a=>{r&&localStorage.setItem(`${r}.columnWidths`,JSON.stringify(Array.from(a))),n(a)},[n,r])}const Ot=({index:n,style:r})=>{const{checkedIndexes:a,columnNames:h,columnWidths:_,config:c,disabledCheckedIndexes:S,dropTargetIndex:p,isColumnFilterable:W,isSortable:j,setCheckedIndexes:D,properties:O,required:E,setCustomColumnNames:w,setDropTargetIndex:$,setFilterSortColumn:G,setMenuConfig:te,settingsStorageKey:T,tableDataState:o,sortedRenderData:f,translate:b,displayTimezone:y}=t.useContext(Me),[Z,ne]=t.useState(!1),ce=n===p,re=ft(),C=h[n],A=C===R?{type:"boolean"}:O[C],ie=o.sortColumn===C?o.sortAsc:void 0,X=c?c[C]:void 0;let se=W&&(A||X?.FilterMenu)&&X?.isFilterable!==!1?xe.AVAILABLE:xe.UNAVAILABLE;o.columnFilterMap&&o.columnFilterMap[C]!==void 0&&(se=xe.ACTIVE);const Q=ht(j,A,X),V=["mig-schema-table__th",`mig-schema-table__th--filter-${se}`,`mig-schema-table__th--prop-${C}`];V.push(Q?"mig-schema-table__th--sortable":"mig-schema-table__th--unsortable"),ie!==void 0&&V.push("mig-schema-table__th--sorted"),Z&&V.push("mig-schema-table__th--dragging"),ce&&V.push("mig-schema-table__th--drop-target");const{format:Ce}=A||{},{align:J,defaultSortDesc:v,showTimezones:I=!y,title:k}=X||{},L=t.useCallback(()=>{if(Q){if(ie===void 0){G(C,!v);return}G(C,!ie)}},[Q,v,C,G,ie]),de=E.includes(C),me=t.useCallback(z=>{const be=z.currentTarget;te(we=>{if(we?.propName!==C)return{propConfig:X,propIsRequired:de,propName:C,referenceElement:be}})},[X,de,C,te]),ye=t.useMemo(()=>k!==void 0?k:Ce==="date-time"&&I?`${b(C)} (${b(y||F.timeZone)})`:b(C),[k,Ce,I,b,C,y]),oe=t.useCallback((z,be)=>{if(!h||!_)return;const we=h.indexOf(z),P=[...h];P.splice(we,1);const x=P.indexOf(be);P.splice(x+1,0,z),w(P);const pe=[..._],ge=pe[we];pe.splice(we,1),pe.splice(x+1,0,ge),re(new Uint16Array(pe)),T&&localStorage.setItem(`${T}.columnNames`,JSON.stringify(P))},[h,_,re,T,w]),Ae=t.useCallback(z=>{oe&&(ne(!0),z.dataTransfer.effectAllowed="move",z.dataTransfer.dropEffect="move",z.dataTransfer.setData("text/plain",C))},[oe,C]),je=t.useCallback(()=>{oe&&(ne(!1),$(-1))},[oe,$]),Xe=t.useCallback(z=>{oe&&(z.preventDefault(),$(n))},[n,oe,$]),Ye=t.useCallback(z=>{if($(-1),!oe||!C)return;const be=z.dataTransfer.getData("text/plain");!be||be===C||oe(be,C)},[oe,C,$]),Ie=St(),Ke=t.useCallback(()=>{!D||!f||D(Ie?[]:f.map(z=>z._index).filter(z=>!S?.includes(z)))},[D,f,Ie,S]);if(C===R)return e.jsx("div",{style:r,className:V.join(" "),children:e.jsx("div",{style:{width:"100%",textAlign:"center"},title:`${a?.length||0} selected`,children:e.jsx("input",{type:"checkbox",name:"selectAll",checked:Ie,onChange:Ke})})});switch(A?.type){case"boolean":V.push(`text-${J||"center"}`,`justify-content-${J||"center"}`);break;case"integer":case"number":V.push(`text-${J||"end"}`,`justify-content-${J||"end"}`);break;default:J&&V.push(`text-${J}`)}let q=X?.hoverTitle;return!q&&typeof ye=="string"&&(q=ye),e.jsxs("div",{className:V.join(" "),style:r,title:q,draggable:!0,onDragStart:Ae,onDragEnd:je,onDragOver:Xe,onDrop:Ye,children:[e.jsxs("div",{className:"mig-schema-table__th__label-body",style:{lineHeight:"44px"},onClick:L,children:[e.jsx("span",{className:"mig-schema-table__th__label-body-text",children:ye}),ie===void 0?null:e.jsx("span",{className:"mig-schema-table__th__sort-icon",children:ie?"↓":"↑"})]}),Q||se!==xe.UNAVAILABLE?e.jsx("button",{className:"mig-schema-table__th__trigger-el",onClick:me,children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"#404040",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polyline",{points:"6 9 12 15 18 9"})})}):null]})},mt=t.memo(Ot),$t={[fe.GT]:">",[fe.LT]:"<",[fe.EQ]:"="},Ft=t.memo(({columnFilterValue:n,onChange:r,onInputKeyDown:a,propIsRequired:h,propName:_,propSchema:c,translate:S})=>{const{displayTimezone:p}=t.useContext(Me),{type:W,format:j,minimum:D,maximum:O}=c||{},E=n,w=j==="date-time";switch(W){case"number":case"integer":const $=E||{},G=(o,f,b)=>{const y={...$,[o]:f.value===""?void 0:parseInt(f.value)},Z=Object.values(y).find(ne=>isFinite(ne));r(Z!==void 0&&(D===void 0||Z>=D)?y:void 0,b)};return e.jsxs("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:[h?null:e.jsxs("li",{style:{padding:8},children:[e.jsxs("label",{className:"d-flex",children:[e.jsx("input",{type:"checkbox",style:{marginRight:14},checked:!!$.filterEmpty,onChange:()=>{const{filterEmpty:o,...f}=$;o||(f.filterEmpty=!0),r(Object.keys(f).length?f:void 0,!0)}}),"Hide empty values"]}),e.jsx("hr",{})]}),Object.keys(fe).map(o=>{const f=$[o];return e.jsxs("li",{children:[e.jsx("label",{style:{width:40,paddingLeft:16},children:$t[o]}),e.jsx("input",{className:"form-control",style:{width:120},type:"number",value:f!==void 0?f:"","data-prop-name":_,onChange:b=>{G(o,b.currentTarget,!1)},onBlur:b=>{G(o,b.currentTarget,!0)},onKeyDown:a,min:D,max:O})]},o)})]});case"boolean":const te=["✓","✕"];h||te.push("?");let T=E?"✓":"✕";return E===null&&(T="?"),E===void 0&&(T=""),e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsxs("select",{autoFocus:!0,className:"form-select",value:T,"data-prop-name":_,onChange:o=>{switch(o.currentTarget.value){case"✓":r(!0,!0);break;case"✕":r(!1,!0);break;case"?":r(null,!0);break;default:r(void 0,!0)}},children:[e.jsx("option",{value:"",children:"All"},"all"),te.map(o=>e.jsx("option",{value:o,children:o},`column-filter-select-${o}`))]})})});case"string":if(c?.enum)return e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsxs("select",{autoFocus:!0,className:"form-select",value:E,"data-prop-name":_,onChange:o=>{r(o.currentTarget.value||void 0,!0)},children:[e.jsx("option",{value:"",children:"All"},"all"),c.enum.map(o=>e.jsx("option",{value:o,children:S(o)},`column-filter-select-${o}`))]})})});if(w||j==="date"){const o=w?Le:Je,f=n||{from:void 0,to:void 0,filterEmpty:void 0};return e.jsxs("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:[h?null:e.jsxs("li",{style:{padding:8},children:[e.jsxs("label",{className:"d-flex",children:[e.jsx("input",{type:"checkbox",checked:!!f.filterEmpty,onChange:()=>{const{filterEmpty:b,...y}=f;b||(y.filterEmpty=!0),r(Object.keys(y).length?y:void 0,!0)}}),"Hide empty values"]}),e.jsx("hr",{})]}),e.jsxs("li",{style:{padding:8},children:[e.jsx("label",{style:{width:120,paddingLeft:4},children:"After"}),e.jsx(ot,{dateFormat:o,"data-prop-name":_,locale:it.nl,selected:f.from?new Fe.TZDate(f.from).withTimeZone(p||F.timeZone):null,onChange:b=>{if(!b&&!f.to){r(void 0,!0);return}if(f.to&&b&&b>f.to)return;const y=b?Fe.TZDate.tz(p||F.timeZone,b):void 0;r({...n,from:y},!0)},placeholderText:o,isClearable:!0,selectsStart:!0,showTimeSelect:w,showTimeInput:w,showMonthDropdown:!0,showYearDropdown:!0,timeIntervals:15,shouldCloseOnSelect:!w})]}),e.jsxs("li",{style:{padding:8},children:[e.jsx("label",{style:{width:120,paddingLeft:4},children:"Before"}),e.jsx(ot,{id:"filter-date",dateFormat:o,"data-prop-name":_,locale:it.nl,selectsEnd:!0,selected:f.to?new Fe.TZDate(f.to).withTimeZone(p||F.timeZone):null,showMonthDropdown:!0,showYearDropdown:!0,onChange:b=>{if(!b&&!f.from){r(void 0,!0);return}const y=b?w?Fe.TZDate.tz(p||F.timeZone,b):Ve.endOfDay(b):void 0;f.from&&y&&y<f.from||r({...n,to:y},!0)},placeholderText:o,isClearable:!0,startDate:f.from,endDate:f.to,showTimeInput:w,showTimeSelect:w,timeIntervals:15,shouldCloseOnSelect:!w})]})]})}default:return e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsx("input",{autoFocus:!0,type:"search",className:"form-control",placeholder:`Search ${_}`,"aria-label":`Search ${_}`,value:E||"","data-prop-name":_,onChange:o=>{r(o.currentTarget.value||void 0,!1)},onKeyDown:a,onBlur:o=>{r(o.currentTarget.value||void 0,!0)}})})})}}),Wt=({isSortable:n,isFilterable:r,onChange:a,onClose:h,onInputKeyDown:_,propConfig:c,propIsRequired:S,propName:p,propSchema:W,referenceElement:j,setFilterSortColumn:D,translate:O,value:E})=>{const w=We.useFloating({placement:"bottom-start",elements:{reference:j},middleware:[We.flip()]}),$=We.useFloating({placement:"right-start",middleware:[We.flip()]});t.useEffect(()=>{const f=b=>{if(!w.elements.floating)return;let y=b.target;for(;y&&w.elements.floating;){if(y===w.elements.floating||y===$.elements.floating)return;y=y.parentNode===window.document?null:y.parentNode}h(b)};return window.addEventListener("click",f,{capture:!0}),()=>{window.removeEventListener("click",f,{capture:!0})}},[w.elements.floating,h,$.elements.floating]);const G=c?.FilterMenu||Ft,te=t.useCallback(f=>{D(p,!0),h(f)},[h,p,D]),T=t.useCallback(f=>{D(p,!1),h(f)},[h,p,D]),o=t.useCallback(()=>{a(void 0,!0)},[a]);return!n&&!r?null:e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mig-schema-table mig-schema-table__th-menu",ref:w.refs.setFloating,style:w.floatingStyles,children:e.jsxs("ol",{className:"mig-schema-table-menu",children:[n?e.jsxs("li",{onClick:te,style:{padding:8},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:"↓"})," ",O("sortAscending")]}):null,n?e.jsxs("li",{onClick:T,style:{padding:8},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:"↑"})," ",O("sortDescending")]}):null,r?e.jsxs("li",{style:{padding:8},onMouseOver:f=>{$.refs.setReference(f.currentTarget)},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:e.jsx("input",{type:"checkbox",id:"mig-schema-table__th-menu__filters",checked:E!==void 0,disabled:E===void 0,onChange:o})}),e.jsx("label",{htmlFor:"mig-schema-table__th-menu__filters",children:O("filters")}),e.jsx("div",{className:"mig-schema-table__th-menu__sub-menu-indicator"})]}):null]})}),$.elements.reference?e.jsx("div",{className:"mig-schema-table mig-schema-table__th-menu__sub-menu",ref:$.refs.setFloating,style:$.floatingStyles,children:e.jsx(G,{columnFilterValue:E,onChange:a,onInputKeyDown:_,propIsRequired:S,propName:p,propSchema:W,translate:O})}):null]})},jt=t.memo(Wt),Bt=({columnWidths:n,resizeColumnIndex:r,setResizeColumnIndex:a,tableBodyHeight:h})=>{const[_,c]=t.useState(0),S=ft(),p=t.useCallback(O=>{const E=n.map((w,$)=>$===r?Math.max(w+O,Ge):w);S(E)},[n,r,S]);let W=0;const j=t.useCallback(O=>{a(parseInt(O.currentTarget.dataset.columnIndex)),c(O.clientX)},[a]),D=t.useCallback(O=>{p(O.clientX-_),c(0),a(-1)},[_,p,a]);return e.jsx("div",{children:[...n].map((O,E)=>{W+=O;const w=["mig-schema-table__column_resizer"];return E===r&&w.push("mig-schema-table__column_resizer--dragged"),e.jsx("div",{style:{left:W-dt,bottom:h},className:w.join(" "),draggable:"true","data-column-index":E,onDragStart:j,onDragEnd:D},E)})})},bt=n=>{const[r,a]=t.useState({width:0,height:0}),h=t.useMemo(()=>_e.debounce(a,100),[]);return t.useEffect(()=>{if(!n)return;const _=new ResizeObserver(c=>{for(const S of c){const{blockSize:p,inlineSize:W}=S.borderBoxSize[0];W&&p&&h({width:W,height:p})}});return _.observe(n),()=>{_.disconnect()}},[h,n]),r},gt=new Date("1000-01-01 00:00:00Z"),zt=new Intl.NumberFormat("nl-NL"),Qt=new Intl.NumberFormat("nl-NL",{style:"currency",currency:"EUR"});function qt(n,r){const{TdBody:a,sortByValue:h}=r||{};if(h!==void 0)return h;if(!n)return!1;const{format:_,type:c}=n;return _?.startsWith("date")||c==="boolean"||c==="integer"||c==="number"||!!a}const Ut=({CustomElement:n,CustomSearchInput:r,Heading:a=Pe.VariableSizeList,autoRender:h,checkedIndexes:_,config:c,customElementProps:S,data:p,defaultColumnFilters:W,defaultSortAsc:j=!1,defaultSortColumn:D,disabledCheckedIndexes:O,displayTimezone:E,enableAutoFocus:w=!0,enableRowCounter:$=!0,getRowClassName:G,getRowSelected:te,getSearchQueryFilterResult:T,infiniteLoaderRef:o,isColumnFilterable:f=!0,isExportable:b=!0,isResizable:y=!0,isSearchable:Z=!0,isSortable:ne=!0,itemCount:ce,loadMoreItems:re,maxHeight:C,onRowClick:A,onRowDoubleClick:ie,onSearchEnter:X,onTableDataStateChange:se,rowHeight:Q=36,schema:V,searchPlaceholder:Ce,setCheckedIndexes:J,settingsStorageKey:v,style:I,translate:k=lt,useFilterStateHash:L,variableSizeGridRef:de,width:me})=>{const[ye,oe]=t.useState(),[Ae,je]=t.useState(),[Xe,Ye]=t.useState(-1),[Ie,Ke]=t.useState(-1),[q,z]=t.useState(),[be,we]=t.useState(),P=p instanceof Function,[x,pe]=t.useState(P?void 0:p),[ge,Re]=t.useState(),[i,Te]=t.useState({searchQuery:"",columnFilterMap:W||{},sortColumn:D,sortAsc:j}),[U,Ht]=t.useState(L?F.parseLocationHash(window.location.hash):null);t.useEffect(()=>{P||pe(p)},[p,P]),t.useEffect(()=>{!P||x!==void 0||p(U&&Object.keys(U).length!==0?{...U,columnFilterMap:U.columnFilterMap||{}}:i).then(pe)},[p,P,U,x,i]),t.useEffect(()=>{ge||Re(i)},[i,ge]),t.useEffect(()=>{if(!L)return;const s=()=>{Ht(F.parseLocationHash(window.location.hash))};return window.addEventListener("hashchange",s),()=>{window.removeEventListener("hashchange",s)}},[L]),t.useEffect(()=>{if(!L)return;const{columnFilterMap:s,searchQuery:d,sortAsc:u,sortColumn:l}=U||{},m={searchQuery:d||"",columnFilterMap:s||W||{},sortAsc:u===void 0?j:u,sortColumn:l===void 0?D:l};Te(N=>_e.isEqual(m,N)?N:m)},[U,L,W,j,D]),t.useEffect(()=>{se&&se(i)},[se,i]);const _t=t.useRef(null),pt=t.useRef(null),Be=bt(_t.current),Ct=bt(pt.current),Ne=t.useMemo(()=>me||Math.floor(Be.width||0),[Be.width,me]),Se=t.useMemo(()=>!_e.isEqual(i,ge)&&P,[i,ge,P]),{properties:le,required:Jt}=t.useMemo(()=>({properties:{},required:[],...V}),[V]),ze=v?localStorage.getItem(`${v}.columnNames`):null,Qe=v?localStorage.getItem(`${v}.columnWidths`):null,ee=t.useMemo(()=>{if(ye)return ye;const s=ze?JSON.parse(ze):void 0;let d=Object.keys(le);if(J&&d.unshift(R),c){Object.keys(c).forEach(l=>{d.includes(l)||d.push(l)});const u=Object.entries(c).reduce((l,[m,N])=>(N.hidden&&l.push(m),l),[]);d=d.filter(l=>!u.includes(l)).sort((l,m)=>{let N=c[l]?c[l].order:void 0;N===void 0&&(N=Object.keys(le).findIndex(K=>K===l));let g=c[m]?c[m].order:void 0;return g===void 0&&(g=Object.keys(le).findIndex(K=>K===m)),m===R||l===R?0:N===-1?1:g===-1?-1:N-g})}return s?.length===d.length?s:d},[c,ye,J,le,ze]),qe=t.useMemo(()=>x&&ee?x.map((s,d)=>ee.reduce((u,l)=>{const m=le[l],N=c?c[l]:void 0;if(N?.renderData)return u[l]=N.renderData(s,d),u;if(!m||l===R)return u[l]="",u;const g=s?s[l]:"";switch(m.type){case"array":return u[l]=m.items?.type==="string"&&g?g.map(K=>k(K)).join(", "):JSON.stringify(g),u;case"boolean":return u[l]=g===void 0?"?":g?"✓":"✕",u;case"number":case"integer":return g===void 0?(u[l]="",u):(u[l]=m.format==="currency"?Qt.format(g):zt.format(g),u);case"string":if(m.format==="date"&&g)return u[l]=["2999-12-31","1970-01-01"].includes(g)?"-":He(new Date(g),N?.dateFormat||Je),u;if(m.format==="date-time"&&g)return u[l]=E?F.localeFormatInTimeZone(new Date(g),E,Le):He(new Date(g),N?.dateFormat||Le),u;if(m.enum)return u[l]=g?k(g):"",u;default:return u[l]=g?`${g}`:"",u}},{_index:d})):void 0,[x,ee,le,c,k,E]),De=ee?ee.length:0,{dynamicWidthColumnCount:et,fixedWidthColumnsWidth:tt}=t.useMemo(()=>{let s=0,d=0;return(ee||[]).forEach(u=>{if(u===R){s+=at;return}const l=c?c[u]:void 0;l?.width?s+=l.width:d+=1},0),{dynamicWidthColumnCount:d,fixedWidthColumnsWidth:s}},[ee,c]),ae=t.useMemo(()=>{if(Ae)return new Uint16Array(Ae);const s=Qe?new Uint16Array(JSON.parse(Qe)):void 0,d=Math.max(Math.floor((Ne-tt)/et),Ge);let u=(Ne-tt)%et;const l=new Uint16Array(ee.map(m=>{if(m===R)return at;const N=c?c[m]:void 0;return N?.width?N?.width:u?(u-=1,d+1):d}));return s?.length===l.length?s:l},[ee,c,Ae,et,tt,Qe,Ne]),Ue=t.useCallback(s=>ae?ae[s]:1,[ae]),Oe=t.useMemo(()=>{if(!qe||!f&&!Z||P)return qe;const{searchQuery:s}=i,d=s.toLowerCase()||"",u=l=>x&&T?T(x[l._index],s):!(ee&&!ee.find(m=>`${l[m]}`.toLowerCase().includes(d)));return qe.filter(l=>{let m=u(l);return!m||!i.columnFilterMap?!1:(Object.entries(i.columnFilterMap).forEach(([N,g])=>{if(!m||g===void 0)return;const K=c?c[N]:void 0;if(x&&K?.filter){m=K.filter(x[l._index],g);return}const he=le[N],B=x[l._index]?.[N];switch(he?.type){case"boolean":case"number":case"integer":if(g&&typeof g=="object"){g.filterEmpty&&B===void 0&&(m=!1);for(const H of Object.keys(fe)){const ke=g[H];if(m&&_e.isFinite(ke))switch(H){case fe.EQ:B!==ke&&(m=!1);break;case fe.GT:B<=ke&&(m=!1);break;case fe.LT:B>=ke&&(m=!1);break}}}else{if(B===void 0&&g===null)return!0;m=B===g}break;case"string":if(typeof g=="object"&&(he.format==="date"||he.format==="date-time")){const{from:H,to:ke,filterEmpty:vt}=g;if(!B)m=!vt;else{const Ze=B?new Date(B):void 0;(vt===!1||H&&(!Ze||Ze<H)||ke&&(!Ze||Ze>ke))&&(m=!1)}return}default:if(he?.enum){m=B===g;return}m=`${l[N]}`.toLowerCase().includes(`${g}`.toLowerCase())}}),m)})},[qe,f,Z,P,i,T,ee,c,x,le]),Y=t.useMemo(()=>{const{sortAsc:s,sortColumn:d}=i;if(!d||!Oe||!x||P)return Oe;const u=le[d],l=c?c[d]:void 0,m=l?.sort;if(m)return Oe.sort((K,he)=>{const B=x[K._index],H=x[he._index];return B?H?m(B,H,s===void 0?j:s):-1:1});const N=u&&u.format?.startsWith("date"),g=qt(u,l);return Oe.sort((K,he)=>{let B=g&&x[K._index]?x[K._index][d]:`${K[d]}`.toLowerCase(),H=g&&x[he._index]?x[he._index][d]:`${he[d]}`.toLowerCase();return g&&N&&(B=new Date(B),isNaN(B.getTime())&&(B=gt),H=new Date(H),isNaN(H.getTime())&&(H=gt)),B===H?0:B?H?(B<H?1:-1)*(s?-1:1):s?1:-1:s?-1:1})},[c,j,Oe,P,le,x,i]),yt=t.useCallback(s=>{const d={...i.columnFilterMap};delete d[s],Te({...i,columnFilterMap:d})},[i]),nt=t.useCallback((s,d)=>{if(L){window.location.hash=F.serializeLocationHash({...U,sortColumn:s,sortAsc:d});return}Te({...i,sortColumn:s,sortAsc:d})},[i,U,L]),Gt=t.useCallback(s=>{Te({...i,searchQuery:s.currentTarget.value})},[i]),Ee=t.useCallback(()=>{Re(i),pe(void 0)},[i]);t.useEffect(()=>{if(!h||!U||!ge||!L)return;const s=Object.keys(U);let d=!1;for(const u of s){const l=U[u],m=ge[u];if(typeof l=="string"&&l!==m){d=!0;break}if(typeof l=="object"&&!_e.isEqual(l,m)){d=!0;break}}d&&Ee()},[h,U,ge,Ee,L]);const wt=t.useCallback(s=>{s.key==="Enter"&&(z(void 0),Se&&Ee(),X&&s.currentTarget.className==="mig-schema-table__search"&&X(i.searchQuery||""))},[Se,i.searchQuery,X,Ee]),rt=t.useCallback(()=>Q,[Q]),ue=t.useMemo(()=>_e.sum(ae),[ae]),$e=t.useMemo(()=>Y?Y.length:0,[Y]),ve=t.useMemo(()=>{const s=Q*$e;let d;C&&(d=C==="100%"?Be.height:C);const u=d?d-Ct.height-ct:0;return u&&u<s?u:s},[Q,$e,C,Ct,Be.height]),Xt=t.useCallback(s=>{z(void 0),s.preventDefault(),s.stopPropagation()},[]),Yt=t.useCallback((s,d)=>{if(!q)return;if(L&&d!==!1){window.location.hash=F.serializeLocationHash({...U,columnFilterMap:{...i.columnFilterMap,[q.propName]:s}});return}if(s===void 0){yt(q.propName);return}const u={...i.columnFilterMap,[q.propName]:s};Te({...i,columnFilterMap:u})},[yt,i,U,q,L]),Kt=t.useCallback(()=>{const s={searchQuery:"",columnFilterMap:{},sortColumn:D,sortAsc:j};L&&(window.location.hash=F.serializeLocationHash(s)),Re(s),Te(s)},[L,j,D]),Rt=t.useCallback(()=>{const s=U?.searchQuery||"";L&&(i.searchQuery||s)&&i.searchQuery!==s&&(window.location.hash=F.serializeLocationHash({...U,searchQuery:i.searchQuery}))},[U,i.searchQuery,L]),en=t.useCallback(async s=>{if(s.preventDefault(),s.stopPropagation(),!Y)return;const{renderDataToExcel:d}=await Promise.resolve().then(()=>Vt);d(Y)},[Y]),tn=t.useCallback(()=>{v&&(localStorage.removeItem(`${v}.columnNames`),localStorage.removeItem(`${v}.columnWidths`),oe(void 0),je(void 0))},[v]),st=t.useCallback(s=>!Y||!x||!re||!ce?!0:x[Y[s]._index]!==void 0,[ce,re,Y,x]),nn=t.useMemo(()=>!(x&&!Se)&&!re?e.jsx("div",{style:{width:ue,height:Math.max(50,ve),border:"1px solid #BBB",textAlign:"center",display:"flex",backgroundColor:"#CCC",alignItems:"center",justifyContent:"center"},children:Se?e.jsx("button",{onClick:Ee,className:"btn border",children:"Refresh data"}):e.jsx("div",{children:"⌛ Loading..."})}):re&&ce?e.jsx(Mt,{ref:o,isItemLoaded:st,itemCount:ce,loadMoreItems:re,children:({onItemsRendered:d,ref:u})=>e.jsx(Pe.VariableSizeGrid,{className:"mig-schema-table__tbody",estimatedRowHeight:Q,height:ve,width:ue,columnWidth:Ue,rowHeight:rt,columnCount:De,rowCount:$e,ref:u,onItemsRendered:({overscanRowStartIndex:l,overscanRowStopIndex:m,visibleRowStartIndex:N,visibleRowStopIndex:g})=>d({overscanStartIndex:l,overscanStopIndex:m,visibleStartIndex:N,visibleStopIndex:g}),children:ut},`tbody_${ve}_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${De}_${ae.join(" ")}`)}):e.jsx(Pe.VariableSizeGrid,{className:"mig-schema-table__tbody",estimatedRowHeight:Q,height:ve,width:ue,columnWidth:Ue,rowHeight:rt,columnCount:De,rowCount:$e,ref:de,children:ut},`tbody_${ve}_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${De}_${ae.join(" ")}`),[De,ae,Ue,rt,o,Se,st,ce,re,Ee,$e,Q,ue,i.searchQuery,i.sortAsc,i.sortColumn,x,ve,de]),rn=t.useMemo(()=>({...I,width:me?Math.min(ue,Ne):void 0,height:C==="100%"?"100%":void 0,maxHeight:C==="100%"?"100%":void 0}),[C,ue,I,Ne,me]),sn=r||"input";return e.jsx(Me.Provider,{value:{checkedIndexes:_,columnNames:ee,columnWidths:ae,config:c,disabledCheckedIndexes:O,displayTimezone:E,dropTargetIndex:Ie,getRowClassName:G,getRowSelected:te,isColumnFilterable:f,isItemLoaded:st,isSortable:ne,lastCheckChangedRowIndex:be,onRowClick:A,onRowDoubleClick:ie,properties:le,required:Jt,setCheckedIndexes:J,setCustomColumnNames:oe,setCustomColumnWidths:je,setDropTargetIndex:Ke,setFilterSortColumn:nt,setLastCheckChangedRowIndex:we,setMenuConfig:z,settingsStorageKey:v,sortedRenderData:Y,sourceData:x,tableDataState:i,translate:k||lt},children:e.jsxs("div",{className:`mig-schema-table${A?" mig-schema-table--clickable-rows":""}`,ref:_t,style:rn,role:"table",children:[e.jsxs("div",{className:"mig-schema-table__action-container",ref:pt,children:[e.jsx("div",{children:Z?e.jsx(sn,{className:"mig-schema-table__search",type:"search",name:"search",autoComplete:"off",placeholder:Ce||k("search..."),value:i.searchQuery,onChange:Gt,onKeyDown:wt,autoFocus:w,onBlur:Rt}):null}),n?e.jsx(n,{...S,renderData:Y}):e.jsx("div",{className:"mig-schema-table__custom_element_placeholder"}),$&&Array.isArray(p)?e.jsx("span",{className:"mig-schema-table__row_counter",children:k("showingFilteredCountOfTotalCount",Y?.length||0,p.length)}):null,b?e.jsx("button",{onClick:en,style:{marginLeft:8},disabled:!Y?.length,children:k("exportData")}):null,Z||f?e.jsx("button",{onClick:Kt,style:{marginLeft:8},disabled:i.columnFilterMap&&i.searchQuery?Object.keys(i.columnFilterMap).length+i.searchQuery.length===0:!1,children:k("clearFilters")}):null,v?e.jsx("button",{onClick:tn,style:{marginLeft:8},disabled:!ze&&!Qe,children:k("clearSettings")}):null]}),e.jsxs("div",{className:"mig-schema-table__column_resize_container",children:[e.jsx(a,{height:ct,itemCount:De,itemSize:Ue,layout:"horizontal",width:ue,sortAsc:i.sortAsc,setFilterSortColumn:nt,sortColumn:i.sortColumn,sortedRenderData:Y,className:"mig-schema-table__th-row",children:mt},`thead_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${ae.join(" ")}`),nn,y?e.jsx(Bt,{columnWidths:ae,resizeColumnIndex:Xe,setResizeColumnIndex:Ye,tableBodyHeight:ve}):null]}),x?x.length>0?e.jsx(e.Fragment,{children:kt.createPortal(q?e.jsx(jt,{isFilterable:f&&q.propConfig?.isFilterable!==!1,isSortable:ht(!!ne,V.properties[q.propName],q.propConfig),onChange:Yt,onClose:Xt,onInputKeyDown:wt,propConfig:q.propConfig,propIsRequired:q.propIsRequired,propName:q.propName,propSchema:V.properties[q.propName],referenceElement:q.referenceElement,setFilterSortColumn:nt,translate:k,value:i.columnFilterMap?i.columnFilterMap[q.propName]:null}):null,document.body)}):e.jsx("div",{className:"mig-schema-table__no_data",children:"No data found"}):null]})})},Zt=t.memo(Ut),Pt=t.memo(({refresh:n,period:r=60})=>{const[a,h]=t.useState(new Date),[_,c]=t.useState(new Date),S=t.useCallback(()=>{c(new Date),n()},[n]),p=t.useMemo(()=>Ve.differenceInSeconds(a,_),[a,_]);t.useEffect(()=>{p>r&&S()},[p,a,_,r,S]),t.useEffect(()=>{const D=setInterval(()=>{h(new Date)},1e3);return()=>{clearInterval(D)}},[]);const W=r-p;return e.jsxs("div",{className:"mx-auto",title:`Refresh ${W>0?`in ${W} seconds`:"NOW"}`,children:["Last update ",He(_,"HH:mm")]})}),Vt=Object.freeze(Object.defineProperty({__proto__:null,renderDataToExcel:n=>{const r=new Tt.Workbook,a=r.addWorksheet("Data");n.length&&(a.addRow(_e.difference(Object.keys(n[0]),["_index","SELECT_ALL_COLUMN_NAME"])),a.getRow(1).font={bold:!0},a.addRows(n.map(h=>{const{_index:_,SELECT_ALL_COLUMN_NAME:c,...S}=h;return Object.values(S)})),r.xlsx.writeBuffer().then(h=>{const _=new Blob([h],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});Dt.saveAs(_,"export.xlsx")}).catch(h=>{console.error("Error generating Excel file:",h)}))}},Symbol.toStringTag,{value:"Module"}));M.DEFAULT_DATE_FORMAT=Je,M.DEFAULT_DATE_TIME_FORMAT=Le,M.EColumnFilterStatus=xe,M.MINIMUM_COLUMN_WIDTH=Ge,M.RESIZER_WIDTH=dt,M.Refresher=Pt,M.SchemaTable=Zt,M.Th=mt,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(M,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("react-dom"),require("react-window"),require("date-fns"),require("date-fns/locale"),require("mig-data-tools"),require("lodash"),require("react-datepicker"),require("date-fns/locale/nl"),require("@date-fns/tz"),require("@floating-ui/react-dom"),require("react-window-infinite-loader"),require("exceljs"),require("file-saver")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-dom","react-window","date-fns","date-fns/locale","mig-data-tools","lodash","react-datepicker","date-fns/locale/nl","@date-fns/tz","@floating-ui/react-dom","react-window-infinite-loader","exceljs","file-saver"],e):(M=typeof globalThis<"u"?globalThis:M||self,e(M["mig-schema-table"]={},M.jsxRuntime,M.React,M.ReactDOM,M.reactWindow,M.dateFns,M.locale,M.migDataTools,M.lodash,M.DatePicker,M.nl,M.tz,M.reactDom,M.InfiniteLoader,M.exceljs,M.fileSaver))})(this,(function(M,e,t,kt,Pe,Ve,xt,F,_e,ot,it,Fe,We,Mt,Tt,Dt){"use strict";function Et(n){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const a in n)if(a!=="default"){const h=Object.getOwnPropertyDescriptor(n,a);Object.defineProperty(r,a,h.get?h:{enumerable:!0,get:()=>n[a]})}}return r.default=n,Object.freeze(r)}const Lt=Et(t),He=(n,r)=>Ve.format(n,r,{locale:xt.nl}).replace(".",""),At={"Europe/Amsterdam":"AMS","Europe/Berlin":"AMS","Asia/Jakarta":"JKT","Asia/Bangkok":"JKT",showingFilteredCountOfTotalCount:"Showing {0} of {1}"};function lt(n,...r){let a=At[n]||F.unCamel(n);return r.forEach((h,_)=>{a=a.replace(`{${_}}`,`${h}`)}),a}const R="SELECT_ALL_COLUMN_NAME",at=40,Je="dd MMM yyyy",Le="dd MMM yyyy HH:mm",Ge=25,ct=50,dt=3;var fe=(n=>(n.GT="GT",n.LT="LT",n.EQ="EQ",n))(fe||{}),xe=(n=>(n.UNAVAILABLE="UNAVAILABLE",n.AVAILABLE="AVAILABLE",n.ACTIVE="ACTIVE",n))(xe||{});const Me=Lt.createContext({checkedIndexes:[],columnNames:[],columnWidths:new Uint16Array,config:{},disabledCheckedIndexes:[],dropTargetIndex:-1,isColumnFilterable:!1,isItemLoaded:()=>!1,isSortable:!1,properties:{},required:[],setCustomColumnNames:F.emptyFn,setCustomColumnWidths:F.emptyFn,setDropTargetIndex:F.emptyFn,setFilterSortColumn:F.emptyFn,setLastCheckChangedRowIndex:F.emptyFn,setMenuConfig:F.emptyFn,tableDataState:{searchQuery:"",columnFilterMap:{},sortColumn:"",sortAsc:!1},translate:F.emptyFn}),It={type:"boolean"},Nt=({columnIndex:n,rowIndex:r,style:a})=>{const{checkedIndexes:h,columnNames:_,config:d,disabledCheckedIndexes:S,displayTimezone:p,getRowClassName:W,getRowSelected:j,isItemLoaded:D,lastCheckChangedRowIndex:O,onRowClick:E,onRowDoubleClick:w,properties:$,setCheckedIndexes:G,setLastCheckChangedRowIndex:te,sortedRenderData:T,sourceData:o,translate:f}=t.useContext(Me),b=_[n],y=b===R?It:$[b],Z=d?d[b]:void 0,ne=t.useCallback(v=>{G&&G(I=>I&&I.includes(v)?I.filter(L=>L!==v):I?[...I,v]:[v])},[G]),ce=D(r),re=t.useCallback(v=>{if(!o||!T||!E||!ce)return;const{rowIndex:I}=v.currentTarget.dataset;if(!I)return;const k=T[parseInt(I,10)];E(o[k._index],k._index,v)},[ce,E,T,o]),C=t.useCallback(v=>{if(!o||!T||!w||!D)return;const{rowIndex:I}=v.currentTarget.dataset;if(!I)return;const k=T[parseInt(I,10)];w(o[k._index],k._index,v)},[D,w,T,o]),A=T?T[r]:void 0,{showTimezones:ie,TdBody:X}=Z||{},se=t.useMemo(()=>p?null:F.timeZone.startsWith("Europe/")?"Asia/Jakarta":"Europe/Amsterdam",[p]),Q=t.useMemo(()=>{if(!A||!T)return;let v=b===R?void 0:A[b];if(y?.format&&y.format==="date-time"&&ie!==!1){const k=o?o[A._index]:void 0,L=k?k[b]:void 0,de=L?new Date(L):void 0;de&&se&&(v=`${F.localeFormatInTimeZone(de,se,Le)} (${f(se)})`)}const I=["mig-schema-table__td",`mig-schema-table__td--${r%2?"odd":"even"}`,`mig-schema-table__td--prop-${b}`];switch(o&&j&&j(o[A._index],A._index)&&I.push("mig-schema-table__td--selected"),o&&W&&I.push(W(o[A._index],A._index,T)),y?.type){case"boolean":I.push(`text-${Z?.align||"center"}`);break;case"number":case"integer":I.push(`text-${Z?.align||"end"}`);break;default:Z?.align&&I.push(`text-${Z.align}`)}return{"data-row-index":r,"data-column-index":n,style:a,className:I.join(" "),title:v,onClick:b===R?void 0:re,onDoubleClick:b===R?void 0:C}},[A,T,b,y,ie,r,o,j,W,n,a,re,C,se,f,Z]),V=t.useCallback(v=>{if(!ne||!A)return;const I=parseInt(v.currentTarget.dataset.rowIndex);if(v.shiftKey&&O!==void 0){const k=h?.includes(O)?O:void 0;if(k!==void 0&&T){const L=r;for(const de of _e.range(L>k?k+1:L,L>k?L+1:k)){const me=T[de]._index;(!S||!S.includes(me))&&ne(me)}}}else ne(A._index);te(I),ye.current?.focus()},[h,S,O,ne,A,r,te,T]),ye=t.useRef(null);if(!A||!Q)return null;if(!D||o&&!o[A._index])return e.jsx("div",{...Q,children:"loading"});if(b===R)return e.jsx("div",{...Q,onMouseDown:V,children:e.jsx("div",{style:{textAlign:"center"},children:e.jsx("input",{ref:ye,type:"checkbox",readOnly:!0,checked:h?.includes(A._index),disabled:S?.includes(A._index)})})});if(X&&o)return e.jsx("div",{...Q,children:e.jsx(X,{dataIndex:A._index,rowData:o[A._index],rowIndex:r,...Z?.tdBodyProps})});const J=A[b];return y?.format==="url"&&J?e.jsx("a",{href:J,target:"_blank",rel:"noopener noreferrer",...Q,children:J}):e.jsx("div",{...Q,children:J})},ut=t.memo(Nt);function St(){const{checkedIndexes:n,disabledCheckedIndexes:r,sortedRenderData:a}=t.useContext(Me);return t.useMemo(()=>{const h=[...a||[]].filter(_=>(n?n.includes(_._index):!0)||(r?!r.includes(_._index):!0));return n?.length!==0&&h.length===n?.length},[n,r,a])}function ht(n,r,a){return!!(n&&a?.isSortable!==!1&&(r||a?.renderData||a?.sort))}function ft(){const{setCustomColumnWidths:n,settingsStorageKey:r}=t.useContext(Me);return t.useCallback(a=>{r&&localStorage.setItem(`${r}.columnWidths`,JSON.stringify(Array.from(a))),n(a)},[n,r])}const Ot=({index:n,style:r})=>{const{checkedIndexes:a,columnNames:h,columnWidths:_,config:d,disabledCheckedIndexes:S,dropTargetIndex:p,isColumnFilterable:W,isSortable:j,setCheckedIndexes:D,properties:O,required:E,setCustomColumnNames:w,setDropTargetIndex:$,setFilterSortColumn:G,setMenuConfig:te,settingsStorageKey:T,tableDataState:o,sortedRenderData:f,translate:b,displayTimezone:y}=t.useContext(Me),[Z,ne]=t.useState(!1),ce=n===p,re=ft(),C=h[n],A=C===R?{type:"boolean"}:O[C],ie=o.sortColumn===C?o.sortAsc:void 0,X=d?d[C]:void 0;let se=W&&(A||X?.FilterMenu)&&X?.isFilterable!==!1?xe.AVAILABLE:xe.UNAVAILABLE;o.columnFilterMap&&o.columnFilterMap[C]!==void 0&&(se=xe.ACTIVE);const Q=ht(j,A,X),V=["mig-schema-table__th",`mig-schema-table__th--filter-${se}`,`mig-schema-table__th--prop-${C}`];V.push(Q?"mig-schema-table__th--sortable":"mig-schema-table__th--unsortable"),ie!==void 0&&V.push("mig-schema-table__th--sorted"),Z&&V.push("mig-schema-table__th--dragging"),ce&&V.push("mig-schema-table__th--drop-target");const{format:ye}=A||{},{align:J,defaultSortDesc:v,showTimezones:I=!y,title:k}=X||{},L=t.useCallback(()=>{if(Q){if(ie===void 0){G(C,!v);return}G(C,!ie)}},[Q,v,C,G,ie]),de=E.includes(C),me=t.useCallback(z=>{const be=z.currentTarget;te(ve=>{if(ve?.propName!==C)return{propConfig:X,propIsRequired:de,propName:C,referenceElement:be}})},[X,de,C,te]),we=t.useMemo(()=>k!==void 0?k:ye==="date-time"&&I?`${b(C)} (${b(y||F.timeZone)})`:b(C),[k,ye,I,b,C,y]),oe=t.useCallback((z,be)=>{if(!h||!_)return;const ve=h.indexOf(z),P=[...h];P.splice(ve,1);const x=P.indexOf(be);P.splice(x+1,0,z),w(P);const pe=[..._],ge=pe[ve];pe.splice(ve,1),pe.splice(x+1,0,ge),re(new Uint16Array(pe)),T&&localStorage.setItem(`${T}.columnNames`,JSON.stringify(P))},[h,_,re,T,w]),Ae=t.useCallback(z=>{oe&&(ne(!0),z.dataTransfer.effectAllowed="move",z.dataTransfer.dropEffect="move",z.dataTransfer.setData("text/plain",C))},[oe,C]),je=t.useCallback(()=>{oe&&(ne(!1),$(-1))},[oe,$]),Xe=t.useCallback(z=>{oe&&(z.preventDefault(),$(n))},[n,oe,$]),Ye=t.useCallback(z=>{if($(-1),!oe||!C)return;const be=z.dataTransfer.getData("text/plain");!be||be===C||oe(be,C)},[oe,C,$]),Ie=St(),Ke=t.useCallback(()=>{!D||!f||D(Ie?[]:f.map(z=>z._index).filter(z=>!S?.includes(z)))},[D,f,Ie,S]);if(C===R)return e.jsx("div",{style:r,className:V.join(" "),children:e.jsx("div",{style:{width:"100%",textAlign:"center"},title:`${a?.length||0} selected`,children:e.jsx("input",{type:"checkbox",name:"selectAll",checked:Ie,onChange:Ke})})});switch(A?.type){case"boolean":V.push(`text-${J||"center"}`,`justify-content-${J||"center"}`);break;case"integer":case"number":V.push(`text-${J||"end"}`,`justify-content-${J||"end"}`);break;default:J&&V.push(`text-${J}`)}let q=X?.hoverTitle;return!q&&typeof we=="string"&&(q=we),e.jsxs("div",{className:V.join(" "),style:r,title:q,draggable:!0,onDragStart:Ae,onDragEnd:je,onDragOver:Xe,onDrop:Ye,children:[e.jsxs("div",{className:"mig-schema-table__th__label-body",style:{lineHeight:"44px"},onClick:L,children:[e.jsx("span",{className:"mig-schema-table__th__label-body-text",children:we}),ie===void 0?null:e.jsx("span",{className:"mig-schema-table__th__sort-icon",children:ie?"↓":"↑"})]}),Q||se!==xe.UNAVAILABLE?e.jsx("button",{className:"mig-schema-table__th__trigger-el",onClick:me,children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"#404040",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polyline",{points:"6 9 12 15 18 9"})})}):null]})},mt=t.memo(Ot),$t={[fe.GT]:">",[fe.LT]:"<",[fe.EQ]:"="},Ft=t.memo(({columnFilterValue:n,onChange:r,onInputKeyDown:a,propIsRequired:h,propName:_,propSchema:d,translate:S})=>{const{displayTimezone:p}=t.useContext(Me),{type:W,format:j,minimum:D,maximum:O}=d||{},E=n,w=j==="date-time";switch(W){case"number":case"integer":const $=E||{},G=(o,f,b)=>{const y={...$,[o]:f.value===""?void 0:parseInt(f.value)},Z=Object.values(y).find(ne=>isFinite(ne));r(Z!==void 0&&(D===void 0||Z>=D)?y:void 0,b)};return e.jsxs("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:[h?null:e.jsxs("li",{style:{padding:8},children:[e.jsxs("label",{className:"d-flex",children:[e.jsx("input",{type:"checkbox",style:{marginRight:14},checked:!!$.filterEmpty,onChange:()=>{const{filterEmpty:o,...f}=$;o||(f.filterEmpty=!0),r(Object.keys(f).length?f:void 0,!0)}}),"Hide empty values"]}),e.jsx("hr",{})]}),Object.keys(fe).map(o=>{const f=$[o];return e.jsxs("li",{children:[e.jsx("label",{style:{width:40,paddingLeft:16},children:$t[o]}),e.jsx("input",{className:"form-control",style:{width:120},type:"number",value:f!==void 0?f:"","data-prop-name":_,onChange:b=>{G(o,b.currentTarget,!1)},onBlur:b=>{G(o,b.currentTarget,!0)},onKeyDown:a,min:D,max:O})]},o)})]});case"boolean":const te=["✓","✕"];h||te.push("?");let T=E?"✓":"✕";return E===null&&(T="?"),E===void 0&&(T=""),e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsxs("select",{autoFocus:!0,className:"form-select",value:T,"data-prop-name":_,onChange:o=>{switch(o.currentTarget.value){case"✓":r(!0,!0);break;case"✕":r(!1,!0);break;case"?":r(null,!0);break;default:r(void 0,!0)}},children:[e.jsx("option",{value:"",children:"All"},"all"),te.map(o=>e.jsx("option",{value:o,children:o},`column-filter-select-${o}`))]})})});case"string":if(d?.enum)return e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsxs("select",{autoFocus:!0,className:"form-select",value:E,"data-prop-name":_,onChange:o=>{r(o.currentTarget.value||void 0,!0)},children:[e.jsx("option",{value:"",children:"All"},"all"),d.enum.map(o=>e.jsx("option",{value:o,children:S(o)},`column-filter-select-${o}`))]})})});if(w||j==="date"){const o=w?Le:Je,f=n||{from:void 0,to:void 0,filterEmpty:void 0};return e.jsxs("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:[h?null:e.jsxs("li",{style:{padding:8},children:[e.jsxs("label",{className:"d-flex",children:[e.jsx("input",{type:"checkbox",checked:!!f.filterEmpty,onChange:()=>{const{filterEmpty:b,...y}=f;b||(y.filterEmpty=!0),r(Object.keys(y).length?y:void 0,!0)}}),"Hide empty values"]}),e.jsx("hr",{})]}),e.jsxs("li",{style:{padding:8},children:[e.jsx("label",{style:{width:120,paddingLeft:4},children:"After"}),e.jsx(ot,{dateFormat:o,"data-prop-name":_,locale:it.nl,selected:f.from?new Fe.TZDate(f.from).withTimeZone(p||F.timeZone):null,onChange:b=>{if(!b&&!f.to){r(void 0,!0);return}if(f.to&&b&&b>f.to)return;const y=b?Fe.TZDate.tz(p||F.timeZone,b):void 0;r({...n,from:y},!0)},placeholderText:o,isClearable:!0,selectsStart:!0,showTimeSelect:w,showTimeInput:w,showMonthDropdown:!0,showYearDropdown:!0,timeIntervals:15,shouldCloseOnSelect:!w})]}),e.jsxs("li",{style:{padding:8},children:[e.jsx("label",{style:{width:120,paddingLeft:4},children:"Before"}),e.jsx(ot,{id:"filter-date",dateFormat:o,"data-prop-name":_,locale:it.nl,selectsEnd:!0,selected:f.to?new Fe.TZDate(f.to).withTimeZone(p||F.timeZone):null,showMonthDropdown:!0,showYearDropdown:!0,onChange:b=>{if(!b&&!f.from){r(void 0,!0);return}const y=b?w?Fe.TZDate.tz(p||F.timeZone,b):Ve.endOfDay(b):void 0;f.from&&y&&y<f.from||r({...n,to:y},!0)},placeholderText:o,isClearable:!0,startDate:f.from,endDate:f.to,showTimeInput:w,showTimeSelect:w,timeIntervals:15,shouldCloseOnSelect:!w})]})]})}default:return e.jsx("ol",{className:"mig-schema-table-menu mig-schema-table__th-menu__filter-menu-component",children:e.jsx("li",{children:e.jsx("input",{autoFocus:!0,type:"search",className:"form-control",placeholder:`Search ${_}`,"aria-label":`Search ${_}`,value:E||"","data-prop-name":_,onChange:o=>{r(o.currentTarget.value||void 0,!1)},onKeyDown:a,onBlur:o=>{r(o.currentTarget.value||void 0,!0)}})})})}}),Wt=({isSortable:n,isFilterable:r,onChange:a,onClose:h,onInputKeyDown:_,propConfig:d,propIsRequired:S,propName:p,propSchema:W,referenceElement:j,setFilterSortColumn:D,translate:O,value:E})=>{const w=We.useFloating({placement:"bottom-start",elements:{reference:j},middleware:[We.flip()]}),$=We.useFloating({placement:"right-start",middleware:[We.flip()]});t.useEffect(()=>{const f=b=>{if(!w.elements.floating)return;let y=b.target;for(;y&&w.elements.floating;){if(y===w.elements.floating||y===$.elements.floating)return;y=y.parentNode===window.document?null:y.parentNode}h(b)};return window.addEventListener("click",f,{capture:!0}),()=>{window.removeEventListener("click",f,{capture:!0})}},[w.elements.floating,h,$.elements.floating]);const G=d?.FilterMenu||Ft,te=t.useCallback(f=>{D(p,!0),h(f)},[h,p,D]),T=t.useCallback(f=>{D(p,!1),h(f)},[h,p,D]),o=t.useCallback(()=>{a(void 0,!0)},[a]);return!n&&!r?null:e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mig-schema-table mig-schema-table__th-menu",ref:w.refs.setFloating,style:w.floatingStyles,children:e.jsxs("ol",{className:"mig-schema-table-menu",children:[n?e.jsxs("li",{onClick:te,style:{padding:8},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:"↓"})," ",O("sortAscending")]}):null,n?e.jsxs("li",{onClick:T,style:{padding:8},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:"↑"})," ",O("sortDescending")]}):null,r?e.jsxs("li",{style:{padding:8},onMouseOver:f=>{$.refs.setReference(f.currentTarget)},children:[e.jsx("span",{className:"mig-schema-table__th-menu__icon",children:e.jsx("input",{type:"checkbox",id:"mig-schema-table__th-menu__filters",checked:E!==void 0,disabled:E===void 0,onChange:o})}),e.jsx("label",{htmlFor:"mig-schema-table__th-menu__filters",children:O("filters")}),e.jsx("div",{className:"mig-schema-table__th-menu__sub-menu-indicator"})]}):null]})}),$.elements.reference?e.jsx("div",{className:"mig-schema-table mig-schema-table__th-menu__sub-menu",ref:$.refs.setFloating,style:$.floatingStyles,children:e.jsx(G,{columnFilterValue:E,onChange:a,onInputKeyDown:_,propIsRequired:S,propName:p,propSchema:W,translate:O})}):null]})},jt=t.memo(Wt),Bt=({columnWidths:n,resizeColumnIndex:r,setResizeColumnIndex:a,tableBodyHeight:h})=>{const[_,d]=t.useState(0),S=ft(),p=t.useCallback(O=>{const E=n.map((w,$)=>$===r?Math.max(w+O,Ge):w);S(E)},[n,r,S]);let W=0;const j=t.useCallback(O=>{a(parseInt(O.currentTarget.dataset.columnIndex)),d(O.clientX)},[a]),D=t.useCallback(O=>{p(O.clientX-_),d(0),a(-1)},[_,p,a]);return e.jsx("div",{children:[...n].map((O,E)=>{W+=O;const w=["mig-schema-table__column_resizer"];return E===r&&w.push("mig-schema-table__column_resizer--dragged"),e.jsx("div",{style:{left:W-dt,bottom:h},className:w.join(" "),draggable:"true","data-column-index":E,onDragStart:j,onDragEnd:D},E)})})},bt=n=>{const[r,a]=t.useState({width:0,height:0}),h=t.useMemo(()=>_e.debounce(a,100),[]);return t.useEffect(()=>{if(!n)return;const _=new ResizeObserver(d=>{for(const S of d){const{blockSize:p,inlineSize:W}=S.borderBoxSize[0];W&&p&&h({width:W,height:p})}});return _.observe(n),()=>{_.disconnect()}},[h,n]),r},gt=new Date("1000-01-01 00:00:00Z"),zt=new Intl.NumberFormat("nl-NL"),Qt=new Intl.NumberFormat("nl-NL",{style:"currency",currency:"EUR"});function qt(n,r){const{TdBody:a,sortByValue:h}=r||{};if(h!==void 0)return h;if(!n)return!1;const{format:_,type:d}=n;return _?.startsWith("date")||d==="boolean"||d==="integer"||d==="number"||!!a}const Ut=({CustomElement:n,CustomSearchInput:r,Heading:a=Pe.VariableSizeList,autoRender:h,checkedIndexes:_,config:d,customElementProps:S,data:p,defaultColumnFilters:W,defaultSortAsc:j=!1,defaultSortColumn:D,disabledCheckedIndexes:O,displayTimezone:E,enableAutoFocus:w=!0,enableRowCounter:$=!0,getRowClassName:G,getRowSelected:te,getSearchQueryFilterResult:T,infiniteLoaderRef:o,isColumnFilterable:f=!0,isExportable:b=!0,isResizable:y=!0,isSearchable:Z=!0,isSortable:ne=!0,itemCount:ce,loadMoreItems:re,maxHeight:C,onRowClick:A,onRowDoubleClick:ie,onSearchEnter:X,onTableDataStateChange:se,rowHeight:Q=36,schema:V,searchPlaceholder:ye,setCheckedIndexes:J,settingsStorageKey:v,style:I,translate:k=lt,useFilterStateHash:L,variableSizeGridRef:de,width:me})=>{const[we,oe]=t.useState(),[Ae,je]=t.useState(),[Xe,Ye]=t.useState(-1),[Ie,Ke]=t.useState(-1),[q,z]=t.useState(),[be,ve]=t.useState(),P=p instanceof Function,[x,pe]=t.useState(P?void 0:p),[ge,Re]=t.useState(),[i,Te]=t.useState({searchQuery:"",columnFilterMap:W||{},sortColumn:D,sortAsc:j}),[U,Ht]=t.useState(L?F.parseLocationHash(window.location.hash):null);t.useEffect(()=>{P||pe(p)},[p,P]),t.useEffect(()=>{!P||x!==void 0||p(U&&Object.keys(U).length!==0?{...U,columnFilterMap:U.columnFilterMap||{}}:i).then(pe)},[p,P,U,x,i]),t.useEffect(()=>{ge||Re(i)},[i,ge]),t.useEffect(()=>{if(!L)return;const s=()=>{Ht(F.parseLocationHash(window.location.hash))};return window.addEventListener("hashchange",s),()=>{window.removeEventListener("hashchange",s)}},[L]),t.useEffect(()=>{if(!L)return;const{columnFilterMap:s,searchQuery:c,sortAsc:u,sortColumn:l}=U||{},m={searchQuery:c||"",columnFilterMap:s||W||{},sortAsc:u===void 0?j:u,sortColumn:l===void 0?D:l};Te(N=>_e.isEqual(m,N)?N:m)},[U,L,W,j,D]),t.useEffect(()=>{se&&se(i)},[se,i]);const _t=t.useRef(null),pt=t.useRef(null),Be=bt(_t.current),Ct=bt(pt.current),Ne=t.useMemo(()=>me||Math.floor(Be.width||0),[Be.width,me]),Se=t.useMemo(()=>!_e.isEqual(i,ge)&&P,[i,ge,P]),{properties:le,required:Jt}=t.useMemo(()=>({properties:{},required:[],...V}),[V]),ze=v?localStorage.getItem(`${v}.columnNames`):null,Qe=v?localStorage.getItem(`${v}.columnWidths`):null,ee=t.useMemo(()=>{if(we)return we;const s=ze?JSON.parse(ze):void 0;let c=Object.keys(le);if(J&&c.unshift(R),d){Object.keys(d).forEach(l=>{c.includes(l)||c.push(l)});const u=Object.entries(d).reduce((l,[m,N])=>(N.hidden&&l.push(m),l),[]);c=c.filter(l=>!u.includes(l)).sort((l,m)=>{let N=d[l]?d[l].order:void 0;N===void 0&&(N=Object.keys(le).findIndex(K=>K===l));let g=d[m]?d[m].order:void 0;return g===void 0&&(g=Object.keys(le).findIndex(K=>K===m)),m===R||l===R?0:N===-1?1:g===-1?-1:N-g})}return s?.length===c.length?s:c},[d,we,J,le,ze]),qe=t.useMemo(()=>x&&ee?x.map((s,c)=>ee.reduce((u,l)=>{const m=le[l],N=d?d[l]:void 0;if(N?.renderData)return u[l]=N.renderData(s,c),u;if(!m||l===R)return u[l]="",u;const g=s?s[l]:"";switch(m.type){case"array":return u[l]=m.items?.type==="string"&&g?g.map(K=>k(K)).join(", "):JSON.stringify(g),u;case"boolean":return u[l]=g===void 0?"?":g?"✓":"✕",u;case"number":case"integer":return g===void 0?(u[l]="",u):(u[l]=m.format==="currency"?Qt.format(g):zt.format(g),u);case"string":if(m.format==="date"&&g)return u[l]=["2999-12-31","1970-01-01"].includes(g)?"-":He(new Date(g),N?.dateFormat||Je),u;if(m.format==="date-time"&&g)return u[l]=E?F.localeFormatInTimeZone(new Date(g),E,Le):He(new Date(g),N?.dateFormat||Le),u;if(m.enum)return u[l]=g?k(g):"",u;default:return u[l]=g?`${g}`:"",u}},{_index:c})):void 0,[x,ee,le,d,k,E]),De=ee?ee.length:0,{dynamicWidthColumnCount:et,fixedWidthColumnsWidth:tt}=t.useMemo(()=>{let s=0,c=0;return(ee||[]).forEach(u=>{if(u===R){s+=at;return}const l=d?d[u]:void 0;l?.width?s+=l.width:c+=1},0),{dynamicWidthColumnCount:c,fixedWidthColumnsWidth:s}},[ee,d]),ae=t.useMemo(()=>{if(Ae)return new Uint16Array(Ae);const s=Qe?new Uint16Array(JSON.parse(Qe)):void 0,c=Math.max(Math.floor((Ne-tt)/et),Ge);let u=(Ne-tt)%et;const l=new Uint16Array(ee.map(m=>{if(m===R)return at;const N=d?d[m]:void 0;return N?.width?N?.width:u?(u-=1,c+1):c}));return s?.length===l.length?s:l},[ee,d,Ae,et,tt,Qe,Ne]),Ue=t.useCallback(s=>ae?ae[s]:1,[ae]),Oe=t.useMemo(()=>{if(!qe||!f&&!Z||P)return qe;const{searchQuery:s}=i,c=s.toLowerCase()||"",u=l=>x&&T?T(x[l._index],s):!(ee&&!ee.find(m=>`${l[m]}`.toLowerCase().includes(c)));return qe.filter(l=>{let m=u(l);return!m||!i.columnFilterMap?!1:(Object.entries(i.columnFilterMap).forEach(([N,g])=>{if(!m||g===void 0)return;const K=d?d[N]:void 0;if(x&&K?.filter){m=K.filter(x[l._index],g);return}const he=le[N],B=x[l._index]?.[N];switch(he?.type){case"boolean":case"number":case"integer":if(g&&typeof g=="object"){g.filterEmpty&&B===void 0&&(m=!1);for(const H of Object.keys(fe)){const ke=g[H];if(m&&_e.isFinite(ke))switch(H){case fe.EQ:B!==ke&&(m=!1);break;case fe.GT:B<=ke&&(m=!1);break;case fe.LT:B>=ke&&(m=!1);break}}}else{if(B===void 0&&g===null)return!0;m=B===g}break;case"string":if(typeof g=="object"&&(he.format==="date"||he.format==="date-time")){const{from:H,to:ke,filterEmpty:vt}=g;if(!B)m=!vt;else{const Ze=B?new Date(B):void 0;(vt===!1||H&&(!Ze||Ze<H)||ke&&(!Ze||Ze>ke))&&(m=!1)}return}default:if(he?.enum){m=B===g;return}m=`${l[N]}`.toLowerCase().includes(`${g}`.toLowerCase())}}),m)})},[qe,f,Z,P,i,T,ee,d,x,le]),Y=t.useMemo(()=>{const{sortAsc:s,sortColumn:c}=i;if(!c||!Oe||!x||P)return Oe;const u=le[c],l=d?d[c]:void 0,m=l?.sort;if(m)return Oe.sort((K,he)=>{const B=x[K._index],H=x[he._index];return B?H?m(B,H,s===void 0?j:s):-1:1});const N=u&&u.format?.startsWith("date"),g=qt(u,l);return Oe.sort((K,he)=>{let B=g&&x[K._index]?x[K._index][c]:`${K[c]}`.toLowerCase(),H=g&&x[he._index]?x[he._index][c]:`${he[c]}`.toLowerCase();return g&&N&&(B=new Date(B),isNaN(B.getTime())&&(B=gt),H=new Date(H),isNaN(H.getTime())&&(H=gt)),B===H?0:B?H?(B<H?1:-1)*(s?-1:1):s?1:-1:s?-1:1})},[d,j,Oe,P,le,x,i]),yt=t.useCallback(s=>{const c={...i.columnFilterMap};delete c[s],Te({...i,columnFilterMap:c})},[i]),nt=t.useCallback((s,c)=>{if(L){window.location.hash=F.serializeLocationHash({...U,sortColumn:s,sortAsc:c});return}Te({...i,sortColumn:s,sortAsc:c})},[i,U,L]),Gt=t.useCallback(s=>{Te({...i,searchQuery:s.currentTarget.value})},[i]),Ee=t.useCallback(()=>{Re(i),pe(void 0)},[i]);t.useEffect(()=>{if(!h||!U||!ge||!L)return;const s=Object.keys(U);let c=!1;for(const u of s){const l=U[u],m=ge[u];if(typeof l=="string"&&l!==m){c=!0;break}if(typeof l=="object"&&!_e.isEqual(l,m)){c=!0;break}}c&&Ee()},[h,U,ge,Ee,L]);const wt=t.useCallback(s=>{s.key==="Enter"&&(z(void 0),Se&&Ee(),X&&s.currentTarget.className==="mig-schema-table__search"&&X(i.searchQuery||""))},[Se,i.searchQuery,X,Ee]),rt=t.useCallback(()=>Q,[Q]),ue=t.useMemo(()=>_e.sum(ae),[ae]),$e=t.useMemo(()=>Y?Y.length:0,[Y]),Ce=t.useMemo(()=>{const s=Q*$e;let c;if(C&&(c=C==="100%"?Be.height:C,!c))return 0;const u=c?c-Ct.height-ct:0;return u&&u<s?u:s},[Q,$e,C,Ct,Be.height]),Xt=t.useCallback(s=>{z(void 0),s.preventDefault(),s.stopPropagation()},[]),Yt=t.useCallback((s,c)=>{if(!q)return;if(L&&c!==!1){window.location.hash=F.serializeLocationHash({...U,columnFilterMap:{...i.columnFilterMap,[q.propName]:s}});return}if(s===void 0){yt(q.propName);return}const u={...i.columnFilterMap,[q.propName]:s};Te({...i,columnFilterMap:u})},[yt,i,U,q,L]),Kt=t.useCallback(()=>{const s={searchQuery:"",columnFilterMap:{},sortColumn:D,sortAsc:j};L&&(window.location.hash=F.serializeLocationHash(s)),Re(s),Te(s)},[L,j,D]),Rt=t.useCallback(()=>{const s=U?.searchQuery||"";L&&(i.searchQuery||s)&&i.searchQuery!==s&&(window.location.hash=F.serializeLocationHash({...U,searchQuery:i.searchQuery}))},[U,i.searchQuery,L]),en=t.useCallback(async s=>{if(s.preventDefault(),s.stopPropagation(),!Y)return;const{renderDataToExcel:c}=await Promise.resolve().then(()=>Vt);c(Y)},[Y]),tn=t.useCallback(()=>{v&&(localStorage.removeItem(`${v}.columnNames`),localStorage.removeItem(`${v}.columnWidths`),oe(void 0),je(void 0))},[v]),st=t.useCallback(s=>!Y||!x||!re||!ce?!0:x[Y[s]._index]!==void 0,[ce,re,Y,x]),nn=t.useMemo(()=>Ce?!(x&&!Se)&&!re?e.jsx("div",{style:{width:ue,height:Math.max(50,Ce),border:"1px solid #BBB",textAlign:"center",display:"flex",backgroundColor:"#CCC",alignItems:"center",justifyContent:"center"},children:Se?e.jsx("button",{onClick:Ee,className:"btn border",children:"Refresh data"}):e.jsx("div",{children:"⌛ Loading..."})}):re&&ce?e.jsx(Mt,{ref:o,isItemLoaded:st,itemCount:ce,loadMoreItems:re,children:({onItemsRendered:c,ref:u})=>e.jsx(Pe.VariableSizeGrid,{className:"mig-schema-table__tbody",estimatedRowHeight:Q,height:Ce,width:ue,columnWidth:Ue,rowHeight:rt,columnCount:De,rowCount:$e,ref:u,onItemsRendered:({overscanRowStartIndex:l,overscanRowStopIndex:m,visibleRowStartIndex:N,visibleRowStopIndex:g})=>c({overscanStartIndex:l,overscanStopIndex:m,visibleStartIndex:N,visibleStopIndex:g}),children:ut},`tbody_${Ce}_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${De}_${ae.join(" ")}`)}):e.jsx(Pe.VariableSizeGrid,{className:"mig-schema-table__tbody",estimatedRowHeight:Q,height:Ce,width:ue,columnWidth:Ue,rowHeight:rt,columnCount:De,rowCount:$e,ref:de,children:ut},`tbody_${Ce}_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${De}_${ae.join(" ")}`):null,[De,ae,Ue,rt,o,Se,st,ce,re,Ee,$e,Q,ue,i.searchQuery,i.sortAsc,i.sortColumn,x,Ce,de]),rn=t.useMemo(()=>({...I,width:me?Math.min(ue,Ne):void 0,height:C==="100%"?"100%":void 0,maxHeight:C==="100%"?"100%":void 0}),[C,ue,I,Ne,me]),sn=r||"input";return e.jsx(Me.Provider,{value:{checkedIndexes:_,columnNames:ee,columnWidths:ae,config:d,disabledCheckedIndexes:O,displayTimezone:E,dropTargetIndex:Ie,getRowClassName:G,getRowSelected:te,isColumnFilterable:f,isItemLoaded:st,isSortable:ne,lastCheckChangedRowIndex:be,onRowClick:A,onRowDoubleClick:ie,properties:le,required:Jt,setCheckedIndexes:J,setCustomColumnNames:oe,setCustomColumnWidths:je,setDropTargetIndex:Ke,setFilterSortColumn:nt,setLastCheckChangedRowIndex:ve,setMenuConfig:z,settingsStorageKey:v,sortedRenderData:Y,sourceData:x,tableDataState:i,translate:k||lt},children:e.jsxs("div",{className:`mig-schema-table${A?" mig-schema-table--clickable-rows":""}`,ref:_t,style:rn,role:"table",children:[e.jsxs("div",{className:"mig-schema-table__action-container",ref:pt,children:[e.jsx("div",{children:Z?e.jsx(sn,{className:"mig-schema-table__search",type:"search",name:"search",autoComplete:"off",placeholder:ye||k("search..."),value:i.searchQuery,onChange:Gt,onKeyDown:wt,autoFocus:w,onBlur:Rt}):null}),n?e.jsx(n,{...S,renderData:Y}):e.jsx("div",{className:"mig-schema-table__custom_element_placeholder"}),$&&Array.isArray(p)?e.jsx("span",{className:"mig-schema-table__row_counter",children:k("showingFilteredCountOfTotalCount",Y?.length||0,p.length)}):null,b?e.jsx("button",{onClick:en,style:{marginLeft:8},disabled:!Y?.length,children:k("exportData")}):null,Z||f?e.jsx("button",{onClick:Kt,style:{marginLeft:8},disabled:i.columnFilterMap&&i.searchQuery?Object.keys(i.columnFilterMap).length+i.searchQuery.length===0:!1,children:k("clearFilters")}):null,v?e.jsx("button",{onClick:tn,style:{marginLeft:8},disabled:!ze&&!Qe,children:k("clearSettings")}):null]}),e.jsxs("div",{className:"mig-schema-table__column_resize_container",children:[e.jsx(a,{height:ct,itemCount:De,itemSize:Ue,layout:"horizontal",width:ue,sortAsc:i.sortAsc,setFilterSortColumn:nt,sortColumn:i.sortColumn,sortedRenderData:Y,className:"mig-schema-table__th-row",children:mt},`thead_${ue}_${i.sortColumn}_${i.sortAsc}_${i.searchQuery}_${ae.join(" ")}`),nn,y?e.jsx(Bt,{columnWidths:ae,resizeColumnIndex:Xe,setResizeColumnIndex:Ye,tableBodyHeight:Ce}):null]}),x?x.length>0?e.jsx(e.Fragment,{children:kt.createPortal(q?e.jsx(jt,{isFilterable:f&&q.propConfig?.isFilterable!==!1,isSortable:ht(!!ne,V.properties[q.propName],q.propConfig),onChange:Yt,onClose:Xt,onInputKeyDown:wt,propConfig:q.propConfig,propIsRequired:q.propIsRequired,propName:q.propName,propSchema:V.properties[q.propName],referenceElement:q.referenceElement,setFilterSortColumn:nt,translate:k,value:i.columnFilterMap?i.columnFilterMap[q.propName]:null}):null,document.body)}):e.jsx("div",{className:"mig-schema-table__no_data",children:"No data found"}):null]})})},Zt=t.memo(Ut),Pt=t.memo(({refresh:n,period:r=60})=>{const[a,h]=t.useState(new Date),[_,d]=t.useState(new Date),S=t.useCallback(()=>{d(new Date),n()},[n]),p=t.useMemo(()=>Ve.differenceInSeconds(a,_),[a,_]);t.useEffect(()=>{p>r&&S()},[p,a,_,r,S]),t.useEffect(()=>{const D=setInterval(()=>{h(new Date)},1e3);return()=>{clearInterval(D)}},[]);const W=r-p;return e.jsxs("div",{className:"mx-auto",title:`Refresh ${W>0?`in ${W} seconds`:"NOW"}`,children:["Last update ",He(_,"HH:mm")]})}),Vt=Object.freeze(Object.defineProperty({__proto__:null,renderDataToExcel:n=>{const r=new Tt.Workbook,a=r.addWorksheet("Data");n.length&&(a.addRow(_e.difference(Object.keys(n[0]),["_index","SELECT_ALL_COLUMN_NAME"])),a.getRow(1).font={bold:!0},a.addRows(n.map(h=>{const{_index:_,SELECT_ALL_COLUMN_NAME:d,...S}=h;return Object.values(S)})),r.xlsx.writeBuffer().then(h=>{const _=new Blob([h],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});Dt.saveAs(_,"export.xlsx")}).catch(h=>{console.error("Error generating Excel file:",h)}))}},Symbol.toStringTag,{value:"Module"}));M.DEFAULT_DATE_FORMAT=Je,M.DEFAULT_DATE_TIME_FORMAT=Le,M.EColumnFilterStatus=xe,M.MINIMUM_COLUMN_WIDTH=Ge,M.RESIZER_WIDTH=dt,M.Refresher=Pt,M.SchemaTable=Zt,M.Th=mt,Object.defineProperty(M,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mig-schema-table",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
7
7
|
],
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"types": "./dist/
|
|
10
|
+
"types": "./dist/mig-schema-table.d.ts",
|
|
11
11
|
"import": "./dist/mig-schema-table.es.js",
|
|
12
12
|
"require": "./dist/mig-schema-table.umd.js"
|
|
13
13
|
},
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "./dist/mig-schema-table.umd.js",
|
|
17
17
|
"module": "./dist/mig-schema-table.es.js",
|
|
18
|
-
"types": "./dist/
|
|
18
|
+
"types": "./dist/mig-schema-table.d.ts",
|
|
19
19
|
"private": false,
|
|
20
20
|
"scripts": {
|
|
21
21
|
"dev": "vite",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"exceljs": "^4.4.0",
|
|
32
32
|
"file-saver": "^2.0.5",
|
|
33
33
|
"lodash": "^4.17.21",
|
|
34
|
-
"mig-data-tools": "^1.0.
|
|
34
|
+
"mig-data-tools": "^1.0.10",
|
|
35
35
|
"react-datepicker": "^8.9.0",
|
|
36
36
|
"react-window": "^1.8.10",
|
|
37
37
|
"react-window-infinite-loader": "^1.0.9"
|
|
@@ -57,16 +57,16 @@
|
|
|
57
57
|
"@types/react-window-infinite-loader": "^1.0.9",
|
|
58
58
|
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
59
59
|
"@typescript-eslint/parser": "^7.2.0",
|
|
60
|
-
"@vitejs/plugin-react-swc": "^
|
|
60
|
+
"@vitejs/plugin-react-swc": "^4.2.2",
|
|
61
61
|
"eslint": "^8.57.0",
|
|
62
62
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
63
63
|
"eslint-plugin-react-refresh": "^0.4.6",
|
|
64
64
|
"openapi3-ts": "^4.3.1",
|
|
65
65
|
"prettier": "^3.2.5",
|
|
66
66
|
"sass": "^1.77.2",
|
|
67
|
-
"typescript": "
|
|
67
|
+
"typescript": "5.8.2",
|
|
68
68
|
"vite": "^7.2.2",
|
|
69
|
-
"vite-plugin-dts": "^
|
|
69
|
+
"vite-plugin-dts": "^4.5.4"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react": "^18.2.0",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
interface IRefresherProps {
|
|
4
|
-
refresh: () => void;
|
|
5
|
-
period?: number;
|
|
6
|
-
}
|
|
7
|
-
declare const Refresher: React.MemoExoticComponent<({ refresh, period }: IRefresherProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
-
export default Refresher;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface IColumnResizersProps {
|
|
2
|
-
columnWidths: Uint16Array;
|
|
3
|
-
resizeColumnIndex: number;
|
|
4
|
-
setResizeColumnIndex: (newResizeColumnIndex: number) => void;
|
|
5
|
-
tableBodyHeight: number;
|
|
6
|
-
}
|
|
7
|
-
declare const ColumnResizers: ({ columnWidths, resizeColumnIndex, setResizeColumnIndex, tableBodyHeight, }: IColumnResizersProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export default ColumnResizers;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
interface ITdProps {
|
|
4
|
-
columnIndex: number;
|
|
5
|
-
rowIndex: number;
|
|
6
|
-
style: React.CSSProperties;
|
|
7
|
-
}
|
|
8
|
-
declare const Td: <T>({ columnIndex, rowIndex, style }: ITdProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
-
declare const MemoizedTd: typeof Td;
|
|
10
|
-
export default MemoizedTd;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
interface IThProps {
|
|
4
|
-
index: number;
|
|
5
|
-
style: React.CSSProperties;
|
|
6
|
-
}
|
|
7
|
-
declare const Th: <T>({ index, style }: IThProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
declare const MemoizedTh: typeof Th;
|
|
9
|
-
export default MemoizedTh;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import { oas31 } from 'openapi3-ts';
|
|
3
|
-
|
|
4
|
-
export interface IFilterMenuComponentProps<T = any> {
|
|
5
|
-
columnFilterValue?: T;
|
|
6
|
-
onChange: (newValue: T | undefined, persistState?: boolean) => void;
|
|
7
|
-
onInputKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void;
|
|
8
|
-
propIsRequired: boolean;
|
|
9
|
-
propName: string;
|
|
10
|
-
propSchema?: oas31.SchemaObject;
|
|
11
|
-
translate: (key: string, ...args: Array<string | number>) => string;
|
|
12
|
-
}
|
|
13
|
-
declare const FilterMenuComponent: React.MemoExoticComponent<(<T>({ columnFilterValue, onChange, onInputKeyDown, propIsRequired, propName, propSchema, translate, }: IFilterMenuComponentProps<T>) => import("react/jsx-runtime").JSX.Element)>;
|
|
14
|
-
export default FilterMenuComponent;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import { oas31 } from 'openapi3-ts';
|
|
3
|
-
import { IColumnConfig } from '../../types';
|
|
4
|
-
|
|
5
|
-
export interface IThMenuConfig<T> {
|
|
6
|
-
referenceElement: HTMLElement;
|
|
7
|
-
propName: string;
|
|
8
|
-
propConfig?: IColumnConfig<T>;
|
|
9
|
-
propIsRequired: boolean;
|
|
10
|
-
}
|
|
11
|
-
type TThMenuProps<T> = IThMenuConfig<T> & {
|
|
12
|
-
isSortable: boolean;
|
|
13
|
-
isFilterable: boolean;
|
|
14
|
-
onChange: (newValue: T | undefined, persistState?: boolean) => void;
|
|
15
|
-
onClose: (e: MouseEvent | React.MouseEvent) => void;
|
|
16
|
-
onInputKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void;
|
|
17
|
-
propIsRequired: boolean;
|
|
18
|
-
propSchema: oas31.SchemaObject;
|
|
19
|
-
setFilterSortColumn: (sortColumn: string, sortAsc: boolean) => void;
|
|
20
|
-
translate: (key: string, ...args: Array<string | number>) => string;
|
|
21
|
-
value: T | null;
|
|
22
|
-
};
|
|
23
|
-
declare const ThMenu: <T>({ isSortable, isFilterable, onChange, onClose, onInputKeyDown, propConfig, propIsRequired, propName, propSchema, referenceElement, setFilterSortColumn, translate, value, }: TThMenuProps<T>) => import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
-
declare const MemoizedThMenu: typeof ThMenu;
|
|
25
|
-
export default MemoizedThMenu;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { default as React, Dispatch, InputHTMLAttributes, SetStateAction } from 'react';
|
|
2
|
-
import { oas31 } from 'openapi3-ts';
|
|
3
|
-
import { VariableSizeGrid, VariableSizeListProps } from 'react-window';
|
|
4
|
-
import { IColumnConfig, IRenderData } from '../types';
|
|
5
|
-
import { ENumberColumnFilterOperation } from '../inc/constant';
|
|
6
|
-
import { default as InfiniteLoader } from 'react-window-infinite-loader';
|
|
7
|
-
|
|
8
|
-
export interface IColumnFilterMap {
|
|
9
|
-
[propName: string]: unknown;
|
|
10
|
-
}
|
|
11
|
-
export interface ITableDataState {
|
|
12
|
-
columnFilterMap: IColumnFilterMap;
|
|
13
|
-
searchQuery: string;
|
|
14
|
-
sortColumn?: string;
|
|
15
|
-
sortAsc?: boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface ICustomElementProps {
|
|
18
|
-
renderData?: IRenderData[];
|
|
19
|
-
}
|
|
20
|
-
export interface ISchemaTableProps<T> {
|
|
21
|
-
Heading?: React.ComponentType<VariableSizeListProps & {
|
|
22
|
-
setFilterSortColumn?: (sortColumn: string, sortAsc: boolean) => void;
|
|
23
|
-
sortAsc?: boolean;
|
|
24
|
-
sortColumn?: string;
|
|
25
|
-
sortedRenderData?: IRenderData[];
|
|
26
|
-
}>;
|
|
27
|
-
checkedIndexes?: number[];
|
|
28
|
-
config?: {
|
|
29
|
-
[propName: string]: IColumnConfig<T>;
|
|
30
|
-
};
|
|
31
|
-
CustomSearchInput?: React.ComponentType<InputHTMLAttributes<HTMLInputElement>>;
|
|
32
|
-
CustomElement?: React.ComponentType<ICustomElementProps>;
|
|
33
|
-
customElementProps?: {
|
|
34
|
-
[controlProp: string]: unknown;
|
|
35
|
-
};
|
|
36
|
-
data: T[] | ((getDataProps: ITableDataState) => Promise<T[]>);
|
|
37
|
-
defaultColumnFilters?: IColumnFilterMap;
|
|
38
|
-
defaultSortAsc?: boolean;
|
|
39
|
-
defaultSortColumn?: string;
|
|
40
|
-
disabledCheckedIndexes?: number[];
|
|
41
|
-
enableAutoFocus?: boolean;
|
|
42
|
-
enableRowCounter?: boolean;
|
|
43
|
-
getRowClassName?: (rowData: T, dataIndex: number, filteredSortedData: IRenderData[]) => string;
|
|
44
|
-
getRowSelected?: (rowData: T, dataIndex: number) => boolean;
|
|
45
|
-
getSearchQueryFilterResult?: (rowData: T, searchQuery: string) => boolean;
|
|
46
|
-
infiniteLoaderRef?: React.LegacyRef<InfiniteLoader>;
|
|
47
|
-
isColumnFilterable?: boolean;
|
|
48
|
-
isExportable?: boolean;
|
|
49
|
-
isResizable?: boolean;
|
|
50
|
-
isSearchable?: boolean;
|
|
51
|
-
isSortable?: boolean;
|
|
52
|
-
maxHeight?: number | "100%";
|
|
53
|
-
setCheckedIndexes?: Dispatch<SetStateAction<number[]>>;
|
|
54
|
-
onRowClick?: (rowData: T, dataIndex: number, event: React.MouseEvent) => void;
|
|
55
|
-
onRowDoubleClick?: (rowData: T, dataIndex: number, event: React.MouseEvent) => void;
|
|
56
|
-
onSearchEnter?: (searchQuery: string) => void;
|
|
57
|
-
onTableDataStateChange?: (newTableDataState: ITableDataState) => void;
|
|
58
|
-
rowHeight?: number;
|
|
59
|
-
schema: oas31.SchemaObject;
|
|
60
|
-
searchPlaceholder?: string;
|
|
61
|
-
settingsStorageKey?: string;
|
|
62
|
-
style?: React.CSSProperties;
|
|
63
|
-
translate?: (key: string, ...args: Array<string | number>) => string;
|
|
64
|
-
useFilterStateHash?: boolean;
|
|
65
|
-
width?: number;
|
|
66
|
-
variableSizeGridRef?: React.RefObject<VariableSizeGrid>;
|
|
67
|
-
loadMoreItems?: (startIndex: number, stopIndex: number) => void | Promise<void>;
|
|
68
|
-
itemCount?: number;
|
|
69
|
-
displayTimezone?: "Europe/Amsterdam" | "Asia/Jakarta";
|
|
70
|
-
autoRender?: boolean;
|
|
71
|
-
}
|
|
72
|
-
export interface IDateColumnFilterValue {
|
|
73
|
-
from?: Date;
|
|
74
|
-
to?: Date;
|
|
75
|
-
filterEmpty?: boolean;
|
|
76
|
-
}
|
|
77
|
-
export interface INumberColumnFilterValue {
|
|
78
|
-
[ENumberColumnFilterOperation.GT]: number;
|
|
79
|
-
[ENumberColumnFilterOperation.LT]: number;
|
|
80
|
-
[ENumberColumnFilterOperation.EQ]: number;
|
|
81
|
-
filterEmpty?: boolean;
|
|
82
|
-
}
|
|
83
|
-
declare const SchemaTable: <T>({ CustomElement, CustomSearchInput, Heading, autoRender, checkedIndexes, config, customElementProps, data, defaultColumnFilters, defaultSortAsc, defaultSortColumn, disabledCheckedIndexes, displayTimezone, enableAutoFocus, enableRowCounter, getRowClassName, getRowSelected, getSearchQueryFilterResult, infiniteLoaderRef, isColumnFilterable, isExportable, isResizable, isSearchable, isSortable, itemCount, loadMoreItems, maxHeight, onRowClick, onRowDoubleClick, onSearchEnter, onTableDataStateChange, rowHeight, schema, searchPlaceholder, setCheckedIndexes, settingsStorageKey, style, translate, useFilterStateHash, variableSizeGridRef, width, }: ISchemaTableProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
84
|
-
declare const MemoizedSchemaTable: typeof SchemaTable;
|
|
85
|
-
export default MemoizedSchemaTable;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useIsAllRowsChecked(): boolean;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useOnColumnsWidthsChange(): (newColumnWidths: Uint16Array) => void;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_DATE_FORMAT = "dd MMM yyyy";
|
|
2
|
-
export declare const DEFAULT_DATE_TIME_FORMAT = "dd MMM yyyy HH:mm";
|
|
3
|
-
export declare const MINIMUM_COLUMN_WIDTH = 25;
|
|
4
|
-
export declare const HEADER_ROW_HEIGHT = 50;
|
|
5
|
-
export declare const RESIZER_WIDTH = 3;
|
|
6
|
-
export declare enum ENumberColumnFilterOperation {
|
|
7
|
-
"GT" = "GT",
|
|
8
|
-
"LT" = "LT",
|
|
9
|
-
"EQ" = "EQ"
|
|
10
|
-
}
|
|
11
|
-
export declare enum EColumnFilterStatus {
|
|
12
|
-
UNAVAILABLE = "UNAVAILABLE",
|
|
13
|
-
AVAILABLE = "AVAILABLE",
|
|
14
|
-
ACTIVE = "ACTIVE"
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const localeFormat: (date: Date | number, dateFormat: string) => string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function defaultTranslate(key: string, ...args: (string | number)[]): string;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { default as SchemaTable, ICustomElementProps, ITableDataState, ISchemaTableProps } from './SchemaTable';
|
|
2
|
-
import { IColumnConfig, IRenderData, ITdBodyProps } from './types';
|
|
3
|
-
import { default as Th } from './SchemaTable/Th';
|
|
4
|
-
import { DEFAULT_DATE_FORMAT, DEFAULT_DATE_TIME_FORMAT, EColumnFilterStatus, MINIMUM_COLUMN_WIDTH, RESIZER_WIDTH } from './inc/constant';
|
|
5
|
-
import { IFilterMenuComponentProps } from './SchemaTable/ThMenu/FilterMenuComponent';
|
|
6
|
-
import { default as Refresher } from './Refresher';
|
|
7
|
-
|
|
8
|
-
export type { IColumnConfig, ICustomElementProps, IFilterMenuComponentProps, ITableDataState, IRenderData, ISchemaTableProps, ITdBodyProps, };
|
|
9
|
-
export { DEFAULT_DATE_FORMAT, DEFAULT_DATE_TIME_FORMAT, EColumnFilterStatus, MINIMUM_COLUMN_WIDTH, RESIZER_WIDTH, SchemaTable, Th, Refresher, };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { IColumnConfig, IRenderData } from '../types.ts';
|
|
2
|
-
import { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';
|
|
3
|
-
import { ITableDataState } from '../SchemaTable';
|
|
4
|
-
import { Dispatch, SetStateAction } from 'react';
|
|
5
|
-
import { IThMenuConfig } from '../SchemaTable/ThMenu';
|
|
6
|
-
import * as React from "react";
|
|
7
|
-
export interface ISchemaTableContext<T = any> {
|
|
8
|
-
checkedIndexes?: number[];
|
|
9
|
-
columnNames: string[];
|
|
10
|
-
columnWidths: Uint16Array;
|
|
11
|
-
config?: {
|
|
12
|
-
[propName: string]: IColumnConfig<T>;
|
|
13
|
-
};
|
|
14
|
-
disabledCheckedIndexes?: number[];
|
|
15
|
-
displayTimezone?: string;
|
|
16
|
-
dropTargetIndex: number;
|
|
17
|
-
getRowClassName?: (rowData: T, dataIndex: number, filteredSortedData: IRenderData[]) => string;
|
|
18
|
-
getRowSelected?: (rowData: T, dataIndex: number) => boolean;
|
|
19
|
-
isColumnFilterable: boolean;
|
|
20
|
-
isItemLoaded: (rowIndex: number) => boolean;
|
|
21
|
-
isSortable: boolean;
|
|
22
|
-
lastCheckChangedRowIndex?: number;
|
|
23
|
-
onRowClick?: (rowData: T, dataIndex: number, event: React.MouseEvent) => void;
|
|
24
|
-
onRowDoubleClick?: (rowData: T, dataIndex: number, event: React.MouseEvent) => void;
|
|
25
|
-
properties: {
|
|
26
|
-
[propertyName: string]: SchemaObject | ReferenceObject;
|
|
27
|
-
};
|
|
28
|
-
required: string[];
|
|
29
|
-
setCheckedIndexes?: Dispatch<SetStateAction<number[]>>;
|
|
30
|
-
setCustomColumnNames: Dispatch<SetStateAction<string[] | undefined>>;
|
|
31
|
-
setCustomColumnWidths: Dispatch<SetStateAction<Uint16Array | undefined>>;
|
|
32
|
-
setDropTargetIndex: (dropTargetIndex: number) => void;
|
|
33
|
-
setFilterSortColumn: (sortColumn: string, sortAsc: boolean) => void;
|
|
34
|
-
setLastCheckChangedRowIndex: Dispatch<SetStateAction<number | undefined>>;
|
|
35
|
-
setMenuConfig: React.Dispatch<React.SetStateAction<IThMenuConfig<T> | undefined>>;
|
|
36
|
-
settingsStorageKey?: string;
|
|
37
|
-
sortedRenderData?: IRenderData[];
|
|
38
|
-
sourceData?: T[] | null;
|
|
39
|
-
tableDataState: ITableDataState;
|
|
40
|
-
translate: (key: string, ...args: Array<string | number>) => string;
|
|
41
|
-
}
|
|
42
|
-
export declare const SchemaTableContext: React.Context<ISchemaTableContext<any>>;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
import { IFilterMenuComponentProps } from './SchemaTable/ThMenu/FilterMenuComponent';
|
|
3
|
-
|
|
4
|
-
export interface ITdBodyProps<T> {
|
|
5
|
-
rowData: T;
|
|
6
|
-
dataIndex: number;
|
|
7
|
-
rowIndex: number;
|
|
8
|
-
}
|
|
9
|
-
export interface IColumnConfig<T> {
|
|
10
|
-
FilterMenu?: React.ComponentType<IFilterMenuComponentProps>;
|
|
11
|
-
align?: "start" | "center" | "end";
|
|
12
|
-
dateFormat?: string;
|
|
13
|
-
defaultSortDesc?: boolean;
|
|
14
|
-
filter?: (rowData: T, columnFilterValue: unknown) => boolean;
|
|
15
|
-
hidden?: boolean;
|
|
16
|
-
hoverTitle?: string;
|
|
17
|
-
isFilterable?: boolean;
|
|
18
|
-
order?: number;
|
|
19
|
-
TdBody?: React.ComponentType<ITdBodyProps<T> & Record<string, unknown>>;
|
|
20
|
-
tdBodyProps?: Record<string, unknown>;
|
|
21
|
-
renderData?: (rowData: T, dataIndex: number) => string;
|
|
22
|
-
showTimezones?: false;
|
|
23
|
-
sort?: (a: T, b: T, sortAsc: boolean) => number;
|
|
24
|
-
sortByValue?: boolean;
|
|
25
|
-
isSortable?: boolean;
|
|
26
|
-
title?: string | React.ReactElement;
|
|
27
|
-
width?: number;
|
|
28
|
-
timezone?: "Asia/Jakarta" | "Europe/Amsterdam";
|
|
29
|
-
}
|
|
30
|
-
export interface IRenderData {
|
|
31
|
-
_index: number;
|
|
32
|
-
[key: string]: string;
|
|
33
|
-
}
|