@monolith-forensics/monolith-ui 1.1.25 → 1.1.27

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,90 @@
1
+ interface ColumnProps {
2
+ className?: string;
3
+ key?: string | number;
4
+ dataField: string;
5
+ caption: string;
6
+ columnId?: string | number;
7
+ allowSorting?: boolean;
8
+ allowReorder?: boolean;
9
+ resizeEnabled?: boolean;
10
+ width?: number;
11
+ sorting?: {
12
+ active: boolean;
13
+ direction: "asc" | "desc";
14
+ };
15
+ format?: {
16
+ type: string;
17
+ };
18
+ props?: any;
19
+ render: (data: any, options: any) => React.ReactNode;
20
+ componentType?: string;
21
+ }
22
+ export declare const Column: {
23
+ ({ dataField, caption, columnId, sorting, format, componentType, }: ColumnProps): null;
24
+ displayName: string;
25
+ };
26
+ interface onResizeProps {
27
+ columns: {
28
+ dataField: string;
29
+ width: number;
30
+ }[];
31
+ }
32
+ type SelectionState = "all" | "none" | "someIncluded" | "someExcluded";
33
+ interface TableInstanceProps {
34
+ setTableInstance: (e: any) => void;
35
+ toggleCompact: () => void;
36
+ toggleStripes: () => void;
37
+ isCompact: boolean;
38
+ isStriped: boolean;
39
+ getVirtualSelectionTotal: () => number;
40
+ getSelectedRows: () => any[];
41
+ getExcludedRows: () => any[];
42
+ getSelectionState: () => SelectionState;
43
+ clearSelections: () => void;
44
+ onColumnResize: (e: onResizeProps) => void;
45
+ }
46
+ export declare const useTable: () => {
47
+ setTableInstance: import("react").Dispatch<import("react").SetStateAction<TableInstanceProps | null>>;
48
+ toggleCompact: () => void | undefined;
49
+ toggleStripes: () => void | undefined;
50
+ isCompact: boolean;
51
+ isStriped: boolean;
52
+ getVirtualSelectionTotal: () => number;
53
+ getSelectedRows: () => any[];
54
+ getExcludedRows: () => any[];
55
+ getSelectionState: () => {};
56
+ clearSelections: () => void | undefined;
57
+ onColumnResize: (e: onResizeProps) => void | undefined;
58
+ };
59
+ interface TableProps {
60
+ className?: string;
61
+ children: React.ReactNode | React.ReactNode[];
62
+ data: {
63
+ [key: string]: any;
64
+ }[];
65
+ rowHeight?: number;
66
+ headerHeight?: number;
67
+ tableInstance?: TableInstanceProps;
68
+ queryKey?: any;
69
+ totalRecords?: number;
70
+ compact?: boolean;
71
+ focusedRow?: {
72
+ [key: string]: any;
73
+ };
74
+ keyValue?: string;
75
+ onScroll?: (e: any) => void;
76
+ allowColumnResize?: boolean;
77
+ allowColumnReorder?: boolean;
78
+ showActionColumn?: boolean;
79
+ showSelection?: boolean;
80
+ selectAll?: boolean;
81
+ reloadFn?: () => void;
82
+ onColumnReorder?: (e: any) => void;
83
+ onSelectionChanged?: (e: any) => void;
84
+ onActionButtonClick?: (e: any) => void;
85
+ onHeaderClick?: (e: any) => void;
86
+ onColumnResize?: (e: any) => void;
87
+ onRowUpdated?: (e: any) => void;
88
+ }
89
+ declare const Table: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<TableProps, never>> & string & Omit<({ className, children, data, rowHeight, headerHeight, tableInstance, queryKey, totalRecords, compact, focusedRow, keyValue, onScroll, allowColumnResize, allowColumnReorder, showActionColumn, showSelection, selectAll, reloadFn, onColumnReorder, onSelectionChanged, onActionButtonClick, onHeaderClick, onColumnResize, onRowUpdated, }: TableProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
90
+ export default Table;
@@ -0,0 +1,714 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useTable = exports.Column = void 0;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const react_window_1 = require("react-window");
20
+ const react_virtualized_auto_sizer_1 = __importDefault(require("react-virtualized-auto-sizer"));
21
+ const overlayscrollbars_react_1 = require("overlayscrollbars-react");
22
+ const short_uuid_1 = __importDefault(require("short-uuid"));
23
+ const styled_components_1 = __importDefault(require("styled-components"));
24
+ const react_1 = require("react");
25
+ const lucide_react_1 = require("lucide-react");
26
+ const lucide_react_2 = require("lucide-react");
27
+ const moment_1 = __importDefault(require("moment"));
28
+ const __1 = require("..");
29
+ const MIN_COLUMN_WIDTH = 125;
30
+ const Column = ({ dataField, caption, columnId = short_uuid_1.default.generate(), sorting, format, componentType = "Column", }) => {
31
+ return null;
32
+ };
33
+ exports.Column = Column;
34
+ exports.Column.displayName = "Column";
35
+ const StyledTable = styled_components_1.default.table `
36
+ position: relative;
37
+ border-collapse: separate;
38
+ border-spacing: 0;
39
+ min-width: 100%;
40
+ border-top: none;
41
+ border-radius: 4px;
42
+ `;
43
+ const StyledThead = styled_components_1.default.thead `
44
+ position: relative;
45
+ `;
46
+ const StyledTbody = styled_components_1.default.tbody `
47
+ & [data-even="true"].tr td {
48
+ background-color: ${({ stripes, theme }) => stripes ? theme.palette.background.secondary : "transparent"};
49
+ }
50
+ & .tr:hover td {
51
+ background-color: ${({ theme }) => theme.palette.action.hover};
52
+ }
53
+ `;
54
+ const StyledTr = styled_components_1.default.tr `
55
+ position: relative;
56
+ height: ${({ compact, rowHeight }) => rowHeight ? rowHeight : compact ? 28 : 38}px;
57
+ width: 100%;
58
+ display: flex;
59
+
60
+ & .action-button {
61
+ opacity: 0;
62
+ border-radius: 4px;
63
+ }
64
+ * .custom-action-button {
65
+ opacity: 0;
66
+ }
67
+
68
+ &:hover .action-button,
69
+ &:hover .custom-action-button {
70
+ opacity: 1;
71
+ }
72
+
73
+ &.focused .td {
74
+ border-top: 1px solid ${({ theme }) => theme.palette.primary.main};
75
+ border-bottom: 1px solid ${({ theme }) => theme.palette.primary.main} !important;
76
+ transition: border 0.3s ease;
77
+ }
78
+ &.focused .td:first-child {
79
+ border-left: 1px solid ${({ theme }) => theme.palette.primary.main};
80
+ }
81
+ &.focused .td:last-child {
82
+ border-right: 1px solid ${({ theme }) => theme.palette.primary.main};
83
+ }
84
+
85
+ // last item in row
86
+ & .td:last-child {
87
+ width: auto !important;
88
+ max-width: none !important;
89
+ }
90
+ `;
91
+ const StyledHeaderRow = (0, styled_components_1.default)(StyledTr) `
92
+ height: ${({ compact, headerHeight }) => headerHeight ? headerHeight : compact ? 28 : 38}px;
93
+
94
+ display: table-row;
95
+
96
+ // last item in row
97
+ & .th:last-child {
98
+ width: auto !important;
99
+ max-width: none !important;
100
+ }
101
+ `;
102
+ const StyledTd = styled_components_1.default.td `
103
+ position: relative;
104
+ display: flex;
105
+ align-items: center;
106
+ flex: 1;
107
+ padding: ${({ compact }) => (compact ? "3px" : "8px")};
108
+ font-size: ${({ compact }) => (compact ? "10px" : "12px")};
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap;
112
+
113
+ background-color: ${({ theme }) => theme.palette.background.default};
114
+
115
+ border-bottom: 1px solid ${({ theme }) => theme.palette.divider};
116
+
117
+ &:first-child {
118
+ border-left: 1px solid ${({ theme }) => theme.palette.divider};
119
+ }
120
+
121
+ &:last-child {
122
+ border-right: 1px solid ${({ theme }) => theme.palette.divider};
123
+ }
124
+ `;
125
+ const StyledTh = styled_components_1.default.th `
126
+ position: sticky;
127
+ top: 0;
128
+ z-index: 1;
129
+ flex: 1;
130
+ vertical-align: middle;
131
+ user-select: none;
132
+ padding: ${({ compact }) => (compact ? "3px" : "8px")};
133
+ font-size: ${({ compact }) => (compact ? "10px" : "12px")};
134
+ text-align: left;
135
+ font-weight: bold;
136
+ overflow: hidden;
137
+ text-overflow: ellipsis;
138
+ white-space: nowrap;
139
+
140
+ background-color: ${({ theme }) => theme.palette.background.alt};
141
+
142
+ border-top: 1px solid ${({ theme }) => theme.palette.divider};
143
+ border-bottom: 1px solid ${({ theme }) => theme.palette.divider};
144
+
145
+ .action-header {
146
+ display: flex;
147
+ align-content: center;
148
+ align-items: center;
149
+ cursor: pointer;
150
+ color: ${({ theme }) => theme.palette.text.secondary};
151
+ margin-right: 5;
152
+ margin-left: 3;
153
+ }
154
+
155
+ &:first-child {
156
+ border-left: 1px solid ${({ theme }) => theme.palette.divider};
157
+ border-top-left-radius: 4px;
158
+ }
159
+
160
+ &:last-child {
161
+ border-right: 1px solid ${({ theme }) => theme.palette.divider};
162
+ border-top-right-radius: 4px;
163
+ }
164
+
165
+ &:hover {
166
+ background-color: ${({ theme }) => theme.name === "DARK" ? "#2e2e2e" : "#f5f5f5"};
167
+ cursor: pointer;
168
+ }
169
+ &.dragging:active {
170
+ cursor: grabbing;
171
+ }
172
+ &.dragover .resizer {
173
+ opacity: 1;
174
+ background: ${(props) => props.theme.palette.primary.main};
175
+ cursor: grabbing;
176
+ }
177
+ `;
178
+ const enableResizeClass = (dataField) => {
179
+ document
180
+ .querySelectorAll(`.resizer.column-${dataField}`)
181
+ .forEach((resizer) => {
182
+ resizer.classList.add("isResizing");
183
+ });
184
+ };
185
+ const disableResizeClass = (dataField) => {
186
+ document
187
+ .querySelectorAll(`.resizer.column-${dataField}`)
188
+ .forEach((resizer) => {
189
+ resizer.classList.remove("isResizing");
190
+ });
191
+ };
192
+ const resizeHandler = ({ event, columnId, columnProps, onResize, onResizeFinished, }) => {
193
+ let col = event.target
194
+ .parentElement;
195
+ let newColumns = [];
196
+ let x = 0;
197
+ let w = 0;
198
+ const mouseMoveHandler = function (e) {
199
+ const selectedColumn = document.querySelectorAll(`.col-${columnId}`);
200
+ const columnHeaders = document.querySelectorAll(`.th.col-${columnId}`);
201
+ const dx = e.clientX - x;
202
+ let newWidth = w + dx;
203
+ if (newWidth < MIN_COLUMN_WIDTH) {
204
+ newWidth = MIN_COLUMN_WIDTH;
205
+ }
206
+ selectedColumn.forEach((col) => {
207
+ var _a;
208
+ col.style.width = `${newWidth}px`;
209
+ col.style.maxWidth = `${newWidth}px`;
210
+ col.style.minWidth = `${newWidth}px`;
211
+ newColumns.push({
212
+ dataField: ((_a = col === null || col === void 0 ? void 0 : col.dataset) === null || _a === void 0 ? void 0 : _a.field) || "",
213
+ width: newWidth,
214
+ });
215
+ });
216
+ newColumns = Array.from(columnHeaders).map((col) => {
217
+ var _a;
218
+ return {
219
+ dataField: ((_a = col === null || col === void 0 ? void 0 : col.dataset) === null || _a === void 0 ? void 0 : _a.field) || "",
220
+ width: newWidth,
221
+ };
222
+ });
223
+ onResize({
224
+ columns: newColumns,
225
+ });
226
+ };
227
+ const mouseUpHandler = function () {
228
+ var _a, _b, _c;
229
+ disableResizeClass(columnId);
230
+ document.removeEventListener("mousemove", mouseMoveHandler);
231
+ document.removeEventListener("mouseup", mouseUpHandler);
232
+ onResizeFinished === null || onResizeFinished === void 0 ? void 0 : onResizeFinished({
233
+ column: columnProps,
234
+ columnId: columnId,
235
+ columns: newColumns,
236
+ targetColumn: document.querySelector(`.col-${columnId}`),
237
+ newWidth: ((_c = (_b = (_a = document === null || document === void 0 ? void 0 : document.querySelector) === null || _a === void 0 ? void 0 : _a.call(document, `.col-${columnId}`)) === null || _b === void 0 ? void 0 : _b.style) === null || _c === void 0 ? void 0 : _c.width) || null,
238
+ });
239
+ };
240
+ x = event.clientX;
241
+ const styles = window.getComputedStyle(col);
242
+ w = parseInt(styles.width, 10);
243
+ document.addEventListener("mousemove", mouseMoveHandler);
244
+ document.addEventListener("mouseup", mouseUpHandler);
245
+ enableResizeClass(columnId);
246
+ };
247
+ const Resizer = (0, styled_components_1.default)(({ className, resizeHandler, onResize = () => { }, onResizeFinished, column, }) => {
248
+ return ((0, jsx_runtime_1.jsx)("div", { className: `${className} resizer column-${column.props.columnId}`, onClick: (e) => {
249
+ e.stopPropagation();
250
+ e.nativeEvent.stopImmediatePropagation();
251
+ e.preventDefault();
252
+ }, onMouseDown: (e) => {
253
+ e.stopPropagation();
254
+ e.nativeEvent.stopImmediatePropagation();
255
+ e.preventDefault();
256
+ if (resizeHandler)
257
+ resizeHandler({
258
+ event: e,
259
+ columnId: column.props.columnId,
260
+ columnProps: column.props,
261
+ onResize: onResize,
262
+ onResizeFinished: onResizeFinished,
263
+ });
264
+ } }));
265
+ }) `
266
+ &.resizer {
267
+ position: absolute;
268
+ right: 0;
269
+ top: 0;
270
+ height: 100%;
271
+ width: 3px;
272
+ background-color: ${(props) => props.theme.palette.divider};
273
+ cursor: col-resize;
274
+ user-select: none;
275
+ touch-action: none;
276
+ opacity: 0;
277
+ &.isResizing {
278
+ opacity: 1;
279
+ background: ${(props) => props.theme.palette.primary.main};
280
+ }
281
+ // dragover css
282
+ &.dragover {
283
+ opacity: 1;
284
+ background: ${(props) => props.theme.palette.primary.main};
285
+ }
286
+ }
287
+ `;
288
+ const HeaderRowComponent = ({ columns, _compact, resizeState, headerHeight, onHeaderClick, onColumnResize, dropColumn, dragColumn, showSelection, selectAll, selectionState, handleSelectAll, handleColumnReorder, }) => {
289
+ return ((0, jsx_runtime_1.jsx)(StyledThead, { children: (0, jsx_runtime_1.jsx)(StyledHeaderRow, { compact: _compact, headerHeight: headerHeight, children: columns.map((column) => {
290
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
291
+ let savedColSize = ((_c = (_b = (_a = resizeState === null || resizeState === void 0 ? void 0 : resizeState.current) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.find((col) => col.dataField === column.props.dataField)) === null || _c === void 0 ? void 0 : _c.width) || MIN_COLUMN_WIDTH;
292
+ if (savedColSize < MIN_COLUMN_WIDTH) {
293
+ savedColSize = MIN_COLUMN_WIDTH;
294
+ }
295
+ return ((0, jsx_runtime_1.jsxs)(StyledTh, Object.assign({}, column.props, { className: `th ${((_d = column === null || column === void 0 ? void 0 : column.props) === null || _d === void 0 ? void 0 : _d.columnId) ? `col-${column.props.columnId}` : ""}`, "data-field": column.props.dataField, "data-type": "th", compact: _compact, onClick: (e) => {
296
+ if (column.props.allowSorting !== false)
297
+ onHeaderClick === null || onHeaderClick === void 0 ? void 0 : onHeaderClick(column.props);
298
+ }, draggable: column.props.allowReorder !== false ? true : false, onDragOver: (e) => {
299
+ e.preventDefault();
300
+ e.dataTransfer.dropEffect = "move";
301
+ }, onDragEnter: (e) => {
302
+ e.target.classList.add("dragover");
303
+ dropColumn.current = column.props;
304
+ }, onDragLeave: (e) => {
305
+ e.target.classList.remove("dragover");
306
+ }, onDrop: (e) => {
307
+ e.preventDefault();
308
+ e.target.classList.remove("dragover");
309
+ handleColumnReorder(dragColumn.current, dropColumn.current);
310
+ }, onDragStart: (e) => {
311
+ //set dragging class
312
+ dragColumn.current = column.props;
313
+ e.target.classList.add("dragging");
314
+ }, onDragEnd: (e) => {
315
+ e.target.classList.remove("dragging");
316
+ }, style: {
317
+ width: ((_e = column === null || column === void 0 ? void 0 : column.props) === null || _e === void 0 ? void 0 : _e.width)
318
+ ? (_f = column === null || column === void 0 ? void 0 : column.props) === null || _f === void 0 ? void 0 : _f.width
319
+ : savedColSize || "auto",
320
+ maxWidth: ((_g = column === null || column === void 0 ? void 0 : column.props) === null || _g === void 0 ? void 0 : _g.width)
321
+ ? (_h = column === null || column === void 0 ? void 0 : column.props) === null || _h === void 0 ? void 0 : _h.width
322
+ : savedColSize || "auto",
323
+ minWidth: ((_j = column === null || column === void 0 ? void 0 : column.props) === null || _j === void 0 ? void 0 : _j.width)
324
+ ? (_k = column === null || column === void 0 ? void 0 : column.props) === null || _k === void 0 ? void 0 : _k.width
325
+ : savedColSize || MIN_COLUMN_WIDTH,
326
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
327
+ display: "flex",
328
+ alignContent: "center",
329
+ alignItems: "center",
330
+ pointerEvents: column.props.dataField === "action" ? "all" : "none",
331
+ }, children: [showSelection && column.props.dataField === "action" ? ((0, jsx_runtime_1.jsx)("div", { className: "action-header", children: selectAll && ((0, jsx_runtime_1.jsx)(__1.CheckBox, { value: selectionState === "all", partialCheck: selectionState.includes("some"), onChange: handleSelectAll })) })) : ((0, jsx_runtime_1.jsx)("div", { children: column.props.caption })), ((_m = (_l = column.props) === null || _l === void 0 ? void 0 : _l.sorting) === null || _m === void 0 ? void 0 : _m.active) && ((0, jsx_runtime_1.jsx)("div", { style: { marginLeft: 5 }, children: column.props.sorting.direction === "asc" ? ((0, jsx_runtime_1.jsx)(lucide_react_2.ArrowUpIcon, { size: 12 })) : ((0, jsx_runtime_1.jsx)(lucide_react_2.ArrowDownIcon, { size: 12 })) }))] }), ((_o = column === null || column === void 0 ? void 0 : column.props) === null || _o === void 0 ? void 0 : _o.resizeEnabled) !== false && ((0, jsx_runtime_1.jsx)(Resizer, { resizeHandler: resizeHandler, column: column, onResize: (e) => {
332
+ resizeState.current = e;
333
+ }, onResizeFinished: (e) => {
334
+ onColumnResize === null || onColumnResize === void 0 ? void 0 : onColumnResize(e);
335
+ } }))] }), short_uuid_1.default.generate()));
336
+ }) }) }));
337
+ };
338
+ const InnerElement = (0, react_1.forwardRef)((_a, ref) => {
339
+ var { children, columns, resizeState, _compact, stripes, onHeaderClick, dropColumn, dragColumn, showSelection, selectAll, selectionState, handleSelectAll, handleColumnReorder, onColumnResize, headerHeight } = _a, rest = __rest(_a, ["children", "columns", "resizeState", "_compact", "stripes", "onHeaderClick", "dropColumn", "dragColumn", "showSelection", "selectAll", "selectionState", "handleSelectAll", "handleColumnReorder", "onColumnResize", "headerHeight"]);
340
+ return ((0, jsx_runtime_1.jsxs)(StyledTable, Object.assign({ ref: ref }, rest, { children: [(0, jsx_runtime_1.jsx)(HeaderRowComponent, { columns: columns, resizeState: resizeState, _compact: _compact, headerHeight: headerHeight, onHeaderClick: onHeaderClick, dropColumn: dropColumn, dragColumn: dragColumn, showSelection: showSelection, selectAll: selectAll, selectionState: selectionState, handleSelectAll: handleSelectAll, handleColumnReorder: handleColumnReorder, onColumnResize: onColumnResize }), (0, jsx_runtime_1.jsx)(StyledTbody, { className: "tbody" + (stripes ? " striped" : ""), stripes: stripes, children: children })] })));
341
+ });
342
+ const Row = ({ data, index, style }) => {
343
+ const { data: dataRows, columns, focusedRow, keyValue, _compact, queryKey, reloadFn, headerHeight, resizeState, onRowUpdated, } = data;
344
+ const item = (dataRows === null || dataRows === void 0 ? void 0 : dataRows[index]) || {};
345
+ const handleRowUpdated = (data) => {
346
+ onRowUpdated === null || onRowUpdated === void 0 ? void 0 : onRowUpdated({ rowData: item, updateData: data });
347
+ };
348
+ const isRowFocused = focusedRow
349
+ ? focusedRow[keyValue] === item[keyValue]
350
+ : false;
351
+ const row = columns.map((column) => {
352
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
353
+ let value = null;
354
+ let savedColSize = ((_c = (_b = (_a = resizeState === null || resizeState === void 0 ? void 0 : resizeState.current) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.find((col) => col.dataField === column.props.dataField)) === null || _c === void 0 ? void 0 : _c.width) || MIN_COLUMN_WIDTH;
355
+ if (savedColSize < MIN_COLUMN_WIDTH) {
356
+ savedColSize = MIN_COLUMN_WIDTH;
357
+ }
358
+ // parse datafield dot syntax
359
+ if ((_d = column.props.dataField) === null || _d === void 0 ? void 0 : _d.includes(".")) {
360
+ const fields = (_e = column.props.dataField) === null || _e === void 0 ? void 0 : _e.split(".");
361
+ value = fields.reduce((acc, field) => {
362
+ return acc === null || acc === void 0 ? void 0 : acc[field];
363
+ }, item);
364
+ }
365
+ else
366
+ value = item === null || item === void 0 ? void 0 : item[column.props.dataField];
367
+ // format date values
368
+ if (column.props.dataType === "date" &&
369
+ ((_g = (_f = column === null || column === void 0 ? void 0 : column.props) === null || _f === void 0 ? void 0 : _f.format) === null || _g === void 0 ? void 0 : _g.type) &&
370
+ value) {
371
+ const dateFormat = (_j = (_h = column === null || column === void 0 ? void 0 : column.props) === null || _h === void 0 ? void 0 : _h.format) === null || _j === void 0 ? void 0 : _j.type;
372
+ value = (0, moment_1.default)(value).format(dateFormat);
373
+ }
374
+ if (column.props.render) {
375
+ return ((0, jsx_runtime_1.jsxs)(StyledTd, { className: `td ${((_k = column === null || column === void 0 ? void 0 : column.props) === null || _k === void 0 ? void 0 : _k.columnId) ? `col-${column.props.columnId}` : ""}`, title: ((_l = column === null || column === void 0 ? void 0 : column.props) === null || _l === void 0 ? void 0 : _l.titleRender) ? (_m = column === null || column === void 0 ? void 0 : column.props) === null || _m === void 0 ? void 0 : _m.titleRender(item) : null, compact: _compact, style: Object.assign({ width: ((_o = column === null || column === void 0 ? void 0 : column.props) === null || _o === void 0 ? void 0 : _o.width)
376
+ ? (_p = column === null || column === void 0 ? void 0 : column.props) === null || _p === void 0 ? void 0 : _p.width
377
+ : savedColSize || "auto", maxWidth: ((_q = column === null || column === void 0 ? void 0 : column.props) === null || _q === void 0 ? void 0 : _q.width)
378
+ ? (_r = column === null || column === void 0 ? void 0 : column.props) === null || _r === void 0 ? void 0 : _r.width
379
+ : savedColSize || "auto", minWidth: ((_s = column === null || column === void 0 ? void 0 : column.props) === null || _s === void 0 ? void 0 : _s.width)
380
+ ? (_t = column === null || column === void 0 ? void 0 : column.props) === null || _t === void 0 ? void 0 : _t.width
381
+ : savedColSize || MIN_COLUMN_WIDTH }, (((_u = column === null || column === void 0 ? void 0 : column.props) === null || _u === void 0 ? void 0 : _u.style) || {})), "data-type": "td", children: [column.props.resizeEnabled !== false && (0, jsx_runtime_1.jsx)(Resizer, { column: column }), column.props.render(item, {
382
+ queryKey: queryKey || "",
383
+ reload: reloadFn,
384
+ onRowUpdated: handleRowUpdated,
385
+ })] }, short_uuid_1.default.generate()));
386
+ }
387
+ return ((0, jsx_runtime_1.jsxs)(StyledTd, { className: `td ${((_v = column === null || column === void 0 ? void 0 : column.props) === null || _v === void 0 ? void 0 : _v.columnId) ? `col-${column.props.columnId}` : ""}`, compact: _compact, title: ((_w = column === null || column === void 0 ? void 0 : column.props) === null || _w === void 0 ? void 0 : _w.titleRender) ? (_x = column === null || column === void 0 ? void 0 : column.props) === null || _x === void 0 ? void 0 : _x.titleRender(item) : null, "data-type": "td", style: {
388
+ width: ((_y = column === null || column === void 0 ? void 0 : column.props) === null || _y === void 0 ? void 0 : _y.width)
389
+ ? (_z = column === null || column === void 0 ? void 0 : column.props) === null || _z === void 0 ? void 0 : _z.width
390
+ : savedColSize || "auto",
391
+ maxWidth: ((_0 = column === null || column === void 0 ? void 0 : column.props) === null || _0 === void 0 ? void 0 : _0.width)
392
+ ? (_1 = column === null || column === void 0 ? void 0 : column.props) === null || _1 === void 0 ? void 0 : _1.width
393
+ : savedColSize || "auto",
394
+ minWidth: ((_2 = column === null || column === void 0 ? void 0 : column.props) === null || _2 === void 0 ? void 0 : _2.width)
395
+ ? (_3 = column === null || column === void 0 ? void 0 : column.props) === null || _3 === void 0 ? void 0 : _3.width
396
+ : savedColSize || MIN_COLUMN_WIDTH,
397
+ }, children: [column.props.resizeEnabled !== false && (0, jsx_runtime_1.jsx)(Resizer, { column: column }), value] }, short_uuid_1.default.generate()));
398
+ });
399
+ return ((0, jsx_runtime_1.jsx)(StyledTr, { className: `tr${isRowFocused ? " focused" : ""}`, "data-key": item[keyValue], "data-type": "tr", "data-even": index % 2 === 0 ? "true" : "false", compact: _compact, style: Object.assign(Object.assign({}, style), { top: ((style === null || style === void 0 ? void 0 : style.top) || 0) + headerHeight }), children: row }, short_uuid_1.default.generate()));
400
+ };
401
+ const useTable = () => {
402
+ const [tableInstance, setTableInstance] = (0, react_1.useState)(null);
403
+ return {
404
+ setTableInstance,
405
+ toggleCompact: () => tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.toggleCompact(),
406
+ toggleStripes: () => tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.toggleStripes(),
407
+ isCompact: (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.isCompact) || false,
408
+ isStriped: (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.isStriped) || false,
409
+ getVirtualSelectionTotal: () => (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.getVirtualSelectionTotal()) || 0,
410
+ getSelectedRows: () => (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.getSelectedRows()) || [],
411
+ getExcludedRows: () => (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.getExcludedRows()) || [],
412
+ getSelectionState: () => (tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.getSelectionState()) || {},
413
+ clearSelections: () => tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.clearSelections(),
414
+ onColumnResize: (e) => tableInstance === null || tableInstance === void 0 ? void 0 : tableInstance.onColumnResize(e),
415
+ };
416
+ };
417
+ exports.useTable = useTable;
418
+ const Table = (0, styled_components_1.default)(({ className, children, data, rowHeight, headerHeight, tableInstance, queryKey, totalRecords, compact, focusedRow, keyValue, onScroll, allowColumnResize, allowColumnReorder, showActionColumn, showSelection, selectAll, reloadFn, onColumnReorder, onSelectionChanged, onActionButtonClick, onHeaderClick, onColumnResize, onRowUpdated, }) => {
419
+ const rootRef = (0, react_1.useRef)(null);
420
+ const [initialize, getInstance] = (0, overlayscrollbars_react_1.useOverlayScrollbars)({
421
+ options: {
422
+ scrollbars: {
423
+ autoHide: "scroll",
424
+ autoHideDelay: 500,
425
+ },
426
+ },
427
+ events: { scroll: (_, event) => onScroll === null || onScroll === void 0 ? void 0 : onScroll(event) },
428
+ });
429
+ const [targetElm, setTargetElm] = (0, react_1.useState)(null);
430
+ const [listElm, setListElm] = (0, react_1.useState)(null);
431
+ const dragColumn = (0, react_1.useRef)(null);
432
+ const dropColumn = (0, react_1.useRef)(null);
433
+ const [_compact, setCompact] = (0, react_1.useState)(compact);
434
+ const [stripes, setStripes] = (0, react_1.useState)(false);
435
+ const [selectedRows, setSelectedRows] = (0, react_1.useState)([]);
436
+ const [virtualSelectionTotal, setVirtualSelectionTotal] = (0, react_1.useState)(0);
437
+ const [excludedRows, setExcludedRows] = (0, react_1.useState)([]);
438
+ const [selectionState, setSelectionState] = (0, react_1.useState)("none");
439
+ const resizeState = (0, react_1.useRef)([]);
440
+ // check if children is an array
441
+ children = (0, react_1.useMemo)(() => {
442
+ return Array.isArray(children) ? children : [children];
443
+ }, [children]);
444
+ let columns = (0, react_1.useMemo)(() => {
445
+ var _a, _b;
446
+ return (_b = (_a = children === null || children === void 0 ? void 0 : children.filter) === null || _a === void 0 ? void 0 : _a.call(children, (child) => child.props.componentType === "Column")) === null || _b === void 0 ? void 0 : _b.map((column) => {
447
+ return (0, react_1.cloneElement)(column, {
448
+ columnId: short_uuid_1.default.generate(),
449
+ allowResize: allowColumnResize !== undefined
450
+ ? allowColumnResize
451
+ : column.props.allowResize,
452
+ allowReorder: allowColumnReorder !== undefined
453
+ ? allowColumnReorder
454
+ : column.props.allowReorder,
455
+ resizeEnabled: allowColumnResize !== undefined
456
+ ? allowColumnResize
457
+ : column.props.resizeEnabled,
458
+ });
459
+ });
460
+ }, [children]);
461
+ const [columnOrder, setColumnOrder] = (0, react_1.useState)(columns.map((col, index) => {
462
+ var _a, _b;
463
+ return {
464
+ column: (_a = col.props) === null || _a === void 0 ? void 0 : _a.dataField,
465
+ order: ((_b = col.props) === null || _b === void 0 ? void 0 : _b.order) || index,
466
+ };
467
+ }));
468
+ const handleColumnReorder = (dragColumn, dropColumn) => {
469
+ var _a;
470
+ const dropColumnOrder = (_a = columnOrder.find((col) => col.column === dropColumn.dataField)) === null || _a === void 0 ? void 0 : _a.order;
471
+ const newColumnOrder = columnOrder.map((col) => {
472
+ if (col.column === dragColumn.dataField) {
473
+ return { column: col.column, order: dropColumnOrder + 1 };
474
+ }
475
+ else {
476
+ return col.order > dropColumnOrder
477
+ ? Object.assign(Object.assign({}, col), { order: col.order + 1 }) : col;
478
+ }
479
+ });
480
+ onColumnReorder === null || onColumnReorder === void 0 ? void 0 : onColumnReorder(newColumnOrder);
481
+ setColumnOrder(newColumnOrder);
482
+ };
483
+ const handleSelectAll = () => {
484
+ let newSelectionState = null;
485
+ let newVirtualSelectionTotal = null;
486
+ if (selectionState === "all") {
487
+ // clear current selections
488
+ setSelectedRows([]);
489
+ // turn off all rows selected
490
+ newSelectionState = "none";
491
+ setSelectionState("none");
492
+ // clear excluded rows
493
+ setExcludedRows([]);
494
+ newVirtualSelectionTotal = 0;
495
+ setVirtualSelectionTotal(newVirtualSelectionTotal);
496
+ }
497
+ else {
498
+ // turn on all rows selected
499
+ newSelectionState = "all";
500
+ setSelectionState("all");
501
+ // clear excluded rows
502
+ setExcludedRows([]);
503
+ newVirtualSelectionTotal = totalRecords;
504
+ setVirtualSelectionTotal(newVirtualSelectionTotal);
505
+ }
506
+ onSelectionChanged === null || onSelectionChanged === void 0 ? void 0 : onSelectionChanged({
507
+ selectedRows: [],
508
+ excludedRows: [],
509
+ selectionState: newSelectionState,
510
+ virtualSelectionTotal: newVirtualSelectionTotal,
511
+ });
512
+ };
513
+ const handleSelectRow = ({ rowData, checked, }) => {
514
+ let newSelectedRows = [];
515
+ let newExcludedRows = [];
516
+ let newSelectionState = null;
517
+ let newVirtualSelectionTotal = null;
518
+ if (selectionState === "all") {
519
+ newExcludedRows = [...excludedRows, rowData];
520
+ newSelectionState = "someExcluded";
521
+ newVirtualSelectionTotal = totalRecords ? totalRecords - 1 : 0;
522
+ }
523
+ else if (selectionState === "none") {
524
+ newSelectedRows = [rowData];
525
+ newSelectionState = "someIncluded";
526
+ newVirtualSelectionTotal = 1;
527
+ }
528
+ else if (selectionState === "someExcluded") {
529
+ newSelectionState = "someExcluded";
530
+ newSelectedRows = selectedRows;
531
+ if (checked) {
532
+ // remove from excluded rows
533
+ newExcludedRows = excludedRows.filter((row) => keyValue ? (row === null || row === void 0 ? void 0 : row[keyValue]) !== (rowData === null || rowData === void 0 ? void 0 : rowData[keyValue]) : false);
534
+ newVirtualSelectionTotal = virtualSelectionTotal
535
+ ? virtualSelectionTotal + 1
536
+ : 0;
537
+ }
538
+ else {
539
+ // add to excluded rows
540
+ newExcludedRows = [...excludedRows, rowData];
541
+ newVirtualSelectionTotal = virtualSelectionTotal
542
+ ? virtualSelectionTotal - 1
543
+ : 0;
544
+ }
545
+ }
546
+ else if (selectionState === "someIncluded") {
547
+ newSelectionState = "someIncluded";
548
+ newExcludedRows = excludedRows;
549
+ if (checked) {
550
+ // add to selected rows
551
+ newSelectedRows = [...selectedRows, rowData];
552
+ newVirtualSelectionTotal = virtualSelectionTotal
553
+ ? virtualSelectionTotal + 1
554
+ : 0;
555
+ }
556
+ else {
557
+ // remove from selected rows
558
+ newSelectedRows = selectedRows.filter((row) => keyValue ? row[keyValue] !== rowData[keyValue] : false);
559
+ newVirtualSelectionTotal = virtualSelectionTotal
560
+ ? virtualSelectionTotal - 1
561
+ : 0;
562
+ }
563
+ }
564
+ if (newVirtualSelectionTotal === totalRecords) {
565
+ newSelectionState = "all";
566
+ }
567
+ else if (newVirtualSelectionTotal === 0) {
568
+ newSelectionState = "none";
569
+ }
570
+ setSelectedRows(newSelectedRows);
571
+ setExcludedRows(newExcludedRows);
572
+ setVirtualSelectionTotal(newVirtualSelectionTotal);
573
+ setSelectionState(newSelectionState);
574
+ onSelectionChanged === null || onSelectionChanged === void 0 ? void 0 : onSelectionChanged({
575
+ selectedRows: newSelectedRows,
576
+ excludedRows: newExcludedRows,
577
+ selectionState: newSelectionState,
578
+ virtualSelectionTotal: newVirtualSelectionTotal,
579
+ });
580
+ };
581
+ // sort columns
582
+ columns = (0, react_1.useMemo)(() => columns.sort((a, b) => {
583
+ var _a, _b;
584
+ const aOrder = (_a = columnOrder.find((col) => col.column === a.props.dataField)) === null || _a === void 0 ? void 0 : _a.order;
585
+ const bOrder = (_b = columnOrder.find((col) => col.column === b.props.dataField)) === null || _b === void 0 ? void 0 : _b.order;
586
+ return aOrder - bOrder;
587
+ }), [columnOrder, columns]);
588
+ const hiddenColumns = columns
589
+ .filter((col) => col.props.visible === false)
590
+ .map((col) => col.props.dataField);
591
+ // insert action column as first column
592
+ showActionColumn &&
593
+ (columns = [
594
+ (0, jsx_runtime_1.jsx)(exports.Column, { className: "action-column", dataField: "action", allowSorting: false, allowReorder: false, caption: "", width: showSelection ? 55 : 35, resizeEnabled: false, render: (rowData) => ((0, jsx_runtime_1.jsxs)("div", { className: "action-column-container", children: [showSelection && ((0, jsx_runtime_1.jsx)("div", { className: "action-button", children: (0, jsx_runtime_1.jsx)(__1.CheckBox, { value: selectionState === "all"
595
+ ? true
596
+ : selectionState === "someIncluded"
597
+ ? !!selectedRows.find((row) => keyValue
598
+ ? row[keyValue] === rowData[keyValue]
599
+ : false)
600
+ : selectionState === "someExcluded"
601
+ ? !excludedRows.find((row) => keyValue
602
+ ? row[keyValue] === rowData[keyValue]
603
+ : false)
604
+ : false, onChange: (newValue) => handleSelectRow({ rowData, checked: newValue }) }) })), (0, jsx_runtime_1.jsx)("div", { className: "action-button", title: "Show More Details", onClick: (e) => {
605
+ onActionButtonClick === null || onActionButtonClick === void 0 ? void 0 : onActionButtonClick(rowData);
606
+ }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Maximize2Icon, { size: _compact ? 8 : 12 }) })] })) }, short_uuid_1.default.generate()),
607
+ ...columns,
608
+ ]);
609
+ (0, react_1.useEffect)(() => {
610
+ if (targetElm && listElm) {
611
+ initialize({
612
+ target: targetElm,
613
+ elements: {
614
+ viewport: listElm,
615
+ },
616
+ });
617
+ return () => { var _a; return (_a = getInstance()) === null || _a === void 0 ? void 0 : _a.destroy(); };
618
+ }
619
+ }, [targetElm, listElm]);
620
+ (0, react_1.useEffect)(() => {
621
+ if (tableInstance) {
622
+ tableInstance.setTableInstance({
623
+ getSelectedRows: () => selectedRows,
624
+ getExcludedRows: () => excludedRows,
625
+ getVirtualSelectionTotal: () => virtualSelectionTotal,
626
+ getSelectionState: () => selectionState,
627
+ clearSelections: () => {
628
+ setSelectedRows([]);
629
+ setVirtualSelectionTotal(0);
630
+ setSelectionState("none");
631
+ setExcludedRows([]);
632
+ },
633
+ toggleCompact: () => setCompact(!_compact),
634
+ isCompact: _compact,
635
+ toggleStripes: () => setStripes(!stripes),
636
+ isStriped: stripes,
637
+ });
638
+ }
639
+ }, [
640
+ selectedRows,
641
+ excludedRows,
642
+ virtualSelectionTotal,
643
+ selectionState,
644
+ _compact,
645
+ stripes,
646
+ tableInstance,
647
+ ]);
648
+ (0, react_1.useEffect)(() => {
649
+ // Scroll to selected row if outside of viewport
650
+ if (focusedRow) {
651
+ const focusedRowElm = keyValue
652
+ ? document.querySelector(`[data-type="tr"][data-key="${focusedRow[keyValue]}"]`)
653
+ : null;
654
+ if (focusedRowElm) {
655
+ focusedRowElm.scrollIntoView({
656
+ behavior: "smooth",
657
+ block: "nearest",
658
+ inline: "nearest",
659
+ });
660
+ }
661
+ }
662
+ }, [focusedRow]);
663
+ return ((0, jsx_runtime_1.jsx)("div", { ref: rootRef, className: className + " table-wrapper", children: (0, jsx_runtime_1.jsx)(react_virtualized_auto_sizer_1.default, { children: ({ height, width }) => ((0, jsx_runtime_1.jsx)("div", { style: { width, height }, "data-overlayscrollbars": "", ref: setTargetElm, children: (0, jsx_runtime_1.jsx)(react_window_1.FixedSizeList, { overscanCount: 10, itemData: {
664
+ data,
665
+ columns: columns.filter((col) => !hiddenColumns.includes(col.props.dataField)),
666
+ focusedRow,
667
+ keyValue,
668
+ _compact,
669
+ queryKey,
670
+ reloadFn,
671
+ rowHeight: rowHeight ? rowHeight : _compact ? 28 : 38,
672
+ headerHeight: headerHeight
673
+ ? headerHeight
674
+ : _compact
675
+ ? 28
676
+ : 38,
677
+ resizeState,
678
+ onRowUpdated,
679
+ tableWidth: width,
680
+ }, height: height, innerElementType: (props) => ((0, jsx_runtime_1.jsx)(InnerElement, Object.assign({}, props, { columns: columns.filter((col) => !hiddenColumns.includes(col.props.dataField)), tableWidth: width, resizeState: resizeState, _compact: _compact, stripes: stripes, onHeaderClick: onHeaderClick, dropColumn: dropColumn, dragColumn: dragColumn, showSelection: showSelection, selectAll: selectAll, selectionState: selectionState, handleSelectAll: handleSelectAll, handleColumnReorder: handleColumnReorder, onColumnResize: onColumnResize }))), itemCount: data === null || data === void 0 ? void 0 : data.length, itemSize: rowHeight ? rowHeight : _compact ? 28 : 38, width: width, outerRef: setListElm, children: Row }) })) }) }));
681
+ }) `
682
+ position: relative;
683
+ flex: 1 1 auto;
684
+ overflow: hidden;
685
+ display: flex;
686
+ flex-direction: column;
687
+
688
+ .os-scrollbar {
689
+ pointer-events: auto;
690
+ visibility: visible;
691
+ }
692
+
693
+ .action-column {
694
+ max-width: 55px;
695
+ }
696
+
697
+ .action-column-container {
698
+ display: flex;
699
+ align-content: center;
700
+ align-items: center;
701
+ padding: 4px;
702
+ color: ${({ theme }) => theme.palette.text.secondary};
703
+ }
704
+
705
+ .action-button {
706
+ display: flex;
707
+ align-content: center;
708
+ align-items: center;
709
+ cursor: pointer;
710
+ color: ${({ theme }) => theme.palette.primary.main};
711
+ margin-right: 5px;
712
+ }
713
+ `;
714
+ exports.default = Table;
@@ -0,0 +1,2 @@
1
+ export { default } from "./Table";
2
+ export { Column } from "./Table";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Column = exports.default = void 0;
7
+ var Table_1 = require("./Table");
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(Table_1).default; } });
9
+ var Table_2 = require("./Table");
10
+ Object.defineProperty(exports, "Column", { enumerable: true, get: function () { return Table_2.Column; } });
package/dist/index.d.ts CHANGED
@@ -20,5 +20,7 @@ export { default as Input } from "./Input";
20
20
  export { default as Tooltip } from "./Tooltip";
