@mailstep/design-system 0.6.3-beta.16 → 0.6.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mailstep/design-system",
3
- "version": "0.6.3-beta.16",
3
+ "version": "0.6.3-beta.2",
4
4
  "license": "ISC",
5
5
  "type": "module",
6
6
  "main": "./ui/index.js",
@@ -1,9 +1,6 @@
1
- import { CommonGridProps, FiltersConfig, ColumnDefinition } from './types';
2
- import { DropResult } from 'react-beautiful-dnd';
1
+ import { CommonGridProps, FiltersConfig } from './types';
3
2
  type Props = CommonGridProps & {
4
3
  filters?: FiltersConfig;
5
- handleDragEnd: (item: DropResult) => void;
6
- displayColumnsDefinitions: ColumnDefinition[];
7
4
  };
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;
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;
9
6
  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 { getGroups } from './utils';
24
+ import { isColumnOn, 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,16 +35,47 @@ var defaultVoidFunction = function () {
35
35
  };
36
36
  var defaultUxState = initialState.uxState;
37
37
  var defaultColumnsWidth = {};
38
+ var defaultPerPageOptions = [10, 20, 50, 100];
38
39
  var CommonGrid = function (_a) {
39
- var filters = _a.filters, handleDragEnd = _a.handleDragEnd,
40
+ var filters = _a.filters,
40
41
  // redux props
41
42
  gridSelectors = _a.gridSelectors, gridActions = _a.gridActions,
42
43
  // input props
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;
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;
44
45
  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;
45
46
  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;
46
47
  var handleRowsKeyDown = useRowsKeyControls(rowsData, uxState, handleUxChange);
47
48
  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]);
48
79
  var GridMessage;
49
80
  var messageClass = 'info';
50
81
  if (isLoading)
@@ -63,7 +94,7 @@ var CommonGrid = function (_a) {
63
94
  gridBoxRef.current = node;
64
95
  !!gridRef && (gridRef.current = node);
65
96
  }, []);
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 &&
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 &&
67
98
  rowsData &&
68
99
  displayColumnsDefinitions &&
69
100
  rowsData.map(function (row, index) {
@@ -40,7 +40,7 @@ import ManageColumnForm from './components/ManageColumnForm';
40
40
  import { Trans } from '@lingui/react';
41
41
  import { Settings2 } from '../../Elements/Icon/icons/Settings2';
42
42
  var StyledCommonGrid = function (props) {
43
- var _a = props.optimizeFilters, optimizeFilters = _a === void 0 ? false : _a, extraControlButtons = props.extraControlButtons, eshopSelect = props.eshopSelect, onBatchAction = props.onBatchAction, processCheckedValues = props.processCheckedValues, processCheckedValuesTitle = props.processCheckedValuesTitle, hideControlButtons = props.hideControlButtons, floatingButtonProps = props.floatingButtonProps, queryRowsParam = props.queryRowsParam, customPaginationHandler = props.customPaginationHandler, hideColumnConfig = props.hideColumnConfig, passDownProps = __rest(props, ["optimizeFilters", "extraControlButtons", "eshopSelect", "onBatchAction", "processCheckedValues", "processCheckedValuesTitle", "hideControlButtons", "floatingButtonProps", "queryRowsParam", "customPaginationHandler", "hideColumnConfig"]);
43
+ var _a = props.optimizeFilters, optimizeFilters = _a === void 0 ? false : _a, extraControlButtons = props.extraControlButtons, eshopSelect = props.eshopSelect, onBatchAction = props.onBatchAction, processCheckedValues = props.processCheckedValues, processCheckedValuesTitle = props.processCheckedValuesTitle, hideControlButtons = props.hideControlButtons, floatingButtonProps = props.floatingButtonProps, queryRowsParam = props.queryRowsParam, customPaginationHandler = props.customPaginationHandler, passDownProps = __rest(props, ["optimizeFilters", "extraControlButtons", "eshopSelect", "onBatchAction", "processCheckedValues", "processCheckedValuesTitle", "hideControlButtons", "floatingButtonProps", "queryRowsParam", "customPaginationHandler"]);
44
44
  var gridActions = passDownProps.gridActions, gridSelectors = passDownProps.gridSelectors, rowsData = passDownProps.rowsData, actionColumnDefinition = passDownProps.actionColumnDefinition;
45
45
  var _b = useGetGridHeight(), gridHeight = _b.gridHeight, gridRef = _b.gridRef, paginationRef = _b.paginationRef;
46
46
  useEffect(function () {
@@ -60,8 +60,7 @@ var StyledCommonGrid = function (props) {
60
60
  gridActions: gridActions,
61
61
  gridSelectors: gridSelectors,
62
62
  onClose: onClose,
63
- hideColumnConfig: hideColumnConfig,
64
- }), columnsConfigValues = _d.columnsConfigValues, setColumnsConfigOptions = _d.setColumnsConfigOptions, onConfirmForm = _d.onConfirmForm, resetColumnConfig = _d.resetColumnConfig, handleDragEnd = _d.handleDragEnd, onCloseForm = _d.onCloseForm, displayColumnsDefinitions = _d.displayColumnsDefinitions, manageColumnsFormDefinitions = _d.manageColumnsFormDefinitions;
65
- 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) }) }))] }));
63
+ }), columnsConfigValues = _d.columnsConfigValues, setColumnsConfigOptions = _d.setColumnsConfigOptions, onConfirmForm = _d.onConfirmForm, resetColumnConfig = _d.resetColumnConfig, handleDragEnd = _d.handleDragEnd, onCloseForm = _d.onCloseForm, displayColumnsDefinitions = _d.displayColumnsDefinitions;
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: 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: displayColumnsDefinitions, columnsConfigValues: columnsConfigValues, setColumnsConfigOptions: setColumnsConfigOptions, handleDragEnd: handleDragEnd }) }))] }));
66
65
  };
