@coveord/plasma-mantine 52.8.1 → 52.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +33 -32
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/blank-slate/BlankSlate.js.map +1 -1
- package/dist/cjs/components/button/Button.js +2 -2
- package/dist/cjs/components/button/Button.js.map +1 -1
- package/dist/cjs/components/button/ButtonWithDisabledTooltip.js.map +1 -1
- package/dist/cjs/components/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/cjs/components/code-editor/CodeEditor.js +4 -2
- package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/cjs/components/code-editor/languages/xml.js.map +1 -1
- package/dist/cjs/components/code-editor/search/Search.js.map +1 -1
- package/dist/cjs/components/collection/Collection.js +13 -9
- package/dist/cjs/components/collection/Collection.js.map +1 -1
- package/dist/cjs/components/collection/Collection.styles.js.map +1 -1
- package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js +4 -3
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/cjs/components/date-range-picker/DateRangePickerInlineCalendar.js.map +1 -1
- package/dist/cjs/components/date-range-picker/DateRangePickerPopoverCalendar.js +2 -1
- package/dist/cjs/components/date-range-picker/DateRangePickerPopoverCalendar.js.map +1 -1
- package/dist/cjs/components/date-range-picker/DateRangePickerPresetSelect.d.ts.map +1 -1
- package/dist/cjs/components/date-range-picker/DateRangePickerPresetSelect.js +4 -2
- package/dist/cjs/components/date-range-picker/DateRangePickerPresetSelect.js.map +1 -1
- package/dist/cjs/components/date-range-picker/EditableDateRangePicker.js +9 -6
- package/dist/cjs/components/date-range-picker/EditableDateRangePicker.js.map +1 -1
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js +2 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmContext.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmMenuItem.js +2 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmMenuItem.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
- package/dist/cjs/components/inline-confirm/useInlineConfirm.js.map +1 -1
- package/dist/cjs/components/menu/Menu.js.map +1 -1
- package/dist/cjs/components/modal-wizard/ModalWizard.js +16 -10
- package/dist/cjs/components/modal-wizard/ModalWizard.js.map +1 -1
- package/dist/cjs/components/modal-wizard/ModalWizardStep.js.map +1 -1
- package/dist/cjs/components/prompt/Prompt.js.map +1 -1
- package/dist/cjs/components/prompt/PromptFooter.js.map +1 -1
- package/dist/cjs/components/sticky-footer/StickyFooter.js.map +1 -1
- package/dist/cjs/components/table/Table.d.ts.map +1 -1
- package/dist/cjs/components/table/Table.js +33 -20
- package/dist/cjs/components/table/Table.js.map +1 -1
- package/dist/cjs/components/table/Table.styles.d.ts.map +1 -1
- package/dist/cjs/components/table/Table.styles.js +1 -10
- package/dist/cjs/components/table/Table.styles.js.map +1 -1
- package/dist/cjs/components/table/Table.types.d.ts +14 -3
- package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
- package/dist/cjs/components/table/TableActions.js.map +1 -1
- package/dist/cjs/components/table/TableCollapsibleColumn.js +2 -1
- package/dist/cjs/components/table/TableCollapsibleColumn.js.map +1 -1
- package/dist/cjs/components/table/TableContext.js.map +1 -1
- package/dist/cjs/components/table/TableDateRangePicker.js.map +1 -1
- package/dist/cjs/components/table/TableFilter.js.map +1 -1
- package/dist/cjs/components/table/TableFooter.js +2 -2
- package/dist/cjs/components/table/TableFooter.js.map +1 -1
- package/dist/cjs/components/table/TableHeader.js +1 -1
- package/dist/cjs/components/table/TableHeader.js.map +1 -1
- package/dist/cjs/components/table/TableLastUpdated.d.ts +24 -0
- package/dist/cjs/components/table/TableLastUpdated.d.ts.map +1 -0
- package/dist/cjs/components/table/TableLastUpdated.js +73 -0
- package/dist/cjs/components/table/TableLastUpdated.js.map +1 -0
- package/dist/cjs/components/table/TableLayoutControl.js.map +1 -1
- package/dist/cjs/components/table/TableLoading.js.map +1 -1
- package/dist/cjs/components/table/TablePagination.d.ts.map +1 -1
- package/dist/cjs/components/table/TablePagination.js +1 -0
- package/dist/cjs/components/table/TablePagination.js.map +1 -1
- package/dist/cjs/components/table/TablePerPage.js +5 -2
- package/dist/cjs/components/table/TablePerPage.js.map +1 -1
- package/dist/cjs/components/table/TablePredicate.js.map +1 -1
- package/dist/cjs/components/table/TableSelectableColumn.js.map +1 -1
- package/dist/cjs/components/table/Th.js.map +1 -1
- package/dist/cjs/components/table/index.js.map +1 -1
- package/dist/cjs/components/table/layouts/RowLayout.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/RowLayout.js +45 -11
- package/dist/cjs/components/table/layouts/RowLayout.js.map +1 -1
- package/dist/cjs/components/table/layouts/TableLayouts.js.map +1 -1
- package/dist/cjs/components/table/useRowSelection.d.ts +2 -2
- package/dist/cjs/components/table/useRowSelection.d.ts.map +1 -1
- package/dist/cjs/components/table/useRowSelection.js +10 -4
- package/dist/cjs/components/table/useRowSelection.js.map +1 -1
- package/dist/cjs/form/FormProvider.js.map +1 -1
- package/dist/cjs/form/useForm.js.map +1 -1
- package/dist/cjs/hooks/useControlledList.js +6 -3
- package/dist/cjs/hooks/useControlledList.js.map +1 -1
- package/dist/cjs/hooks/useParentHeight.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/theme/PlasmaColors.js.map +1 -1
- package/dist/cjs/theme/Plasmantine.js.map +1 -1
- package/dist/cjs/theme/Theme.d.ts.map +1 -1
- package/dist/cjs/theme/Theme.js +28 -1
- package/dist/cjs/theme/Theme.js.map +1 -1
- package/dist/cjs/utils/createPolymorphicComponent.js.map +1 -1
- package/dist/cjs/utils/overrideComponent.js.map +1 -1
- package/dist/esm/components/button/Button.js +2 -2
- package/dist/esm/components/button/Button.js.map +1 -1
- package/dist/esm/components/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/esm/components/code-editor/CodeEditor.js +4 -2
- package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/esm/components/code-editor/languages/xml.js.map +1 -1
- package/dist/esm/components/collection/Collection.js +13 -9
- package/dist/esm/components/collection/Collection.js.map +1 -1
- package/dist/esm/components/collection/Collection.styles.js.map +1 -1
- package/dist/esm/components/collection/CollectionItem.js.map +1 -1
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js +4 -3
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerInlineCalendar.js.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js +2 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.d.ts.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js +4 -2
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js.map +1 -1
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js +9 -6
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js.map +1 -1
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js +2 -1
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmMenuItem.js +2 -1
- package/dist/esm/components/inline-confirm/InlineConfirmMenuItem.js.map +1 -1
- package/dist/esm/components/menu/Menu.js.map +1 -1
- package/dist/esm/components/modal-wizard/ModalWizard.js +16 -10
- package/dist/esm/components/modal-wizard/ModalWizard.js.map +1 -1
- package/dist/esm/components/modal-wizard/ModalWizardStep.js.map +1 -1
- package/dist/esm/components/prompt/Prompt.js.map +1 -1
- package/dist/esm/components/sticky-footer/StickyFooter.js.map +1 -1
- package/dist/esm/components/table/Table.d.ts.map +1 -1
- package/dist/esm/components/table/Table.js +35 -22
- package/dist/esm/components/table/Table.js.map +1 -1
- package/dist/esm/components/table/Table.styles.d.ts.map +1 -1
- package/dist/esm/components/table/Table.styles.js +1 -10
- package/dist/esm/components/table/Table.styles.js.map +1 -1
- package/dist/esm/components/table/Table.types.d.ts +14 -3
- package/dist/esm/components/table/Table.types.d.ts.map +1 -1
- package/dist/esm/components/table/Table.types.js.map +1 -1
- package/dist/esm/components/table/TableActions.js.map +1 -1
- package/dist/esm/components/table/TableCollapsibleColumn.js +2 -1
- package/dist/esm/components/table/TableCollapsibleColumn.js.map +1 -1
- package/dist/esm/components/table/TableDateRangePicker.js.map +1 -1
- package/dist/esm/components/table/TableFilter.js.map +1 -1
- package/dist/esm/components/table/TableFooter.js +2 -2
- package/dist/esm/components/table/TableFooter.js.map +1 -1
- package/dist/esm/components/table/TableHeader.js +1 -1
- package/dist/esm/components/table/TableHeader.js.map +1 -1
- package/dist/esm/components/table/TableLastUpdated.d.ts +24 -0
- package/dist/esm/components/table/TableLastUpdated.d.ts.map +1 -0
- package/dist/esm/components/table/TableLastUpdated.js +62 -0
- package/dist/esm/components/table/TableLastUpdated.js.map +1 -0
- package/dist/esm/components/table/TableLayoutControl.js.map +1 -1
- package/dist/esm/components/table/TableLoading.js.map +1 -1
- package/dist/esm/components/table/TablePagination.d.ts.map +1 -1
- package/dist/esm/components/table/TablePagination.js +1 -0
- package/dist/esm/components/table/TablePagination.js.map +1 -1
- package/dist/esm/components/table/TablePerPage.js +5 -2
- package/dist/esm/components/table/TablePerPage.js.map +1 -1
- package/dist/esm/components/table/TablePredicate.js.map +1 -1
- package/dist/esm/components/table/TableSelectableColumn.js.map +1 -1
- package/dist/esm/components/table/Th.js.map +1 -1
- package/dist/esm/components/table/layouts/RowLayout.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/RowLayout.js +46 -12
- package/dist/esm/components/table/layouts/RowLayout.js.map +1 -1
- package/dist/esm/components/table/useRowSelection.d.ts +2 -2
- package/dist/esm/components/table/useRowSelection.d.ts.map +1 -1
- package/dist/esm/components/table/useRowSelection.js +10 -4
- package/dist/esm/components/table/useRowSelection.js.map +1 -1
- package/dist/esm/form/FormProvider.js.map +1 -1
- package/dist/esm/form/useForm.js.map +1 -1
- package/dist/esm/hooks/useControlledList.js +6 -3
- package/dist/esm/hooks/useControlledList.js.map +1 -1
- package/dist/esm/hooks/useParentHeight.js.map +1 -1
- package/dist/esm/theme/PlasmaColors.js.map +1 -1
- package/dist/esm/theme/Theme.d.ts.map +1 -1
- package/dist/esm/theme/Theme.js +28 -1
- package/dist/esm/theme/Theme.js.map +1 -1
- package/dist/esm/utils/overrideComponent.js.map +1 -1
- package/package.json +20 -20
- package/src/__tests__/VitestSetup.ts +12 -0
- package/src/components/code-editor/CodeEditor.tsx +4 -2
- package/src/components/code-editor/__tests__/CodeEditor.spec.tsx +1 -0
- package/src/components/date-range-picker/DateRangePickerPresetSelect.tsx +1 -0
- package/src/components/date-range-picker/__tests__/DateRangePickerInlineCalendar.spec.tsx +2 -0
- package/src/components/date-range-picker/__tests__/DateRangePickerPopoverCalendar.spec.tsx +4 -19
- package/src/components/date-range-picker/__tests__/EditableDateRangePicker.spec.tsx +3 -3
- package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +19 -4
- package/src/components/table/Table.styles.ts +0 -9
- package/src/components/table/Table.tsx +22 -13
- package/src/components/table/Table.types.ts +14 -3
- package/src/components/table/TableFooter.tsx +1 -1
- package/src/components/table/TableHeader.tsx +1 -1
- package/src/components/table/TableLastUpdated.tsx +51 -0
- package/src/components/table/TablePagination.tsx +1 -0
- package/src/components/table/TablePerPage.tsx +3 -3
- package/src/components/table/__tests__/Table.spec.tsx +44 -5
- package/src/components/table/__tests__/TableActions.spec.tsx +4 -3
- package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +26 -59
- package/src/components/table/__tests__/TableLastUpdated.spec.tsx +97 -0
- package/src/components/table/__tests__/TablePredicate.spec.tsx +7 -55
- package/src/components/table/layouts/RowLayout.tsx +45 -11
- package/src/components/table/useRowSelection.ts +13 -6
- package/src/theme/Theme.tsx +20 -0
|
@@ -2,14 +2,16 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
|
2
2
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
3
3
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
4
4
|
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
5
|
+
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
5
6
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
|
-
import { Box, Center, Loader
|
|
7
|
+
import { Box, Center, Loader } from "@mantine/core";
|
|
7
8
|
import { useForm } from "@mantine/form";
|
|
8
9
|
import { useDidUpdate } from "@mantine/hooks";
|
|
9
10
|
import { getCoreRowModel, useReactTable } from "@tanstack/react-table";
|
|
10
11
|
import debounce from "lodash.debounce";
|
|
11
12
|
import defaultsDeep from "lodash.defaultsdeep";
|
|
12
|
-
import { Children, useCallback, useEffect, useState } from "react";
|
|
13
|
+
import { Children, cloneElement, useCallback, useEffect, useState } from "react";
|
|
14
|
+
import { TableLayouts } from "./layouts/TableLayouts";
|
|
13
15
|
import useStyles from "./Table.styles";
|
|
14
16
|
import { TableActions } from "./TableActions";
|
|
15
17
|
import { TableAccordionColumn, TableCollapsibleColumn } from "./TableCollapsibleColumn";
|
|
@@ -19,18 +21,18 @@ import { TableDateRangePicker } from "./TableDateRangePicker";
|
|
|
19
21
|
import { TableFilter } from "./TableFilter";
|
|
20
22
|
import { TableFooter } from "./TableFooter";
|
|
21
23
|
import { TableHeader } from "./TableHeader";
|
|
24
|
+
import { TableLastUpdated } from "./TableLastUpdated";
|
|
25
|
+
import { TableLoading } from "./TableLoading";
|
|
22
26
|
import { TablePagination } from "./TablePagination";
|
|
23
27
|
import { TablePerPage } from "./TablePerPage";
|
|
24
28
|
import { TablePredicate } from "./TablePredicate";
|
|
25
29
|
import { TableSelectableColumn } from "./TableSelectableColumn";
|
|
26
30
|
import { useRowSelection } from "./useRowSelection";
|
|
27
|
-
import { TableLoading } from "./TableLoading";
|
|
28
|
-
import { TableLayouts } from "./layouts/TableLayouts";
|
|
29
31
|
export var Table = function(param) {
|
|
30
32
|
var data = param.data, getRowId = param.getRowId, noDataChildren = param.noDataChildren, getExpandChildren = param.getExpandChildren, _param_initialState = param.initialState, initialState = _param_initialState === void 0 ? {} : _param_initialState, columns = param.columns, _param_layouts = param.layouts, layouts = _param_layouts === void 0 ? [
|
|
31
33
|
TableLayouts.Rows
|
|
32
|
-
] : _param_layouts, onMount = param.onMount, onChange = param.onChange, children = param.children, _param_loading = param.loading, loading = _param_loading === void 0 ? false : _param_loading, doubleClickAction = param.doubleClickAction, multiRowSelectionEnabled = param.multiRowSelectionEnabled, disableRowSelection = param.disableRowSelection, onRowSelectionChange = param.onRowSelectionChange, _param_options = param.options, options = _param_options === void 0 ? {} : _param_options;
|
|
33
|
-
var _form_values, _form_values_dateRange, _form_values_dateRange1;
|
|
34
|
+
] : _param_layouts, onMount = param.onMount, onChange = param.onChange, children = param.children, _param_loading = param.loading, loading = _param_loading === void 0 ? false : _param_loading, doubleClickAction = param.doubleClickAction, multiRowSelectionEnabled = param.multiRowSelectionEnabled, disableRowSelection = param.disableRowSelection, onRowSelectionChange = param.onRowSelectionChange, additionalRootNodes = param.additionalRootNodes, _param_options = param.options, options = _param_options === void 0 ? {} : _param_options;
|
|
35
|
+
var _initialState, _initialState1, _initialState2, _options, _getExpandChildren, _form_values, _form_values_dateRange, _form_values_dateRange1;
|
|
34
36
|
var convertedChildren = Children.toArray(children);
|
|
35
37
|
var header = convertedChildren.find(function(child) {
|
|
36
38
|
return child.type === TableHeader;
|
|
@@ -41,6 +43,9 @@ export var Table = function(param) {
|
|
|
41
43
|
var consumer = convertedChildren.find(function(child) {
|
|
42
44
|
return child.type === TableConsumer;
|
|
43
45
|
});
|
|
46
|
+
var lastUpdated = convertedChildren.find(function(child) {
|
|
47
|
+
return child.type === TableLastUpdated;
|
|
48
|
+
});
|
|
44
49
|
var predicates = initialState.predicates, dateRange = initialState.dateRange, initialStateWithoutForm = _object_without_properties(initialState, [
|
|
45
50
|
"predicates",
|
|
46
51
|
"dateRange"
|
|
@@ -48,12 +53,12 @@ export var Table = function(param) {
|
|
|
48
53
|
var _initialState_predicates, _initialState_dateRange, _initialState_layout;
|
|
49
54
|
var form = useForm({
|
|
50
55
|
initialValues: {
|
|
51
|
-
predicates: (_initialState_predicates = initialState === null ||
|
|
52
|
-
dateRange: (_initialState_dateRange = initialState === null ||
|
|
56
|
+
predicates: (_initialState_predicates = (_initialState = initialState) === null || _initialState === void 0 ? void 0 : _initialState.predicates) !== null && _initialState_predicates !== void 0 ? _initialState_predicates : {},
|
|
57
|
+
dateRange: (_initialState_dateRange = (_initialState1 = initialState) === null || _initialState1 === void 0 ? void 0 : _initialState1.dateRange) !== null && _initialState_dateRange !== void 0 ? _initialState_dateRange : [
|
|
53
58
|
null,
|
|
54
59
|
null
|
|
55
60
|
],
|
|
56
|
-
layout: (_initialState_layout = initialState === null ||
|
|
61
|
+
layout: (_initialState_layout = (_initialState2 = initialState) === null || _initialState2 === void 0 ? void 0 : _initialState2.layout) !== null && _initialState_layout !== void 0 ? _initialState_layout : layouts[0].name
|
|
57
62
|
}
|
|
58
63
|
});
|
|
59
64
|
var classes = useStyles().classes;
|
|
@@ -62,18 +67,19 @@ export var Table = function(param) {
|
|
|
62
67
|
initialState: defaultsDeep(initialStateWithoutForm, {
|
|
63
68
|
pagination: {
|
|
64
69
|
pageSize: TablePerPage.DEFAULT_SIZE
|
|
65
|
-
}
|
|
70
|
+
},
|
|
71
|
+
globalFilter: ""
|
|
66
72
|
}),
|
|
67
73
|
data: data,
|
|
68
74
|
columns: multiRowSelectionEnabled ? [
|
|
69
75
|
TableSelectableColumn
|
|
70
76
|
].concat(columns) : columns,
|
|
71
77
|
getCoreRowModel: getCoreRowModel(),
|
|
72
|
-
manualPagination: (options === null ||
|
|
78
|
+
manualPagination: ((_options = options) === null || _options === void 0 ? void 0 : _options.getPaginationRowModel) === undefined,
|
|
73
79
|
enableMultiRowSelection: !!multiRowSelectionEnabled,
|
|
74
80
|
getRowId: getRowId,
|
|
75
81
|
getRowCanExpand: function(row) {
|
|
76
|
-
return (_ref = !!(getExpandChildren === null ||
|
|
82
|
+
return (_ref = !!((_getExpandChildren = getExpandChildren) === null || _getExpandChildren === void 0 ? void 0 : _getExpandChildren(row.original))) !== null && _ref !== void 0 ? _ref : false;
|
|
77
83
|
},
|
|
78
84
|
enableRowSelection: !loading
|
|
79
85
|
}, options));
|
|
@@ -86,17 +92,20 @@ export var Table = function(param) {
|
|
|
86
92
|
});
|
|
87
93
|
var _useRowSelection = useRowSelection(table, {
|
|
88
94
|
multiRowSelectionEnabled: multiRowSelectionEnabled,
|
|
89
|
-
onRowSelectionChange: onRowSelectionChange
|
|
95
|
+
onRowSelectionChange: onRowSelectionChange,
|
|
96
|
+
additionalRootNodes: additionalRootNodes
|
|
90
97
|
}), clearSelection = _useRowSelection.clearSelection, getSelectedRow = _useRowSelection.getSelectedRow, getSelectedRows = _useRowSelection.getSelectedRows, outsideClickRef = _useRowSelection.outsideClickRef;
|
|
91
98
|
var _form_values_predicates;
|
|
92
99
|
var isFiltered = !!state.globalFilter || Object.keys((_form_values_predicates = (_form_values = form.values) === null || _form_values === void 0 ? void 0 : _form_values.predicates) !== null && _form_values_predicates !== void 0 ? _form_values_predicates : {}).some(function(predicate) {
|
|
93
100
|
return !!form.values.predicates[predicate];
|
|
94
101
|
}) || !!((_form_values_dateRange = form.values.dateRange) === null || _form_values_dateRange === void 0 ? void 0 : _form_values_dateRange[0]) || !!((_form_values_dateRange1 = form.values.dateRange) === null || _form_values_dateRange1 === void 0 ? void 0 : _form_values_dateRange1[1]);
|
|
95
102
|
var triggerChange = debounce(function() {
|
|
96
|
-
|
|
103
|
+
var _onChange;
|
|
104
|
+
return (_onChange = onChange) === null || _onChange === void 0 ? void 0 : _onChange(_object_spread({}, state, form.values));
|
|
97
105
|
}, 500);
|
|
98
106
|
useEffect(function() {
|
|
99
|
-
|
|
107
|
+
var _onMount;
|
|
108
|
+
(_onMount = onMount) === null || _onMount === void 0 ? void 0 : _onMount(_object_spread({}, state, form.values));
|
|
100
109
|
return function() {
|
|
101
110
|
triggerChange.cancel();
|
|
102
111
|
};
|
|
@@ -135,6 +144,7 @@ export var Table = function(param) {
|
|
|
135
144
|
return name === form.values.layout;
|
|
136
145
|
});
|
|
137
146
|
var hasRows = table.getRowModel().rows.length > 0;
|
|
147
|
+
var _lastUpdated_props_dependencies;
|
|
138
148
|
return /*#__PURE__*/ _jsx(Box, {
|
|
139
149
|
ref: outsideClickRef,
|
|
140
150
|
children: /*#__PURE__*/ _jsxs(TableContext.Provider, {
|
|
@@ -158,10 +168,9 @@ export var Table = function(param) {
|
|
|
158
168
|
consumer,
|
|
159
169
|
!hasRows && !isFiltered && !loading ? noDataChildren : /*#__PURE__*/ _jsxs(_Fragment, {
|
|
160
170
|
children: [
|
|
161
|
-
/*#__PURE__*/ _jsxs(
|
|
171
|
+
/*#__PURE__*/ _jsxs(Box, {
|
|
172
|
+
component: "table",
|
|
162
173
|
className: classes.table,
|
|
163
|
-
horizontalSpacing: "sm",
|
|
164
|
-
verticalSpacing: "xs",
|
|
165
174
|
pb: "sm",
|
|
166
175
|
children: [
|
|
167
176
|
/*#__PURE__*/ _jsxs("thead", {
|
|
@@ -169,10 +178,8 @@ export var Table = function(param) {
|
|
|
169
178
|
children: [
|
|
170
179
|
!!header ? /*#__PURE__*/ _jsx("tr", {
|
|
171
180
|
children: /*#__PURE__*/ _jsx("th", {
|
|
172
|
-
// need to use inline style because Mantine define style on `.mantine-{id} thead tr th`
|
|
173
181
|
style: {
|
|
174
|
-
padding: 0
|
|
175
|
-
fontWeight: "unset"
|
|
182
|
+
padding: 0
|
|
176
183
|
},
|
|
177
184
|
colSpan: table.getAllColumns().length,
|
|
178
185
|
children: header
|
|
@@ -204,7 +211,12 @@ export var Table = function(param) {
|
|
|
204
211
|
})
|
|
205
212
|
]
|
|
206
213
|
}),
|
|
207
|
-
footer
|
|
214
|
+
footer,
|
|
215
|
+
lastUpdated ? /*#__PURE__*/ cloneElement(lastUpdated, {
|
|
216
|
+
dependencies: [
|
|
217
|
+
data
|
|
218
|
+
].concat(_to_consumable_array((_lastUpdated_props_dependencies = lastUpdated.props.dependencies) !== null && _lastUpdated_props_dependencies !== void 0 ? _lastUpdated_props_dependencies : []))
|
|
219
|
+
}) : null
|
|
208
220
|
]
|
|
209
221
|
})
|
|
210
222
|
]
|
|
@@ -215,6 +227,7 @@ Table.Actions = TableActions;
|
|
|
215
227
|
Table.Filter = TableFilter;
|
|
216
228
|
Table.Footer = TableFooter;
|
|
217
229
|
Table.Header = TableHeader;
|
|
230
|
+
Table.LastUpdated = TableLastUpdated;
|
|
218
231
|
Table.Pagination = TablePagination;
|
|
219
232
|
Table.Predicate = TablePredicate;
|
|
220
233
|
Table.PerPage = TablePerPage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Loader, Table as MantineTable} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {ColumnDef, Row, TableState as TanstackTableState, getCoreRowModel, useReactTable} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\nimport {TableLoading} from './TableLoading';\nimport {TableLayouts} from './layouts/TableLayouts';\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n layouts = [TableLayouts.Rows],\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n disableRowSelection,\n onRowSelectionChange,\n options = {},\n}: TableProps<T>) => {\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const consumer = convertedChildren.find((child) => child.type === TableConsumer);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {\n predicates: initialState?.predicates ?? {},\n dateRange: initialState?.dateRange ?? [null, null],\n layout: initialState?.layout ?? layouts[0].name,\n },\n });\n const {classes} = useStyles();\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {pagination: {pageSize: TablePerPage.DEFAULT_SIZE}}),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n ...options,\n });\n\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [\n state.globalFilter,\n state.pagination,\n state.sorting,\n JSON.stringify(form.values.dateRange),\n JSON.stringify(form.values.predicates),\n ]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout = layouts.find(({name}) => name === form.values.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n disableRowSelection,\n layouts,\n }}\n >\n {consumer}\n {!hasRows && !isFiltered && !loading ? (\n noDataChildren\n ) : (\n <>\n <MantineTable className={classes.table} horizontalSpacing=\"sm\" verticalSpacing=\"xs\" pb=\"sm\">\n <thead className={classes.header}>\n {!!header ? (\n <tr>\n <th\n // need to use inline style because Mantine define style on `.mantine-{id} thead tr th`\n style={{padding: 0, fontWeight: 'unset'}}\n colSpan={table.getAllColumns().length}\n >\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n </thead>\n <tbody>\n {hasRows ? (\n <Layout.Body\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading}>{noDataChildren}</TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </MantineTable>\n {footer}\n </>\n )}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Consumer = TableConsumer;\nTable.Loading = TableLoading;\nTable.Layouts = TableLayouts;\n"],"names":["Box","Center","Loader","Table","MantineTable","useForm","useDidUpdate","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","useCallback","useEffect","useState","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableConsumer","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TablePagination","TablePerPage","TablePredicate","TableSelectableColumn","useRowSelection","TableLoading","TableLayouts","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","options","form","convertedChildren","toArray","header","find","child","type","footer","consumer","predicates","dateRange","initialStateWithoutForm","initialValues","layout","name","classes","table","pagination","pageSize","DEFAULT_SIZE","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","globalFilter","Object","keys","values","some","predicate","triggerChange","cancel","sorting","JSON","stringify","clearFilters","setFieldValue","prevState","sx","flexGrow","Layout","hasRows","getRowModel","rows","length","ref","Provider","value","containerRef","getPageCount","className","horizontalSpacing","verticalSpacing","pb","thead","tr","th","style","padding","fontWeight","colSpan","getAllColumns","Header","tbody","Body","td","visible","Actions","Filter","Footer","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {Box, Center, Loader} from '@mantine/core';\nimport {useForm} from '@mantine/form';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {ColumnDef, getCoreRowModel, Row, TableState as TanstackTableState, useReactTable} from '@tanstack/react-table';\nimport debounce from 'lodash.debounce';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport {Children, cloneElement, Dispatch, ReactElement, useCallback, useEffect, useState} from 'react';\n\nimport {TableLayouts} from './layouts/TableLayouts';\nimport useStyles from './Table.styles';\nimport {TableFormType, TableProps, TableState, TableType} from './Table.types';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableContext} from './TableContext';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\nimport {TableSelectableColumn} from './TableSelectableColumn';\nimport {useRowSelection} from './useRowSelection';\n\nexport const Table: TableType = <T,>({\n data,\n getRowId,\n noDataChildren,\n getExpandChildren,\n initialState = {},\n columns,\n layouts = [TableLayouts.Rows],\n onMount,\n onChange,\n children,\n loading = false,\n doubleClickAction,\n multiRowSelectionEnabled,\n disableRowSelection,\n onRowSelectionChange,\n additionalRootNodes,\n options = {},\n}: TableProps<T>) => {\n const convertedChildren = Children.toArray(children) as ReactElement[];\n const header = convertedChildren.find((child) => child.type === TableHeader);\n const footer = convertedChildren.find((child) => child.type === TableFooter);\n const consumer = convertedChildren.find((child) => child.type === TableConsumer);\n const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);\n\n const {predicates, dateRange, ...initialStateWithoutForm} = initialState;\n const form = useForm<TableFormType>({\n initialValues: {\n predicates: initialState?.predicates ?? {},\n dateRange: initialState?.dateRange ?? [null, null],\n layout: initialState?.layout ?? layouts[0].name,\n },\n });\n const {classes} = useStyles();\n\n const table = useReactTable({\n initialState: defaultsDeep(initialStateWithoutForm, {\n pagination: {pageSize: TablePerPage.DEFAULT_SIZE},\n globalFilter: '',\n }),\n data,\n columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: options?.getPaginationRowModel === undefined,\n enableMultiRowSelection: !!multiRowSelectionEnabled,\n getRowId,\n getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,\n enableRowSelection: !loading,\n ...options,\n });\n\n const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);\n table.setOptions((prev) => ({\n ...prev,\n state: state as TanstackTableState,\n onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,\n }));\n const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {\n multiRowSelectionEnabled,\n onRowSelectionChange,\n additionalRootNodes,\n });\n const isFiltered =\n !!state.globalFilter ||\n Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||\n !!form.values.dateRange?.[0] ||\n !!form.values.dateRange?.[1];\n\n const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);\n\n useEffect(() => {\n onMount?.({...state, ...form.values});\n return () => {\n triggerChange.cancel();\n };\n }, []);\n\n useDidUpdate(() => {\n triggerChange();\n if (!multiRowSelectionEnabled) {\n clearSelection();\n }\n }, [\n state.globalFilter,\n state.pagination,\n state.sorting,\n JSON.stringify(form.values.dateRange),\n JSON.stringify(form.values.predicates),\n ]);\n\n const clearFilters = useCallback(() => {\n form.setFieldValue('predicates', initialState.predicates ?? {});\n setState((prevState) => ({...prevState, globalFilter: ''}));\n }, []);\n\n if (!data) {\n return (\n <Center sx={{flexGrow: 1}}>\n <Loader />\n </Center>\n );\n }\n\n const Layout = layouts.find(({name}) => name === form.values.layout);\n const hasRows = table.getRowModel().rows.length > 0;\n\n return (\n <Box ref={outsideClickRef}>\n <TableContext.Provider\n value={{\n onChange: triggerChange,\n state,\n isFiltered,\n setState,\n clearFilters,\n getSelectedRow,\n getSelectedRows,\n clearSelection,\n form,\n containerRef: outsideClickRef,\n multiRowSelectionEnabled,\n getPageCount: table.getPageCount,\n disableRowSelection,\n layouts,\n }}\n >\n {consumer}\n {!hasRows && !isFiltered && !loading ? (\n noDataChildren\n ) : (\n <>\n <Box component=\"table\" className={classes.table} pb=\"sm\">\n <thead className={classes.header}>\n {!!header ? (\n <tr>\n <th style={{padding: 0}} colSpan={table.getAllColumns().length}>\n {header}\n </th>\n </tr>\n ) : null}\n <Layout.Header\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n </thead>\n <tbody>\n {hasRows ? (\n <Layout.Body\n table={table}\n doubleClickAction={doubleClickAction}\n getExpandChildren={getExpandChildren}\n loading={loading}\n />\n ) : (\n <tr>\n <td colSpan={table.getAllColumns().length}>\n <TableLoading visible={loading}>{noDataChildren}</TableLoading>\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n {footer}\n {lastUpdated\n ? cloneElement(lastUpdated, {\n dependencies: [data, ...(lastUpdated.props.dependencies ?? [])],\n })\n : null}\n </>\n )}\n </TableContext.Provider>\n </Box>\n );\n};\n\nTable.Actions = TableActions;\nTable.Filter = TableFilter;\nTable.Footer = TableFooter;\nTable.Header = TableHeader;\nTable.LastUpdated = TableLastUpdated;\nTable.Pagination = TablePagination;\nTable.Predicate = TablePredicate;\nTable.PerPage = TablePerPage;\nTable.Predicate = TablePredicate;\nTable.CollapsibleColumn = TableCollapsibleColumn;\nTable.AccordionColumn = TableAccordionColumn;\nTable.DateRangePicker = TableDateRangePicker;\nTable.Consumer = TableConsumer;\nTable.Loading = TableLoading;\nTable.Layouts = TableLayouts;\n"],"names":["Box","Center","Loader","useForm","useDidUpdate","getCoreRowModel","useReactTable","debounce","defaultsDeep","Children","cloneElement","useCallback","useEffect","useState","TableLayouts","useStyles","TableActions","TableAccordionColumn","TableCollapsibleColumn","TableConsumer","TableContext","TableDateRangePicker","TableFilter","TableFooter","TableHeader","TableLastUpdated","TableLoading","TablePagination","TablePerPage","TablePredicate","TableSelectableColumn","useRowSelection","Table","data","getRowId","noDataChildren","getExpandChildren","initialState","columns","layouts","Rows","onMount","onChange","children","loading","doubleClickAction","multiRowSelectionEnabled","disableRowSelection","onRowSelectionChange","additionalRootNodes","options","form","convertedChildren","toArray","header","find","child","type","footer","consumer","lastUpdated","predicates","dateRange","initialStateWithoutForm","initialValues","layout","name","classes","table","pagination","pageSize","DEFAULT_SIZE","globalFilter","concat","manualPagination","getPaginationRowModel","undefined","enableMultiRowSelection","getRowCanExpand","row","original","enableRowSelection","state","setState","setOptions","prev","onStateChange","clearSelection","getSelectedRow","getSelectedRows","outsideClickRef","isFiltered","Object","keys","values","some","predicate","triggerChange","cancel","sorting","JSON","stringify","clearFilters","setFieldValue","prevState","sx","flexGrow","Layout","hasRows","getRowModel","rows","length","ref","Provider","value","containerRef","getPageCount","component","className","pb","thead","tr","th","style","padding","colSpan","getAllColumns","Header","tbody","Body","td","visible","dependencies","props","Actions","Filter","Footer","LastUpdated","Pagination","Predicate","PerPage","CollapsibleColumn","AccordionColumn","DateRangePicker","Consumer","Loading","Layouts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.styles.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS;;;;;;
|
|
1
|
+
{"version":3,"file":"Table.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.styles.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS;;;;;;CAqBZ,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;;;;;;CAOhC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -2,16 +2,7 @@ import { createStyles } from "@mantine/core";
|
|
|
2
2
|
var useStyles = createStyles(function(theme) {
|
|
3
3
|
return {
|
|
4
4
|
table: {
|
|
5
|
-
width: "100%"
|
|
6
|
-
"& thead tr th": {
|
|
7
|
-
borderBottom: "none"
|
|
8
|
-
},
|
|
9
|
-
"& td:first-of-type": {
|
|
10
|
-
paddingLeft: theme.spacing.xl
|
|
11
|
-
},
|
|
12
|
-
"& tbody td": {
|
|
13
|
-
verticalAlign: "top"
|
|
14
|
-
}
|
|
5
|
+
width: "100%"
|
|
15
6
|
},
|
|
16
7
|
header: {
|
|
17
8
|
position: "sticky",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/Table.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nconst useStyles = createStyles<string>((theme) => ({\n table: {\n width: '100%',\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/Table.styles.ts"],"sourcesContent":["import {createStyles} from '@mantine/core';\n\nconst useStyles = createStyles<string>((theme) => ({\n table: {\n width: '100%',\n },\n\n header: {\n position: 'sticky',\n top: 0,\n backgroundColor: theme.colorScheme === 'dark' ? theme.black : theme.white,\n transition: 'box-shadow 150ms ease',\n zIndex: 1,\n\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n borderBottom: `1px solid ${theme.colors.gray[3]}`,\n },\n },\n}));\n\nexport const TableComponentsOrder = {\n MultiSelectInfo: 6,\n Actions: 5,\n Predicate: 4,\n Filter: 3,\n DateRangePicker: 2,\n LayoutControl: 1,\n};\n\nexport default useStyles;\n"],"names":["createStyles","useStyles","theme","table","width","header","position","top","backgroundColor","colorScheme","black","white","transition","zIndex","content","left","right","bottom","borderBottom","colors","gray","TableComponentsOrder","MultiSelectInfo","Actions","Predicate","Filter","DateRangePicker","LayoutControl"],"mappings":"AAAA,SAAQA,YAAY,QAAO,gBAAgB;AAE3C,IAAMC,YAAYD,aAAqB,SAACE;WAAW;QAC/CC,OAAO;YACHC,OAAO;QACX;QAEAC,QAAQ;YACJC,UAAU;YACVC,KAAK;YACLC,iBAAiBN,MAAMO,WAAW,KAAK,SAASP,MAAMQ,KAAK,GAAGR,MAAMS,KAAK;YACzEC,YAAY;YACZC,QAAQ;YAER,YAAY;gBACRC,SAAS;gBACTR,UAAU;gBACVS,MAAM;gBACNC,OAAO;gBACPC,QAAQ;gBACRC,cAAc,AAAC,aAAiC,OAArBhB,MAAMiB,MAAM,CAACC,IAAI,CAAC,EAAE;YACnD;QACJ;IACJ;;AAEA,OAAO,IAAMC,uBAAuB;IAChCC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,iBAAiB;IACjBC,eAAe;AACnB,EAAE;AAEF,eAAe1B,UAAU"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Icon } from '@coveord/plasma-react-icons';
|
|
1
2
|
import { UseFormReturnType } from '@mantine/form';
|
|
2
|
-
import { ColumnDef, CoreOptions,
|
|
3
|
+
import { ColumnDef, CoreOptions, InitialTableState as TanstackInitialTableState, Table, TableOptions, TableState as TanstackTableState } from '@tanstack/table-core';
|
|
3
4
|
import { Dispatch, ReactElement, ReactNode, RefObject } from 'react';
|
|
4
|
-
import { Icon } from '@coveord/plasma-react-icons';
|
|
5
5
|
import { DateRangePickerValue } from '../date-range-picker/DateRangePickerInlineCalendar';
|
|
6
|
+
import { TableLayouts } from './layouts/TableLayouts';
|
|
6
7
|
import { TableActions } from './TableActions';
|
|
7
8
|
import { TableAccordionColumn, TableCollapsibleColumn } from './TableCollapsibleColumn';
|
|
8
9
|
import { TableConsumer } from './TableConsumer';
|
|
@@ -10,11 +11,11 @@ import { TableDateRangePicker } from './TableDateRangePicker';
|
|
|
10
11
|
import { TableFilter } from './TableFilter';
|
|
11
12
|
import { TableFooter } from './TableFooter';
|
|
12
13
|
import { TableHeader } from './TableHeader';
|
|
14
|
+
import { TableLastUpdated } from './TableLastUpdated';
|
|
13
15
|
import { TableLoading } from './TableLoading';
|
|
14
16
|
import { TablePagination } from './TablePagination';
|
|
15
17
|
import { TablePerPage } from './TablePerPage';
|
|
16
18
|
import { TablePredicate } from './TablePredicate';
|
|
17
|
-
import { TableLayouts } from './layouts/TableLayouts';
|
|
18
19
|
export type RowSelectionWithData<TData> = Record<string, TData>;
|
|
19
20
|
export interface RowSelectionState<TData> {
|
|
20
21
|
rowSelection: RowSelectionWithData<TData>;
|
|
@@ -227,6 +228,15 @@ export interface TableProps<T> {
|
|
|
227
228
|
* @default false
|
|
228
229
|
*/
|
|
229
230
|
disableRowSelection?: boolean;
|
|
231
|
+
/**
|
|
232
|
+
* Nodes that are considered inside the table.
|
|
233
|
+
*
|
|
234
|
+
* Rows normally get unselected when clicking outside the table, but sometimes it has difficulties guessing what is inside or outside, for example when using modals.
|
|
235
|
+
* You can use this prop to force the table to consider some nodes to be inside the table.
|
|
236
|
+
*
|
|
237
|
+
* @see https://mantine.dev/hooks/use-click-outside/#multiple-nodes
|
|
238
|
+
*/
|
|
239
|
+
additionalRootNodes?: HTMLElement[];
|
|
230
240
|
/**
|
|
231
241
|
* Additional options that can be passed to the table
|
|
232
242
|
*/
|
|
@@ -238,6 +248,7 @@ export interface TableType {
|
|
|
238
248
|
Filter: typeof TableFilter;
|
|
239
249
|
Footer: typeof TableFooter;
|
|
240
250
|
Header: typeof TableHeader;
|
|
251
|
+
LastUpdated: typeof TableLastUpdated;
|
|
241
252
|
Pagination: typeof TablePagination;
|
|
242
253
|
PerPage: typeof TablePerPage;
|
|
243
254
|
Predicate: typeof TablePredicate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,EACH,SAAS,EACT,WAAW,EACX,KAAK,EACL,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"Table.types.d.ts","sourceRoot":"","sources":["../../../../src/components/table/Table.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {UseFormReturnType} from '@mantine/form';\nimport {\n ColumnDef,\n CoreOptions,\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/Table.types.ts"],"sourcesContent":["import {Icon} from '@coveord/plasma-react-icons';\nimport {UseFormReturnType} from '@mantine/form';\nimport {\n ColumnDef,\n CoreOptions,\n InitialTableState as TanstackInitialTableState,\n Table,\n TableOptions,\n TableState as TanstackTableState,\n} from '@tanstack/table-core';\nimport {Dispatch, ReactElement, ReactNode, RefObject} from 'react';\n\nimport {DateRangePickerValue} from '../date-range-picker/DateRangePickerInlineCalendar';\nimport {TableLayouts} from './layouts/TableLayouts';\nimport {TableActions} from './TableActions';\nimport {TableAccordionColumn, TableCollapsibleColumn} from './TableCollapsibleColumn';\nimport {TableConsumer} from './TableConsumer';\nimport {TableDateRangePicker} from './TableDateRangePicker';\nimport {TableFilter} from './TableFilter';\nimport {TableFooter} from './TableFooter';\nimport {TableHeader} from './TableHeader';\nimport {TableLastUpdated} from './TableLastUpdated';\nimport {TableLoading} from './TableLoading';\nimport {TablePagination} from './TablePagination';\nimport {TablePerPage} from './TablePerPage';\nimport {TablePredicate} from './TablePredicate';\n\nexport type RowSelectionWithData<TData> = Record<string, TData>;\nexport interface RowSelectionState<TData> {\n rowSelection: RowSelectionWithData<TData>;\n}\n\nexport interface TableState<TData> extends Omit<TanstackTableState, 'rowSelection'>, RowSelectionState<TData> {}\n\nexport interface InitialTableState<TData>\n extends Omit<TanstackInitialTableState, 'rowSelection'>,\n Partial<RowSelectionState<TData>>,\n Partial<TableFormType> {}\n\nexport type onTableChangeEvent<TData> = (params: TableState<TData> & TableFormType) => void;\n\nexport interface TableLayout {\n /**\n * Name of the layout.\n * Will be displayed in the layout control\n */\n name: string;\n /**\n * Icon illustrating the layout.\n * Will be displayed in the layout control\n */\n icon?: Icon;\n /**\n * Header portion of the table.\n * In the standard row layout that is where column headers would be displayed.\n */\n Header: <T>(props: TableLayoutProps<T>) => ReactElement;\n /**\n * Body portion of the table.\n * In the standard row layout that is where the rows would be displayed.\n */\n Body: <T>(props: TableLayoutProps<T>) => ReactElement;\n}\n\nexport interface TableLayoutProps<T = unknown> {\n table: Table<T>;\n loading?: boolean;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n}\n\nexport type TableFormType = {\n /**\n * Object containing the table predicates and their selected values\n *\n * @example {type: \"LONG\", origin: \"system\"}\n */\n predicates: Record<string, string>;\n /**\n * Selected date range in the table\n *\n * @example [new Date(2022, 0, 1), new Date(2022, 0, 31)]\n */\n dateRange: DateRangePickerValue;\n /**\n * Selected layout name\n */\n layout: TableLayout['name'];\n};\n\nexport type TableContextType<TData> = {\n /**\n * Function to call when the table needs an update\n */\n onChange: () => void;\n /**\n * Internal state of the table\n *\n * @see https://tanstack.com/table/v8/docs/api/core/table#state\n */\n state: TableState<TData>;\n /**\n * Function to update the table state\n */\n setState: Dispatch<(prevState: TableState<TData>) => TableState<TData>>;\n /**\n * Whether the table currently as any kind of filter applied.\n * Useful to determine if the noDataChildren is an empty state or just the result of a filter\n */\n isFiltered: boolean;\n /**\n * Function that clears the filter and predicates\n */\n clearFilters: () => void;\n /**\n * Function that returns the selected row if any.\n */\n getSelectedRow: () => TData | null;\n /**\n * Function that returns an array of the selected rows. Most useful when multi row selection is enabled.\n */\n getSelectedRows: () => TData[];\n /**\n * Function that clear the selected row\n */\n clearSelection: () => void;\n /**\n * Form used to handle predicates and dateRange\n */\n form: UseFormReturnType<TableFormType>;\n /**\n * Table container ref\n */\n containerRef: RefObject<HTMLDivElement>;\n /**\n * Whether multi row selection is activated\n */\n multiRowSelectionEnabled: boolean;\n /**\n * Whether row selection is enabled or not\n */\n disableRowSelection: boolean;\n /**\n * Function that returns the number of pages\n */\n getPageCount: () => number;\n /**\n * Available layouts. When more than one layout is provided, it will display a layout control to switch between them.\n */\n layouts: TableLayout[];\n};\n\nexport interface TableProps<T> {\n /**\n * Data to display in the table\n */\n data: T[];\n /**\n * Defines how each row is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n */\n getRowId?: CoreOptions<T>['getRowId'];\n /**\n * Columns to display in the table.\n *\n * @see https://tanstack.com/table/v8/docs/guide/column-defs\n */\n columns: Array<ColumnDef<T>>;\n /**\n * Available layouts\n *\n * @default [Table.Layouts.Rows]\n */\n layouts?: TableLayout[];\n /**\n * Function called when the table mounts\n *\n * @param state the state of the table\n */\n onMount?: onTableChangeEvent<T>;\n /**\n * Function called when the table should update\n *\n * @param state the state of the table\n */\n onChange?: onTableChangeEvent<T>;\n /**\n * Function that generates the expandable content of a row\n * Return null for rows that don't need to be expandable\n *\n * @param datum the row for which the children should be generated.\n */\n getExpandChildren?: (datum: T) => ReactNode;\n /**\n * React children to show when the table has no rows to show. You can leverage useTable to get the state of the table\n */\n noDataChildren?: ReactNode;\n /**\n * Whether the table is loading or not\n *\n * @default false\n */\n loading?: boolean;\n /**\n * Childrens to display in the table. They need to be wrap in either `Table.Header` or `Table.Footer`\n *\n * @example\n * <Table ...>\n * <Table.Header>\n * <div>Hello</div>\n * </Table.Header>\n * </Table>\n */\n children?: ReactNode;\n /**\n * Initial state of the table\n */\n initialState?: InitialTableState<T>;\n /**\n * Action passed when user double clicks on a row\n */\n doubleClickAction?: (datum: T) => void;\n /**\n * Function called whenever the row selection changes\n *\n * @param selectedRows The selected rows\n */\n onRowSelectionChange?: (selectedRows: T[]) => void;\n /**\n * Whether the user can select multiple rows in order to perform actions in bulk\n *\n * @default false\n */\n multiRowSelectionEnabled?: boolean;\n /**\n * Whether row selection is enabled or not\n *\n * @default false\n */\n disableRowSelection?: boolean;\n /**\n * Nodes that are considered inside the table.\n *\n * Rows normally get unselected when clicking outside the table, but sometimes it has difficulties guessing what is inside or outside, for example when using modals.\n * You can use this prop to force the table to consider some nodes to be inside the table.\n *\n * @see https://mantine.dev/hooks/use-click-outside/#multiple-nodes\n */\n additionalRootNodes?: HTMLElement[];\n /**\n * Additional options that can be passed to the table\n */\n options?: Omit<\n Partial<TableOptions<T>>,\n | 'initialState'\n | 'data'\n | 'columns'\n | 'manualPagination'\n | 'enableMultiRowSelection'\n | 'getRowId'\n | 'getRowCanExpand'\n | 'enableRowSelection'\n | 'onRowSelectionChange'\n >;\n}\n\nexport interface TableType {\n <T>(props: TableProps<T>): ReactElement;\n Actions: typeof TableActions;\n Filter: typeof TableFilter;\n Footer: typeof TableFooter;\n Header: typeof TableHeader;\n LastUpdated: typeof TableLastUpdated;\n Pagination: typeof TablePagination;\n PerPage: typeof TablePerPage;\n Predicate: typeof TablePredicate;\n DateRangePicker: typeof TableDateRangePicker;\n CollapsibleColumn: typeof TableCollapsibleColumn;\n AccordionColumn: typeof TableAccordionColumn;\n Consumer: typeof TableConsumer;\n Loading: typeof TableLoading;\n Layouts: typeof TableLayouts;\n}\n"],"names":[],"mappings":"AAAA,WAkSC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableActions.tsx"],"sourcesContent":["import {createStyles, DefaultProps, Grid, Group, Selectors} from '@mantine/core';\nimport {ReactElement, ReactNode} from 'react';\n\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {\n display: 'inline-flex',\n },\n}));\n\ntype TableActionsStylesNames = Selectors<typeof useStyles>;\n\ninterface TableActionsProps<T> extends DefaultProps<TableActionsStylesNames> {\n /**\n * Function that return components for the selected row or selected rows when multi row selection is enabled\n *\n * @param datum the data of the selected row(s)\n * @example\n * <Table.Actions<MyType>>\n * {(datum: MyType) => (\n * <Button\n * component={Link}\n * to={`edit/${datum.id}`}\n * leftIcon={<EditSize24Px />}\n * variant=\"subtle\"\n * color=\"navyBlue.8\"\n * >\n * Edit\n * </Button>\n * )}\n * </Table.Actions>\n */\n children: ((datum: T) => ReactNode) | ((data: T[]) => ReactNode);\n}\n\nexport const TableActions = <T,>({\n children,\n classNames,\n styles,\n unstyled,\n ...others\n}: TableActionsProps<T>): ReactElement => {\n const {classes} = useStyles(null, {name: 'TableActions', classNames, styles, unstyled});\n const {getSelectedRows, multiRowSelectionEnabled} = useTable<T>();\n const selectedRows = getSelectedRows();\n\n if (selectedRows.length <= 0) {\n return null;\n }\n\n return (\n <Grid.Col span=\"content\" order={TableComponentsOrder.Actions} py=\"sm\" className={classes.root} {...others}>\n <Group spacing=\"xs\" className={classes.wrapper}>\n {multiRowSelectionEnabled\n ? (children as (data: T[]) => ReactNode)(selectedRows)\n : (children as (datum: T) => ReactNode)(selectedRows[0])}\n </Group>\n </Grid.Col>\n );\n};\n"],"names":["createStyles","Grid","Group","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","display","TableActions","children","classNames","styles","unstyled","others","classes","name","getSelectedRows","multiRowSelectionEnabled","selectedRows","length","Col","span","order","Actions","py","className","spacing"],"mappings":";;;;AAAA,SAAQA,YAAY,EAAgBC,IAAI,EAAEC,KAAK,QAAkB,gBAAgB;AAGjF,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYL,aAAa,SAACM;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS;YACLC,SAAS;QACb;IACJ;;AA2BA,OAAO,IAAMC,eAAe;QACxBC,kBAAAA,UACAC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAM,AAACE,UAAWX,UAAU,MAAM;QAACY,MAAM;QAAgBL,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAA9EE;IACP,IAAoDZ,YAAAA,YAA7Cc,kBAA6Cd,UAA7Cc,iBAAiBC,2BAA4Bf,UAA5Be;IACxB,IAAMC,eAAeF;IAErB,IAAIE,aAAaC,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableActions.tsx"],"sourcesContent":["import {createStyles, DefaultProps, Grid, Group, Selectors} from '@mantine/core';\nimport {ReactElement, ReactNode} from 'react';\n\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {\n display: 'inline-flex',\n },\n}));\n\ntype TableActionsStylesNames = Selectors<typeof useStyles>;\n\ninterface TableActionsProps<T> extends DefaultProps<TableActionsStylesNames> {\n /**\n * Function that return components for the selected row or selected rows when multi row selection is enabled\n *\n * @param datum the data of the selected row(s)\n * @example\n * <Table.Actions<MyType>>\n * {(datum: MyType) => (\n * <Button\n * component={Link}\n * to={`edit/${datum.id}`}\n * leftIcon={<EditSize24Px />}\n * variant=\"subtle\"\n * color=\"navyBlue.8\"\n * >\n * Edit\n * </Button>\n * )}\n * </Table.Actions>\n */\n children: ((datum: T) => ReactNode) | ((data: T[]) => ReactNode);\n}\n\nexport const TableActions = <T,>({\n children,\n classNames,\n styles,\n unstyled,\n ...others\n}: TableActionsProps<T>): ReactElement => {\n const {classes} = useStyles(null, {name: 'TableActions', classNames, styles, unstyled});\n const {getSelectedRows, multiRowSelectionEnabled} = useTable<T>();\n const selectedRows = getSelectedRows();\n\n if (selectedRows.length <= 0) {\n return null;\n }\n\n return (\n <Grid.Col span=\"content\" order={TableComponentsOrder.Actions} py=\"sm\" className={classes.root} {...others}>\n <Group spacing=\"xs\" className={classes.wrapper}>\n {multiRowSelectionEnabled\n ? (children as (data: T[]) => ReactNode)(selectedRows)\n : (children as (datum: T) => ReactNode)(selectedRows[0])}\n </Group>\n </Grid.Col>\n );\n};\n"],"names":["createStyles","Grid","Group","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","display","TableActions","children","classNames","styles","unstyled","others","classes","name","getSelectedRows","multiRowSelectionEnabled","selectedRows","length","Col","span","order","Actions","py","className","spacing"],"mappings":";;;;AAAA,SAAQA,YAAY,EAAgBC,IAAI,EAAEC,KAAK,QAAkB,gBAAgB;AAGjF,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYL,aAAa,SAACM;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS;YACLC,SAAS;QACb;IACJ;;AA2BA,OAAO,IAAMC,eAAe;QACxBC,kBAAAA,UACAC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAM,AAACE,UAAWX,UAAU,MAAM;QAACY,MAAM;QAAgBL,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAA9EE;IACP,IAAoDZ,YAAAA,YAA7Cc,kBAA6Cd,UAA7Cc,iBAAiBC,2BAA4Bf,UAA5Be;IACxB,IAAMC,eAAeF;IAErB,IAAIE,aAAaC,MAAM,IAAI,GAAG;QAC1B,OAAO;IACX;IAEA,qBACI,KAACpB,KAAKqB,GAAG;QAACC,MAAK;QAAUC,OAAOrB,qBAAqBsB,OAAO;QAAEC,IAAG;QAAKC,WAAWX,QAAQT,IAAI;OAAMQ;kBAC/F,cAAA,KAACb;YAAM0B,SAAQ;YAAKD,WAAWX,QAAQR,OAAO;sBACzCW,2BACK,AAACR,SAAsCS,gBACvC,AAACT,SAAqCS,YAAY,CAAC,EAAE;;;AAI3E,EAAE"}
|
|
@@ -38,8 +38,9 @@ var CollapsibleIcon = function(param) {
|
|
|
38
38
|
var info = param.info, onToggle = param.onToggle;
|
|
39
39
|
var handler = info.row.getToggleExpandedHandler();
|
|
40
40
|
var onClick = function(e) {
|
|
41
|
+
var _onToggle;
|
|
41
42
|
e.stopPropagation();
|
|
42
|
-
onToggle === null ||
|
|
43
|
+
(_onToggle = onToggle) === null || _onToggle === void 0 ? void 0 : _onToggle(e);
|
|
43
44
|
handler();
|
|
44
45
|
};
|
|
45
46
|
return info.row.getCanExpand() ? /*#__PURE__*/ _jsx(ActionIcon, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableCollapsibleColumn.tsx"],"sourcesContent":["import {ArrowHeadDownSize24Px, ArrowHeadUpSize24Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon} from '@mantine/core';\nimport {CellContext, ColumnDef} from '@tanstack/table-core';\nimport {FunctionComponent, MouseEvent as ReactMouseEvent} from 'react';\n\nconst defaultProps: ColumnDef<unknown> = {\n id: 'collapsible',\n enableSorting: false,\n header: '',\n size: 62,\n};\n\n/**\n * Generic column to use when your table needs collapsible rows\n */\nexport const TableCollapsibleColumn: ColumnDef<unknown> = {\n ...defaultProps,\n cell: (info) => <CollapsibleIcon info={info} />,\n};\n\n/**\n * Generic column to use when your table needs an accordion (collapsible rows, but only one open at the time)\n */\nexport const TableAccordionColumn: ColumnDef<unknown> = {\n ...defaultProps,\n cell: (info) => {\n const onToggle = () => {\n // close all other rows when the current row not is expanded\n if (!info.row.getIsExpanded()) {\n info.table.toggleAllRowsExpanded(false);\n }\n };\n\n return <CollapsibleIcon onToggle={onToggle} info={info} />;\n },\n};\n\nconst CollapsibleIcon: FunctionComponent<{\n info: CellContext<unknown, unknown>;\n onToggle?: (e: ReactMouseEvent<HTMLButtonElement>) => void;\n}> = ({info, onToggle}) => {\n const handler = info.row.getToggleExpandedHandler();\n const onClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onToggle?.(e);\n handler();\n };\n return info.row.getCanExpand() ? (\n <ActionIcon onClick={onClick} variant=\"subtle\" radius=\"sm\">\n {info.row.getIsExpanded() ? <ArrowHeadUpSize24Px /> : <ArrowHeadDownSize24Px />}\n </ActionIcon>\n ) : null;\n};\n"],"names":["ArrowHeadDownSize24Px","ArrowHeadUpSize24Px","ActionIcon","defaultProps","id","enableSorting","header","size","TableCollapsibleColumn","cell","info","CollapsibleIcon","TableAccordionColumn","onToggle","row","getIsExpanded","table","toggleAllRowsExpanded","handler","getToggleExpandedHandler","onClick","e","stopPropagation","getCanExpand","variant","radius"],"mappings":";;;AAAA,SAAQA,qBAAqB,EAAEC,mBAAmB,QAAO,8BAA8B;AACvF,SAAQC,UAAU,QAAO,gBAAgB;AAIzC,IAAMC,eAAmC;IACrCC,IAAI;IACJC,eAAe;IACfC,QAAQ;IACRC,MAAM;AACV;AAEA;;CAEC,GACD,OAAO,IAAMC,yBAA6C,wCACnDL;IACHM,MAAM,SAACC;6BAAS,KAACC;YAAgBD,MAAMA;;;GACzC;AAEF;;CAEC,GACD,OAAO,IAAME,uBAA2C,wCACjDT;IACHM,MAAM,SAACC;QACH,IAAMG,WAAW;YACb,4DAA4D;YAC5D,IAAI,CAACH,KAAKI,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableCollapsibleColumn.tsx"],"sourcesContent":["import {ArrowHeadDownSize24Px, ArrowHeadUpSize24Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon} from '@mantine/core';\nimport {CellContext, ColumnDef} from '@tanstack/table-core';\nimport {FunctionComponent, MouseEvent as ReactMouseEvent} from 'react';\n\nconst defaultProps: ColumnDef<unknown> = {\n id: 'collapsible',\n enableSorting: false,\n header: '',\n size: 62,\n};\n\n/**\n * Generic column to use when your table needs collapsible rows\n */\nexport const TableCollapsibleColumn: ColumnDef<unknown> = {\n ...defaultProps,\n cell: (info) => <CollapsibleIcon info={info} />,\n};\n\n/**\n * Generic column to use when your table needs an accordion (collapsible rows, but only one open at the time)\n */\nexport const TableAccordionColumn: ColumnDef<unknown> = {\n ...defaultProps,\n cell: (info) => {\n const onToggle = () => {\n // close all other rows when the current row not is expanded\n if (!info.row.getIsExpanded()) {\n info.table.toggleAllRowsExpanded(false);\n }\n };\n\n return <CollapsibleIcon onToggle={onToggle} info={info} />;\n },\n};\n\nconst CollapsibleIcon: FunctionComponent<{\n info: CellContext<unknown, unknown>;\n onToggle?: (e: ReactMouseEvent<HTMLButtonElement>) => void;\n}> = ({info, onToggle}) => {\n const handler = info.row.getToggleExpandedHandler();\n const onClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onToggle?.(e);\n handler();\n };\n return info.row.getCanExpand() ? (\n <ActionIcon onClick={onClick} variant=\"subtle\" radius=\"sm\">\n {info.row.getIsExpanded() ? <ArrowHeadUpSize24Px /> : <ArrowHeadDownSize24Px />}\n </ActionIcon>\n ) : null;\n};\n"],"names":["ArrowHeadDownSize24Px","ArrowHeadUpSize24Px","ActionIcon","defaultProps","id","enableSorting","header","size","TableCollapsibleColumn","cell","info","CollapsibleIcon","TableAccordionColumn","onToggle","row","getIsExpanded","table","toggleAllRowsExpanded","handler","getToggleExpandedHandler","onClick","e","stopPropagation","getCanExpand","variant","radius"],"mappings":";;;AAAA,SAAQA,qBAAqB,EAAEC,mBAAmB,QAAO,8BAA8B;AACvF,SAAQC,UAAU,QAAO,gBAAgB;AAIzC,IAAMC,eAAmC;IACrCC,IAAI;IACJC,eAAe;IACfC,QAAQ;IACRC,MAAM;AACV;AAEA;;CAEC,GACD,OAAO,IAAMC,yBAA6C,wCACnDL;IACHM,MAAM,SAACC;6BAAS,KAACC;YAAgBD,MAAMA;;;GACzC;AAEF;;CAEC,GACD,OAAO,IAAME,uBAA2C,wCACjDT;IACHM,MAAM,SAACC;QACH,IAAMG,WAAW;YACb,4DAA4D;YAC5D,IAAI,CAACH,KAAKI,GAAG,CAACC,aAAa,IAAI;gBAC3BL,KAAKM,KAAK,CAACC,qBAAqB,CAAC;YACrC;QACJ;QAEA,qBAAO,KAACN;YAAgBE,UAAUA;YAAUH,MAAMA;;IACtD;GACF;AAEF,IAAMC,kBAGD;QAAED,aAAAA,MAAMG,iBAAAA;IACT,IAAMK,UAAUR,KAAKI,GAAG,CAACK,wBAAwB;IACjD,IAAMC,UAAU,SAACC;YAEbR;QADAQ,EAAEC,eAAe;SACjBT,YAAAA,sBAAAA,gCAAAA,UAAWQ;QACXH;IACJ;IACA,OAAOR,KAAKI,GAAG,CAACS,YAAY,mBACxB,KAACrB;QAAWkB,SAASA;QAASI,SAAQ;QAASC,QAAO;kBACjDf,KAAKI,GAAG,CAACC,aAAa,mBAAK,KAACd,yCAAyB,KAACD;SAE3D;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableDateRangePicker.tsx"],"sourcesContent":["import {CalendarSize24Px} from '@coveord/plasma-react-icons';\nimport {createStyles, DefaultProps, Grid, Group, Popover, Selectors, Text} from '@mantine/core';\nimport {useToggle} from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport {FunctionComponent} from 'react';\n\nimport {Button} from '../button';\nimport {\n DateRangePickerInlineCalendar,\n DateRangePickerInlineCalendarProps,\n DateRangePickerPreset,\n DateRangePickerValue,\n} from '../date-range-picker';\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {},\n label: {},\n}));\n\ntype TableDateRangePickerStylesNames = Selectors<typeof useStyles>;\ninterface TableDateRangePickerProps\n extends Pick<DateRangePickerInlineCalendarProps, 'startProps' | 'endProps' | 'rangeCalendarProps'>,\n DefaultProps<TableDateRangePickerStylesNames> {\n /**\n * An object containing date presets.\n * If empty the preset dropdown won't be shown\n *\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n * @default {}\n */\n presets?: Record<string, DateRangePickerPreset>;\n}\n\nexport const TableDateRangePicker: FunctionComponent<TableDateRangePickerProps> = ({\n presets = {},\n rangeCalendarProps,\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes} = useStyles(null, {name: 'TableDateRangePicker', classNames, styles, unstyled});\n const [opened, toggleOpened] = useToggle();\n const {form} = useTable();\n\n const onApply = (dates: DateRangePickerValue) => {\n form.setFieldValue('dateRange', dates);\n toggleOpened(false);\n };\n const onCancel = () => {\n toggleOpened(false);\n };\n\n const formatDate = (date: Date) => dayjs(date).format('MMM DD, YYYY');\n const formattedRange = `${formatDate(form.values.dateRange[0])} - ${formatDate(form.values.dateRange[1])}`;\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.DateRangePicker}\n py=\"sm\"\n className={classes.root}\n {...others}\n >\n <Group spacing=\"xs\" className={classes.wrapper}>\n <Text span className={classes.label}>\n {formattedRange}\n </Text>\n <Popover opened={opened} onChange={toggleOpened} withinPortal>\n <Popover.Target>\n <Button variant=\"outline\" color=\"gray\" onClick={() => toggleOpened()} px=\"xs\">\n <CalendarSize24Px width={24} height={24} />\n </Button>\n </Popover.Target>\n <Popover.Dropdown p={0}>\n <DateRangePickerInlineCalendar\n initialRange={form.values.dateRange}\n onApply={onApply}\n onCancel={onCancel}\n presets={presets}\n rangeCalendarProps={rangeCalendarProps}\n />\n </Popover.Dropdown>\n </Popover>\n </Group>\n </Grid.Col>\n );\n};\n"],"names":["CalendarSize24Px","createStyles","Grid","Group","Popover","Text","useToggle","dayjs","Button","DateRangePickerInlineCalendar","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","label","TableDateRangePicker","presets","rangeCalendarProps","classNames","styles","unstyled","others","classes","name","opened","toggleOpened","form","onApply","dates","setFieldValue","onCancel","formatDate","date","format","formattedRange","values","dateRange","Col","span","order","DateRangePicker","py","className","spacing","onChange","withinPortal","Target","variant","color","onClick","px","width","height","Dropdown","p","initialRange"],"mappings":";;;;;AAAA,SAAQA,gBAAgB,QAAO,8BAA8B;AAC7D,SAAQC,YAAY,EAAgBC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAaC,IAAI,QAAO,gBAAgB;AAChG,SAAQC,SAAS,QAAO,iBAAiB;AACzC,OAAOC,WAAW,QAAQ;AAG1B,SAAQC,MAAM,QAAO,YAAY;AACjC,SACIC,6BAA6B,QAI1B,uBAAuB;AAC9B,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYX,aAAa,SAACY;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS,CAAC;QACVC,OAAO,CAAC;IACZ;;AAoBA,OAAO,IAAMC,uBAAqE;gCAC9EC,SAAAA,sCAAU,CAAC,oBACXC,4BAAAA,oBACAC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QALHL;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAM,AAACE,UAAWZ,UAAU,MAAM;QAACa,MAAM;QAAwBL,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAAtFE;IACP,IAA+BlB,8BAAAA,iBAAxBoB,SAAwBpB,eAAhBqB,eAAgBrB;IAC/B,IAAM,AAACsB,OAAQjB,WAARiB;IAEP,IAAMC,UAAU,SAACC;QACbF,KAAKG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableDateRangePicker.tsx"],"sourcesContent":["import {CalendarSize24Px} from '@coveord/plasma-react-icons';\nimport {createStyles, DefaultProps, Grid, Group, Popover, Selectors, Text} from '@mantine/core';\nimport {useToggle} from '@mantine/hooks';\nimport dayjs from 'dayjs';\nimport {FunctionComponent} from 'react';\n\nimport {Button} from '../button';\nimport {\n DateRangePickerInlineCalendar,\n DateRangePickerInlineCalendarProps,\n DateRangePickerPreset,\n DateRangePickerValue,\n} from '../date-range-picker';\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {},\n label: {},\n}));\n\ntype TableDateRangePickerStylesNames = Selectors<typeof useStyles>;\ninterface TableDateRangePickerProps\n extends Pick<DateRangePickerInlineCalendarProps, 'startProps' | 'endProps' | 'rangeCalendarProps'>,\n DefaultProps<TableDateRangePickerStylesNames> {\n /**\n * An object containing date presets.\n * If empty the preset dropdown won't be shown\n *\n * @example\n * {\n * january: {label: 'January', range: [new Date(2022, 0, 1), new Date(2022, 0, 31)]},\n * february: {label: 'February', range: [new Date(2022, 1, 1), new Date(2022, 1, 28)]}\n * }\n * @default {}\n */\n presets?: Record<string, DateRangePickerPreset>;\n}\n\nexport const TableDateRangePicker: FunctionComponent<TableDateRangePickerProps> = ({\n presets = {},\n rangeCalendarProps,\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes} = useStyles(null, {name: 'TableDateRangePicker', classNames, styles, unstyled});\n const [opened, toggleOpened] = useToggle();\n const {form} = useTable();\n\n const onApply = (dates: DateRangePickerValue) => {\n form.setFieldValue('dateRange', dates);\n toggleOpened(false);\n };\n const onCancel = () => {\n toggleOpened(false);\n };\n\n const formatDate = (date: Date) => dayjs(date).format('MMM DD, YYYY');\n const formattedRange = `${formatDate(form.values.dateRange[0])} - ${formatDate(form.values.dateRange[1])}`;\n\n return (\n <Grid.Col\n span=\"content\"\n order={TableComponentsOrder.DateRangePicker}\n py=\"sm\"\n className={classes.root}\n {...others}\n >\n <Group spacing=\"xs\" className={classes.wrapper}>\n <Text span className={classes.label}>\n {formattedRange}\n </Text>\n <Popover opened={opened} onChange={toggleOpened} withinPortal>\n <Popover.Target>\n <Button variant=\"outline\" color=\"gray\" onClick={() => toggleOpened()} px=\"xs\">\n <CalendarSize24Px width={24} height={24} />\n </Button>\n </Popover.Target>\n <Popover.Dropdown p={0}>\n <DateRangePickerInlineCalendar\n initialRange={form.values.dateRange}\n onApply={onApply}\n onCancel={onCancel}\n presets={presets}\n rangeCalendarProps={rangeCalendarProps}\n />\n </Popover.Dropdown>\n </Popover>\n </Group>\n </Grid.Col>\n );\n};\n"],"names":["CalendarSize24Px","createStyles","Grid","Group","Popover","Text","useToggle","dayjs","Button","DateRangePickerInlineCalendar","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","label","TableDateRangePicker","presets","rangeCalendarProps","classNames","styles","unstyled","others","classes","name","opened","toggleOpened","form","onApply","dates","setFieldValue","onCancel","formatDate","date","format","formattedRange","values","dateRange","Col","span","order","DateRangePicker","py","className","spacing","onChange","withinPortal","Target","variant","color","onClick","px","width","height","Dropdown","p","initialRange"],"mappings":";;;;;AAAA,SAAQA,gBAAgB,QAAO,8BAA8B;AAC7D,SAAQC,YAAY,EAAgBC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAaC,IAAI,QAAO,gBAAgB;AAChG,SAAQC,SAAS,QAAO,iBAAiB;AACzC,OAAOC,WAAW,QAAQ;AAG1B,SAAQC,MAAM,QAAO,YAAY;AACjC,SACIC,6BAA6B,QAI1B,uBAAuB;AAC9B,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYX,aAAa,SAACY;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS,CAAC;QACVC,OAAO,CAAC;IACZ;;AAoBA,OAAO,IAAMC,uBAAqE;gCAC9EC,SAAAA,sCAAU,CAAC,oBACXC,4BAAAA,oBACAC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QALHL;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAM,AAACE,UAAWZ,UAAU,MAAM;QAACa,MAAM;QAAwBL,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAAtFE;IACP,IAA+BlB,8BAAAA,iBAAxBoB,SAAwBpB,eAAhBqB,eAAgBrB;IAC/B,IAAM,AAACsB,OAAQjB,WAARiB;IAEP,IAAMC,UAAU,SAACC;QACbF,KAAKG,aAAa,CAAC,aAAaD;QAChCH,aAAa;IACjB;IACA,IAAMK,WAAW;QACbL,aAAa;IACjB;IAEA,IAAMM,aAAa,SAACC;eAAe3B,MAAM2B,MAAMC,MAAM,CAAC;;IACtD,IAAMC,iBAAiB,AAAC,GAA4CH,OAA1CA,WAAWL,KAAKS,MAAM,CAACC,SAAS,CAAC,EAAE,GAAE,OAA0C,OAArCL,WAAWL,KAAKS,MAAM,CAACC,SAAS,CAAC,EAAE;IAEvG,qBACI,KAACpC,KAAKqC,GAAG;QACLC,MAAK;QACLC,OAAO/B,qBAAqBgC,eAAe;QAC3CC,IAAG;QACHC,WAAWpB,QAAQV,IAAI;OACnBS;kBAEJ,cAAA,MAACpB;YAAM0C,SAAQ;YAAKD,WAAWpB,QAAQT,OAAO;;8BAC1C,KAACV;oBAAKmC,IAAI;oBAACI,WAAWpB,QAAQR,KAAK;8BAC9BoB;;8BAEL,MAAChC;oBAAQsB,QAAQA;oBAAQoB,UAAUnB;oBAAcoB,YAAY;;sCACzD,KAAC3C,QAAQ4C,MAAM;sCACX,cAAA,KAACxC;gCAAOyC,SAAQ;gCAAUC,OAAM;gCAAOC,SAAS;2CAAMxB;;gCAAgByB,IAAG;0CACrE,cAAA,KAACpD;oCAAiBqD,OAAO;oCAAIC,QAAQ;;;;sCAG7C,KAAClD,QAAQmD,QAAQ;4BAACC,GAAG;sCACjB,cAAA,KAAC/C;gCACGgD,cAAc7B,KAAKS,MAAM,CAACC,SAAS;gCACnCT,SAASA;gCACTG,UAAUA;gCACVd,SAASA;gCACTC,oBAAoBA;;;;;;;;AAOhD,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {CrossSize16Px, SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon, createStyles, DefaultProps, Grid, Selectors, TextInput} from '@mantine/core';\nimport {ChangeEventHandler, FunctionComponent, MouseEventHandler} from 'react';\n\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ntype TableFilterStylesNames = Selectors<typeof useStyles>;\ninterface TableFilterProps extends DefaultProps<TableFilterStylesNames> {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({\n placeholder = 'Search by any field',\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes} = useStyles(null, {name: 'TableFilter', classNames, styles, unstyled});\n const {state, setState} = useTable();\n\n const changeFilterValue = (value: string) => {\n setState((prevState) => ({\n ...prevState,\n pagination: prevState.pagination\n ? {pageIndex: 0, pageSize: prevState.pagination.pageSize}\n : prevState.pagination,\n globalFilter: value,\n }));\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const {value} = event.currentTarget;\n changeFilterValue(value);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n changeFilterValue('');\n };\n\n return (\n <Grid.Col span=\"content\" order={TableComponentsOrder.Filter} py=\"sm\" className={classes.root}>\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={\n state.globalFilter ? (\n <ActionIcon onClick={handleClear}>\n <CrossSize16Px height={16} />\n </ActionIcon>\n ) : (\n <SearchSize16Px height={14} className={classes.empty} />\n )\n }\n value={state.globalFilter}\n onChange={handleChange}\n {...others}\n />\n </Grid.Col>\n );\n};\n"],"names":["CrossSize16Px","SearchSize16Px","ActionIcon","createStyles","Grid","TextInput","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","marginBottom","empty","color","colors","gray","TableFilter","placeholder","classNames","styles","unstyled","others","classes","name","state","setState","changeFilterValue","value","prevState","pagination","pageIndex","pageSize","globalFilter","handleChange","event","currentTarget","handleClear","Col","span","order","Filter","py","className","mb","rightSection","onClick","height","onChange"],"mappings":";;;;AAAA,SAAQA,aAAa,EAAEC,cAAc,QAAO,8BAA8B;AAC1E,SAAQC,UAAU,EAAEC,YAAY,EAAgBC,IAAI,EAAaC,SAAS,QAAO,gBAAgB;AAGjG,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYL,aAAa,SAACM;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOL,MAAMM,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableFilter.tsx"],"sourcesContent":["import {CrossSize16Px, SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon, createStyles, DefaultProps, Grid, Selectors, TextInput} from '@mantine/core';\nimport {ChangeEventHandler, FunctionComponent, MouseEventHandler} from 'react';\n\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\n\nconst useStyles = createStyles((theme) => ({\n root: {},\n wrapper: {\n marginBottom: '0 !important',\n },\n empty: {\n color: theme.colors.gray[4],\n },\n}));\n\ntype TableFilterStylesNames = Selectors<typeof useStyles>;\ninterface TableFilterProps extends DefaultProps<TableFilterStylesNames> {\n /**\n * The placeholder for the filter input\n *\n * @default \"Search by any field\"\n */\n placeholder?: string;\n}\n\nexport const TableFilter: FunctionComponent<TableFilterProps> = ({\n placeholder = 'Search by any field',\n classNames,\n styles,\n unstyled,\n ...others\n}) => {\n const {classes} = useStyles(null, {name: 'TableFilter', classNames, styles, unstyled});\n const {state, setState} = useTable();\n\n const changeFilterValue = (value: string) => {\n setState((prevState) => ({\n ...prevState,\n pagination: prevState.pagination\n ? {pageIndex: 0, pageSize: prevState.pagination.pageSize}\n : prevState.pagination,\n globalFilter: value,\n }));\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const {value} = event.currentTarget;\n changeFilterValue(value);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n changeFilterValue('');\n };\n\n return (\n <Grid.Col span=\"content\" order={TableComponentsOrder.Filter} py=\"sm\" className={classes.root}>\n <TextInput\n className={classes.wrapper}\n placeholder={placeholder}\n mb=\"md\"\n rightSection={\n state.globalFilter ? (\n <ActionIcon onClick={handleClear}>\n <CrossSize16Px height={16} />\n </ActionIcon>\n ) : (\n <SearchSize16Px height={14} className={classes.empty} />\n )\n }\n value={state.globalFilter}\n onChange={handleChange}\n {...others}\n />\n </Grid.Col>\n );\n};\n"],"names":["CrossSize16Px","SearchSize16Px","ActionIcon","createStyles","Grid","TextInput","TableComponentsOrder","useTable","useStyles","theme","root","wrapper","marginBottom","empty","color","colors","gray","TableFilter","placeholder","classNames","styles","unstyled","others","classes","name","state","setState","changeFilterValue","value","prevState","pagination","pageIndex","pageSize","globalFilter","handleChange","event","currentTarget","handleClear","Col","span","order","Filter","py","className","mb","rightSection","onClick","height","onChange"],"mappings":";;;;AAAA,SAAQA,aAAa,EAAEC,cAAc,QAAO,8BAA8B;AAC1E,SAAQC,UAAU,EAAEC,YAAY,EAAgBC,IAAI,EAAaC,SAAS,QAAO,gBAAgB;AAGjG,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AAExC,IAAMC,YAAYL,aAAa,SAACM;WAAW;QACvCC,MAAM,CAAC;QACPC,SAAS;YACLC,cAAc;QAClB;QACAC,OAAO;YACHC,OAAOL,MAAMM,MAAM,CAACC,IAAI,CAAC,EAAE;QAC/B;IACJ;;AAYA,OAAO,IAAMC,cAAmD;oCAC5DC,aAAAA,8CAAc,4CACdC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAM,AAACE,UAAWf,UAAU,MAAM;QAACgB,MAAM;QAAeL,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAA7EE;IACP,IAA0BhB,YAAAA,YAAnBkB,QAAmBlB,UAAnBkB,OAAOC,WAAYnB,UAAZmB;IAEd,IAAMC,oBAAoB,SAACC;QACvBF,SAAS,SAACG;mBAAe,wCAClBA;gBACHC,YAAYD,UAAUC,UAAU,GAC1B;oBAACC,WAAW;oBAAGC,UAAUH,UAAUC,UAAU,CAACE,QAAQ;gBAAA,IACtDH,UAAUC,UAAU;gBAC1BG,cAAcL;;;IAEtB;IAEA,IAAMM,eAAqD,SAACC;QACxD,IAAM,AAACP,QAASO,MAAMC,aAAa,CAA5BR;QACPD,kBAAkBC;IACtB;IAEA,IAAMS,cAAoD;QACtDV,kBAAkB;IACtB;IAEA,qBACI,KAACvB,KAAKkC,GAAG;QAACC,MAAK;QAAUC,OAAOlC,qBAAqBmC,MAAM;QAAEC,IAAG;QAAKC,WAAWpB,QAAQb,IAAI;kBACxF,cAAA,KAACL;YACGsC,WAAWpB,QAAQZ,OAAO;YAC1BO,aAAaA;YACb0B,IAAG;YACHC,cACIpB,MAAMQ,YAAY,iBACd,KAAC/B;gBAAW4C,SAAST;0BACjB,cAAA,KAACrC;oBAAc+C,QAAQ;;+BAG3B,KAAC9C;gBAAe8C,QAAQ;gBAAIJ,WAAWpB,QAAQV,KAAK;;YAG5De,OAAOH,MAAMQ,YAAY;YACzBe,UAAUd;WACNZ;;AAIpB,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableFooter.tsx"],"sourcesContent":["import {Group, DefaultProps} from '@mantine/core';\nimport {FunctionComponent, ReactNode} from 'react';\n\ninterface TableFooterProps extends DefaultProps {\n children?: ReactNode;\n}\nexport const TableFooter: FunctionComponent<TableFooterProps> = ({children, ...others}) => (\n <Group position=\"apart\" px=\"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableFooter.tsx"],"sourcesContent":["import {Group, DefaultProps} from '@mantine/core';\nimport {FunctionComponent, ReactNode} from 'react';\n\ninterface TableFooterProps extends DefaultProps {\n children?: ReactNode;\n}\nexport const TableFooter: FunctionComponent<TableFooterProps> = ({children, ...others}) => (\n <Group position=\"apart\" px=\"xl\" py=\"md\" {...others}>\n {children}\n </Group>\n);\n"],"names":["Group","TableFooter","children","others","position","px","py"],"mappings":";;;;AAAA,SAAQA,KAAK,QAAqB,gBAAgB;AAMlD,OAAO,IAAMC,cAAmD;QAAEC,kBAAAA,UAAaC;QAAbD;;WAC9D,KAACF;QAAMI,UAAS;QAAQC,IAAG;QAAKC,IAAG;OAASH;kBACvCD;;AACE,EACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/table/TableHeader.tsx"],"sourcesContent":["import {CrossSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, DefaultProps, Grid, Selectors, Tooltip} from '@mantine/core';\nimport {FunctionComponent, ReactNode} from 'react';\n\nimport {Button} from '../button';\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\nimport {TableLayoutControl} from './TableLayoutControl';\n\nconst useStyles = createStyles((theme) => ({\n root: {\n flexDirection: 'row-reverse',\n flexWrap: 'wrap-reverse',\n background: `repeating-linear-gradient(${theme.colors.gray[1]}, ${theme.colors.gray[1]} 68px, ${theme.colors.gray[3]} 68px, ${theme.colors.gray[3]} 69px)`,\n borderBottom: `1px solid ${theme.colors.gray[3]}`,\n },\n multiSelectInfo: {\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/table/TableHeader.tsx"],"sourcesContent":["import {CrossSize16Px} from '@coveord/plasma-react-icons';\nimport {createStyles, DefaultProps, Grid, Selectors, Tooltip} from '@mantine/core';\nimport {FunctionComponent, ReactNode} from 'react';\n\nimport {Button} from '../button';\nimport {TableComponentsOrder} from './Table.styles';\nimport {useTable} from './TableContext';\nimport {TableLayoutControl} from './TableLayoutControl';\n\nconst useStyles = createStyles((theme) => ({\n root: {\n flexDirection: 'row-reverse',\n flexWrap: 'wrap-reverse',\n background: `repeating-linear-gradient(${theme.colors.gray[1]}, ${theme.colors.gray[1]} 68px, ${theme.colors.gray[3]} 68px, ${theme.colors.gray[3]} 69px)`,\n borderBottom: `1px solid ${theme.colors.gray[3]}`,\n },\n multiSelectInfo: {\n display: 'flex',\n },\n}));\n\ntype TableHeaderStylesNames = Selectors<typeof useStyles>;\ninterface TableHeaderProps extends DefaultProps<TableHeaderStylesNames> {\n /* Children of header (ie: actions, datepicker, etc.) */\n children?: ReactNode;\n}\nexport const TableHeader: FunctionComponent<TableHeaderProps> = ({\n classNames,\n styles,\n unstyled,\n children,\n ...others\n}) => {\n const {getSelectedRows, multiRowSelectionEnabled, clearSelection, disableRowSelection} = useTable();\n const {classes} = useStyles(null, {name: 'TableHeader', classNames, styles, unstyled});\n const selectedRows = getSelectedRows();\n\n return (\n <Grid\n justify=\"flex-start\"\n align=\"center\"\n gutter=\"sm\"\n p={0}\n pl=\"md\"\n pr=\"lg\"\n m={0}\n className={classes.root}\n {...others}\n >\n {multiRowSelectionEnabled && selectedRows.length > 0 ? (\n <Grid.Col\n span=\"auto\"\n py=\"sm\"\n className={classes.multiSelectInfo}\n order={TableComponentsOrder.MultiSelectInfo}\n >\n <Tooltip label=\"Unselect all\">\n <Button\n onClick={clearSelection}\n variant=\"subtle\"\n disabled={disableRowSelection}\n leftIcon={<CrossSize16Px height={16} />}\n >\n {selectedRows.length} selected\n </Button>\n </Tooltip>\n </Grid.Col>\n ) : null}\n {children}\n <TableLayoutControl />\n </Grid>\n );\n};\n"],"names":["CrossSize16Px","createStyles","Grid","Tooltip","Button","TableComponentsOrder","useTable","TableLayoutControl","useStyles","theme","root","flexDirection","flexWrap","background","colors","gray","borderBottom","multiSelectInfo","display","TableHeader","classNames","styles","unstyled","children","others","getSelectedRows","multiRowSelectionEnabled","clearSelection","disableRowSelection","classes","name","selectedRows","justify","align","gutter","p","pl","pr","m","className","length","Col","span","py","order","MultiSelectInfo","label","onClick","variant","disabled","leftIcon","height"],"mappings":";;;;AAAA,SAAQA,aAAa,QAAO,8BAA8B;AAC1D,SAAQC,YAAY,EAAgBC,IAAI,EAAaC,OAAO,QAAO,gBAAgB;AAGnF,SAAQC,MAAM,QAAO,YAAY;AACjC,SAAQC,oBAAoB,QAAO,iBAAiB;AACpD,SAAQC,QAAQ,QAAO,iBAAiB;AACxC,SAAQC,kBAAkB,QAAO,uBAAuB;AAExD,IAAMC,YAAYP,aAAa,SAACQ;WAAW;QACvCC,MAAM;YACFC,eAAe;YACfC,UAAU;YACVC,YAAY,AAAC,6BAAqDJ,OAAzBA,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE,EAAC,MAAkCN,OAA9BA,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE,EAAC,WAAuCN,OAA9BA,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE,EAAC,WAA8B,OAArBN,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE,EAAC;YACnJC,cAAc,AAAC,aAAiC,OAArBP,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;QACnD;QACAE,iBAAiB;YACbC,SAAS;QACb;IACJ;;AAOA,OAAO,IAAMC,cAAmD;QAC5DC,oBAAAA,YACAC,gBAAAA,QACAC,kBAAAA,UACAC,kBAAAA,UACGC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAyFjB,YAAAA,YAAlFmB,kBAAkFnB,UAAlFmB,iBAAiBC,2BAAiEpB,UAAjEoB,0BAA0BC,iBAAuCrB,UAAvCqB,gBAAgBC,sBAAuBtB,UAAvBsB;IAClE,IAAM,AAACC,UAAWrB,UAAU,MAAM;QAACsB,MAAM;QAAeV,YAAAA;QAAYC,QAAAA;QAAQC,UAAAA;IAAQ,GAA7EO;IACP,IAAME,eAAeN;IAErB,qBACI,MAACvB;QACG8B,SAAQ;QACRC,OAAM;QACNC,QAAO;QACPC,GAAG;QACHC,IAAG;QACHC,IAAG;QACHC,GAAG;QACHC,WAAWV,QAAQnB,IAAI;OACnBc;;YAEHE,4BAA4BK,aAAaS,MAAM,GAAG,kBAC/C,KAACtC,KAAKuC,GAAG;gBACLC,MAAK;gBACLC,IAAG;gBACHJ,WAAWV,QAAQZ,eAAe;gBAClC2B,OAAOvC,qBAAqBwC,eAAe;0BAE3C,cAAA,KAAC1C;oBAAQ2C,OAAM;8BACX,cAAA,MAAC1C;wBACG2C,SAASpB;wBACTqB,SAAQ;wBACRC,UAAUrB;wBACVsB,wBAAU,KAAClD;4BAAcmD,QAAQ;;;4BAEhCpB,aAAaS,MAAM;4BAAC;;;;iBAIjC;YACHjB;0BACD,KAAChB;;;AAGb,EAAE"}
|