@mailstep/design-system 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/package.json +1 -1
  2. package/ui/Blocks/CommonGrid/CommonGrid.d.ts +5 -2
  3. package/ui/Blocks/CommonGrid/CommonGrid.js +4 -35
  4. package/ui/Blocks/CommonGrid/CommonGridContainer.js +2 -2
  5. package/ui/Blocks/CommonGrid/components/HeadRow.d.ts +3 -3
  6. package/ui/Blocks/CommonGrid/components/HeadRow.js +1 -26
  7. package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.d.ts +3 -1
  8. package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.js +16 -4
  9. package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.d.ts +5 -1
  10. package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.js +5 -4
  11. package/ui/Blocks/CommonGrid/hooks/useManageColumn.d.ts +5 -0
  12. package/ui/Blocks/CommonGrid/hooks/useManageColumn.js +76 -10
  13. package/ui/Blocks/CommonGrid/storybook/stories/loading.stories.js +1 -1
  14. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNoScrollLayout.stories.js +1 -1
  15. package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNormalLayout.stories.js +1 -1
  16. package/ui/Blocks/CommonGrid/storybook/stories/withCustomGridActions.stories.js +1 -1
  17. package/ui/Blocks/CommonGrid/styles.d.ts +3 -1
  18. package/ui/Blocks/CommonGrid/types.d.ts +1 -2
  19. package/ui/Blocks/CommonGrid/utils/index.d.ts +1 -0
  20. package/ui/Blocks/CommonGrid/utils/index.js +13 -0
  21. package/ui/Elements/Select/themes/formStyles.d.ts +3 -0
  22. package/ui/Elements/Select/themes/formStyles.js +10 -1
  23. package/ui/ThemeProvider/themes/default.js +1 -1
  24. package/ui/index.es.js +10027 -10000
  25. package/ui/index.umd.js +409 -408
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mailstep/design-system",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "main": "./ui/index.js",
@@ -1,6 +1,9 @@
1
- import { CommonGridProps, FiltersConfig } from './types';
1
+ import { CommonGridProps, FiltersConfig, ColumnDefinition } from './types';
2
+ import { DropResult } from 'react-beautiful-dnd';
2
3
  type Props = CommonGridProps & {
3
4
  filters?: FiltersConfig;
5
+ handleDragEnd: (item: DropResult) => void;
6
+ displayColumnsDefinitions: ColumnDefinition[];
4
7
  };
5
- declare const CommonGrid: ({ filters, gridSelectors, gridActions, isLoading, rowsData, hasColouredRows, columnsDefinitions, actionColumnDefinition, allowRowSelect, allowRowSelectOnAction, onRowAction, onRowEditClick, onRowReadClick, onRowClick, columnLayout, hideColumnConfig, className, gridRef, minColumnWidth, errorMessage, floatingButtonProps, }: Props) => JSX.Element;
8
+ declare const CommonGrid: ({ filters, handleDragEnd, gridSelectors, gridActions, isLoading, rowsData, hasColouredRows, columnsDefinitions, actionColumnDefinition, allowRowSelect, allowRowSelectOnAction, onRowAction, onRowEditClick, onRowReadClick, onRowClick, columnLayout, displayColumnsDefinitions, className, gridRef, minColumnWidth, errorMessage, floatingButtonProps, }: Props) => JSX.Element;
6
9
  export default CommonGrid;
@@ -21,7 +21,7 @@ import HeadRow from './components/HeadRow';
21
21
  import useUxReset from './hooks/useUxReset';
22
22
  import useRowsKeyControls from './hooks/useRowsKeyControls';
23
23
  import useColumnSizes from './hooks/useColumnSizes';
24
- import { isColumnOn, getGroups } from './utils';
24
+ import { getGroups } from './utils';
25
25
  import { initialState } from './store';
26
26
  import { Trans } from '@lingui/react';
27
27
  import FloatingButton from './components/FloatingButton/FloatingButton';
@@ -35,47 +35,16 @@ var defaultVoidFunction = function () {
35
35
  };
36
36
  var defaultUxState = initialState.uxState;
37
37
  var defaultColumnsWidth = {};
