@mailstep/design-system 0.8.0-beta.1 → 0.8.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 +14 -8
- package/ui/Blocks/CommonGrid/CommonGrid.js +2 -2
- package/ui/Blocks/CommonGrid/components/ColumnFilterCell.d.ts +1 -0
- package/ui/Blocks/CommonGrid/components/ColumnFilterCell.js +2 -2
- package/ui/Blocks/CommonGrid/components/FilterRow.d.ts +1 -0
- package/ui/Blocks/CommonGrid/components/FilterRow.js +2 -2
- package/ui/Blocks/CommonGrid/components/Filters/BooleanSelect/BooleanSelect.js +1 -1
- package/ui/Blocks/CommonGrid/components/Filters/GridSelect/GridSelect.d.ts +7 -3
- package/ui/Blocks/CommonGrid/components/Filters/GridSelect/GridSelect.js +74 -9
- package/ui/Blocks/CommonGrid/components/Filters/GridSelect/guards.d.ts +3 -0
- package/ui/Blocks/CommonGrid/components/Filters/GridSelect/guards.js +3 -0
- package/ui/Blocks/CommonGrid/storybook/stories/complexWithPaginationAndRedux.stories.js +2 -2
- package/ui/Blocks/CommonGrid/storybook/utils/columnDefinition.js +9 -0
- package/ui/Blocks/CommonGrid/storybook/utils/utils.d.ts +1 -0
- package/ui/Blocks/CommonGrid/storybook/utils/utils.js +19 -0
- package/ui/Blocks/CommonGrid/types.d.ts +2 -0
- package/ui/Blocks/CommonGrid/utils/index.d.ts +1 -4
- package/ui/Blocks/CommonGrid/utils/index.js +1 -1
- package/ui/Blocks/CornerDialog/stories/CornerDialog.stories.d.ts +1 -1
- package/ui/Blocks/ImageList/stories/ImageList.stories.d.ts +1 -1
- package/ui/Blocks/LanguageSwitch/stories/LanguageSwith.stories.d.ts +1 -1
- package/ui/Blocks/LightBox/stories/LightBox.stories.d.ts +1 -1
- package/ui/Blocks/Modal/stories/Modal.stories.d.ts +1 -1
- package/ui/Blocks/SideMenu/styles.js +2 -2
- package/ui/Blocks/Tabs/stories/Tabs.stories.d.ts +1 -1
- package/ui/Elements/Alert/stories/Alert.stories.d.ts +1 -1
- package/ui/Elements/AsyncSelect/stories/AsyncSelect.stories.d.ts +1 -1
- package/ui/Elements/Avatar/stories/Avatar.stories.d.ts +1 -1
- package/ui/Elements/Badge/stories/Badge.stories.d.ts +1 -1
- package/ui/Elements/BarChartSymbol/stories/BarChartSymbol.stories.d.ts +1 -1
- package/ui/Elements/BorderedBox/stories/BorderedBox.stories.d.ts +1 -1
- package/ui/Elements/Button/stories/Button.stories.d.ts +1 -1
- package/ui/Elements/Card/stories/Card.stories.d.ts +1 -1
- package/ui/Elements/CheckedCircle/storries/CheckedCircle.stories.d.ts +1 -1
- package/ui/Elements/Dropdown/stories/Dropdown.stories.d.ts +1 -1
- package/ui/Elements/ErrorMessage/stories/ErrorMessage.stories.d.ts +1 -1
- package/ui/Elements/Icon/stories/BadgeIcon.stories.d.ts +2 -2
- package/ui/Elements/Icon/stories/Icon.stories.d.ts +1 -1
- package/ui/Elements/Image/stories/Image.stories.d.ts +1 -1
- package/ui/Elements/Label/stories/Label.stories.d.ts +1 -1
- package/ui/Elements/Line/stories/Line.stories.d.ts +1 -1
- package/ui/Elements/Link/stories/Link.stories.d.ts +1 -1
- package/ui/Elements/Logo/stories/Logo.stories.d.ts +1 -1
- package/ui/Elements/Pagination/stories/Pagination.stories.d.ts +1 -1
- package/ui/Elements/ProgressBar/stories/ProgressBar.stories.d.ts +1 -1
- package/ui/Elements/Select/Select.js +4 -3
- package/ui/Elements/Select/components/ConnectedMenu.js +10 -3
- package/ui/Elements/Select/components/SelectAll.d.ts +5 -3
- package/ui/Elements/Select/components/SelectAll.js +8 -5
- package/ui/Elements/Select/themes/index.js +1 -1
- package/ui/Elements/Select/themes/selectStyles.js +4 -1
- package/ui/Elements/SingleSelect/SingleSelect.js +5 -6
- package/ui/Elements/SpaceAround/stories/SpaceAround.stories.d.ts +1 -1
- package/ui/Elements/Spinner/stories/Spinner.stories.d.ts +1 -1
- package/ui/Elements/Tag/stories/Tag.stories.d.ts +1 -1
- package/ui/Elements/Text/stories/Text.stories.d.ts +1 -1
- package/ui/Elements/Toast/stories/Toast.stories.d.ts +1 -1
- package/ui/Elements/Toggle/stories/Toggle.stories.d.ts +1 -1
- package/ui/Elements/Tooltip/stories/Tooltip.stories.d.ts +1 -1
- package/ui/Elements/Typography/stories/Typography.stories.d.ts +1 -1
- package/ui/Forms/Checkbox/stories/Checkbox.stories.d.ts +1 -1
- package/ui/Forms/Checkbox/styles.d.ts +1 -1
- package/ui/Forms/Input/stories/Input.stories.d.ts +1 -1
- package/ui/Forms/RadioButton/stories/RadioButton.stories.d.ts +1 -1
- package/ui/index.d.ts +1 -3
- package/ui/index.es.js +9944 -9865
- package/ui/index.js +1 -3
- package/ui/index.umd.js +369 -369
- package/ui/utils/KeyPress/KeyPress.stories.d.ts +1 -1
- package/ui/Elements/MultiSelect/MultiSelect.d.ts +0 -8
- package/ui/Elements/MultiSelect/MultiSelect.js +0 -29
- package/ui/Elements/MultiSelect/index.d.ts +0 -3
- package/ui/Elements/MultiSelect/index.js +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailstep/design-system",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./ui/index.js",
|
|
@@ -39,9 +39,16 @@
|
|
|
39
39
|
"@lingui/core": "3.17.2",
|
|
40
40
|
"@lingui/react": "3.17.2",
|
|
41
41
|
"@popperjs/core": "^2.11.8",
|
|
42
|
-
"@storybook/addon-
|
|
43
|
-
"@storybook/addon-
|
|
44
|
-
"@storybook/
|
|
42
|
+
"@storybook/addon-controls": "^8.4.7",
|
|
43
|
+
"@storybook/addon-designs": "^8.0.4",
|
|
44
|
+
"@storybook/addon-essentials": "^8.4.7",
|
|
45
|
+
"@storybook/addon-interactions": "^8.4.7",
|
|
46
|
+
"@storybook/addon-links": "^8.4.7",
|
|
47
|
+
"@storybook/blocks": "^8.4.7",
|
|
48
|
+
"@storybook/react": "^8.4.7",
|
|
49
|
+
"@storybook/react-webpack5": "^8.4.7",
|
|
50
|
+
"@storybook/test": "^8.4.7",
|
|
51
|
+
"@storybook/types": "^8.4.7",
|
|
45
52
|
"@svgr/rollup": "^8.0.1",
|
|
46
53
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
47
54
|
"@types/faker": "^4.1.11",
|
|
@@ -72,7 +79,7 @@
|
|
|
72
79
|
"eslint-plugin-react": "^7.35.0",
|
|
73
80
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
74
81
|
"eslint-plugin-react-perf": "^3.3.2",
|
|
75
|
-
"eslint-plugin-storybook": "
|
|
82
|
+
"eslint-plugin-storybook": "^0.11.1",
|
|
76
83
|
"faker": "^5.1.0",
|
|
77
84
|
"immer": "9.0.7",
|
|
78
85
|
"lodash": "^4.17.21",
|
|
@@ -93,7 +100,7 @@
|
|
|
93
100
|
"react-use-draggable-scroll": "^0.4.7",
|
|
94
101
|
"redux": ">=4.0.5",
|
|
95
102
|
"reselect": "5.0.0-alpha.2",
|
|
96
|
-
"storybook": "
|
|
103
|
+
"storybook": "^8.4.7",
|
|
97
104
|
"string-width": "6.1.0",
|
|
98
105
|
"styled-components": "^5.3.10",
|
|
99
106
|
"swiper": "^11.0.3",
|
|
@@ -102,8 +109,7 @@
|
|
|
102
109
|
"vite": "^5.0.10",
|
|
103
110
|
"vite-plugin-dts": "^3.6.4",
|
|
104
111
|
"vite-plugin-static-copy": "^1.0.0",
|
|
105
|
-
"webpack": "^5.82.1"
|
|
106
|
-
"@storybook/addon-docs": "10.2.8"
|
|
112
|
+
"webpack": "^5.82.1"
|
|
107
113
|
},
|
|
108
114
|
"peerDependencies": {
|
|
109
115
|
"@dnd-kit/core": "^6.3.1",
|
|
@@ -39,7 +39,7 @@ var CommonGrid = function (_a) {
|
|
|
39
39
|
// redux props
|
|
40
40
|
gridSelectors = _a.gridSelectors, gridActions = _a.gridActions,
|
|
41
41
|
// input props
|
|
42
|
-
isLoading = _a.isLoading, rowsData = _a.rowsData, hasColouredRows = _a.hasColouredRows, actionColumnDefinition = _a.actionColumnDefinition, allowRowSelect = _a.allowRowSelect, allowRowSelectOnAction = _a.allowRowSelectOnAction, onRowAction = _a.onRowAction, onRowClick = _a.onRowClick, _b = _a.columnLayout, columnLayout = _b === void 0 ? 'normal' : _b, displayColumnsDefinitions = _a.displayColumnsDefinitions, className = _a.className, minColumnWidth = _a.minColumnWidth, errorMessage = _a.errorMessage, floatingButtonProps = _a.floatingButtonProps, hasGroups = _a.hasGroups, hasFilters = _a.hasFilters, isSortTerminated = _a.isSortTerminated;
|
|
42
|
+
isLoading = _a.isLoading, rowsData = _a.rowsData, hasColouredRows = _a.hasColouredRows, actionColumnDefinition = _a.actionColumnDefinition, allowRowSelect = _a.allowRowSelect, allowRowSelectOnAction = _a.allowRowSelectOnAction, onRowAction = _a.onRowAction, onRowClick = _a.onRowClick, onAsyncLoadFilterOptions = _a.onAsyncLoadFilterOptions, _b = _a.columnLayout, columnLayout = _b === void 0 ? 'normal' : _b, displayColumnsDefinitions = _a.displayColumnsDefinitions, className = _a.className, minColumnWidth = _a.minColumnWidth, errorMessage = _a.errorMessage, floatingButtonProps = _a.floatingButtonProps, hasGroups = _a.hasGroups, hasFilters = _a.hasFilters, isSortTerminated = _a.isSortTerminated;
|
|
43
43
|
var _c = gridSelectors.uxState, uxState = _c === void 0 ? defaultUxState : _c, _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;
|
|
44
44
|
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;
|
|
45
45
|
var handleRowsKeyDown = useRowsKeyControls(rowsData, uxState, handleUxChange);
|
|
@@ -53,7 +53,7 @@ var CommonGrid = function (_a) {
|
|
|
53
53
|
}, []);
|
|
54
54
|
var isEmpty = !isLoading && !errorMessage && (!rowsData || rowsData.length < 1);
|
|
55
55
|
var hasFloatingChildren = isLoading || errorMessage || isEmpty;
|
|
56
|
-
return (_jsxs(_Fragment, { children: [_jsx(x.div, { className: className || '', children: _jsxs(OversizedScroll, { columnLayout: columnLayout, totalColumnsWidth: totalColumnsWidth, floatingChildren: hasFloatingChildren && _jsx(GridStatus, { isLoading: isLoading, isEmpty: isEmpty, errorMessage: errorMessage }), ref: commonGridRef, children: [_jsxs("div", { className: "gridHead", children: [hasGroups && (_jsx(GroupRow, { actionColumn: actionColumnDefinition, columns: displayColumnsDefinitions, displayColumnsWidth: displayColumnsWidth, groups: groups })), _jsx(HeadRow, { columns: displayColumnsDefinitions, onAddSort: addSorting, columnLayout: columnLayout, sortingValues: sorting, displayColumnsWidth: displayColumnsWidth, handleResizeDrag: handleResizeDrag, groups: groups, handleDragEnd: handleDragEnd, isSortTerminated: isSortTerminated }), hasFilters && (_jsx(FilterRow, { filters: filters, comparators: comparators, 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 &&
|
|
56
|
+
return (_jsxs(_Fragment, { children: [_jsx(x.div, { className: className || '', children: _jsxs(OversizedScroll, { columnLayout: columnLayout, totalColumnsWidth: totalColumnsWidth, floatingChildren: hasFloatingChildren && _jsx(GridStatus, { isLoading: isLoading, isEmpty: isEmpty, errorMessage: errorMessage }), ref: commonGridRef, children: [_jsxs("div", { className: "gridHead", children: [hasGroups && (_jsx(GroupRow, { actionColumn: actionColumnDefinition, columns: displayColumnsDefinitions, displayColumnsWidth: displayColumnsWidth, groups: groups })), _jsx(HeadRow, { columns: displayColumnsDefinitions, onAddSort: addSorting, columnLayout: columnLayout, sortingValues: sorting, displayColumnsWidth: displayColumnsWidth, handleResizeDrag: handleResizeDrag, groups: groups, handleDragEnd: handleDragEnd, isSortTerminated: isSortTerminated }), hasFilters && (_jsx(FilterRow, { filters: filters, comparators: comparators, columns: displayColumnsDefinitions, actionColumn: actionColumnDefinition, onChange: addFilter, filterValues: filter, displayColumnsWidth: displayColumnsWidth, groups: groups, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange, onAsyncLoadFilterOptions: onAsyncLoadFilterOptions }))] }), _jsx("div", { className: "body flx_1", style: rowsStyles, tabIndex: -1, onKeyDown: handleRowsKeyDown, children: !isLoading &&
|
|
57
57
|
rowsData &&
|
|
58
58
|
displayColumnsDefinitions &&
|
|
59
59
|
rowsData.map(function (row, index) {
|
|
@@ -14,6 +14,7 @@ type Props = {
|
|
|
14
14
|
rowsData: RowProps[];
|
|
15
15
|
uxState: UxState;
|
|
16
16
|
handleUxChange: GridActionsType['handleUxChange'];
|
|
17
|
+
onAsyncLoadFilterOptions?: (key: string, value: string) => void;
|
|
17
18
|
};
|
|
18
19
|
declare const ColumnFilterCell: FC<Props>;
|
|
19
20
|
export default ColumnFilterCell;
|
|
@@ -17,7 +17,7 @@ import { x } from '@xstyled/styled-components';
|
|
|
17
17
|
import OverlayComponent from './FilterDropdown';
|
|
18
18
|
import { Cell } from './Table';
|
|
19
19
|
var ColumnFilterCell = function (_a) {
|
|
20
|
-
var onChange = _a.onChange, value = _a.value, others = _a.others, displayColumnWidth = _a.displayColumnWidth, filters = _a.filters, columnDefinition = _a.column, group = _a.group, comparators = _a.comparators, actionColumn = _a.actionColumn, rowsData = _a.rowsData, uxState = _a.uxState, handleUxChange = _a.handleUxChange;
|
|
20
|
+
var onChange = _a.onChange, value = _a.value, others = _a.others, displayColumnWidth = _a.displayColumnWidth, filters = _a.filters, columnDefinition = _a.column, group = _a.group, comparators = _a.comparators, actionColumn = _a.actionColumn, rowsData = _a.rowsData, uxState = _a.uxState, handleUxChange = _a.handleUxChange, onAsyncLoadFilterOptions = _a.onAsyncLoadFilterOptions;
|
|
21
21
|
var cellSizeProps = getCellSizeProps(columnDefinition, displayColumnWidth);
|
|
22
22
|
var handleAddFilter = useAddFilter(onChange);
|
|
23
23
|
var handleChange = React.useCallback(function (event, others) {
|
|
@@ -35,6 +35,6 @@ var ColumnFilterCell = function (_a) {
|
|
|
35
35
|
console.error("ERROR, using unknown filter type ".concat(filterType));
|
|
36
36
|
return (_jsx(x.div, { children: _jsx("span", { children: "".concat(filterType, " filter") }) }));
|
|
37
37
|
}
|
|
38
|
-
return (_jsx(Cell, __assign({ className: cellClassName }, cellSizeProps, { children: _jsx(x.div, { children: _jsx(RenderComponent, __assign({ "data-test": columnDefinition.name, name: columnDefinition.name, onChange: handleChange, value: value, others: others, OverlayComponent: OverlayComponent, comparators: defaultComparators, actionColumn: actionColumn, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange }, filterConfig === null || filterConfig === void 0 ? void 0 : filterConfig.defaultExtraProps, columnDefinition.filterExtraProps, (filterType == 'options' && { options: columnDefinition.filterOptions }))) }) })));
|
|
38
|
+
return (_jsx(Cell, __assign({ className: cellClassName }, cellSizeProps, { children: _jsx(x.div, { children: _jsx(RenderComponent, __assign({ asyncLoadKey: columnDefinition.asyncLoadKey, "data-test": columnDefinition.name, name: columnDefinition.name, onChange: handleChange, value: value, others: others, OverlayComponent: OverlayComponent, comparators: defaultComparators, actionColumn: actionColumn, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange, onAsyncLoadFilterOptions: onAsyncLoadFilterOptions }, filterConfig === null || filterConfig === void 0 ? void 0 : filterConfig.defaultExtraProps, columnDefinition.filterExtraProps, (filterType == 'options' && { options: columnDefinition.filterOptions }))) }) })));
|
|
39
39
|
};
|
|
40
40
|
export default ColumnFilterCell;
|
|
@@ -5,8 +5,8 @@ import throttle from 'lodash/throttle';
|
|
|
5
5
|
import ColumnFilterCell from './ColumnFilterCell';
|
|
6
6
|
import { Row } from './Table';
|
|
7
7
|
var FilterRow = function (_a) {
|
|
8
|
-
var columns = _a.columns, groups = _a.groups, actionColumn = _a.actionColumn, onChange = _a.onChange, _b = _a.filterValues, filterValues = _b === void 0 ? {} : _b, displayColumnsWidth = _a.displayColumnsWidth, filters = _a.filters, comparators = _a.comparators, handleUxChange = _a.handleUxChange, rowsData = _a.rowsData, uxState = _a.uxState;
|
|
8
|
+
var columns = _a.columns, groups = _a.groups, actionColumn = _a.actionColumn, onChange = _a.onChange, _b = _a.filterValues, filterValues = _b === void 0 ? {} : _b, displayColumnsWidth = _a.displayColumnsWidth, filters = _a.filters, comparators = _a.comparators, handleUxChange = _a.handleUxChange, onAsyncLoadFilterOptions = _a.onAsyncLoadFilterOptions, rowsData = _a.rowsData, uxState = _a.uxState;
|
|
9
9
|
var handleOnChange = throttle(onChange, 500);
|
|
10
|
-
return (_jsx(Row, { className: "filterRow", children: columns.map(function (column, index) { return (_jsx(ColumnFilterCell, { column: column, actionColumn: actionColumn, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange, onChange: handleOnChange, value: get([getFilterName(column), 'value'], filterValues), others: get([getFilterName(column), 'others'], filterValues), displayColumnWidth: displayColumnsWidth[column.name], filters: filters, comparators: comparators, group: groups === null || groups === void 0 ? void 0 : groups[index] }, index)); }) }));
|
|
10
|
+
return (_jsx(Row, { className: "filterRow", children: columns.map(function (column, index) { return (_jsx(ColumnFilterCell, { column: column, actionColumn: actionColumn, rowsData: rowsData, uxState: uxState, handleUxChange: handleUxChange, onChange: handleOnChange, value: get([getFilterName(column), 'value'], filterValues), others: get([getFilterName(column), 'others'], filterValues), displayColumnWidth: displayColumnsWidth[column.name], filters: filters, comparators: comparators, group: groups === null || groups === void 0 ? void 0 : groups[index], onAsyncLoadFilterOptions: onAsyncLoadFilterOptions }, index)); }) }));
|
|
11
11
|
};
|
|
12
12
|
export default FilterRow;
|
|
@@ -20,6 +20,6 @@ var getFlagOptions = function () { return [
|
|
|
20
20
|
]; };
|
|
21
21
|
var SelectFilter = function (props) {
|
|
22
22
|
var options = useMemo(function () { return getFlagOptions(); }, []);
|
|
23
|
-
return _jsx(GridSelect, __assign({ options: options }, props));
|
|
23
|
+
return _jsx(GridSelect, __assign({ options: options }, props, { isClearable: false }));
|
|
24
24
|
};
|
|
25
25
|
export default SelectFilter;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Option } from '../../../../../Elements/Select/types';
|
|
3
|
+
import { CommonGridProps } from '../../../types';
|
|
3
4
|
|
|
4
5
|
type Props = {
|
|
5
6
|
onChange: (data: any) => void;
|
|
7
|
+
onAsyncLoadFilterOptions?: CommonGridProps['onAsyncLoadFilterOptions'];
|
|
6
8
|
isMulti?: boolean;
|
|
7
|
-
options?:
|
|
8
|
-
value?: string | string[];
|
|
9
|
+
options?: Option[];
|
|
10
|
+
value?: string | string[] | Option[];
|
|
9
11
|
checkAllButton?: boolean;
|
|
12
|
+
asyncLoadKey?: string;
|
|
13
|
+
isClearable?: boolean;
|
|
10
14
|
};
|
|
11
15
|
declare const SelectFilter: FC<Props>;
|
|
12
16
|
export default SelectFilter;
|
|
@@ -1,19 +1,84 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
+
if (ar || !(i in from)) {
|
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
+
ar[i] = from[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
+
};
|
|
1
46
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback } from 'react';
|
|
3
|
-
import
|
|
47
|
+
import { useCallback, useState, useMemo } from 'react';
|
|
48
|
+
import Select from '../../../../../Elements/Select';
|
|
4
49
|
import SingleSelect from '../../../../../Elements/SingleSelect';
|
|
50
|
+
import { i18n } from '@lingui/core';
|
|
5
51
|
import isArray from 'lodash/isArray';
|
|
6
|
-
|
|
52
|
+
import uniqBy from 'lodash/uniqBy';
|
|
53
|
+
import { isOptionArray } from './guards';
|
|
7
54
|
var SelectFilter = function (_a) {
|
|
8
|
-
var onChange = _a.onChange, isMulti = _a.isMulti, value = _a.value, options = _a.options, checkAllButton = _a.checkAllButton;
|
|
55
|
+
var onChange = _a.onChange, _b = _a.isClearable, isClearable = _b === void 0 ? true : _b, isMulti = _a.isMulti, value = _a.value, options = _a.options, checkAllButton = _a.checkAllButton, asyncLoadKey = _a.asyncLoadKey, onAsyncLoadFilterOptions = _a.onAsyncLoadFilterOptions;
|
|
56
|
+
var _c = useState([]), loadedOptions = _c[0], setLoadedOptions = _c[1];
|
|
9
57
|
var handleOnMultiChange = useCallback(function (options) {
|
|
10
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(!isArray(options) || !(options === null || options === void 0 ? void 0 : options.length) ? null : options
|
|
58
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(!isArray(options) || !(options === null || options === void 0 ? void 0 : options.length) ? null : options);
|
|
11
59
|
}, [onChange]);
|
|
60
|
+
var isAsync = !!asyncLoadKey;
|
|
61
|
+
var handleLoadOptions = useCallback(function (fulltext) { return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
+
var data;
|
|
63
|
+
return __generator(this, function (_a) {
|
|
64
|
+
switch (_a.label) {
|
|
65
|
+
case 0:
|
|
66
|
+
data = [];
|
|
67
|
+
if (!asyncLoadKey) return [3 /*break*/, 2];
|
|
68
|
+
return [4 /*yield*/, (onAsyncLoadFilterOptions === null || onAsyncLoadFilterOptions === void 0 ? void 0 : onAsyncLoadFilterOptions(asyncLoadKey, fulltext))];
|
|
69
|
+
case 1:
|
|
70
|
+
data = (_a.sent()) || [];
|
|
71
|
+
_a.label = 2;
|
|
72
|
+
case 2:
|
|
73
|
+
setLoadedOptions(data);
|
|
74
|
+
return [2 /*return*/, data];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}); }, [asyncLoadKey, onAsyncLoadFilterOptions]);
|
|
78
|
+
var defaultOptions = useMemo(function () { return (isMulti && isAsync && isOptionArray(value) ? uniqBy(__spreadArray(__spreadArray([], loadedOptions, true), value, true), 'value') : undefined); }, [isAsync, value, loadedOptions]);
|
|
12
79
|
if (isMulti) {
|
|
13
|
-
return (_jsx(
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
return _jsx(SingleSelect, { maxMenuHeight: 250, onChange: onChange, value: value, options: options, style: "gridFilter" });
|
|
80
|
+
return (_jsx(Select, { maxMenuHeight: 250, onChange: handleOnMultiChange, value: isOptionArray(value) ? value.map(function (option) { return String(option.value); }) : value, options: defaultOptions || options, showSelectAllButton: checkAllButton, style: "gridFilter", loadOptions: isAsync ? handleLoadOptions : undefined, defaultOptions: defaultOptions, placeholder: isAsync ? i18n._({ id: 'dataGrid.filterCell', message: 'Type to filter' }) : undefined, noOptionsMessage: function () { return null; }, containerVariant: isAsync ? 'search' : undefined, optionVariant: "checkbox", multiLabelVariant: "count", isMulti: true }));
|
|
17
81
|
}
|
|
82
|
+
return (_jsx(SingleSelect, { maxMenuHeight: 250, onChange: onChange, value: value, options: options, style: "gridFilter", loadOptions: isAsync ? handleLoadOptions : undefined, placeholder: isAsync ? i18n._({ id: 'dataGrid.filterCell', message: 'Type to filter' }) : undefined, isClearable: isClearable }));
|
|
18
83
|
};
|
|
19
84
|
export default SelectFilter;
|
|
@@ -6,7 +6,7 @@ import { useAddFilter } from '../../hooks/useAddFilter';
|
|
|
6
6
|
import { ExtraControlButtonPosition } from '../../types';
|
|
7
7
|
import { onRowEditClick, onRowReadClick, onRowAction, onRowClick, onBatchAction } from '../utils/actions';
|
|
8
8
|
import { columnDefinitions, enumColumn } from '../utils/columnDefinition';
|
|
9
|
-
import { ReduxGrid, createRandomData, enumValues, gridDummyActions } from '../utils/utils';
|
|
9
|
+
import { ReduxGrid, createRandomData, enumValues, gridDummyActions, onAsyncLoadFilterOptions } from '../utils/utils';
|
|
10
10
|
import withRedux from '../utils/withRedux';
|
|
11
11
|
var ActionColumnButtons = {
|
|
12
12
|
flexBasis: 80,
|
|
@@ -47,7 +47,7 @@ export default {
|
|
|
47
47
|
title: 'Blocks/CommonGrid',
|
|
48
48
|
decorators: [withRedux]
|
|
49
49
|
};
|
|
50
|
-
export var ComplexWithPaginationAndRedux = function () { return (_jsxs(LinguiContainer, { children: [_jsx(ConnectedFilterSetter, { gridActions: gridDummyActions }), _jsx(ReduxGrid, { columnsDefinitions: columnDefinitions, actionColumnDefinition: ActionColumnButtons, rowsData: createRandomData(10), onRowAction: onRowAction, onRowClick: onRowClick, onRowReadClick: onRowReadClick, onRowEditClick: onRowEditClick, totalRowsCount: 200, onBatchAction: onBatchAction, getRowsPerPage: getRowsPerPage, quickFilter: "textColumn", extraControlButtons: extraControlButtons, comparators: comparators, gridName: "gridName" })] })); };
|
|
50
|
+
export var ComplexWithPaginationAndRedux = function () { return (_jsxs(LinguiContainer, { children: [_jsx(ConnectedFilterSetter, { gridActions: gridDummyActions }), _jsx(ReduxGrid, { columnsDefinitions: columnDefinitions, actionColumnDefinition: ActionColumnButtons, rowsData: createRandomData(10), onRowAction: onRowAction, onRowClick: onRowClick, onRowReadClick: onRowReadClick, onRowEditClick: onRowEditClick, totalRowsCount: 200, onBatchAction: onBatchAction, getRowsPerPage: getRowsPerPage, onAsyncLoadFilterOptions: onAsyncLoadFilterOptions, quickFilter: "textColumn", extraControlButtons: extraControlButtons, comparators: comparators, gridName: "gridName" })] })); };
|
|
51
51
|
ComplexWithPaginationAndRedux.story = {
|
|
52
52
|
name: 'Complex, with pagination and redux'
|
|
53
53
|
};
|
|
@@ -34,6 +34,15 @@ export var columnDefinitions = [
|
|
|
34
34
|
sorting: true
|
|
35
35
|
},
|
|
36
36
|
enumColumn,
|
|
37
|
+
{
|
|
38
|
+
name: 'enumColumnAsync',
|
|
39
|
+
title: 'Enum Column Async',
|
|
40
|
+
flexBasis: 160,
|
|
41
|
+
filterExtraProps: { isMulti: true, checkAllButton: true },
|
|
42
|
+
filtering: true,
|
|
43
|
+
sorting: true,
|
|
44
|
+
asyncLoadKey: 'enumColumnAsync'
|
|
45
|
+
},
|
|
37
46
|
{
|
|
38
47
|
name: 'numberColumn',
|
|
39
48
|
title: 'Number Column',
|
|
@@ -18,3 +18,4 @@ export declare const gridDummyActions: Required<GridActionsType>;
|
|
|
18
18
|
export declare const createOversizedRandomData: (count: number) => any[];
|
|
19
19
|
export declare const ReduxGrid: FC<any>;
|
|
20
20
|
export declare const extraControlButtons: ExtraControlButton[];
|
|
21
|
+
export declare const onAsyncLoadFilterOptions: (key: string, value: string) => Promise<unknown>;
|
|
@@ -72,3 +72,22 @@ export var extraControlButtons = [
|
|
|
72
72
|
{ label: 'Reload', position: ExtraControlButtonPosition.TopLeft },
|
|
73
73
|
{ label: 'Export all', position: ExtraControlButtonPosition.TopRight }
|
|
74
74
|
];
|
|
75
|
+
export var onAsyncLoadFilterOptions = function (key, value) {
|
|
76
|
+
return new Promise(function (resolve) {
|
|
77
|
+
setTimeout(function () {
|
|
78
|
+
resolve([
|
|
79
|
+
{ label: 'Apple', value: 'apple' },
|
|
80
|
+
{ label: 'Banana', value: 'banana' },
|
|
81
|
+
{ label: 'Cherry', value: 'cherry' },
|
|
82
|
+
{ label: 'Date', value: 'date' },
|
|
83
|
+
{ label: 'Elderberry', value: 'elderberry' },
|
|
84
|
+
{ label: 'Fig', value: 'fig' },
|
|
85
|
+
{ label: 'Grape', value: 'grape' },
|
|
86
|
+
{ label: 'Honeydew', value: 'honeydew' },
|
|
87
|
+
{ label: 'Kiwi', value: 'kiwi' },
|
|
88
|
+
{ label: 'Lemon', value: 'lemon' },
|
|
89
|
+
{ label: 'Lime', value: 'lime' },
|
|
90
|
+
]);
|
|
91
|
+
}, 1000);
|
|
92
|
+
});
|
|
93
|
+
};
|
|
@@ -92,6 +92,7 @@ type ColumnBaseProps = {
|
|
|
92
92
|
};
|
|
93
93
|
export type RowValueType = string | React.ReactNode | number | void;
|
|
94
94
|
export type ColumnDefinition<ColumnName extends string = string> = ColumnBaseProps & {
|
|
95
|
+
asyncLoadKey?: string;
|
|
95
96
|
name: ColumnName;
|
|
96
97
|
group?: Group['name'];
|
|
97
98
|
systemName?: string;
|
|
@@ -248,6 +249,7 @@ export type CommonGridProps<TData extends RowProps = RowProps> = {
|
|
|
248
249
|
onRowReadClick?: (id: string, props: TData) => void;
|
|
249
250
|
onRowClick?: (id: string, props: TData) => void;
|
|
250
251
|
onBatchAction?: OnBatchActionFn;
|
|
252
|
+
onAsyncLoadFilterOptions?: (key: string, value: string) => Promise<Option[]>;
|
|
251
253
|
columnLayout?: ColumnLayout;
|
|
252
254
|
quickFilter?: string;
|
|
253
255
|
confirmOnReset?: () => boolean;
|
|
@@ -8,10 +8,7 @@ export declare const calculatePaginator: (page: number, rowsPerPage: number) =>
|
|
|
8
8
|
offset: number;
|
|
9
9
|
limit: number;
|
|
10
10
|
};
|
|
11
|
-
export declare const createFilterType: (columnDefinition:
|
|
12
|
-
filterOptions?: ColumnDefinition["filterOptions"];
|
|
13
|
-
filteringType?: ColumnDefinition["filteringType"];
|
|
14
|
-
}) => FilterProps["type"];
|
|
11
|
+
export declare const createFilterType: (columnDefinition: ColumnDefinition) => FilterProps["type"];
|
|
15
12
|
export declare const getGroups: (columns: ColumnDefinition[]) => Group[];
|
|
16
13
|
export declare const getGroupClassNames: (group?: Group) => string;
|
|
17
14
|
export declare const getStickyCollClassNames: (sticky: boolean, stickTo?: StickTo) => string;
|
|
@@ -39,7 +39,7 @@ export var calculatePaginator = function (page, rowsPerPage) { return ({
|
|
|
39
39
|
limit: rowsPerPage
|
|
40
40
|
}); };
|
|
41
41
|
export var createFilterType = function (columnDefinition) {
|
|
42
|
-
if (columnDefinition.filterOptions)
|
|
42
|
+
if (columnDefinition.filterOptions || columnDefinition.asyncLoadKey)
|
|
43
43
|
return 'options';
|
|
44
44
|
else
|
|
45
45
|
return columnDefinition.filteringType || 'text';
|
|
@@ -140,7 +140,7 @@ export var TooltipWrap = styled.div(templateObject_16 || (templateObject_16 = __
|
|
|
140
140
|
return ($lightMode ? th.color('red20') : th.color('blue2'));
|
|
141
141
|
});
|
|
142
142
|
export var OverflowWithEllipsis = styled.span(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n max-width: 140px;\n overflow: hidden;\n text-overflow: ellipsis;\n"], ["\n max-width: 140px;\n overflow: hidden;\n text-overflow: ellipsis;\n"])));
|
|
143
|
-
export var TopLevelWrap = styled.div(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n background-color: ", ";\n border-right: 1px solid ", ";\n height: -webkit-fill-available;\n transition: width 0.5s ease;\n width: ", ";\n\n z-index:
|
|
143
|
+
export var TopLevelWrap = styled.div(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n background-color: ", ";\n border-right: 1px solid ", ";\n height: -webkit-fill-available;\n transition: width 0.5s ease;\n width: ", ";\n\n z-index: 5;\n position: absolute;\n top: ", ";\n height: ", ";\n\n display: flex;\n flex-direction: column;\n\n @media (min-width: 1024px) {\n top: inherit;\n z-index: 2;\n }\n"], ["\n background-color: ", ";\n border-right: 1px solid ", ";\n height: -webkit-fill-available;\n transition: width 0.5s ease;\n width: ", ";\n\n z-index: 5;\n position: absolute;\n top: ", ";\n height: ", ";\n\n display: flex;\n flex-direction: column;\n\n @media (min-width: 1024px) {\n top: inherit;\n z-index: 2;\n }\n"])), function (_a) {
|
|
144
144
|
var lightMode = _a.lightMode;
|
|
145
145
|
return (lightMode ? 'white' : th('colors.blue3'));
|
|
146
146
|
}, th('colors.lightGray6'), function (_a) {
|
|
@@ -158,5 +158,5 @@ export var BodyWrap = styled.div(templateObject_20 || (templateObject_20 = __mak
|
|
|
158
158
|
var isCompact = _a.isCompact;
|
|
159
159
|
return (isCompact ? '24px 9px' : '24px 22px');
|
|
160
160
|
});
|
|
161
|
-
export var Overlay = styled.div(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n position: fixed;\n top: 0;\n z-index:
|
|
161
|
+
export var Overlay = styled.div(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n position: fixed;\n top: 0;\n z-index: 4;\n height: 100%;\n width: 100%;\n background-color: ", ";\n @media (min-width: 1024px) {\n display: none;\n }\n"], ["\n position: fixed;\n top: 0;\n z-index: 4;\n height: 100%;\n width: 100%;\n background-color: ", ";\n @media (min-width: 1024px) {\n display: none;\n }\n"])), createRgba('blue2', 0.6));
|
|
162
162
|
var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { StoryObj } from '@storybook/react
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
2
|
|
|
3
3
|
declare const meta: {
|
|
4
4
|
title: string;
|
|
5
5
|
component: import('react').FC<{
|
|
6
6
|
badge: "warning";
|
|
7
7
|
} & import('..').IconProps>;
|
|
8
|
-
decorators: ((Story: import('storybook/
|
|
8
|
+
decorators: ((Story: import('@storybook/core/csf').PartialStoryFn<import('@storybook/react').ReactRenderer, {
|
|
9
9
|
badge: "warning";
|
|
10
10
|
icon: string;
|
|
11
11
|
style?: "normal" | "light" | "solid" | undefined;
|