21
21
  export { default as Pill } from "./Pill";
22
22
  export { default as Calendar } from "./Calendar";
23
+ export { default as Table } from "./Table";
24
+ export { Column } from "./Table";
23
25
  export { default as MonolithUIProvider } from "./MonolithUIProvider";
24
26
  export { useMonolithUITheme } from "./MonolithUIProvider";
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useMonolithUITheme = exports.MonolithUIProvider = exports.Calendar = exports.Pill = exports.Tooltip = exports.Input = exports.CheckBox = exports.Switch = exports.FileInputField = exports.FlyoutTitle = exports.FlyoutHeader = exports.Flyout = exports.Modal = exports.FieldLabel = exports.TagBox = exports.TextAreaInput = exports.TextArea = exports.DateInput = exports.DropDownMenu = exports.IconButton = exports.Button = exports.SelectBox = exports.TextInput = exports.Grid = exports.FormSection = void 0;
6
+ exports.useMonolithUITheme = exports.MonolithUIProvider = exports.Column = exports.Table = exports.Calendar = exports.Pill = exports.Tooltip = exports.Input = exports.CheckBox = exports.Switch = exports.FileInputField = exports.FlyoutTitle = exports.FlyoutHeader = exports.Flyout = exports.Modal = exports.FieldLabel = exports.TagBox = exports.TextAreaInput = exports.TextArea = exports.DateInput = exports.DropDownMenu = exports.IconButton = exports.Button = exports.SelectBox = exports.TextInput = exports.Grid = exports.FormSection = void 0;
7
7
  var FormSection_1 = require("./FormSection");
