@mailstep/design-system 0.4.21 → 0.5.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.
Files changed (109) hide show
  1. package/package.json +17 -4
  2. package/ui/Blocks/CommonGrid/CommonGrid.d.ts +3 -0
  3. package/ui/Blocks/CommonGrid/CommonGrid.js +115 -0
  4. package/ui/Blocks/CommonGrid/CommonGridContext.d.ts +12 -0
  5. package/ui/Blocks/CommonGrid/CommonGridContext.js +45 -0
  6. package/ui/Blocks/CommonGrid/HoC/withReduxActions.d.ts +2 -0
  7. package/ui/Blocks/CommonGrid/HoC/withReduxActions.js +36 -0
  8. package/ui/Blocks/CommonGrid/components/ActionColumnHead.d.ts +4 -0
  9. package/ui/Blocks/CommonGrid/components/ActionColumnHead.js +16 -0
  10. package/ui/Blocks/CommonGrid/components/ButtonStrip.d.ts +7 -0
  11. package/ui/Blocks/CommonGrid/components/ButtonStrip.js +35 -0
  12. package/ui/Blocks/CommonGrid/components/ColumnFilterCell.d.ts +11 -0
  13. package/ui/Blocks/CommonGrid/components/ColumnFilterCell.js +41 -0
  14. package/ui/Blocks/CommonGrid/components/ColumnTitle.d.ts +9 -0
  15. package/ui/Blocks/CommonGrid/components/ColumnTitle.js +20 -0
  16. package/ui/Blocks/CommonGrid/components/ConfigForm.d.ts +9 -0
  17. package/ui/Blocks/CommonGrid/components/ConfigForm.js +58 -0
  18. package/ui/Blocks/CommonGrid/components/DataCell.d.ts +11 -0
  19. package/ui/Blocks/CommonGrid/components/DataCell.js +52 -0
  20. package/ui/Blocks/CommonGrid/components/DataRow.d.ts +21 -0
  21. package/ui/Blocks/CommonGrid/components/DataRow.js +110 -0
  22. package/ui/Blocks/CommonGrid/components/DefaultPaginator.d.ts +3 -0
  23. package/ui/Blocks/CommonGrid/components/DefaultPaginator.js +11 -0
  24. package/ui/Blocks/CommonGrid/components/Dialog.d.ts +11 -0
  25. package/ui/Blocks/CommonGrid/components/Dialog.js +19 -0
  26. package/ui/Blocks/CommonGrid/components/DropdownMenu.d.ts +21 -0
  27. package/ui/Blocks/CommonGrid/components/DropdownMenu.js +59 -0
  28. package/ui/Blocks/CommonGrid/components/DropdownSelect.d.ts +15 -0
  29. package/ui/Blocks/CommonGrid/components/DropdownSelect.js +35 -0
  30. package/ui/Blocks/CommonGrid/components/FilterDropdown.d.ts +3 -0
  31. package/ui/Blocks/CommonGrid/components/FilterDropdown.js +36 -0
  32. package/ui/Blocks/CommonGrid/components/FilterRow.d.ts +15 -0
  33. package/ui/Blocks/CommonGrid/components/FilterRow.js +35 -0
  34. package/ui/Blocks/CommonGrid/components/FloatingButton.d.ts +6 -0
  35. package/ui/Blocks/CommonGrid/components/FloatingButton.js +13 -0
  36. package/ui/Blocks/CommonGrid/components/GroupRow.d.ts +9 -0
  37. package/ui/Blocks/CommonGrid/components/GroupRow.js +27 -0
  38. package/ui/Blocks/CommonGrid/components/HeadCell.d.ts +27 -0
  39. package/ui/Blocks/CommonGrid/components/HeadCell.js +43 -0
  40. package/ui/Blocks/CommonGrid/components/HeadRow.d.ts +15 -0
  41. package/ui/Blocks/CommonGrid/components/HeadRow.js +69 -0
  42. package/ui/Blocks/CommonGrid/components/OversizedScroll.d.ts +11 -0
  43. package/ui/Blocks/CommonGrid/components/OversizedScroll.js +24 -0
  44. package/ui/Blocks/CommonGrid/components/Resize.d.ts +7 -0
  45. package/ui/Blocks/CommonGrid/components/Resize.js +33 -0
  46. package/ui/Blocks/CommonGrid/components/Table.d.ts +16 -0
  47. package/ui/Blocks/CommonGrid/components/Table.js +30 -0
  48. package/ui/Blocks/CommonGrid/components/icons/ArrowSimple.d.ts +2 -0
  49. package/ui/Blocks/CommonGrid/components/icons/ArrowSimple.js +14 -0
  50. package/ui/Blocks/CommonGrid/components/icons/Edit.d.ts +2 -0
  51. package/ui/Blocks/CommonGrid/components/icons/Edit.js +14 -0
  52. package/ui/Blocks/CommonGrid/components/icons/EyeOpen.d.ts +2 -0
  53. package/ui/Blocks/CommonGrid/components/icons/EyeOpen.js +14 -0
  54. package/ui/Blocks/CommonGrid/components/icons/Sorting.d.ts +2 -0
  55. package/ui/Blocks/CommonGrid/components/icons/Sorting.js +14 -0
  56. package/ui/Blocks/CommonGrid/components/utils.d.ts +8 -0
  57. package/ui/Blocks/CommonGrid/components/utils.js +22 -0
  58. package/ui/Blocks/CommonGrid/hooks/useColumnSizes.d.ts +12 -0
  59. package/ui/Blocks/CommonGrid/hooks/useColumnSizes.js +83 -0
  60. package/ui/Blocks/CommonGrid/hooks/useControlButtons.d.ts +10 -0
  61. package/ui/Blocks/CommonGrid/hooks/useControlButtons.js +64 -0
  62. package/ui/Blocks/CommonGrid/hooks/useRowsKeyControls.d.ts +4 -0
  63. package/ui/Blocks/CommonGrid/hooks/useRowsKeyControls.js +21 -0
  64. package/ui/Blocks/CommonGrid/hooks/useUxReset.d.ts +3 -0
  65. package/ui/Blocks/CommonGrid/hooks/useUxReset.js +15 -0
  66. package/ui/Blocks/CommonGrid/index.d.ts +7 -0
  67. package/ui/Blocks/CommonGrid/index.js +7 -0
  68. package/ui/Blocks/CommonGrid/store/index.d.ts +58 -0
  69. package/ui/Blocks/CommonGrid/store/index.js +230 -0
  70. package/ui/Blocks/CommonGrid/store/migrateState.d.ts +3 -0
  71. package/ui/Blocks/CommonGrid/store/migrateState.js +14 -0
  72. package/ui/Blocks/CommonGrid/storybook/stories/complexWithPaginationAndRedux.stories.d.ts +11 -0
  73. package/ui/Blocks/CommonGrid/storybook/stories/complexWithPaginationAndRedux.stories.js +31 -0
  74. package/ui/Blocks/CommonGrid/storybook/stories/customControllButtons.stories.d.ts +13 -0
  75. package/ui/Blocks/CommonGrid/storybook/stories/customControllButtons.stories.js +49 -0
  76. package/ui/Blocks/CommonGrid/storybook/stories/default.stories.d.ts +6 -0
  77. package/ui/Blocks/CommonGrid/storybook/stories/default.stories.js +14 -0
  78. package/ui/Blocks/CommonGrid/storybook/stories/loading.stories.d.ts +10 -0
  79. package/ui/Blocks/CommonGrid/storybook/stories/loading.stories.js +11 -0
  80. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNoScrollLayout.stories.d.ts +10 -0
  81. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNoScrollLayout.stories.js +12 -0
  82. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNormalLayout.stories.d.ts +10 -0
  83. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNormalLayout.stories.js +12 -0
  84. package/ui/Blocks/CommonGrid/storybook/stories/styledCommonGrid.stories.d.ts +6 -0
  85. package/ui/Blocks/CommonGrid/storybook/stories/styledCommonGrid.stories.js +15 -0
  86. package/ui/Blocks/CommonGrid/storybook/stories/withCustomGridActions.stories.d.ts +10 -0
  87. package/ui/Blocks/CommonGrid/storybook/stories/withCustomGridActions.stories.js +15 -0
  88. package/ui/Blocks/CommonGrid/storybook/stories/withForcedCheckboxes.stories.d.ts +14 -0
  89. package/ui/Blocks/CommonGrid/storybook/stories/withForcedCheckboxes.stories.js +24 -0
  90. package/ui/Blocks/CommonGrid/storybook/utils/actions.d.ts +4 -0
  91. package/ui/Blocks/CommonGrid/storybook/utils/actions.js +6 -0
  92. package/ui/Blocks/CommonGrid/storybook/utils/columnDefinition.d.ts +10 -0
  93. package/ui/Blocks/CommonGrid/storybook/utils/columnDefinition.js +97 -0
  94. package/ui/Blocks/CommonGrid/storybook/utils/filters.d.ts +2 -0
  95. package/ui/Blocks/CommonGrid/storybook/utils/filters.js +23 -0
  96. package/ui/Blocks/CommonGrid/storybook/utils/utils.d.ts +17 -0
  97. package/ui/Blocks/CommonGrid/storybook/utils/utils.js +66 -0
  98. package/ui/Blocks/CommonGrid/storybook/utils/withRedux.d.ts +2 -0
  99. package/ui/Blocks/CommonGrid/storybook/utils/withRedux.js +12 -0
  100. package/ui/Blocks/CommonGrid/storybook/utils/withRouter.d.ts +2 -0
  101. package/ui/Blocks/CommonGrid/storybook/utils/withRouter.js +4 -0
  102. package/ui/Blocks/CommonGrid/storybook/utils/withTheme.d.ts +2 -0
  103. package/ui/Blocks/CommonGrid/storybook/utils/withTheme.js +18 -0
  104. package/ui/Blocks/CommonGrid/types.d.ts +299 -0
  105. package/ui/Blocks/CommonGrid/types.js +8 -0
  106. package/ui/Blocks/CommonGrid/utils/index.d.ts +17 -0
  107. package/ui/Blocks/CommonGrid/utils/index.js +60 -0
  108. package/ui/Blocks/CommonGrid/utils/public.d.ts +16 -0
  109. package/ui/Blocks/CommonGrid/utils/public.js +52 -0
