@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.
- package/package.json +1 -1
- package/ui/Blocks/CommonGrid/CommonGrid.d.ts +2 -5
- package/ui/Blocks/CommonGrid/CommonGrid.js +35 -4
- package/ui/Blocks/CommonGrid/CommonGridContainer.js +2 -2
- package/ui/Blocks/CommonGrid/components/HeadRow.d.ts +3 -3
- package/ui/Blocks/CommonGrid/components/HeadRow.js +26 -1
- package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.d.ts +1 -3
- package/ui/Blocks/CommonGrid/components/ManageColumnForm/ManageColumnForm.js +4 -16
- package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.d.ts +1 -5
- package/ui/Blocks/CommonGrid/components/ManageColumnForm/components/ActionRow.js +4 -5
- package/ui/Blocks/CommonGrid/hooks/useManageColumn.d.ts +0 -5
- package/ui/Blocks/CommonGrid/hooks/useManageColumn.js +10 -76
- package/ui/Blocks/CommonGrid/storybook/stories/loading.stories.js +1 -1
- package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNoScrollLayout.stories.js +1 -1
- package/ui/Blocks/CommonGrid/storybook/stories/manyColumnsNormalLayout.stories.js +1 -1
- package/ui/Blocks/CommonGrid/storybook/stories/withCustomGridActions.stories.js +1 -1
- package/ui/Blocks/CommonGrid/styles.d.ts +1 -3
- package/ui/Blocks/CommonGrid/types.d.ts +2 -1
- package/ui/Blocks/CommonGrid/utils/index.d.ts +0 -1
- package/ui/Blocks/CommonGrid/utils/index.js +0 -13
- package/ui/Elements/Pagination/Pagination.d.ts +4 -2
- package/ui/Elements/Pagination/Pagination.js +11 -15
- package/ui/Elements/Pagination/index.d.ts +1 -0
- package/ui/Elements/Pagination/stories/Pagination.stories.d.ts +3 -2
- package/ui/Elements/Pagination/stories/Pagination.stories.js +28 -2
- package/ui/Elements/Select/themes/formStyles.d.ts +0 -3
- package/ui/Elements/Select/themes/formStyles.js +1 -10
- package/ui/Elements/Spinner/styles.js +5 -5
- package/ui/ThemeProvider/themes/default.js +1 -1
- package/ui/index.es.js +10000 -10023
- package/ui/index.umd.js +431 -432
package/package.json
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { CommonGridProps, FiltersConfig
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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(
|
|
29
|
-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
|
26
|
-
var columnConfig = gridSelectors.columnConfig
|
|
27
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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,
|
|
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
|
|
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 }:
|
|
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,
|
|
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(
|
|
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 <
|
|
21
|
+
if (pageCount < radius + 1) {
|
|
22
22
|
return pageNumbers.slice(1, pageCount - 1);
|
|
23
|
-
// if current page is less than
|
|
23
|
+
// if current page is less than radius (display first radius pages)
|
|
24
24
|
}
|
|
25
|
-
else if (pageX <
|
|
26
|
-
return pageNumbers.slice(1,
|
|
27
|
-
// display last
|
|
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 -
|
|
30
|
-
return pageNumbers.slice(pageCount -
|
|
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 -
|
|
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 }),
|
|
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,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 }:
|
|
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;
|