@mailstep/design-system 0.6.4 → 0.6.5-beta.1

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 (31) hide show
  1. package/package.json +1 -1
  2. package/ui/Blocks/CommonGrid/CommonGrid.d.ts +2 -5
  3. package/ui/Blocks/CommonGrid/CommonGrid.js +35 -4
  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 +26 -1
  7. package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.d.ts +1 -3
  8. package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.js +4 -16
  9. package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.d.ts +1 -5
  10. package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.js +4 -5
  11. package/ui/Blocks/CommonGrid/hooks/useManageColumn.d.ts +0 -5
  12. package/ui/Blocks/CommonGrid/hooks/useManageColumn.js +10 -76
  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 +1 -3
  18. package/ui/Blocks/CommonGrid/types.d.ts +2 -1
  19. package/ui/Blocks/CommonGrid/utils/index.d.ts +0 -1
  20. package/ui/Blocks/CommonGrid/utils/index.js +0 -13
  21. package/ui/Elements/Pagination/Pagination.d.ts +4 -2
  22. package/ui/Elements/Pagination/Pagination.js +11 -15
  23. package/ui/Elements/Pagination/index.d.ts +1 -0
  24. package/ui/Elements/Pagination/stories/Pagination.stories.d.ts +3 -2
  25. package/ui/Elements/Pagination/stories/Pagination.stories.js +28 -2
  26. package/ui/Elements/Select/themes/formStyles.d.ts +0 -3
  27. package/ui/Elements/Select/themes/formStyles.js +1 -10
  28. package/ui/Elements/Spinner/styles.js +5 -5
  29. package/ui/ThemeProvider/themes/default.js +1 -1
  30. package/ui/index.es.js +10000 -10023
  31. package/ui/index.umd.js +431 -432
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mailstep/design-system",
3
- "version": "0.6.4",
3
+ "version": "0.6.5-beta.1",
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) {
@@ -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, 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) }) }))] }));
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, radius: window.innerWidth < 768 ? 3 : 5, rate: window.innerWidth < 768 ? 1 : 4 }), _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 }) }))] }));
65
65
  };
66
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, 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);
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
2
  import { ColumnConfig, CommonGridProps } from '../../types';
3
- import { DropResult } from 'react-beautiful-dnd';
4
3
  type ManageColumnProps = {
5
4
  columns?: CommonGridProps['columnsDefinitions'];
6
5
  columnsConfigValues?: string[];
7
6
  setColumnsConfigOptions: (value: React.SetStateAction<{
8
7
  [x: string]: ColumnConfig | {};
9
8
  }>) => void;
10
- handleDragEnd: (item: DropResult) => void;
11
9
  };
12
- declare const ManageColumnForm: ({ columns, columnsConfigValues, setColumnsConfigOptions, handleDragEnd, }: ManageColumnProps) => JSX.Element;
10
+ declare const ManageColumnForm: ({ columns, columnsConfigValues, setColumnsConfigOptions }: ManageColumnProps) => JSX.Element;
13
11
  export default ManageColumnForm;
@@ -1,23 +1,11 @@
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
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
2
  import { useCallback, useState } from 'react';
14
3
  import { x } from '@xstyled/styled-components';
15
4
  import { ActionRow } from './components/ActionRow';
16
5
  import { Input } from '../../../../Forms/Input/Input';
17
6
  import { i18n } from '@lingui/core';
18
- import { DragDropContext, Draggable, Droppable, } from 'react-beautiful-dnd';
19
7
  var ManageColumnForm = function (_a) {
20
- var columns = _a.columns, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions, handleDragEnd = _a.handleDragEnd;
8
+ var columns = _a.columns, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions;
21
9
  var _b = useState(''), searchedValue = _b[0], setSearchedValue = _b[1];
22
10
  var onChangeInputValue = useCallback(function (e) {
23
11
  setSearchedValue(e.target.value);
@@ -25,8 +13,8 @@ var ManageColumnForm = function (_a) {
25
13
  var clear = useCallback(function () {
26
14
  setSearchedValue('');
27
15
  }, [setSearchedValue]);
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
- }) }))); } }) })] }));
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
+ }) })] }));
31
19
  };
32
20
  export default ManageColumnForm;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { ColumnConfig, ColumnDefinition } from '../../../types';
3
- import { DraggableProps, DraggableProvidedDragHandleProps } from 'react-beautiful-dnd';
4
3
  type ActionRowProps = {
5
4
  column: ColumnDefinition;
6
5
  columnsConfigValues: string[] | undefined;
@@ -8,9 +7,6 @@ type ActionRowProps = {
8
7
  [x: string]: ColumnConfig | {};
9
8
  }>) => void;