@@ -0,0 +1,110 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
24
+ import React from 'react';
25
+ import { x } from '@xstyled/styled-components';
26
+ import { Link } from 'react-router-dom';
27
+ import { Cell, StyledDataRow } from './Table';
28
+ import MemoDataCell from './DataCell';
29
+ import EditIcon from './icons/Edit';
30
+ import EyeOpenIcon from './icons/EyeOpen';
31
+ import { getActionCellSizeProps } from '../utils';
32
+ import { rowClassSymbol } from '../types';
33
+ import { isFunction } from 'lodash/fp';
34
+ import Context from '../CommonGridContext';
35
+ import { useTimeMeasurement } from './utils';
36
+ var EmptySpan = function (_a) {
37
+ var children = _a.children, props = __rest(_a, ["children"]);
38
+ return _jsx("span", __assign({}, props, { children: children }));
39
+ };
40
+ var DataRow = function (_a) {
41
+ var _b, _c, _d;
42
+ var columns = _a.columns, actionColumn = _a.actionColumn, rowData = _a.rowData, rowIndex = _a.rowIndex, uxState = _a.uxState, allowRowSelect = _a.allowRowSelect, allowRowSelectOnAction = _a.allowRowSelectOnAction, onUxChange = _a.onUxChange, onRowEditClick = _a.onRowEditClick, onRowReadClick = _a.onRowReadClick, onRowClick = _a.onRowClick, onRowAction = _a.onRowAction, displayColumnsWidth = _a.displayColumnsWidth, groups = _a.groups, isEven = _a.isEven;
43
+ var _e = React.useContext(Context), Checkbox = _e.Checkbox, Button = _e.Button;
44
+ var isChecked = !!((_b = uxState.checkedRows) === null || _b === void 0 ? void 0 : _b[rowData.id]);
45
+ var onCheckboxChange = React.useCallback(function () {
46
+ var checkedRows = __assign({}, (uxState.checkedRows || {}));
47
+ if (!isChecked) {
48
+ checkedRows[rowData.id] = true;
49
+ }
50
+ else {
51
+ delete checkedRows[rowData.id];
52
+ }
53
+ onUxChange && onUxChange('checkedRows', checkedRows);
54
+ }, [onUxChange, isChecked, uxState, rowData]);
55
+ var handleEditClick = React.useCallback(function () {
56
+ if (onRowEditClick)
57
+ onRowEditClick(rowData.id, rowData);
58
+ if (onUxChange && allowRowSelectOnAction)
59
+ onUxChange('selectedRow', rowData.id);
60
+ }, [onRowEditClick, rowData]);
61
+ var handleReadClick = React.useCallback(function () {
62
+ if (onRowReadClick)
63
+ onRowReadClick(rowData.id, rowData);
64
+ if (onUxChange && allowRowSelectOnAction)
65
+ onUxChange('selectedRow', rowData.id);
66
+ }, [onRowReadClick, rowData]);
67
+ var handleRowAction = React.useCallback(function (id, field, value) {
68
+ if (onRowAction)
69
+ onRowAction(id, field, value);
70
+ if (onUxChange && allowRowSelectOnAction)
71
+ onUxChange('selectedRow', id);
72
+ }, [onRowReadClick, rowData]);
73
+ var handleRowClick = React.useCallback(function (e) {
74
+ // test whether I should trigger event or not (because of possible button/link/input/etc in cell)
75
+ var classes = Object.values(e.target.classList);
76
+ if (!classes.includes('dataRow') && !classes.includes('cell'))
77
+ return;
78
+ if (onUxChange && allowRowSelect)
79
+ onUxChange('selectedRow', rowData.id);
80
+ if (onRowClick)
81
+ onRowClick(rowData.id, rowData);
82
+ },
83
+ // eslint-disable-next-line react-hooks/exhaustive-deps
84
+ [onRowClick, onUxChange, rowData]);
85
+ var _f = useTimeMeasurement({ handleRowClick: handleRowClick }), handleMouseDown = _f.handleMouseDown, handleMouseUp = _f.handleMouseUp;
86
+ var RowActionComponent = ((actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.createLink) ? Link : EmptySpan);
87
+ var rowActionProps = React.useCallback(function (mode) {
88
+ var _a;
89
+ return (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.createLink)
90
+ ? { to: (_a = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.createLink) === null || _a === void 0 ? void 0 : _a.call(actionColumn, { mode: mode, id: rowData.id }) }
91
+ : { onClick: { read: handleReadClick, edit: handleEditClick }[mode] };
92
+ }, [actionColumn, handleReadClick, handleEditClick]);
93
+ var rowClassName = React.useMemo(function () {
94
+ var classes = ['dataRow'];
95
+ if (isChecked)
96
+ classes.push('checked');
97
+ if (uxState.selectedRow == rowData.id && (allowRowSelect || allowRowSelectOnAction))
98
+ classes.push('selected');
99
+ if (rowData[rowClassSymbol])
100
+ classes.push(rowData[rowClassSymbol] || '');
101
+ return classes.join(' ');
102
+ // eslint-disable-next-line react-hooks/exhaustive-deps
103
+ }, [isChecked, uxState, rowData]);
104
+ var actionColumnStyle = React.useMemo(function () {
105
+ return actionColumn ? __assign({}, getActionCellSizeProps(actionColumn)) : {};
106
+ }, [actionColumn]);
107
+ var displayReadEditCell = ((_c = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionOptions) === null || _c === void 0 ? void 0 : _c.length) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.canRowEdit) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.canRowRead) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.forceCheckboxes);
108
+ return (_jsxs(StyledDataRow, { className: rowClassName, hasRowClick: !!onRowClick, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, isEven: isEven, children: [actionColumn && (_jsxs(_Fragment, { children: [displayReadEditCell && (_jsxs(Cell, { className: "cell", style: actionColumnStyle, children: [((_d = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionOptions) === null || _d === void 0 ? void 0 : _d.length) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.forceCheckboxes) ? (_jsx(Checkbox, { checked: isChecked, onChange: onCheckboxChange, label: "" })) : null, _jsxs(x.div, { children: [(isFunction(actionColumn.canRowRead) ? actionColumn.canRowRead(rowData) : actionColumn.canRowRead) && (_jsx(RowActionComponent, __assign({}, rowActionProps('read'), { children: _jsx(Button, { type: "button", appearance: "primary", margin: "5px", className: "actionColumnButton", children: _jsx(EyeOpenIcon, { width: "16px", height: "16px" }) }) }))), (isFunction(actionColumn.canRowEdit) ? actionColumn.canRowEdit(rowData) : actionColumn.canRowEdit) && (_jsx(RowActionComponent, __assign({}, rowActionProps('edit'), { children: _jsx(Button, { type: "button", appearance: "primary", margin: "5px", className: "actionColumnButton", children: _jsx(EditIcon, { width: "16px", height: "16px" }) }) })))] })] })), (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.addRowNumbers) && (_jsx(Cell, { className: "cell", style: actionColumnStyle, children: _jsx(x.div, { children: rowIndex }) }))] })), columns.map(function (column, key) { return (_jsx(MemoDataCell, { column: column, rowData: rowData, onRowAction: handleRowAction, displayColumnWidth: displayColumnsWidth[column.name], group: groups === null || groups === void 0 ? void 0 : groups[key] }, column.name)); })] }));
109
+ };
110
+ export default DataRow;
@@ -0,0 +1,3 @@
1
+ import { PaginatorProps } from '../types';
2
+ declare const DefaultPaginator: (props: PaginatorProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultPaginator;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ var DefaultPaginator = function (props) {
4
+ var onPageChange = props.onPageChange, itemCount = props.itemCount, itemPerPage = props.itemPerPage, page = props.page;
5
+ var pageCount = Math.max(Math.ceil(itemCount / itemPerPage), 1);
6
+ var goFirst = React.useCallback(function () { return onPageChange(1); }, []);
7
+ var goPrev = React.useCallback(function () { return onPageChange(page - 1); }, [page]);
8
+ var goNext = React.useCallback(function () { return onPageChange(page + 1); }, [page]);
9
+ return (_jsxs("div", { children: [_jsx("button", { onClick: goFirst, disabled: page == 1, children: "go fist" }), _jsx("button", { onClick: goPrev, disabled: page <= 1, children: "go prev" }), _jsx("span", { children: " Page: ".concat(page, " / ").concat(pageCount, " ") }), _jsx("button", { onClick: goNext, disabled: page >= pageCount, children: "go next" })] }));
10
+ };
11
+ export default DefaultPaginator;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export type DialogProps = {
3
+ header?: JSX.Element | string;
4
+ onSubmit: (close: () => void) => void;
5
+ isSubmitting?: boolean;
6
+ isConfirmDisabled?: boolean;
7
+ onCancel: () => void;
8
+ children: React.ReactNode;
9
+ };
10
+ declare const Dialog: ({ header: Header, onCancel, onSubmit, isSubmitting, isConfirmDisabled, children }: DialogProps) => JSX.Element;
11
+ export default Dialog;
@@ -0,0 +1,19 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ import React from 'react';
7
+ import styled from '@xstyled/styled-components';
8
+ import Context from '../CommonGridContext';
9
+ var DialogOverlay = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: fixed; /* Stay in place */\n z-index: 1; /* Sit on top */\n padding-top: 100px; /* Location of the box */\n left: 0;\n top: 0;\n width: 100%; /* Full width */\n height: 100%; /* Full height */\n overflow: auto; /* Enable scroll if needed */\n background-color: rgb(0, 0, 0); /* Fallback color */\n background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */\n text-align: center;\n"], ["\n position: fixed; /* Stay in place */\n z-index: 1; /* Sit on top */\n padding-top: 100px; /* Location of the box */\n left: 0;\n top: 0;\n width: 100%; /* Full width */\n height: 100%; /* Full height */\n overflow: auto; /* Enable scroll if needed */\n background-color: rgb(0, 0, 0); /* Fallback color */\n background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */\n text-align: center;\n"])));
10
+ var DialogWindow = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: #fefefe;\n margin: auto;\n padding: 1em 2em;\n border: 0;\n border-radius: 0.5em;\n min-width: 40%;\n max-width: 80%;\n display: inline-block;\n text-align: left;\n"], ["\n background-color: #fefefe;\n margin: auto;\n padding: 1em 2em;\n border: 0;\n border-radius: 0.5em;\n min-width: 40%;\n max-width: 80%;\n display: inline-block;\n text-align: left;\n"])));
11
+ var HeaderContainer = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin-bottom: 1em;\n padding-bottom: 1em;\n border-bottom: 1px solid lightgray;\n text-align: right;\n > * {\n margin: 0 0.5em;\n }\n"], ["\n margin-bottom: 1em;\n padding-bottom: 1em;\n border-bottom: 1px solid lightgray;\n text-align: right;\n > * {\n margin: 0 0.5em;\n }\n"])));
12
+ var ButtonsContainer = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n margin-top: 1em;\n padding-top: 1em;\n border-top: 1px solid lightgray;\n text-align: right;\n > * {\n margin: 0 0.5em;\n }\n"], ["\n margin-top: 1em;\n padding-top: 1em;\n border-top: 1px solid lightgray;\n text-align: right;\n > * {\n margin: 0 0.5em;\n }\n"])));
13
+ var Dialog = function (_a) {
14
+ var Header = _a.header, onCancel = _a.onCancel, onSubmit = _a.onSubmit, isSubmitting = _a.isSubmitting, isConfirmDisabled = _a.isConfirmDisabled, children = _a.children;
15
+ var _b = React.useContext(Context), Translator = _b.Translator, Button = _b.Button;
16
+ return (_jsx(DialogOverlay, { className: "dialog", children: _jsxs(DialogWindow, { children: [Header && _jsx(HeaderContainer, { children: Header }), children, _jsxs(ButtonsContainer, { children: [_jsx(Button, { onClick: onCancel, isLoading: isSubmitting, disabled: isConfirmDisabled, children: _jsx(Translator, { id: "form.buttonCancel", defaults: "Cancel" }) }), _jsx(Button, { onClick: onSubmit, children: _jsx(Translator, { id: "form.buttonSubmit", defaults: "Submit" }) })] })] }) }));
17
+ };
18
+ export default Dialog;
19
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ type Pathname = {
3
+ pathname: string;
4
+ };
5
+ export type Item = {
6
+ icon?: React.ReactNode;
7
+ title?: string | JSX.Element;
8
+ link?: string | Pathname;
9
+ onClick?: Function;
10
+ hasSeparator?: boolean;
11
+ };
12
+ export type MenuItems = {
13
+ items?: Item[];
14
+ };
15
+ export type DropdownMenuProps = MenuItems & {
16
+ showMenu?: boolean;
17
+ className?: string;
18
+ childRef?: React.Ref<any>;
19
+ };
20
+ declare const DropdownMenu: ({ items, showMenu, className, childRef, ...rest }: DropdownMenuProps) => JSX.Element;
21
+ export default DropdownMenu;
@@ -0,0 +1,59 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
28
+ import React from 'react';
29
+ import { Link } from 'react-router-dom';
30
+ import styled, { css } from '@xstyled/styled-components';
31
+ var StyledLink = styled(Link)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: block;\n color: formTextColor;\n"], ["\n display: block;\n color: formTextColor;\n"])));
32
+ var StyledClickableDiv = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: block;\n color: formTextColor;\n"], ["\n display: block;\n color: formTextColor;\n"])));
33
+ var StyledListItem = styled.li(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n padding: 10px;\n font-size: 1;\n\n :hover {\n background-color: primary;\n color: white;\n cursor: pointer;\n }\n\n ", ";\n"], ["\n padding: 10px;\n font-size: 1;\n\n :hover {\n background-color: primary;\n color: white;\n cursor: pointer;\n }\n\n ", ";\n"])), function (props) {
34
+ return props.hasSeparator && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n border-top: slim;\n border-color: grayLight3;\n "], ["\n border-top: slim;\n border-color: grayLight3;\n "])));
35
+ });
36
+ var IconWrap = styled.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n margin-right: 10px;\n"], ["\n margin-right: 10px;\n"])));
37
+ var MenuItem = function (_a) {
38
+ var icon = _a.icon, title = _a.title, link = _a.link, onClick = _a.onClick, rest = __rest(_a, ["icon", "title", "link", "onClick"]);
39
+ var onClickCallback = React.useCallback(function () {
40
+ if (onClick)
41
+ onClick();
42
+ }, [onClick]);
43
+ var styledListItem = (_jsxs(StyledListItem, __assign({}, rest, { children: [icon && _jsx(IconWrap, { children: icon }), title] })));
44
+ return link ? (_jsx(StyledLink, { color: "dropdownMenuItem", to: link, onClick: onClickCallback, children: styledListItem })) : (_jsx(StyledClickableDiv, { color: "dropdownMenuItem", onClick: onClickCallback, children: styledListItem }));
45
+ };
46
+ var MenuList = function (_a) {
47
+ var items = _a.items;
48
+ return (_jsx("ul", { children: items &&
49
+ items.map(function (item, i) {
50
+ return _jsx(MenuItem, __assign({}, item), i);
51
+ }) }));
52
+ };
53
+ var StyledDropdownWrap = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n width: fit-content;\n height: fit-content;\n background-color: white;\n padding: 2;\n display: block;\n border: slim;\n border-color: grayLight3;\n border-radius: 5px;\n box-shadow: dropdownMenuShadow;\n color: primary;\n z-index: 5;\n"], ["\n width: fit-content;\n height: fit-content;\n background-color: white;\n padding: 2;\n display: block;\n border: slim;\n border-color: grayLight3;\n border-radius: 5px;\n box-shadow: dropdownMenuShadow;\n color: primary;\n z-index: 5;\n"])));
54
+ var DropdownMenu = function (_a) {
55
+ var items = _a.items, showMenu = _a.showMenu, className = _a.className, childRef = _a.childRef, rest = __rest(_a, ["items", "showMenu", "className", "childRef"]);
56
+ return (_jsx(_Fragment, { children: showMenu && (_jsx(StyledDropdownWrap, __assign({ ref: childRef, className: className }, rest, { children: _jsx(MenuList, { items: items }) }))) }));
57
+ };
58
+ export default DropdownMenu;
59
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ type DropdownSelectProps = {
3
+ label: string | JSX.Element;
4
+ appearance: 'primary' | 'secondary';
5
+ options: {
6
+ label: string | JSX.Element;
7
+ value?: string | number;
8
+ onClick?: () => void;
9
+ }[];
10
+ showChevron?: boolean;
11
+ onSelect?: (value: string | number) => void;
12
+ disabled?: boolean;
13
+ };
14
+ declare const DropdownSelect: ({ label, appearance, options, showChevron, onSelect, disabled }: DropdownSelectProps) => JSX.Element;
15
+ export default DropdownSelect;
@@ -0,0 +1,35 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ import React from 'react';
7
+ import styled from '@xstyled/styled-components';
8
+ import DropdownMenu from './DropdownMenu';
9
+ import ArrowSimple from './icons/ArrowSimple';
10
+ import Context from '../CommonGridContext';
11
+ import { useClickOutside } from '../../Modal/hooks/useClickOutside';
12
+ var StyledDropdownMenu = styled(DropdownMenu)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n"], ["\n position: absolute;\n"])));
13
+ var ChevronIcon = styled(ArrowSimple)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n transform: rotate(90deg);\n margin-left: 1;\n"], ["\n transform: rotate(90deg);\n margin-left: 1;\n"])));
14
+ var DropdownSelect = function (_a) {
15
+ var label = _a.label, appearance = _a.appearance, options = _a.options, showChevron = _a.showChevron, onSelect = _a.onSelect, disabled = _a.disabled;
16
+ var Button = React.useContext(Context).Button;
17
+ var _b = React.useState(false), showDropdownMenu = _b[0], setShowDropdownMenu = _b[1];
18
+ var dropdownMenuRef = useClickOutside({ onClose: function () { return setShowDropdownMenu(false); } });
19
+ var toggleDropdownMenu = React.useCallback(function () {
20
+ setShowDropdownMenu(!showDropdownMenu);
21
+ }, [showDropdownMenu]);
22
+ var handleSelectItem = React.useCallback(function (item) {
23
+ var _a;
24
+ setShowDropdownMenu(false);
25
+ (_a = item.onClick) === null || _a === void 0 ? void 0 : _a.call(item);
26
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect((item === null || item === void 0 ? void 0 : item.value) || '');
27
+ }, [onSelect]);
28
+ var items = options.map(function (item) { return ({
29
+ title: item.label,
30
+ onClick: function () { return handleSelectItem(item); },
31
+ }); });
32
+ return (_jsxs("div", { ref: dropdownMenuRef, children: [_jsxs(Button, { type: "button", disabled: disabled, appearance: appearance, onClick: toggleDropdownMenu, children: [label, showChevron && _jsx(ChevronIcon, {})] }), showDropdownMenu && _jsx(StyledDropdownMenu, { className: "dropdownMenu", items: items, showMenu: true })] }));
33
+ };
34
+ export default DropdownSelect;
35
+ var templateObject_1, templateObject_2;
@@ -0,0 +1,3 @@
1
+ import { PropsWithChildren } from 'react';
2
+ declare const OverlayComponent: ({ children }: PropsWithChildren<{}>) => JSX.Element;
3
+ export default OverlayComponent;
@@ -0,0 +1,36 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import React from 'react';
7
+ import styled from '@xstyled/styled-components';
8
+ var OverlayWrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n z-index: 1;\n visibility: hidden;\n"], ["\n position: absolute;\n z-index: 1;\n visibility: hidden;\n"])));
9
+ var OverlayComponent = function (_a) {
10
+ var children = _a.children;
11
+ var overlayRef = React.useRef(null);
12
+ React.useEffect(function () {
13
+ var _a;
14
+ var Overlay = overlayRef.current;
15
+ if (!Overlay)
16
+ return;
17
+ var FilterCell = Overlay === null || Overlay === void 0 ? void 0 : Overlay.closest('.cell');
18
+ var GridWrapper = FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.closest('.gridWrapper');
19
+ // position of left edge of filter cell
20
+ var relativeLeftOffset = (FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.offsetLeft) - ((_a = FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.parentElement) === null || _a === void 0 ? void 0 : _a.offsetLeft); // parent element = row
21
+ // space available to the right edge of visible part of grid
22
+ var spaceTotal = (GridWrapper === null || GridWrapper === void 0 ? void 0 : GridWrapper.clientWidth) + (GridWrapper === null || GridWrapper === void 0 ? void 0 : GridWrapper.scrollLeft) - relativeLeftOffset;
23
+ // difference between availible space and width
24
+ var spaceLeft = spaceTotal - (Overlay === null || Overlay === void 0 ? void 0 : Overlay.clientWidth);
25
+ // left position
26
+ var left = spaceLeft > 0 ? FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.offsetLeft : (FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.offsetLeft) + spaceLeft;
27
+ // top calculation
28
+ var topOffset = (FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.offsetTop) + (FilterCell === null || FilterCell === void 0 ? void 0 : FilterCell.clientHeight);
29
+ Overlay.style.left = "".concat(left, "px");
30
+ Overlay.style.top = "".concat(topOffset, "px");
31
+ Overlay.style.visibility = "initial";
32
+ });
33
+ return (_jsx(OverlayWrapper, { ref: overlayRef, className: "filterOverlay", children: children }));
34
+ };
35
+ export default OverlayComponent;
36
+ var templateObject_1;
@@ -0,0 +1,15 @@
1
+ import { Settings, ColumnDefinition as ColumnDefinitionType, ActionColumn, GridActionsType, GridSelectorsType, Group, FiltersConfig, UxState, RowProps } from '../types';
2
+ type Props = {
3
+ columns: ColumnDefinitionType[];
4
+ actionColumn?: ActionColumn;
5
+ onChange: Required<GridActionsType>['addFilter'];
6
+ filterValues?: Settings['filter'];
7
+ displayColumnsWidth: Required<GridSelectorsType>['columnsWidth'];
8
+ filters?: FiltersConfig;
9
+ groups?: Group[];
10
+ handleUxChange?: GridActionsType['handleUxChange'];
11
+ rowsData: RowProps[];
12
+ uxState: UxState;
13
+ };
14
+ declare const FilterRow: ({ columns, groups, actionColumn, onChange, filterValues, displayColumnsWidth, filters, handleUxChange, rowsData, uxState, }: Props) => JSX.Element;
15
+ export default FilterRow;
@@ -0,0 +1,35 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import React from 'react';
14
+ import get from 'lodash/fp/get';
15
+ import throttle from 'lodash/throttle';
16
+ import ColumnFilterCell from './ColumnFilterCell';
17
+ import { Row, Cell } from './Table';
18
+ import { getActionCellSizeProps, getFilterName } from '../utils';
19
+ import Context from '../CommonGridContext';
20
+ import { useToggleAllCheckbox } from '../utils/public';
21
+ var FilterRow = function (_a) {
22
+ var _b, _c;
23
+ var columns = _a.columns, groups = _a.groups, actionColumn = _a.actionColumn, onChange = _a.onChange, _d = _a.filterValues, filterValues = _d === void 0 ? {} : _d, displayColumnsWidth = _a.displayColumnsWidth, filters = _a.filters, handleUxChange = _a.handleUxChange, rowsData = _a.rowsData, uxState = _a.uxState;
24
+ var handleOnChange = throttle(onChange, 500);
25
+ var actionColumnStyle = React.useMemo(function () {
26
+ return actionColumn ? __assign({}, getActionCellSizeProps(actionColumn)) : {};
27
+ }, [actionColumn]);
28
+ var _e = useToggleAllCheckbox(rowsData, uxState, handleUxChange), allChecked = _e[0], toggleCheckbox = _e[1];
29
+ var Checkbox = React.useContext(Context).Checkbox;
30
+ var displayCheckbox = (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.checkAllPosition) === 'top' && (((_b = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionOptions) === null || _b === void 0 ? void 0 : _b.length) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.forceCheckboxes));
31
+ var displayRowNumberLabel = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.addRowNumbers;
32
+ var rowsNumberLabel = (_c = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.addRowNumbersLabel) !== null && _c !== void 0 ? _c : '#';
33
+ return (_jsxs(Row, { className: "filterRow", children: [displayCheckbox && (_jsx(Cell, { className: "cell", style: actionColumnStyle, children: _jsx(Checkbox, { checked: allChecked, onChange: toggleCheckbox, label: "" }, "check-all") })), displayRowNumberLabel && (_jsx(Cell, { className: "cell", style: actionColumnStyle, children: _jsx("div", { children: rowsNumberLabel }) })), !!(!displayCheckbox && !displayRowNumberLabel && actionColumn) && (_jsx(Cell, { className: "cell", style: actionColumnStyle }, 'actions')), columns.map(function (column, index) { return (_jsx(ColumnFilterCell, { column: column, onChange: handleOnChange, value: get([getFilterName(column), 'value'], filterValues), displayColumnWidth: displayColumnsWidth[column.name], filters: filters, group: groups === null || groups === void 0 ? void 0 : groups[index] }, index)); })] }));
34
+ };
35
+ export default FilterRow;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ type FloatingButtonProps = {
3
+ children?: ReactNode;
4
+ };
5
+ declare const FloatingButton: ({ children }: FloatingButtonProps) => JSX.Element;
6
+ export default FloatingButton;
@@ -0,0 +1,13 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import styled, { x } from '@xstyled/styled-components';
7
+ var FloatingWrapper = styled(x.div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: block;\n position: absolute;\n bottom: 20px;\n right: 24px;\n @media (min-width: 1024px) {\n display: none;\n }\n"], ["\n display: block;\n position: absolute;\n bottom: 20px;\n right: 24px;\n @media (min-width: 1024px) {\n display: none;\n }\n"])));
8
+ var FloatingButton = function (_a) {
9
+ var children = _a.children;
10
+ return _jsx(FloatingWrapper, { children: children });
11
+ };
12
+ export default FloatingButton;
13
+ var templateObject_1;
@@ -0,0 +1,9 @@
1
+ import { ActionColumn, Group, ColumnDefinition, GridSelectorsType } from '../types';
2
+ type GroupRowProps = {
3
+ groups: Group[];
4
+ actionColumn?: ActionColumn;
5
+ columns: ColumnDefinition[];
6
+ displayColumnsWidth: Required<GridSelectorsType>['columnsWidth'];
7
+ };
8
+ declare const GroupRow: ({ actionColumn, columns, groups, displayColumnsWidth }: GroupRowProps) => JSX.Element;
9
+ export default GroupRow;
@@ -0,0 +1,27 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import React from 'react';
14
+ import { Row, Cell } from './Table';
15
+ import { getCellSizeProps, getActionCellSizeProps, getGroupClassNames, getStickyCollClassNames } from '../utils';
16
+ var GroupCell = function (_a) {
17
+ var column = _a.column, group = _a.group, displayColumnWidth = _a.displayColumnWidth;
18
+ var cellSizeProps = getCellSizeProps(column, displayColumnWidth);
19
+ var cellClassName = "cell".concat(getStickyCollClassNames(!!column.sticky, column.stickTo), " ").concat(getGroupClassNames(group));
20
+ return (_jsx(Cell, __assign({ className: cellClassName }, cellSizeProps, { children: group.start && _jsx(_Fragment, { children: group.name }) })));
21
+ };
22
+ var GroupRow = function (_a) {
23
+ var actionColumn = _a.actionColumn, columns = _a.columns, groups = _a.groups, displayColumnsWidth = _a.displayColumnsWidth;
24
+ var actionColumnStyle = React.useMemo(function () { return (actionColumn ? __assign({}, getActionCellSizeProps(actionColumn)) : {}); }, [actionColumn]);
25
+ return (_jsxs(Row, { className: "group-row", children: [actionColumn && _jsx(Cell, { className: "cell", style: actionColumnStyle }, "actions"), groups.map(function (group, key) { return (_jsx(GroupCell, { column: columns[key], group: group, displayColumnWidth: displayColumnsWidth[columns[key].name] }, key)); })] }));
26
+ };
27
+ export default GroupRow;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { DraggableProps, DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
3
+ import { SortingValueType, Group, GridActionsType, StickTo } from '../types';
4
+ type Props = {
5
+ title?: string | JSX.Element;
6
+ name?: string;
7
+ isSortable: boolean;
8
+ systemName?: string;
9
+ isDragging?: boolean;
10
+ draggableProps?: DraggableProps | any;
11
+ dragHandleProps?: DraggableProvidedDragHandleProps | null;
12
+ innerRef?: Function;
13
+ hasResize?: boolean;
14
+ flexBasis?: number;
15
+ flexGrow?: number;
16
+ flexShrink?: number;
17
+ onResizeOver?: () => void;
18
+ onResizeOut?: () => void;
19
+ onAddSort?: GridActionsType['addSorting'];
20
+ sortValue: SortingValueType;
21
+ handleResizeDrag?: (column: string, width: number) => void;
22
+ group?: Group;
23
+ sticky?: boolean;
24
+ stickTo?: StickTo;
25
+ };
26
+ declare const _default: React.MemoExoticComponent<({ title, name, isSortable, systemName, onAddSort, sortValue, hasResize, onResizeOver, onResizeOut, innerRef, isDragging, draggableProps, dragHandleProps, flexBasis, flexGrow, flexShrink, handleResizeDrag, group, sticky, stickTo, }: Props) => JSX.Element>;
27
+ export default _default;
@@ -0,0 +1,43 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ import React from 'react';
18
+ import styled from '@xstyled/styled-components';
19
+ import { Cell } from './Table';
20
+ import ColumnTitle from './ColumnTitle';
21
+ import Resize from './Resize';
22
+ import { getGroupClassNames, getStickyCollClassNames } from '../utils';
23
+ import Context from '../CommonGridContext';
24
+ var DraggableCell = styled(Cell)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n"], ["\n background-color: ", ";\n"])), function (_a) {
25
+ var $isDragging = _a.$isDragging;
26
+ return ($isDragging ? 'transparentRed' : 'transparent');
27
+ });
28
+ var HeadCell = function (_a) {
29
+ var title = _a.title, _b = _a.name, name = _b === void 0 ? '' : _b, isSortable = _a.isSortable, systemName = _a.systemName, onAddSort = _a.onAddSort, sortValue = _a.sortValue, hasResize = _a.hasResize, onResizeOver = _a.onResizeOver, onResizeOut = _a.onResizeOut, innerRef = _a.innerRef, isDragging = _a.isDragging, draggableProps = _a.draggableProps, dragHandleProps = _a.dragHandleProps, flexBasis = _a.flexBasis, flexGrow = _a.flexGrow, _c = _a.flexShrink, flexShrink = _c === void 0 ? 1 : _c, handleResizeDrag = _a.handleResizeDrag, group = _a.group, sticky = _a.sticky, stickTo = _a.stickTo;
30
+ var CustomColumnTitle = React.useContext(Context).ColumnTitle;
31
+ var onResize = React.useCallback(function (width) {
32
+ handleResizeDrag === null || handleResizeDrag === void 0 ? void 0 : handleResizeDrag(name, width);
33
+ }, [handleResizeDrag, name]);
34
+ var style = React.useMemo(function () { return (__assign({}, draggableProps === null || draggableProps === void 0 ? void 0 : draggableProps.style)); }, [draggableProps]);
35
+ var ColumnTitleComponent = CustomColumnTitle || ColumnTitle;
36
+ var onSetSort = React.useCallback(function (value) {
37
+ onAddSort && onAddSort(systemName || name, value);
38
+ }, [onAddSort, systemName, name]);
39
+ var cellClassName = "cell".concat(getStickyCollClassNames(!!sticky, stickTo), " ").concat(getGroupClassNames(group));
40
+ return (_jsxs(DraggableCell, __assign({}, draggableProps, dragHandleProps, { style: style, flexBasis: flexBasis, flexGrow: flexGrow, flexShrink: flexShrink, innerRef: innerRef, "$isDragging": isDragging, className: cellClassName, children: [_jsx(ColumnTitleComponent, { title: title, isSortable: isSortable, onSetSort: onSetSort, sortValue: sortValue }), hasResize && onResizeOut && onResizeOver && (_jsx(Resize, { onResize: onResize, onResizeOver: onResizeOver, onResizeOut: onResizeOut }))] })));
41
+ };
42
+ export default React.memo(HeadCell);
43
+ var templateObject_1;
@@ -0,0 +1,15 @@
1
+ import { Settings, ColumnDefinition, ActionColumn, GridSelectorsType, Group, CommonGridProps, GridActionsType } from '../types';
2
+ type HeadRowProps = {
3
+ actionColumn?: ActionColumn;
4
+ columns: ColumnDefinition[];
5
+ columnsOrder?: string[];
6
+ onAddSort: GridActionsType['addSorting'];
7
+ setColumnsOrder: (columnsOrder: string[]) => void;
8
+ sortingValues?: Settings['sorting'];
9
+ displayColumnsWidth: Required<GridSelectorsType>['columnsWidth'];
10
+ columnLayout: Required<CommonGridProps>['columnLayout'];
11
+ handleResizeDrag: (column: string, width: number) => void;
12
+ groups: Group[];
13
+ };
14
+ declare const HeadRow: ({ columns, actionColumn, onAddSort, setColumnsOrder, columnsOrder, sortingValues, displayColumnsWidth, columnLayout, handleResizeDrag, groups, }: HeadRowProps) => JSX.Element;
15
+ export default HeadRow;
@@ -0,0 +1,69 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
+ import React, { useEffect, useState } from 'react';
23
+ import { DragDropContext, Droppable, Draggable, } from 'react-beautiful-dnd';
24
+ import { Row, Cell } from './Table';
25
+ import HeadCell from './HeadCell';
26
+ import { getActionCellSizeProps, getCellSizeProps, getSortName } from '../utils';
27
+ var getStickyComponent = function (columns, stickyTo, displayColumnsWidth) {
28
+ var _a;
29
+ return (_a = columns === null || columns === void 0 ? void 0 : columns.filter(function (item) { return item.sticky && item.stickTo === stickyTo; })) === null || _a === void 0 ? void 0 : _a.map(function (column) { return (_jsx(HeadCell, __assign({ name: column.name, systemName: column.systemName, isSortable: false, hasResize: false, isDragging: false, sortValue: null }, getCellSizeProps(column, displayColumnsWidth[column.name]), { title: column.title, sticky: column.sticky, stickTo: column.stickTo }), column.name)); });
30
+ };
31
+ var HeadRow = function (_a) {
32
+ var _b;
33
+ var columns = _a.columns, actionColumn = _a.actionColumn, onAddSort = _a.onAddSort, setColumnsOrder = _a.setColumnsOrder, columnsOrder = _a.columnsOrder, _c = _a.sortingValues, sortingValues = _c === void 0 ? [] : _c, displayColumnsWidth = _a.displayColumnsWidth, columnLayout = _a.columnLayout, handleResizeDrag = _a.handleResizeDrag, groups = _a.groups;
34
+ var _d = useState(false), showUIElements = _d[0], setShowUIElements = _d[1];
35
+ useEffect(function () {
36
+ setShowUIElements(true);
37
+ }, []);
38
+ var handleDragEnd = React.useCallback(function (item) {
39
+ var _a, _b;
40
+ var to = (_a = item.destination) === null || _a === void 0 ? void 0 : _a.index;
41
+ var from = (_b = item.source) === null || _b === void 0 ? void 0 : _b.index;
42
+ if (to === from || !item.destination) {
43
+ return;
44
+ }
45
+ var newOrderColumns = __spreadArray([], (columnsOrder || []), true);
46
+ var fromIndex = newOrderColumns.findIndex(function (column) { return columns[from].name === column; });
47
+ var toIndex = newOrderColumns.findIndex(function (column) { return to && columns[to].name === column; });
48
+ // move column from a position to the new position
49
+ var column = newOrderColumns[fromIndex];
50
+ newOrderColumns.splice(fromIndex, 1);
51
+ newOrderColumns.splice(toIndex, 0, column);
52
+ setColumnsOrder(newOrderColumns);
53
+ }, [setColumnsOrder, columnsOrder, columns]);
54
+ var _e = useState(false), isDragDisabled = _e[0], setIsDragDisabled = _e[1];
55
+ var onResizeOver = React.useCallback(function () {
56
+ setIsDragDisabled(true);
57
+ }, [setIsDragDisabled]);
58
+ var onResizeOut = React.useCallback(function () {
59
+ setIsDragDisabled(false);
60
+ }, [setIsDragDisabled]);
61
+ var displayReadEditCell = ((_b = actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionOptions) === null || _b === void 0 ? void 0 : _b.length) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.canRowEdit) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.canRowRead) || (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.forceCheckboxes);
62
+ return (_jsx(_Fragment, { children: showUIElements && (_jsx(DragDropContext, { onDragEnd: handleDragEnd, children: _jsx(Droppable, { droppableId: "droppable", direction: "horizontal", isDropDisabled: isDragDisabled, children: function (droppableProvided) { return (_jsxs(Row, __assign({ className: "headRow", accountForScrollbar: false, innerRef: droppableProvided.innerRef }, droppableProvided.droppableProps, { children: [actionColumn && (_jsxs(_Fragment, { children: [displayReadEditCell && (_jsx(Cell, { className: "cell", style: Object.assign(__assign({}, getActionCellSizeProps(actionColumn))) })), (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.addRowNumbers) && (_jsx(Cell, { className: "cell", style: Object.assign(__assign({}, getActionCellSizeProps(actionColumn))) }))] })), getStickyComponent(columns, 'left', displayColumnsWidth), columns
63
+ .filter(function (item) { return !item.sticky; })
64
+ .map(function (column, key) { return (_jsx(Draggable, { draggableId: column.name, index: key, isDragDisabled: isDragDisabled || column.sticky, children: function (draggableProvided, snapshot) {
65
+ var _a;
66
+ return (_jsx(HeadCell, __assign({ name: column.name, systemName: column.systemName, onAddSort: onAddSort, isSortable: !!column.sorting, sortValue: ((_a = sortingValues.find(function (sorting) { return sorting.column == getSortName(column); })) === null || _a === void 0 ? void 0 : _a.direction) || null, innerRef: draggableProvided.innerRef, handleResizeDrag: handleResizeDrag, hasResize: columnLayout == 'normal' || !!columns[key + 1], draggableProps: draggableProvided.draggableProps, dragHandleProps: draggableProvided.dragHandleProps, isDragging: snapshot.isDragging, onResizeOver: onResizeOver, onResizeOut: onResizeOut }, getCellSizeProps(column, displayColumnsWidth[column.name]), { group: groups[key], title: column.title, sticky: column.sticky, stickTo: column.stickTo })));
67
+ } }, column.name)); }), getStickyComponent(columns, 'right', displayColumnsWidth), droppableProvided.placeholder] }))); } }) })) }));
68
+ };
69
+ export default HeadRow;