67
66
  export default StyledCommonGrid;
@@ -1,15 +1,15 @@
1
- import { DropResult } from 'react-beautiful-dnd';
2
1
  import { Settings, ColumnDefinition, ActionColumn, GridSelectorsType, Group, CommonGridProps, GridActionsType } from '../types';
3
2
  type HeadRowProps = {
4
3
  actionColumn?: ActionColumn;
5
4
  columns: ColumnDefinition[];
5
+ columnsOrder?: string[];
6
6
  onAddSort: GridActionsType['addSorting'];
7
+ setColumnsOrder: (columnsOrder: string[]) => void;
7
8
  sortingValues?: Settings['sorting'];
8
9
  displayColumnsWidth: Required<GridSelectorsType>['columnsWidth'];
9
10
  columnLayout: Required<CommonGridProps>['columnLayout'];
10
11
  handleResizeDrag: (column: string, width: number) => void;
11
- handleDragEnd: (item: DropResult) => void;
12
12
  groups: Group[];
13
13
  };
14
- declare const HeadRow: ({ columns, actionColumn, onAddSort, handleDragEnd, sortingValues, displayColumnsWidth, columnLayout, handleResizeDrag, groups, }: HeadRowProps) => JSX.Element;
14
+ declare const HeadRow: ({ columns, actionColumn, onAddSort, setColumnsOrder, columnsOrder, sortingValues, displayColumnsWidth, columnLayout, handleResizeDrag, groups, }: HeadRowProps) => JSX.Element;
15
15
  export default HeadRow;
@@ -9,6 +9,15 @@ 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
+ };
12
21
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
22
  import React, { useEffect, useState } from 'react';
14
23
  import { DragDropContext, Droppable, Draggable, } from 'react-beautiful-dnd';
@@ -21,11 +30,27 @@ var getStickyComponent = function (columns, stickyTo, displayColumnsWidth) {
21
30
  };
22
31
  var HeadRow = function (_a) {
23
32
  var _b;
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;
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;
25
34
  var _d = useState(false), showUIElements = _d[0], setShowUIElements = _d[1];
26
35
  useEffect(function () {
27
36
  setShowUIElements(true);
28
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 === -1 ? 0 : toIndex, 0, column);
52
+ setColumnsOrder(newOrderColumns);
53
+ }, [setColumnsOrder, columnsOrder, columns]);
29
54
  var _e = useState(false), isDragDisabled = _e[0], setIsDragDisabled = _e[1];