10
9
  searchedValue: string;
11
- innerRef?: Function;
12
- draggableProps?: DraggableProps | any;
13
- dragHandleProps?: DraggableProvidedDragHandleProps | null;
14
10
  };
15
- export declare const ActionRow: ({ column, columnsConfigValues, setColumnsConfigOptions, searchedValue, innerRef, draggableProps, dragHandleProps, }: ActionRowProps) => import("react/jsx-runtime").JSX.Element;
11
+ export declare const ActionRow: ({ column, columnsConfigValues, setColumnsConfigOptions, searchedValue }: ActionRowProps) => import("react/jsx-runtime").JSX.Element;
16
12
  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, useMemo, useState } from 'react';
17
+ import { useCallback, 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,15 +22,14 @@ 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.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) {
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) {
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, innerRef = _a.innerRef, draggableProps = _a.draggableProps, dragHandleProps = _a.dragHandleProps;
31
+ var column = _a.column, columnsConfigValues = _a.columnsConfigValues, setColumnsConfigOptions = _a.setColumnsConfigOptions, searchedValue = _a.searchedValue;
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]);
34
33
  var translatedValue = isObject(column === null || column === void 0 ? void 0 : column.title) &&
35
34
  'props' in column.title &&
36
35
  ((_c = column.title) === null || _c === void 0 ? void 0 : _c.props) &&
@@ -43,6 +42,6 @@ export var ActionRow = function (_a) {
43
42
  });
44
43
  setIsSelected(!isSelected);
45
44
  }, [setColumnsConfigOptions, isSelected, column.name]);
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, {})] })));
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, {})] }));
47
46
  };
48
47
  var templateObject_1;
@@ -1,5 +1,4 @@
1
1
  /// <reference types="react" />
2
- import { DropResult } from 'react-beautiful-dnd';
3
2
  import { CommonGridProps, GridActionsType, GridSelectorsType } from '../types';
4
3
  type Props = {
5
4
  columns: CommonGridProps['columnsDefinitions'];
@@ -16,9 +15,5 @@ declare const useManageColumn: ({ columns, gridSelectors, gridActions, onClose }
16
15
  }>>;
17
16
  onConfirmForm: () => void;
18
17
  resetColumnConfig: () => void;
19
- handleDragEnd: (isManageModal?: boolean) => (item: DropResult) => void;
20
- onCloseForm: () => void;
21
- displayColumnsDefinitions: import("../types").ColumnDefinition<string>[];
22
- manageColumnsFormDefinitions: import("../types").ColumnDefinition<string>[];
23
18
  };
24
19
  export default useManageColumn;
@@ -9,25 +9,12 @@ 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
- import { useCallback, useEffect, useMemo, useState } from 'react';
22
- import { checksColumnsOrder, isColumnOn } from '../utils';
12
+ import { useCallback, useMemo, useState } from 'react';
23
13
  var useManageColumn = function (_a) {
24
14
  var columns = _a.columns, gridSelectors = _a.gridSelectors, gridActions = _a.gridActions, onClose = _a.onClose;
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];
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];
31
18
  var columnsConfigValues = useMemo(function () {
32
19
  return columns === null || columns === void 0 ? void 0 : columns.filter(function (column) {
33
20
  var _a;
@@ -36,65 +23,12 @@ var useManageColumn = function (_a) {
36
23
  }).map(function (column) { return column.name; });
37
24
  }, [columnConfig, columns]);
38
25
  var onConfirmForm = useCallback(function () {
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]);
26
+ (setColumnConfig === null || setColumnConfig === void 0 ? void 0 : setColumnConfig(columnsConfigOptions)) && (onClose === null || onClose === void 0 ? void 0 : onClose());
27
+ }, [columnsConfigOptions, onClose, setColumnConfig]);
43
28
  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();
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
- };
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 };
99
33
  };
100
34
  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 }) })); };
9
+ export var LoadingState = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), gridSelectors: gridSelectors, gridActions: gridDummyActions, isLoading: true, hideColumnConfig: 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", gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
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 }) })); };
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, gridSelectors: gridSelectors, gridActions: gridDummyActions }) })); };
9
+ export var ManyColumnsNormalLayoutANoControls = function () { return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { rowsData: createOversizedRandomData(5), columnsDefinitions: oversizedColumnDefinition, hideColumnConfig: true, 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 }) }));
11
+ return (_jsx(LinguiContainer, { children: _jsx(CommonGrid, { columnsDefinitions: columnDefinitions, rowsData: createRandomData(10), onRowAction: onRowAction, gridSelectors: gridSelectors, gridActions: gridDummyActions, hideColumnConfig: true }) }));
12
12
  };