38
- var defaultPerPageOptions = [10, 20, 50, 100];
39
38
  var CommonGrid = function (_a) {
40
- var filters = _a.filters,
39
+ var filters = _a.filters, handleDragEnd = _a.handleDragEnd,
41
40
  // redux props
42
41
  gridSelectors = _a.gridSelectors, gridActions = _a.gridActions,
43
42
  // input props
44
- isLoading = _a.isLoading, rowsData = _a.rowsData, hasColouredRows = _a.hasColouredRows, columnsDefinitions = _a.columnsDefinitions, actionColumnDefinition = _a.actionColumnDefinition, allowRowSelect = _a.allowRowSelect, allowRowSelectOnAction = _a.allowRowSelectOnAction, onRowAction = _a.onRowAction, onRowEditClick = _a.onRowEditClick, onRowReadClick = _a.onRowReadClick, onRowClick = _a.onRowClick, _b = _a.columnLayout, columnLayout = _b === void 0 ? 'normal' : _b, hideColumnConfig = _a.hideColumnConfig, className = _a.className, gridRef = _a.gridRef, minColumnWidth = _a.minColumnWidth, errorMessage = _a.errorMessage, floatingButtonProps = _a.floatingButtonProps;
43
+ isLoading = _a.isLoading, rowsData = _a.rowsData, hasColouredRows = _a.hasColouredRows, columnsDefinitions = _a.columnsDefinitions, actionColumnDefinition = _a.actionColumnDefinition, allowRowSelect = _a.allowRowSelect, allowRowSelectOnAction = _a.allowRowSelectOnAction, onRowAction = _a.onRowAction, onRowEditClick = _a.onRowEditClick, onRowReadClick = _a.onRowReadClick, onRowClick = _a.onRowClick, _b = _a.columnLayout, columnLayout = _b === void 0 ? 'normal' : _b, displayColumnsDefinitions = _a.displayColumnsDefinitions, className = _a.className, gridRef = _a.gridRef, minColumnWidth = _a.minColumnWidth, errorMessage = _a.errorMessage, floatingButtonProps = _a.floatingButtonProps;
45
44
  var _c = gridSelectors.uxState, uxState = _c === void 0 ? defaultUxState : _c, columnConfig = gridSelectors.columnConfig, _d = gridSelectors.columnsWidth, columnsWidth = _d === void 0 ? defaultColumnsWidth : _d, columnsWidthVariant = gridSelectors.columnsWidthVariant, _e = gridSelectors.page, page = _e === void 0 ? 1 : _e, filter = gridSelectors.filter, sorting = gridSelectors.sorting, _f = gridSelectors.rowsPerPage, rowsPerPage = _f === void 0 ? 10 : _f;
46
45
  var clearUxState = gridActions.clearUxState, handleUxChange = gridActions.handleUxChange, _g = gridActions.addFilter, addFilter = _g === void 0 ? defaultVoidFunction : _g, _h = gridActions.addSorting, addSorting = _h === void 0 ? defaultVoidFunction : _h, _j = gridActions.setColumnWidth, setColumnWidth = _j === void 0 ? defaultVoidFunction : _j, _k = gridActions.setColumnsOrder, setColumnsOrder = _k === void 0 ? defaultVoidFunction : _k;
47
46
  var handleRowsKeyDown = useRowsKeyControls(rowsData, uxState, handleUxChange);
48
47
  useUxReset(rowsData, uxState, clearUxState);
49
- var checksColumnsOrder = React.useCallback(function (colsOrder) {
50
- var stickyRightColls = columnsDefinitions.filter(function (col) { return col.sticky === true && col.stickTo === 'right'; });
51
- var stickyLeftColls = columnsDefinitions.filter(function (col) { return col.sticky === true && col.stickTo !== 'right'; });
52
- if (stickyLeftColls.length > 1 || stickyRightColls.length > 1) {
53
- console.error('Grid can have only sticky column on each side.');
54
- }
55
- if (stickyLeftColls.length && colsOrder.indexOf(stickyLeftColls[0].name) !== 0) {
56
- console.error('The left sticky column should be the first one in a row');
57
- }
58
- if (stickyRightColls.length && colsOrder.indexOf(stickyRightColls[0].name) !== colsOrder.length - 1) {
59
- console.error('The Right sticky column should be the last one in a row');
60
- }
61
- }, [columnsDefinitions]);
62
- // todo refactor as part of definitions
63
- var columnsOrder = React.useMemo(function () {
64
- var _a;
65
- var order = ((_a = gridSelectors === null || gridSelectors === void 0 ? void 0 : gridSelectors.columnsOrder) === null || _a === void 0 ? void 0 : _a.length)
66
- ? gridSelectors.columnsOrder
67
- : columnsDefinitions.map(function (column) { return column.name; });
68
- checksColumnsOrder(order);
69
- return order;
70
- }, [columnsDefinitions, gridSelectors.columnsOrder]);
71
- // filtered and ordered columns definition, relevant columns definition to iterate over and render
72
- var displayColumnsDefinitions = React.useMemo(function () {
73
- return (!hideColumnConfig ? columnsDefinitions.filter(function (column) { return isColumnOn(column, columnConfig); }) : columnsDefinitions).sort(function (col1, col2) {
74
- var i = (columnsOrder || []).indexOf(col1.name);
75
- var j = (columnsOrder || []).indexOf(col2.name);
76
- return i > j ? 1 : i < j ? -1 : 0;
77
- });
78
- }, [hideColumnConfig, columnConfig, columnsDefinitions, columnsOrder]);
79
48
  var GridMessage;
80
49
  var messageClass = 'info';
81
50
  if (isLoading)
@@ -94,7 +63,7 @@ var CommonGrid = function (_a) {
94
63
  gridBoxRef.current = node;
95
64
  !!gridRef && (gridRef.current = node);
96
65
  }, []);