30
55
  var onResizeOver = React.useCallback(function () {
31
56
  setIsDragDisabled(true);
@@ -6,9 +6,8 @@ type Props = {
6
6
  gridActions: GridActionsType;
7
7
  gridSelectors: GridSelectorsType;
8
8
  onClose?: () => void;
9
- hideColumnConfig?: boolean;
10
9
  };
11
- declare const useManageColumn: ({ columns, gridSelectors, gridActions, onClose, hideColumnConfig }: Props) => {
10
+ declare const useManageColumn: ({ columns, gridSelectors, gridActions, onClose }: Props) => {
12
11
  columnsConfigValues: string[];
13
12
  setColumnsConfigOptions: import("react").Dispatch<import("react").SetStateAction<{
14
13
  [x: string]: {
@@ -17,9 +16,8 @@ declare const useManageColumn: ({ columns, gridSelectors, gridActions, onClose,
17
16
  }>>;
18
17
  onConfirmForm: () => void;
19
18
  resetColumnConfig: () => void;
20
- handleDragEnd: (isManageModal?: boolean) => (item: DropResult) => void;
19
+ handleDragEnd: (item: DropResult) => void;
21
20
  onCloseForm: () => void;
22
21
  displayColumnsDefinitions: import("../types").ColumnDefinition<string>[];
23
- manageColumnsFormDefinitions: import("../types").ColumnDefinition<string>[];
24
22
  };
25
23
  export default useManageColumn;
@@ -18,16 +18,14 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
18
  }
19
19
  return to.concat(ar || Array.prototype.slice.call(from));
20
20
  };
21
- import { useCallback, useEffect, useMemo, useState } from 'react';
22
- import { checksColumnsOrder, isColumnOn } from '../utils';
21
+ import { useCallback, useMemo, useState } from 'react';
23
22
  var useManageColumn = function (_a) {
24
- var columns = _a.columns, gridSelectors = _a.gridSelectors, gridActions = _a.gridActions, onClose = _a.onClose, hideColumnConfig = _a.hideColumnConfig;
23
+ var columns = _a.columns, gridSelectors = _a.gridSelectors, gridActions = _a.gridActions, onClose = _a.onClose;
25
24
  var resetGrid = gridActions.resetGrid, setColumnConfig = gridActions.setColumnConfig, setColumnsOrder = gridActions.setColumnsOrder;
26
25
  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];
26
+ var _b = useState(__assign({}, columnConfig)), columnsConfigOptions = _b[0], setColumnsConfigOptions = _b[1];
27
+ var _c = useState(columnsOrder || []), updatedColumnsOrder = _c[0], setUpdatedColumnsOrder = _c[1];
28
+ console.log('columnConfig', columnConfig, 'columnsOrder', columnsOrder, 'columnsConfigOptions', columnsConfigOptions, 'updatedColumnsOrder', updatedColumnsOrder);
31
29
  var columnsConfigValues = useMemo(function () {
32
30
  return columns === null || columns === void 0 ? void 0 : columns.filter(function (column) {
33
31
  var _a;
@@ -39,52 +37,42 @@ var useManageColumn = function (_a) {
39
37
  setColumnConfig === null || setColumnConfig === void 0 ? void 0 : setColumnConfig(columnsConfigOptions);
40
38
  setColumnsOrder === null || setColumnsOrder === void 0 ? void 0 : setColumnsOrder(updatedColumnsOrder);
41
39
  onClose === null || onClose === void 0 ? void 0 : onClose();
42
- }, [columnsConfigOptions, updatedColumnsOrder, onClose, setColumnConfig, setColumnsOrder]);
40
+ }, [columnsConfigOptions, updatedColumnsOrder, onClose, setColumnConfig]);
43
41
  var resetColumnConfig = useCallback(function () {
44
- setUpdatedColumnsOrder(initialColumnsOrder);
45
- resetGrid === null || resetGrid === void 0 ? void 0 : resetGrid();
46
- onClose === null || onClose === void 0 ? void 0 : onClose();
42
+ setUpdatedColumnsOrder(columnsOrder || []);
43
+ if (resetGrid) {
44
+ resetGrid();
45
+ onClose === null || onClose === void 0 ? void 0 : onClose();
46
+ }
47
47
  setColumnsConfigOptions(columnConfig || {});
48
- }, [onClose, resetGrid, initialColumnsOrder, columnConfig]);
48
+ }, [onClose, resetGrid]);
49
49
  var onCloseForm = useCallback(function () {
50
- setUpdatedColumnsOrder(columnsOrderValue);
50
+ setUpdatedColumnsOrder(columnsOrder !== null && columnsOrder !== void 0 ? columnsOrder : []);
51
51
  onClose === null || onClose === void 0 ? void 0 : onClose();
52
- }, [columnsOrderValue, onClose]);
53
- var getSortedColumns = useCallback(function (orderValues) {
54
- return (!hideColumnConfig ? columns.filter(function (column) { return isColumnOn(column, columnConfig); }) : columns).toSorted(function (col1, col2) {
55
- var i = (orderValues || []).indexOf(col1.name);
56
- var j = (orderValues || []).indexOf(col2.name);
52
+ }, []);
53
+ var handleDragEnd = useCallback(function (item) {
54
+ var destination = item.destination, source = item.source;
55
+ var to = destination === null || destination === void 0 ? void 0 : destination.index;
56
+ var from = source === null || source === void 0 ? void 0 : source.index;
57
+ if (to === from || !destination) {
58
+ return;
59
+ }
60
+ var newOrderColumns = __spreadArray([], updatedColumnsOrder, true);
61
+ var fromIndex = newOrderColumns.findIndex(function (column) { return columns[from].name === column; });
62
+ var toIndex = newOrderColumns.findIndex(function (column) { return to && columns[to].name === column; });
63
+ // move column from a position to the new position
64
+ var column = newOrderColumns[fromIndex];
65
+ newOrderColumns.splice(fromIndex, 1);
66
+ newOrderColumns.splice(toIndex === -1 ? 0 : toIndex, 0, column);
67
+ setUpdatedColumnsOrder(newOrderColumns);
68
+ }, [columns, updatedColumnsOrder]);
69
+ var displayColumnsDefinitions = useMemo(function () {
70
+ return columns.sort(function (col1, col2) {
71
+ var i = (updatedColumnsOrder || []).indexOf(col1.name);
72
+ var j = (updatedColumnsOrder || []).indexOf(col2.name);
57
73
  return i > j ? 1 : i < j ? -1 : 0;
58
74
  });
59
- }, [hideColumnConfig, columnConfig, columns]);
60
- var displayColumnsDefinitions = useMemo(function () { return getSortedColumns(columnsOrderValue); }, [columnsOrderValue]);
61
- var manageColumnsFormDefinitions = useMemo(function () { return getSortedColumns(updatedColumnsOrder); }, [updatedColumnsOrder]);
62
- var handleDragEnd = useCallback(function (isManageModal) {
63
- if (isManageModal === void 0) { isManageModal = false; }
64
- return function (item) {
65
- var destination = item.destination, source = item.source;
66
- var to = destination === null || destination === void 0 ? void 0 : destination.index;
67
- var from = source === null || source === void 0 ? void 0 : source.index;
68
- if (to === from || !destination) {
69
- return;
70
- }
71
- var columns = isManageModal ? manageColumnsFormDefinitions : displayColumnsDefinitions;
72
- var newOrderColumns = __spreadArray([], (isManageModal ? updatedColumnsOrder : columnsOrderValue), true);
73
- var fromIndex = newOrderColumns.findIndex(function (column) { return columns[from].name === column; });
74
- var toIndex = newOrderColumns.findIndex(function (column) { return columns[to !== null && to !== void 0 ? to : 0].name === column; });
75
- // move column from a position to the new position
76
- var column = newOrderColumns[fromIndex];
77
- newOrderColumns.splice(fromIndex, 1);
78
- newOrderColumns.splice(toIndex === -1 ? 0 : toIndex, 0, column);
79
- if (!isManageModal) {
80
- setColumnsOrder === null || setColumnsOrder === void 0 ? void 0 : setColumnsOrder(newOrderColumns);
81
- }
82
- setUpdatedColumnsOrder(newOrderColumns);
83
- };
84
- }, [updatedColumnsOrder, columnsOrderValue, setColumnsOrder, manageColumnsFormDefinitions, displayColumnsDefinitions]);
85
- useEffect(function () {
86
- checksColumnsOrder(columnsOrderValue, columns);
87
- }, []);
75
+ }, [columns, updatedColumnsOrder]);
88
76
  return {
89
77
  columnsConfigValues: columnsConfigValues,
90
78
  setColumnsConfigOptions: setColumnsConfigOptions,
@@ -93,7 +81,6 @@ var useManageColumn = function (_a) {
93
81
  handleDragEnd: handleDragEnd,
94
82
  onCloseForm: onCloseForm,
95
83
  displayColumnsDefinitions: displayColumnsDefinitions,
96
- manageColumnsFormDefinitions: manageColumnsFormDefinitions,
97
84
  };
98
85
  };
99
86
  export default useManageColumn;
@@ -6,10 +6,8 @@ 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, handleDragEnd, gridSelectors, gridActions, isLoading, rowsData, hasColouredRows, columnsDefinitions, actionColumnDefinition, allowRowSelect, allowRowSelectOnAction, onRowAction, onRowEditClick, onRowReadClick, onRowClick, columnLayout, displayColumnsDefinitions, className, gridRef, minColumnWidth, errorMessage, floatingButtonProps, }: import("./types").CommonGridProps & {
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 & {
10
10
  filters?: import("./types").FiltersConfig | undefined;
11
- handleDragEnd: (item: import("react-beautiful-dnd").DropResult) => void;
12
- displayColumnsDefinitions: import("./types").ColumnDefinition[];
13
11
  }) => JSX.Element, import("@xstyled/system").Theme, {
14
12
  onRowClick?: Function | undefined;
15
13
  height?: number | undefined;
@@ -18,4 +18,3 @@ 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,16 +77,3 @@ 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
- };