13
13
  WithCustomGridActions.story = {
14
14
  name: 'With custom grid actions',
@@ -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;
@@ -255,6 +255,7 @@ export type CommonGridProps<TData extends RowProps = RowProps> = {
255
255
  onBatchAction?: OnBatchActionFn;
256
256
  columnLayout?: ColumnLayout;
257
257
  confirmOnReset?: () => boolean;
258
+ hideColumnConfig?: boolean;
258
259
  className?: string;
259
260
  gridRef?: React.MutableRefObject<HTMLElement>;
260
261
  minColumnWidth?: number;
@@ -298,7 +299,7 @@ export type GridProps = Omit<CommonGridProps, 'filters'> & {
298
299
  queryRowsParam?: number | string;
299
300
  customPaginationHandler?: (page: number, rows: number) => void;
300
301
  };
301
- export type PageGridProps = Omit<GridProps, 'rowsData' | 'totalRowsCount' | 'columnsDefinitions' | 'actionColumnDefinition' | 'minColumnWidth' | 'columnLayout'>;
302
+ export type PageGridProps = Omit<GridProps, 'rowsData' | 'totalRowsCount' | 'columnsDefinitions' | 'actionColumnDefinition' | 'hideColumnConfig' | 'minColumnWidth' | 'columnLayout'>;
302
303
  export type Item = {
303
304
  label: string | JSX.Element;
304
305
  value: string;
@@ -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
- };
@@ -1,9 +1,11 @@
1
- export type Props = {
1
+ export type PaginationProps = {
2
2
  page?: number;
3
3
  itemCount?: number;
4
4
  itemPerPage: number;
5
+ radius?: number;
6
+ rate?: number;
5
7
  onPageChange?: (number: number, rows: number) => void;
6
8
  customPaginationHandler?: (page: number, rows: number) => void;
7
9
  };
8
- declare const Pagination: ({ onPageChange, itemPerPage, itemCount, page, customPaginationHandler }: Props) => JSX.Element;
10
+ declare const Pagination: ({ onPageChange, itemPerPage, itemCount, page, radius, rate, customPaginationHandler, }: PaginationProps) => JSX.Element;
9
11
  export default Pagination;
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useMemo } from 'react';
3
3
  import { Btn, GoIcon, Wrapper, PageBtn, DotsWrapper } from './styled';
4
4
  var Pagination = function (_a) {
5
- var onPageChange = _a.onPageChange, itemPerPage = _a.itemPerPage, itemCount = _a.itemCount, page = _a.page, customPaginationHandler = _a.customPaginationHandler;
5
+ var onPageChange = _a.onPageChange, _b = _a.itemPerPage, itemPerPage = _b === void 0 ? 3 : _b, _c = _a.itemCount, itemCount = _c === void 0 ? 0 : _c, page = _a.page, _d = _a.radius, radius = _d === void 0 ? 5 : _d, _e = _a.rate, rate = _e === void 0 ? 4 : _e, customPaginationHandler = _a.customPaginationHandler;
6
6
  var setPage = useCallback(function (number) { return function () {
7
7
  if (customPaginationHandler) {
8
8
  customPaginationHandler(number, itemPerPage);
@@ -13,31 +13,27 @@ var Pagination = function (_a) {
13
13
  }
14
14
  }; }, [itemPerPage, onPageChange, customPaginationHandler]);
15
15
  var pageX = page !== null && page !== void 0 ? page : 1;
16
- var pageCount = Math.max(Math.ceil((itemCount !== null && itemCount !== void 0 ? itemCount : 0) / (itemPerPage !== null && itemPerPage !== void 0 ? itemPerPage : 3)), 1);
16
+ var pageCount = Math.max(Math.ceil(itemCount / itemPerPage), 1);
17
17
  var arrayOfPages = useMemo(function () {
18
18
  var pageNumbers = Array.from({ length: pageCount }, function (_, i) { return i + 1; });
19
19
  // first and last page are still visible
20
20
  // if number of pages is less than 6 (display all pages without dots and duplication of first and last char)
21
- if (pageCount < 6) {
21
+ if (pageCount < radius + 1) {
22
22
  return pageNumbers.slice(1, pageCount - 1);
23
- // if current page is less than 5 (display first 5 pages)
23
+ // if current page is less than radius (display first radius pages)
24
24
  }
25
- else if (pageX < 5) {
26
- return pageNumbers.slice(1, 5);
27
- // display last 5 pages
25
+ else if (pageX < radius) {
26
+ return pageNumbers.slice(1, Math.min(pageX + rate, radius));
27
+ // display last radius pages
28
28
  }
29
- else if (pageX > pageCount - 4) {
30
- return pageNumbers.slice(pageCount - 5, pageCount - 1);
31
- }
32
- else if (window.innerWidth < 768) {
33
- // display dispersion of 1 chars from current page (part between dots)
34
- return pageNumbers.slice(pageX - 2, pageX + 1);
29
+ else if (pageX > pageCount - Math.floor(radius / 2)) {
30
+ return pageNumbers.slice(pageCount - rate - 1, pageCount - 1);
35
31
  }
36
32
  else {
37
33
  // display dispersion of 2 chars from current page (part between dots)
38
- return pageNumbers.slice(pageX - 3, pageX + 2);
34
+ return pageNumbers.slice(pageX - Math.ceil(radius / 2), Math.min(pageX + Math.floor(radius / 2), pageCount - 1));
39
35
  }
40
36
  }, [pageCount, pageX]);
41
- return (_jsxs(Wrapper, { children: [_jsx(Btn, { disabled: pageX <= 1, onClick: setPage(pageX - 1), children: _jsx(GoIcon, { icon: "goLeft", isActive: pageX > 1 }) }), _jsx(PageBtn, { isCurrent: pageX === 1, onClick: setPage(1), children: 1 }), pageX >= 5 && pageCount > 6 && _jsx(DotsWrapper, { children: "..." }), arrayOfPages === null || arrayOfPages === void 0 ? void 0 : arrayOfPages.map(function (number) { return (_jsx(PageBtn, { isCurrent: pageX === number, onClick: setPage(number !== null && number !== void 0 ? number : 1), children: number }, number)); }), pageX < pageCount - 3 && pageCount > 6 && _jsx(DotsWrapper, { children: "..." }), pageCount !== 1 && (_jsx(PageBtn, { isCurrent: pageX === pageCount, onClick: setPage(pageCount), children: pageCount })), _jsx(Btn, { disabled: pageX >= pageCount, onClick: setPage(pageX + 1), children: _jsx(GoIcon, { icon: "goRight", isActive: pageX < pageCount }) })] }));
37
+ return (_jsxs(Wrapper, { children: [_jsx(Btn, { disabled: pageX <= 1, onClick: setPage(pageX - 1), children: _jsx(GoIcon, { icon: "goLeft", isActive: pageX > 1 }) }), _jsx(PageBtn, { isCurrent: pageX === 1, onClick: setPage(1), children: 1 }), arrayOfPages[0] > 2 && _jsx(DotsWrapper, { children: "..." }), arrayOfPages === null || arrayOfPages === void 0 ? void 0 : arrayOfPages.map(function (number) { return (_jsx(PageBtn, { isCurrent: pageX === number, onClick: setPage(number !== null && number !== void 0 ? number : 1), children: number }, number)); }), arrayOfPages[arrayOfPages.length - 1] < pageCount - 1 && _jsx(DotsWrapper, { children: "..." }), pageCount !== 1 && (_jsx(PageBtn, { isCurrent: pageX === pageCount, onClick: setPage(pageCount), children: pageCount })), _jsx(Btn, { disabled: pageX >= pageCount, onClick: setPage(pageX + 1), children: _jsx(GoIcon, { icon: "goRight", isActive: pageX < pageCount }) })] }));
42
38
  };
43
39
  export default Pagination;
@@ -1,3 +1,4 @@
1
1
  import Pagination from './Pagination';
2
+ export type { PaginationProps } from './Pagination';
2
3
  export { Pagination };
3
4
  export default Pagination;
@@ -1,8 +1,8 @@
1
- /// <reference types="react" />
2
1
  import type { StoryObj } from '@storybook/react';
2
+ import { PaginationProps } from '../';
3
3
  declare const meta: {
4
4
  title: string;
5
- component: ({ onPageChange, itemPerPage, itemCount, page, customPaginationHandler }: import("../Pagination").Props) => JSX.Element;
5
+ component: ({ onPageChange, itemPerPage, itemCount, page, radius, rate, customPaginationHandler, }: PaginationProps) => JSX.Element;
6
6
  tags: string[];
7
7
  argTypes: {};
8
8
  };
@@ -10,3 +10,4 @@ export default meta;
10
10
  type Story = StoryObj<typeof meta>;
11
11
  export declare const Default: Story;
12
12
  export declare const ManyPages: Story;
13
+ export declare const Shorter: Story;