97
- return (_jsxs(_Fragment, { children: [_jsx(x.div, { className: className || '', children: _jsxs(OversizedScroll, { columnLayout: columnLayout, isLoading: isLoading, totalColumnsWidth: totalColumnsWidth, floatingChildren: GridMessage && (_jsx(Row, { className: "dataRow", align: "center", children: _jsx(MessageCell, { align: "center", className: "gridMessage ".concat(messageClass), children: GridMessage }) })), ref: commonGridRef, children: [_jsxs("div", { className: "gridHead", children: [columnsDefinitions.find(function (col) { return col.group; }) && (_jsx(GroupRow, { actionColumn: actionColumnDefinition, columns: displayColumnsDefinitions, displayColumnsWidth: displayColumnsWidth, groups: groups })), _jsx(HeadRow, { columns: displayColumnsDefinitions, actionColumn: actionColumnDefinition, onAddSort: addSorting, columnLayout: columnLayout, setColumnsOrder: setColumnsOrder, columnsOrder: columnsOrder, sortingValues: sorting, displayColumnsWidth: displayColumnsWidth, handleResizeDrag: handleResizeDrag, groups: groups }), columnsDefinitions.find(function (col) { return col.filtering; }) && (_jsx(FilterRow, { filters: filters, columns: displayColumnsDefinitions, actionColumn: actionColumnDefinition, onChange: addFilter, filterValues: filter, displayColumnsWidth: displayColumnsWidth, groups: groups, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange }))] }), _jsx("div", { className: "body flx_1", style: rowsStyles, tabIndex: -1, onKeyDown: handleRowsKeyDown, children: !isLoading &&
66
+ return (_jsxs(_Fragment, { children: [_jsx(x.div, { className: className || '', children: _jsxs(OversizedScroll, { columnLayout: columnLayout, isLoading: isLoading, totalColumnsWidth: totalColumnsWidth, floatingChildren: GridMessage && (_jsx(Row, { className: "dataRow", align: "center", children: _jsx(MessageCell, { align: "center", className: "gridMessage ".concat(messageClass), children: GridMessage }) })), ref: commonGridRef, children: [_jsxs("div", { className: "gridHead", children: [columnsDefinitions.find(function (col) { return col.group; }) && (_jsx(GroupRow, { actionColumn: actionColumnDefinition, columns: displayColumnsDefinitions, displayColumnsWidth: displayColumnsWidth, groups: groups })), _jsx(HeadRow, { columns: displayColumnsDefinitions, actionColumn: actionColumnDefinition, onAddSort: addSorting, columnLayout: columnLayout, sortingValues: sorting, displayColumnsWidth: displayColumnsWidth, handleResizeDrag: handleResizeDrag, groups: groups, handleDragEnd: handleDragEnd }), columnsDefinitions.find(function (col) { return col.filtering; }) && (_jsx(FilterRow, { filters: filters, columns: displayColumnsDefinitions, actionColumn: actionColumnDefinition, onChange: addFilter, filterValues: filter, displayColumnsWidth: displayColumnsWidth, groups: groups, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange }))] }), _jsx("div", { className: "body flx_1", style: rowsStyles, tabIndex: -1, onKeyDown: handleRowsKeyDown, children: !isLoading &&
98
67
  rowsData &&
99
68
  displayColumnsDefinitions &&
100
69
  rowsData.map(function (row, index) {
@@ -60,7 +60,7 @@ var StyledCommonGrid = function (props) {
60
60
  gridActions: gridActions,
61
61
  gridSelectors: gridSelectors,
62
62
  onClose: onClose,
63
- }), columnsConfigValues = _d.columnsConfigValues, setColumnsConfigOptions = _d.setColumnsConfigOptions, onConfirmForm = _d.onConfirmForm, resetColumnConfig = _d.resetColumnConfig;
64
- return (_jsxs(ContentContainer, { children: [_jsxs(CommonGridWrap, { children: [_jsx(HidePrint, { children: _jsxs(StyledButtonStrip, { className: "buttonsStrip", children: [!hideControlButtons && (_jsx(ControlButtons, { extraControlButtons: extraControlButtons, gridActions: gridActions, gridSelectors: gridSelectors, eshopSelect: eshopSelect })), _jsx(StyledColumnButton, { type: "button", sizing: "iconLg", appearance: "ghost", icon: _jsx(Settings2, {}), onClick: openManageColumnForm, children: _jsx(H6, { variant: "semiBold", children: _jsx(Trans, { id: "manageColumn.title", message: "Manage column" }) }) })] }) }), _jsx(CommonGridWithStyles, __assign({}, passDownProps, modifiedPassDownProps, { filters: filters, gridRef: gridRef, height: gridHeight, floatingButtonProps: floatingButtonProps, hasColouredRows: true }))] }), _jsx(HidePrint, { children: _jsxs(BottomWrapper, { ref: paginationRef, isFixed: !!gridHeight, children: [processCheckedValues && (_jsx(ActionHead, { rowsData: rowsData, onBatchAction: onBatchAction, gridActions: gridActions, gridSelectors: gridSelectors, actionColumn: actionColumnDefinition, processCheckedValues: processCheckedValues, processCheckedValuesTitle: processCheckedValuesTitle })), _jsxs(x.div, { display: "flex", justifyContent: "center", alignItems: "center", className: "paginatorWrapper", w: "100%", h: window.innerWidth > 1204 ? '60px' : '32px', children: [_jsx(Pagination, { page: gridSelectors === null || gridSelectors === void 0 ? void 0 : gridSelectors.page, itemCount: passDownProps === null || passDownProps === void 0 ? void 0 : passDownProps.totalRowsCount, itemPerPage: (gridSelectors === null || gridSelectors === void 0 ? void 0 : gridSelectors.rowsPerPage) || 10, onPageChange: gridActions === null || gridActions === void 0 ? void 0 : gridActions.setPage, customPaginationHandler: customPaginationHandler }), _jsx(TablePagination, { gridActions: gridActions, gridSelectors: gridSelectors, customPaginationHandler: customPaginationHandler })] })] }) }), manageColumnFormVisible && (_jsx(Modal, { title: _jsx(Trans, { id: "manageColumn.title", message: "Manage columns" }), onClose: onClose, onCancel: onClose, onExtraAction: resetColumnConfig, onConfirm: onConfirmForm, width: "auto", minWidth: "350px", hasFooter: true, extraActionLabel: _jsx(Trans, { id: "dataGrid.buttonClearConfig", message: "Reset config" }), cancelLabel: _jsx(Trans, { id: "form.buttonCancel", message: "Cancel" }), confirmLabel: _jsx(Trans, { id: "form.buttonConfirm", message: "Confirm" }), children: _jsx(ManageColumnForm, { columns: columns, columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions }) }))] }));
63
+ }), columnsConfigValues = _d.columnsConfigValues, setColumnsConfigOptions = _d.setColumnsConfigOptions, onConfirmForm = _d.onConfirmForm, resetColumnConfig = _d.resetColumnConfig, handleDragEnd = _d.handleDragEnd, onCloseForm = _d.onCloseForm, displayColumnsDefinitions = _d.displayColumnsDefinitions, manageColumnsFormDefinitions = _d.manageColumnsFormDefinitions;
64
+ return (_jsxs(ContentContainer, { children: [_jsxs(CommonGridWrap, { children: [_jsx(HidePrint, { children: _jsxs(StyledButtonStrip, { className: "buttonsStrip", children: [!hideControlButtons && (_jsx(ControlButtons, { extraControlButtons: extraControlButtons, gridActions: gridActions, gridSelectors: gridSelectors, eshopSelect: eshopSelect })), _jsx(StyledColumnButton, { type: "button", sizing: "iconLg", appearance: "ghost", icon: _jsx(Settings2, {}), onClick: openManageColumnForm, children: _jsx(H6, { variant: "semiBold", children: _jsx(Trans, { id: "manageColumn.title", message: "Manage column" }) }) })] }) }), _jsx(CommonGridWithStyles, __assign({}, passDownProps, modifiedPassDownProps, { filters: filters, gridRef: gridRef, height: gridHeight, floatingButtonProps: floatingButtonProps, handleDragEnd: handleDragEnd(false), displayColumnsDefinitions: displayColumnsDefinitions, hasColouredRows: true }))] }), _jsx(HidePrint, { children: _jsxs(BottomWrapper, { ref: paginationRef, isFixed: !!gridHeight, children: [processCheckedValues && (_jsx(ActionHead, { rowsData: rowsData, onBatchAction: onBatchAction, gridActions: gridActions, gridSelectors: gridSelectors, actionColumn: actionColumnDefinition, processCheckedValues: processCheckedValues, processCheckedValuesTitle: processCheckedValuesTitle })), _jsxs(x.div, { display: "flex", justifyContent: "center", alignItems: "center", className: "paginatorWrapper", w: "100%", h: window.innerWidth > 1204 ? '60px' : '32px', children: [_jsx(Pagination, { page: gridSelectors === null || gridSelectors === void 0 ? void 0 : gridSelectors.page, itemCount: passDownProps === null || passDownProps === void 0 ? void 0 : passDownProps.totalRowsCount, itemPerPage: (gridSelectors === null || gridSelectors === void 0 ? void 0 : gridSelectors.rowsPerPage) || 10, onPageChange: gridActions === null || gridActions === void 0 ? void 0 : gridActions.setPage, customPaginationHandler: customPaginationHandler }), _jsx(TablePagination, { gridActions: gridActions, gridSelectors: gridSelectors, customPaginationHandler: customPaginationHandler })] })] }) }), manageColumnFormVisible && (_jsx(Modal, { title: _jsx(Trans, { id: "manageColumn.title", message: "Manage columns" }), onClose: onCloseForm, onCancel: onCloseForm, onExtraAction: resetColumnConfig, onConfirm: onConfirmForm, width: "auto", minWidth: "350px", hasFooter: true, extraActionLabel: _jsx(Trans, { id: "dataGrid.buttonClearConfig", message: "Reset config" }), cancelLabel: _jsx(Trans, { id: "form.buttonCancel", message: "Cancel" }), confirmLabel: _jsx(Trans, { id: "form.buttonConfirm", message: "Confirm" }), children: _jsx(ManageColumnForm, { columns: manageColumnsFormDefinitions, columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions, handleDragEnd: handleDragEnd(true) }) }))] }));
65
65
  };
66
66
  export default StyledCommonGrid;
@@ -1,15 +1,15 @@
1
+ import { DropResult } from 'react-beautiful-dnd';
1
2
  import { Settings, ColumnDefinition, ActionColumn, GridSelectorsType, Group, CommonGridProps, GridActionsType } from '../types';
2
3
  type HeadRowProps = {
3
4
  actionColumn?: ActionColumn;
4
5
  columns: ColumnDefinition[];
5
- columnsOrder?: string[];
6
6
  onAddSort: GridActionsType['addSorting'];
7
- setColumnsOrder: (columnsOrder: string[]) => void;
8
7
  sortingValues?: Settings['sorting'];
9
8
  displayColumnsWidth: Required<GridSelectorsType>['columnsWidth'];
10
9
  columnLayout: Required<CommonGridProps>['columnLayout'];
11
10
  handleResizeDrag: (column: string, width: number) => void;
11
+ handleDragEnd: (item: DropResult) => void;
12
12
  groups: Group[];
13
13
  };
14
- declare const HeadRow: ({ columns, actionColumn, onAddSort, setColumnsOrder, columnsOrder, sortingValues, displayColumnsWidth, columnLayout, handleResizeDrag, groups, }: HeadRowProps) => JSX.Element;
14
+ declare const HeadRow: ({ columns, actionColumn, onAddSort, handleDragEnd, sortingValues, displayColumnsWidth, columnLayout, handleResizeDrag, groups, }: HeadRowProps) => JSX.Element;
15
15
  export default HeadRow;
@@ -9,15 +9,6 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
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
12
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
22
13
  import React, { useEffect, useState } from 'react';
23
14
  import { DragDropContext, Droppable, Draggable, } from 'react-beautiful-dnd';
@@ -30,27 +21,11 @@ var getStickyComponent = function (columns, stickyTo, displayColumnsWidth) {
30
21
  };
31
22
  var HeadRow = function (_a) {
32
23
  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;
24
+ var columns = _a.columns, actionColumn = _a.actionColumn, onAddSort = _a.onAddSort, handleDragEnd = _a.handleDragEnd, _c = _a.sortingValues, sortingValues = _c === void 0 ? [] : _c, displayColumnsWidth = _a.displayColumnsWidth, columnLayout = _a.columnLayout, handleResizeDrag = _a.handleResizeDrag, groups = _a.groups;
34
25
  var _d = useState(false), showUIElements = _d[0], setShowUIElements = _d[1];
35
26
  useEffect(function () {
36
27
  setShowUIElements(true);
37
28
  }, []);
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
29
  var _e = useState(false), isDragDisabled = _e[0], setIsDragDisabled = _e[1];
55
30
  var onResizeOver = React.useCallback(function () {
56
31
  setIsDragDisabled(true);
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
2
  import { ColumnConfig, CommonGridProps } from '../../types';
3
+ import { DropResult } from 'react-beautiful-dnd';
3
4
  type ManageColumnProps = {
4
5
  columns?: CommonGridProps['columnsDefinitions'];
5
6
  columnsConfigValues?: string[];
6
7
  setColumnsConfigOptions: (value: React.SetStateAction<{
7
8
  [x: string]: ColumnConfig | {};
8
9
  }>) => void;
10
+ handleDragEnd: (item: DropResult) => void;
9
11
  };
10
- declare const ManageColumnForm: ({ columns, columnsConfigValues, setColumnsConfigOptions }: ManageColumnProps) => JSX.Element;
12
+ declare const ManageColumnForm: ({ columns, columnsConfigValues, setColumnsConfigOptions, handleDragEnd, }: ManageColumnProps) => JSX.Element;
11
13
  export default ManageColumnForm;
@@ -1,11 +1,23 @@
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
+ };
1
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
13
  import { useCallback, useState } from 'react';
3
14
  import { x } from '@xstyled/styled-components';
4
15
  import { ActionRow } from './components/ActionRow';
5
16
  import { Input } from '../../../../Forms/Input/Input';
6
17
  import { i18n } from '@lingui/core';
18
+ import { DragDropContext, Draggable, Droppable, } from 'react-beautiful-dnd';
7
19
  var ManageColumnForm = function (_a) {
8
- var columns = _a.columns, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions;
20
+ var columns = _a.columns, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions, handleDragEnd = _a.handleDragEnd;
9
21
  var _b = useState(''), searchedValue = _b[0], setSearchedValue = _b[1];
10
22
  var onChangeInputValue = useCallback(function (e) {
11
23
  setSearchedValue(e.target.value);
@@ -13,8 +25,8 @@ var ManageColumnForm = function (_a) {
13
25
  var clear = useCallback(function () {
14
26
  setSearchedValue('');
15
27
  }, [setSearchedValue]);
16
- return (_jsxs(x.div, { children: [_jsx(Input, { icon: "search", type: "text", value: searchedValue, placeholder: i18n._({ id: 'manageColumn.searchPlaceholder', message: 'Find column...' }), onChange: onChangeInputValue, onClear: clear, variant: "gray" }), _jsx(x.div, { h: "400px", overflowY: "scroll", mt: "20px", children: columns === null || columns === void 0 ? void 0 : columns.map(function (column, index) {
17
- return (_jsx(ActionRow, { column: column, columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions, searchedValue: searchedValue }, index));
18
- }) })] }));
28
+ return (_jsxs(x.div, { children: [_jsx(Input, { icon: "search", type: "text", value: searchedValue, placeholder: i18n._({ id: 'manageColumn.searchPlaceholder', message: 'Find column...' }), onChange: onChangeInputValue, onClear: clear, variant: "gray" }), _jsx(DragDropContext, { onDragEnd: handleDragEnd, children: _jsx(Droppable, { droppableId: "droppable", direction: "vertical", children: function (droppableProvided) { return (_jsx(x.div, __assign({ h: "400px", overflowY: "scroll", mt: "20px", ref: droppableProvided.innerRef }, droppableProvided.droppableProps, { children: columns === null || columns === void 0 ? void 0 : columns.map(function (column, index) {
29
+ return (_jsx(Draggable, { draggableId: column.name, index: index, isDragDisabled: !!searchedValue, children: function (draggableProvided, snapshot) { return (_jsx(ActionRow, { column: column, innerRef: draggableProvided.innerRef, columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions, searchedValue: searchedValue, draggableProps: draggableProvided.draggableProps, dragHandleProps: draggableProvided.dragHandleProps }, index)); } }, column.name));
30
+ }) }))); } }) })] }));
19
31
  };
20
32
  export default ManageColumnForm;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ColumnConfig, ColumnDefinition } from '../../../types';
3
+ import { DraggableProps, DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
3
4
  type ActionRowProps = {
4
5
  column: ColumnDefinition;
5
6
  columnsConfigValues: string[] | undefined;
@@ -7,6 +8,9 @@ type ActionRowProps = {
7
8
  [x: string]: ColumnConfig | {};
8
9
  }>) => void;
9
10
  searchedValue: string;
11
+ innerRef?: Function;
12
+ draggableProps?: DraggableProps | any;
13
+ dragHandleProps?: DraggableProvidedDragHandleProps | null;
10
14
  };
11
- export declare const ActionRow: ({ column, columnsConfigValues, setColumnsConfigOptions, searchedValue }: ActionRowProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const ActionRow: ({ column, columnsConfigValues, setColumnsConfigOptions, searchedValue, innerRef, draggableProps, dragHandleProps, }: ActionRowProps) => import("react/jsx-runtime").JSX.Element;
12
16
  export {};
@@ -14,7 +14,7 @@ var __assign = (this && this.__assign) || function () {
14
14
  return __assign.apply(this, arguments);
15
15
  };
16
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
- import { useCallback, useState } from 'react';
17
+ import { useCallback, useMemo, useState } from 'react';
18
18
  import { x, th } from '@xstyled/styled-components';
19
19
  import styled from 'styled-components';
20
20
  import Toggle from '../../../../../Elements/Toggle/Toggle';
@@ -22,14 +22,15 @@ import { Group } from '../../../../../Elements/Icon/icons/Group';
22
22
  import { isObject } from 'lodash';
23
23
  import { H6 } from '../../../../../Elements/Typography/Typography';
24
24
  import { i18n } from '@lingui/core';
25
- var RowLayout = styled(x.div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: ", ";\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n height: 52px;\n border: 1px solid ", ";\n border-radius: 8px;\n margin-bottom: 15px;\n"], ["\n display: ", ";\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n height: 52px;\n border: 1px solid ", ";\n border-radius: 8px;\n margin-bottom: 15px;\n"])), function (_a) {
25
+ var RowLayout = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: ", ";\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n height: 52px;\n background-color: white;\n border: 1px solid ", ";\n border-radius: 8px;\n margin-bottom: 15px;\n"], ["\n display: ", ";\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n height: 52px;\n background-color: white;\n border: 1px solid ", ";\n border-radius: 8px;\n margin-bottom: 15px;\n"])), function (_a) {
26
26
  var $isVisible = _a.$isVisible;
27
27
  return ($isVisible ? 'flex' : 'none');
28
28
  }, th.color('lightGray6'));
29
29
  export var ActionRow = function (_a) {
30
30
  var _b, _c, _d, _e, _f;
31
- var column = _a.column, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions, searchedValue = _a.searchedValue;
31
+ var column = _a.column, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions, searchedValue = _a.searchedValue, innerRef = _a.innerRef, draggableProps = _a.draggableProps, dragHandleProps = _a.dragHandleProps;
32
32
  var _g = useState((_b = columnsConfigValues === null || columnsConfigValues === void 0 ? void 0 : columnsConfigValues.includes(column.name)) !== null && _b !== void 0 ? _b : false), isSelected = _g[0], setIsSelected = _g[1];
33
+ var style = useMemo(function () { return (__assign({}, draggableProps === null || draggableProps === void 0 ? void 0 : draggableProps.style)); }, [draggableProps]);
33
34
  var translatedValue = isObject(column === null || column === void 0 ? void 0 : column.title) &&
34
35
  'props' in column.title &&
35
36
  ((_c = column.title) === null || _c === void 0 ? void 0 : _c.props) &&
@@ -42,6 +43,6 @@ export var ActionRow = function (_a) {
42
43
  });
43
44
  setIsSelected(!isSelected);
44
45
  }, [setColumnsConfigOptions, isSelected, column.name]);
45
- return (_jsxs(RowLayout, { "$isVisible": isVisible, children: [_jsxs(x.div, { display: "flex", alignItems: "center", children: [_jsx(x.div, { w: "28px", children: _jsx(Toggle, { name: "", variant: "grid", onChange: handleToggleChange, spaceAround: false, checked: isSelected }) }), _jsx(H6, { variant: "medium", ml: "8px", children: translatedValue })] }), _jsx(Group, {})] }));
46
+ return (_jsxs(RowLayout, __assign({ "$isVisible": isVisible }, draggableProps, dragHandleProps, { ref: innerRef, style: style, children: [_jsxs(x.div, { display: "flex", alignItems: "center", children: [_jsx(x.div, { w: "28px", children: _jsx(Toggle, { name: "", variant: "grid", onChange: handleToggleChange, spaceAround: false, checked: isSelected }) }), _jsx(H6, { variant: "medium", ml: "8px", children: translatedValue })] }), _jsx(Group, {})] })));
46
47
  };
47
48
  var templateObject_1;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { DropResult } from 'react-beautiful-dnd';
2
3
  import { CommonGridProps, GridActionsType, GridSelectorsType } from '../types';
3
4
  type Props = {
4
5
  columns: CommonGridProps['columnsDefinitions'];
@@ -15,5 +16,9 @@ declare const useManageColumn: ({ columns, gridSelectors, gridActions, onClose }
15
16
  }>>;
16
17
  onConfirmForm: () => void;
17
18
  resetColumnConfig: () => void;
19
+ handleDragEnd: (isManageModal?: boolean) => (item: DropResult) => void;
20
+ onCloseForm: () => void;
21
+ displayColumnsDefinitions: import("../types").ColumnDefinition<string>[];
22
+ manageColumnsFormDefinitions: import("../types").ColumnDefinition<string>[];
18
23
  };
19
24
  export default useManageColumn;
@@ -9,12 +9,25 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { useCallback, useMemo, useState } from 'react';
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 { useCallback, useEffect, useMemo, useState } from 'react';
22
+ import { checksColumnsOrder, isColumnOn } from '../utils';
13
23
  var useManageColumn = function (_a) {
14
24
  var columns = _a.columns, gridSelectors = _a.gridSelectors, gridActions = _a.gridActions, onClose = _a.onClose;
15
- var resetGrid = gridActions.resetGrid, setColumnConfig = gridActions.setColumnConfig;
16
- var columnConfig = gridSelectors.columnConfig;
17
- var _b = useState(__assign({}, columnConfig)), columnsConfigOptions = _b[0], setColumnsConfigOptions = _b[1];
25
+ var resetGrid = gridActions.resetGrid, setColumnConfig = gridActions.setColumnConfig, setColumnsOrder = gridActions.setColumnsOrder;
26
+ var columnConfig = gridSelectors.columnConfig, columnsOrder = gridSelectors.columnsOrder;
27
+ var initialColumnsOrder = useMemo(function () { return columns === null || columns === void 0 ? void 0 : columns.map(function (col) { return col.name; }); }, [columns]);
28
+ var columnsOrderValue = (columnsOrder === null || columnsOrder === void 0 ? void 0 : columnsOrder.length) ? columnsOrder : initialColumnsOrder;
29
+ var _b = useState(__assign({}, (columnConfig !== null && columnConfig !== void 0 ? columnConfig : {}))), columnsConfigOptions = _b[0], setColumnsConfigOptions = _b[1];
30
+ var _c = useState(columnsOrderValue), updatedColumnsOrder = _c[0], setUpdatedColumnsOrder = _c[1];
18
31
  var columnsConfigValues = useMemo(function () {
19
32
  return columns === null || columns === void 0 ? void 0 : columns.filter(function (column) {
20
33
  var _a;
@@ -23,12 +36,65 @@ var useManageColumn = function (_a) {
23
36
  }).map(function (column) { return column.name; });
24
37
  }, [columnConfig, columns]);
25
38
  var onConfirmForm = useCallback(function () {
26
- (setColumnConfig === null || setColumnConfig === void 0 ? void 0 : setColumnConfig(columnsConfigOptions)) && (onClose === null || onClose === void 0 ? void 0 : onClose());
27
- }, [columnsConfigOptions, onClose, setColumnConfig]);
39
+ setColumnConfig === null || setColumnConfig === void 0 ? void 0 : setColumnConfig(columnsConfigOptions);
40
+ setColumnsOrder === null || setColumnsOrder === void 0 ? void 0 : setColumnsOrder(columnsConfigValues);
41
+ onClose === null || onClose === void 0 ? void 0 : onClose();
42
+ }, [columnsConfigOptions, updatedColumnsOrder, onClose, setColumnConfig, setColumnsOrder]);
28
43
  var resetColumnConfig = useCallback(function () {
29
- (resetGrid === null || resetGrid === void 0 ? void 0 : resetGrid()) && (onClose === null || onClose === void 0 ? void 0 : onClose());
30
- setColumnsConfigOptions(columnConfig || {});
31
- }, [onClose, resetGrid]);
32
- return { columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions, onConfirmForm: onConfirmForm, resetColumnConfig: resetColumnConfig };
44
+ setUpdatedColumnsOrder(initialColumnsOrder);
45
+ resetGrid === null || resetGrid === void 0 ? void 0 : resetGrid();
46
+ onClose === null || onClose === void 0 ? void 0 : onClose();
47
+ setColumnsConfigOptions({});
48
+ }, [onClose, resetGrid, initialColumnsOrder, columnConfig]);
49
+ var onCloseForm = useCallback(function () {
50
+ setUpdatedColumnsOrder(columnsOrderValue);
51
+ onClose === null || onClose === void 0 ? void 0 : onClose();
52
+ setColumnsConfigOptions({});
53
+ }, [columnsOrderValue, onClose]);
54
+ var getSortedColumns = useCallback(function (orderValues, isManageModal) {
55
+ return (!isManageModal ? columns.filter(function (column) { return isColumnOn(column, columnConfig); }) : columns).toSorted(function (col1, col2) {
56
+ var i = (orderValues || []).indexOf(col1.name);
57
+ var j = (orderValues || []).indexOf(col2.name);
58
+ return i > j ? 1 : i < j ? -1 : 0;
59
+ });
60
+ }, [columnConfig, columns]);
61
+ var displayColumnsDefinitions = useMemo(function () { return getSortedColumns(columnsOrderValue, false); }, [columnsOrderValue]);
62
+ var manageColumnsFormDefinitions = useMemo(function () { return getSortedColumns(updatedColumnsOrder, true); }, [updatedColumnsOrder]);
63
+ var handleDragEnd = useCallback(function (isManageModal) {
64
+ if (isManageModal === void 0) { isManageModal = false; }
65
+ return function (item) {
66
+ var destination = item.destination, source = item.source;
67
+ var to = destination === null || destination === void 0 ? void 0 : destination.index;
68
+ var from = source === null || source === void 0 ? void 0 : source.index;
69
+ if (to === from || !destination) {
70
+ return;
71
+ }
72
+ var columns = isManageModal ? manageColumnsFormDefinitions : displayColumnsDefinitions;
73
+ var newOrderColumns = __spreadArray([], (isManageModal ? updatedColumnsOrder : columnsOrderValue), true);
74
+ var fromIndex = newOrderColumns.findIndex(function (column) { return columns[from].name === column; });
75
+ var toIndex = newOrderColumns.findIndex(function (column) { return columns[to !== null && to !== void 0 ? to : 0].name === column; });
76
+ // move column from a position to the new position
77
+ var column = newOrderColumns[fromIndex];
78
+ newOrderColumns.splice(fromIndex, 1);
79
+ newOrderColumns.splice(toIndex === -1 ? 0 : toIndex, 0, column);
80
+ if (!isManageModal) {
81
+ setColumnsOrder === null || setColumnsOrder === void 0 ? void 0 : setColumnsOrder(newOrderColumns);
82
+ }
83
+ setUpdatedColumnsOrder(newOrderColumns);
84
+ };
85
+ }, [updatedColumnsOrder, columnsOrderValue, setColumnsOrder, manageColumnsFormDefinitions, displayColumnsDefinitions]);
86
+ useEffect(function () {
87
+ checksColumnsOrder(columnsOrderValue, columns);
88
+ }, []);
89
+ return {
90
+ columnsConfigValues: columnsConfigValues,
91
+ setColumnsConfigOptions: setColumnsConfigOptions,
92
+ onConfirmForm: onConfirmForm,
93
+ resetColumnConfig: resetColumnConfig,
94
+ handleDragEnd: handleDragEnd,
95
+ onCloseForm: onCloseForm,
96
+ displayColumnsDefinitions: displayColumnsDefinitions,
97
+ manageColumnsFormDefinitions: manageColumnsFormDefinitions,
98
+ };
33
99
  };
34
100
  export default useManageColumn;
@@ -6,7 +6,7 @@ import { LinguiContainer } from '../utils/linguiContainer';
6
6
  export default {
7
7
  title: '@Blocks/CommonGrid',
8
8
  };
9
- export var LoadingState = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), gridSelectors: gridSelectors, gridActions: gridDummyActions, isLoading: true, hideColumnConfig: true }) })); };
9
+ export var LoadingState = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), gridSelectors: gridSelectors, gridActions: gridDummyActions, isLoading: true }) })); };
10
10
  LoadingState.story = {
11
11
  name: 'Loading state',
12
12
  };
@@ -6,7 +6,7 @@ import { LinguiContainer } from '../utils/linguiContainer';
6
6
  export default {
7
7
  title: '@Blocks/CommonGrid',
8
8
  };
9
- export var ManyColumnsNoScrollLayout = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { rowsData: createOversizedRandomData(5), columnsDefinitions: oversizedColumnDefinition, columnLayout: "no-scroll", hideColumnConfig: true, gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
9
+ export var ManyColumnsNoScrollLayout = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { rowsData: createOversizedRandomData(5), columnsDefinitions: oversizedColumnDefinition, columnLayout: "no-scroll", gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
10
10
  ManyColumnsNoScrollLayout.story = {
11
11
  name: 'many columns no-scroll layout',
12
12
  };
@@ -6,7 +6,7 @@ import { LinguiContainer } from '../utils/linguiContainer';
6
6
  export default {
7
7
  title: '@Blocks/CommonGrid',
8
8
  };
9
- export var ManyColumnsNormalLayoutANoControls = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { rowsData: createOversizedRandomData(5), columnsDefinitions: oversizedColumnDefinition, hideColumnConfig: true, gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
9
+ export var ManyColumnsNormalLayoutANoControls = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { rowsData: createOversizedRandomData(5), columnsDefinitions: oversizedColumnDefinition, gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
10
10
  ManyColumnsNormalLayoutANoControls.story = {
11
11
  name: 'many columns normal layout a no controls',
12
12
  };
@@ -8,7 +8,7 @@ export default {
8
8
  title: '@Blocks/CommonGrid',
9
9
  };
10
10
  export var WithCustomGridActions = function () {
11
- return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), onRowAction: onRowAction, gridSelectors: gridSelectors, gridActions: gridDummyActions, hideColumnConfig: true }) }));
11
+ return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), onRowAction: onRowAction, gridSelectors: gridSelectors, gridActions: gridDummyActions }) }));
12
12
  };