8
8
  Object.defineProperty(exports, "FormSection", { enumerable: true, get: function () { return __importDefault(FormSection_1).default; } });
9
9
  var Grid_1 = require("./Grid");
@@ -49,6 +49,10 @@ var Pill_1 = require("./Pill");
49
49
  Object.defineProperty(exports, "Pill", { enumerable: true, get: function () { return __importDefault(Pill_1).default; } });
50
50
  var Calendar_1 = require("./Calendar");
51
51
  Object.defineProperty(exports, "Calendar", { enumerable: true, get: function () { return __importDefault(Calendar_1).default; } });
52
+ var Table_1 = require("./Table");
53
+ Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return __importDefault(Table_1).default; } });
54
+ var Table_2 = require("./Table");
55
+ Object.defineProperty(exports, "Column", { enumerable: true, get: function () { return Table_2.Column; } });
52
56
  var MonolithUIProvider_1 = require("./MonolithUIProvider");
53
57
  Object.defineProperty(exports, "MonolithUIProvider", { enumerable: true, get: function () { return __importDefault(MonolithUIProvider_1).default; } });
54
58
  var MonolithUIProvider_2 = require("./MonolithUIProvider");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monolith-forensics/monolith-ui",
3
- "version": "1.1.25",
3
+ "version": "1.1.27",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "author": "Matt Danner (Monolith Forensics LLC)",
@@ -24,9 +24,14 @@
24
24
  "deepmerge": "^4.3.1",
25
25
  "lucide-react": "^0.378.0",
26
26
  "moment": "^2.29.1",
27
+ "nanoid": "^5.0.7",
28
+ "overlayscrollbars-react": "^0.5.6",
27
29
  "react-dropzone": "^14.2.3",
28
30
  "react-icons": "^5.2.1",
29
31
  "react-textarea-autosize": "^8.5.3",
32
+ "react-virtualized-auto-sizer": "^1.0.24",
33
+ "react-window": "^1.8.10",
34
+ "short-uuid": "^5.2.0",
30
35
  "styled-components": "^6.1.11",
31
36
  "use-debounce": "^10.0.0"
32
37
  },
@@ -34,6 +39,7 @@
34
39
  "react": "18.2.0"
35
40
  },
36
41
  "devDependencies": {
42
+ "@types/react-window": "^1.8.8",
37
43
  "typescript": "^5.5.4"
38
44
  }
39
45
  }