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.
@@ -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), pe.current?.focus();
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
- ), pe = e.useRef(null);
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: pe,
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: pe } = L || {}, {
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((Ce) => {
313
- if (Ce?.propName !== C)
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
- ), _e = e.useMemo(() => k !== void 0 ? k : pe === "date-time" && E ? `${h(C)} (${h(y || Te)})` : h(C), [k, pe, E, h, C, y]), se = e.useCallback(
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 Ce = b.indexOf(j), V = [...b];
328
- V.splice(Ce, 1);
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[Ce];
332
- be.splice(Ce, 1), be.splice(D + 1, 0, fe), ne(new Uint16Array(be)), x && localStorage.setItem(
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 _e == "string" && (Q = _e), /* @__PURE__ */ O(
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: _e }),
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: pe,
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 [_e, se] = e.useState(), [Ae, Re] = e.useState(), [Pe, Je] = e.useState(-1), [Le, Ze] = e.useState(-1), [Q, j] = e.useState(), [he, Ce] = e.useState(), V = _ instanceof Function, [D, be] = e.useState(
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 (_e)
1048
- return _e;
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
- _e,
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
- ), ye = e.useMemo(() => {
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, ye),
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: ye,
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_${ye}_${ue}_${a.sortColumn}_${a.sortAsc}_${a.searchQuery}_${De}_${ie.join(
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: ye,
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_${ye}_${ue}_${a.sortColumn}_${a.sortAsc}_${a.searchQuery}_${De}_${ie.join(
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
- ye,
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: Ce,
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: pe || k("search..."),
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: ye
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.2",
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/component/index.d.ts",
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/component/index.d.ts",
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.4",
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": "^3.5.0",
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": "^5.2.2",
67
+ "typescript": "5.8.2",
68
68
  "vite": "^7.2.2",
69
- "vite-plugin-dts": "^3.9.1"
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,2 +0,0 @@
1
- export declare const SELECT_ALL_COLUMN_NAME = "SELECT_ALL_COLUMN_NAME";
2
- export declare const SELECT_ALL_COLUMN_WIDTH = 40;
@@ -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,3 +0,0 @@
1
- import { IRenderData } from '../../types.ts';
2
-
3
- export declare const renderDataToExcel: (sortedRenderData: IRenderData[]) => void;
@@ -1 +0,0 @@
1
- export declare function useIsAllRowsChecked(): boolean;
@@ -1 +0,0 @@
1
- export declare function useOnColumnsWidthsChange(): (newColumnWidths: Uint16Array) => void;
@@ -1,4 +0,0 @@
1
- export declare const useResizeObserver: (elementRef: HTMLDivElement | null) => {
2
- width: number;
3
- height: number;
4
- };
@@ -1,4 +0,0 @@
1
- import { oas31 } from 'openapi3-ts';
2
- import { IColumnConfig } from '../types.ts';
3
-
4
- export declare function getIsColumnSortable<T>(isTableSortable: boolean, propSchema: oas31.SchemaObject | undefined, propConfig: IColumnConfig<T> | undefined): boolean;
@@ -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
- }