13
13
  WithCustomGridActions.story = {
14
14
  name: 'With custom grid actions',
@@ -6,8 +6,10 @@ export declare const ContentContainer: import("styled-components").StyledCompone
6
6
  export declare const CommonGridWrap: import("styled-components").StyledComponent<(props: Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "color">) => import("react").ReactElement<any, "div">, import("@xstyled/system").Theme, import("@xstyled/system").SystemProps<import("@xstyled/system").Theme>, "color">;
7
7
  export declare const StyledButtonStrip: import("styled-components").StyledComponent<(props: Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "color">) => import("react").ReactElement<any, "div">, import("@xstyled/system").Theme, import("@xstyled/system").SystemProps<import("@xstyled/system").Theme>, "color">;
8
8
  export declare const StyledColumnButton: import("styled-components").StyledComponent<({ isLoading, loadingText, icon, appearance, disabled, sizing, buttonRef, onClick, fullWidth, ...props }: import("../../Elements/Button/types").Props) => JSX.Element, import("@xstyled/system").Theme, {}, never>;
9
- export declare const CommonGridWithStyles: import("styled-components").StyledComponent<({ filters, gridSelectors, gridActions, isLoading, rowsData, hasColouredRows, columnsDefinitions, actionColumnDefinition, allowRowSelect, allowRowSelectOnAction, onRowAction, onRowEditClick, onRowReadClick, onRowClick, columnLayout, hideColumnConfig, className, gridRef, minColumnWidth, errorMessage, floatingButtonProps, }: import("./types").CommonGridProps & {
9
+ export declare const CommonGridWithStyles: import("styled-components").StyledComponent<({ filters, handleDragEnd, gridSelectors, gridActions, isLoading, rowsData, hasColouredRows, columnsDefinitions, actionColumnDefinition, allowRowSelect, allowRowSelectOnAction, onRowAction, onRowEditClick, onRowReadClick, onRowClick, columnLayout, displayColumnsDefinitions, className, gridRef, minColumnWidth, errorMessage, floatingButtonProps, }: import("./types").CommonGridProps & {
10
10
  filters?: import("./types").FiltersConfig | undefined;
11
+ handleDragEnd: (item: import("react-beautiful-dnd").DropResult) => void;
12
+ displayColumnsDefinitions: import("./types").ColumnDefinition[];
11
13
  }) => JSX.Element, import("@xstyled/system").Theme, {
12
14
  onRowClick?: Function | undefined;
13
15
  height?: number | undefined;
@@ -255,7 +255,6 @@ export type CommonGridProps<TData extends RowProps = RowProps> = {
255
255
  onBatchAction?: OnBatchActionFn;
256
256
  columnLayout?: ColumnLayout;
257
257
  confirmOnReset?: () => boolean;
258
- hideColumnConfig?: boolean;
259
258
  className?: string;
260
259
  gridRef?: React.MutableRefObject<HTMLElement>;
261
260
  minColumnWidth?: number;
@@ -299,7 +298,7 @@ export type GridProps = Omit<CommonGridProps, 'filters'> & {
299
298
  queryRowsParam?: number | string;
300
299
  customPaginationHandler?: (page: number, rows: number) => void;
301
300
  };
302
- export type PageGridProps = Omit<GridProps, 'rowsData' | 'totalRowsCount' | 'columnsDefinitions' | 'actionColumnDefinition' | 'hideColumnConfig' | 'minColumnWidth' | 'columnLayout'>;
301
+ export type PageGridProps = Omit<GridProps, 'rowsData' | 'totalRowsCount' | 'columnsDefinitions' | 'actionColumnDefinition' | 'minColumnWidth' | 'columnLayout'>;
303
302
  export type Item = {
304
303
  label: string | JSX.Element;
305
304
  value: string;
@@ -18,3 +18,4 @@ export declare const getStickyCollClassNames: (sticky: boolean, stickTo?: StickT
18
18
  export declare const GRID_MIN_ROWS = 6;
19
19
  export declare const rowHeight = 40;
20
20
  export declare const getFilters: (optimizeFilters: boolean) => FiltersConfig;
21
+ export declare const checksColumnsOrder: (colsOrder: string[], columnsDefinitions: ColumnDefinition[]) => void;
@@ -77,3 +77,16 @@ export var getFilters = function (optimizeFilters) {
77
77
  filters.text.defaultExtraProps = { defaultComparator: 'eq' };
78
78
  return filters;
79
79
  };
80
+ export var checksColumnsOrder = function (colsOrder, columnsDefinitions) {
81
+ var stickyRightColls = columnsDefinitions.filter(function (col) { return col.sticky === true && col.stickTo === 'right'; });
82
+ var stickyLeftColls = columnsDefinitions.filter(function (col) { return col.sticky === true && col.stickTo !== 'right'; });
83
+ if (stickyLeftColls.length > 1 || stickyRightColls.length > 1) {
84
+ console.error('Grid can have only sticky column on each side.');
85
+ }
86
+ if (stickyLeftColls.length && colsOrder.indexOf(stickyLeftColls[0].name) !== 0) {
87
+ console.error('The left sticky column should be the first one in a row');
88
+ }
89
+ if (stickyRightColls.length && colsOrder.indexOf(stickyRightColls[0].name) !== colsOrder.length - 1) {
90
+ console.error('The Right sticky column should be the last one in a row');
91
+ }
92
+ };
@@ -8,6 +8,9 @@ type CustomTheme = Omit<BaseStylesTheme, 'colors'> & {
8
8
  inputBorderHoverColor: string;
9
9
  menuHoverBackgroundColor: string;
10
10
  dropdownIndicatorColor: string;
11
+ hoverToActiveOptionBackground: string;
12
+ scrollbarThumbColor: string;
13
+ scrollbarTrackColor: string;
11
14
  };
12
15
  textWeightRegular: string;
13
16
  textWeightSemiBold: string;
@@ -58,7 +58,13 @@ export var CustomStyles = __assign(__assign({}, baseStylesConfig), { control: fu
58
58
  marginBottom: '2px',
59
59
  lineHeight: '22px',
60
60
  borderRadius: th.radius('ml')({ theme: selectProps === null || selectProps === void 0 ? void 0 : selectProps.systemTheme }),
61
- '&:hover': { backgroundColor: !isDisabled ? theme.colors.menuHoverBackgroundColor : undefined },
61
+ '&:hover': {
62
+ backgroundColor: isSelected
63
+ ? theme.colors.hoverToActiveOptionBackground
64
+ : !isDisabled
65
+ ? theme.colors.menuHoverBackgroundColor
66
+ : undefined,
67
+ },
62
68
  };
63
69
  }, menu: function (styles, state) {
64
70
  var _a;
@@ -95,6 +101,9 @@ export var getCustomTheme = function (theme, optionVariant, useFilterSubvariant)
95
101
  menuBackgroundColor: th.color('white')({ theme: theme }),
96
102
  menuHoverBackgroundColor: th.color('bgLightGray1')({ theme: theme }),
97
103
  dropdownIndicatorColor: th.color('gray1')({ theme: theme }),
104
+ hoverToActiveOptionBackground: th.color('red30')({ theme: theme }),
105
+ scrollbarThumbColor: th.color('lightGray5')({ theme: theme }),
106
+ scrollbarTrackColor: th.color('bgLightGray1')({ theme: theme }),
98
107
  };
99
108
  return function (reactSelectTheme) {
100
109
  return __assign(__assign({}, reactSelectTheme), { colors: customColors, focusBoxShadow: null, height: useFilterSubvariant ? '32px' : '38px', textWeightRegular: th.fontWeight('regular')({ theme: theme }), textWeightSemiBold: th.fontWeight('semiBold')({ theme: theme }), textWeightBold: th.fontWeight('bold')({ theme: theme }), optionVariant: optionVariant, borderRadius: th.radius('lg')({ theme: theme }), font: th.font('primary')({ theme: theme }), narrowIndicators: !!useFilterSubvariant });
@@ -64,7 +64,7 @@ var defaultTheme = {
64
64
  yellow2: '#F2E871',
65
65
  red10: '#FFF6F4',
66
66
  red20: '#FFEBE6',
67
- red30: '#fec1cb',
67
+ red30: '#FFDAD1',
68
68
  red50: '#ff7c7b',
69
69
  red70: '#CF2013',
70
70
  red1: '#DB2B19',