@elliemae/ds-data-table 2.4.2-rc.11 → 2.4.2-rc.14
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/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +3 -6
- package/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +1 -2
- package/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +1 -2
- package/cjs/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +3 -4
- package/cjs/addons/Editables/DateEditableCell/DateEditableCell.js +1 -2
- package/cjs/addons/Editables/TextEditableCell/TextEditableCell.js +1 -2
- package/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +7 -10
- package/cjs/addons/Filters/Components/DateRangeFilter/index.js +0 -1
- package/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +0 -1
- package/cjs/addons/Filters/Components/NumberRangeFilter/index.js +7 -10
- package/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +0 -1
- package/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +2 -3
- package/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +1 -2
- package/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +0 -1
- package/cjs/addons/Filters/Components/SelectFilter/utils.js +4 -9
- package/cjs/addons/Filters/Components/SingleDateFilter/index.js +0 -1
- package/cjs/configs/useDatatableConfig.js +1 -4
- package/cjs/configs/useRowFlattenization.js +6 -8
- package/cjs/configs/useTableColsWithAddons.js +1 -2
- package/cjs/exported-related/EditableCell.js +1 -4
- package/cjs/exported-related/FilterPopover.js +7 -14
- package/cjs/exported-related/Filters/dateRangeFilterFn.js +1 -2
- package/cjs/exported-related/Filters/numberRangeFilterFn.js +1 -1
- package/cjs/exported-related/Filters/singleDateFilterFn.js +0 -1
- package/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js +5 -8
- package/cjs/exported-related/RowRenderer/index.js +0 -1
- package/cjs/exported-related/RowRenderer/useRowRendererHandlers.js +1 -4
- package/cjs/exported-related/RowRenderer/useRowStyle.js +0 -1
- package/cjs/exported-related/Toolbar/Toolbar.js +0 -1
- package/cjs/exported-related/groupBy.js +0 -1
- package/cjs/helpers/addCellData.js +2 -6
- package/cjs/helpers/cellPadding.js +3 -5
- package/cjs/helpers/columnsToGrid.js +1 -3
- package/cjs/helpers/sizeToCss.js +1 -1
- package/cjs/hooks/useRecoverFocusCol.js +1 -8
- package/cjs/parts/Cells/Cell.js +3 -4
- package/cjs/parts/Cells/useCellStyle.js +2 -2
- package/cjs/parts/DnDHandle.js +2 -3
- package/cjs/parts/DropIndicator.js +8 -2
- package/cjs/parts/FilterBar/FiltersBar.js +5 -8
- package/cjs/parts/FilterBar/components/DateRangePill.js +4 -7
- package/cjs/parts/FilterBar/components/DateSwitcherPill.js +4 -7
- package/cjs/parts/FilterBar/components/MultiSelectPill.js +2 -5
- package/cjs/parts/FilterBar/components/NumberRangePill.js +3 -7
- package/cjs/parts/FilterBar/components/SelectPill.js +1 -3
- package/cjs/parts/FilterBar/components/SingleDatePill.js +1 -4
- package/cjs/parts/Filters/index.js +4 -4
- package/cjs/parts/Headers/HeaderCell.js +10 -13
- package/cjs/parts/Headers/HeaderCellGroup.js +5 -8
- package/cjs/parts/Headers/HeaderCellTitle.js +0 -1
- package/cjs/parts/Headers/HeaderResizer.js +3 -8
- package/cjs/parts/Headers/useHeaderCellConfig.js +1 -1
- package/cjs/parts/Headers/useHeaderCellHandlers.js +2 -4
- package/cjs/parts/HoC/withConditionalDnDColumnContext.js +2 -3
- package/cjs/parts/HoC/withConditionalDnDRowContext.js +1 -2
- package/cjs/parts/Row.js +0 -1
- package/cjs/parts/RowLoading.js +0 -1
- package/cjs/parts/RowVariants/RowVariantHeader.js +0 -1
- package/cjs/parts/RowVariants/index.js +3 -3
- package/cjs/parts/Rows.js +2 -2
- package/cjs/parts/TableContent.js +2 -3
- package/cjs/parts/VirtualRowsList.js +0 -1
- package/cjs/redux/reducers/headersReducers/logic.js +2 -2
- package/cjs/styled.js +50 -20
- package/esm/addons/Columns/ColumnExpand/ColumnExpand.js +3 -6
- package/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +1 -2
- package/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +1 -2
- package/esm/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +2 -3
- package/esm/addons/Editables/DateEditableCell/DateEditableCell.js +0 -1
- package/esm/addons/Editables/TextEditableCell/TextEditableCell.js +0 -1
- package/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +7 -10
- package/esm/addons/Filters/Components/DateRangeFilter/index.js +0 -1
- package/esm/addons/Filters/Components/DateSwitcherFilter/index.js +0 -1
- package/esm/addons/Filters/Components/NumberRangeFilter/index.js +7 -10
- package/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +0 -1
- package/esm/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +1 -2
- package/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +0 -1
- package/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +0 -1
- package/esm/addons/Filters/Components/SelectFilter/utils.js +4 -9
- package/esm/addons/Filters/Components/SingleDateFilter/index.js +0 -1
- package/esm/configs/useDatatableConfig.js +1 -4
- package/esm/configs/useRowFlattenization.js +6 -8
- package/esm/configs/useTableColsWithAddons.js +4 -5
- package/esm/exported-related/EditableCell.js +1 -4
- package/esm/exported-related/FilterPopover.js +5 -12
- package/esm/exported-related/Filters/dateRangeFilterFn.js +1 -2
- package/esm/exported-related/Filters/numberRangeFilterFn.js +1 -1
- package/esm/exported-related/Filters/singleDateFilterFn.js +0 -1
- package/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js +5 -8
- package/esm/exported-related/RowRenderer/index.js +0 -1
- package/esm/exported-related/RowRenderer/useRowRendererHandlers.js +1 -4
- package/esm/exported-related/RowRenderer/useRowStyle.js +0 -1
- package/esm/exported-related/Toolbar/Toolbar.js +0 -1
- package/esm/exported-related/groupBy.js +0 -1
- package/esm/helpers/addCellData.js +2 -6
- package/esm/helpers/cellPadding.js +3 -5
- package/esm/helpers/columnsToGrid.js +1 -3
- package/esm/helpers/sizeToCss.js +1 -1
- package/esm/hooks/useRecoverFocusCol.js +1 -8
- package/esm/parts/Cells/Cell.js +3 -4
- package/esm/parts/Cells/useCellStyle.js +2 -2
- package/esm/parts/DnDHandle.js +2 -3
- package/esm/parts/DropIndicator.js +8 -2
- package/esm/parts/FilterBar/FiltersBar.js +4 -7
- package/esm/parts/FilterBar/components/DateRangePill.js +4 -7
- package/esm/parts/FilterBar/components/DateSwitcherPill.js +4 -7
- package/esm/parts/FilterBar/components/MultiSelectPill.js +2 -5
- package/esm/parts/FilterBar/components/NumberRangePill.js +3 -7
- package/esm/parts/FilterBar/components/SelectPill.js +1 -3
- package/esm/parts/FilterBar/components/SingleDatePill.js +1 -4
- package/esm/parts/Filters/index.js +6 -6
- package/esm/parts/Headers/HeaderCell.js +10 -13
- package/esm/parts/Headers/HeaderCellGroup.js +5 -8
- package/esm/parts/Headers/HeaderCellTitle.js +0 -1
- package/esm/parts/Headers/HeaderResizer.js +3 -8
- package/esm/parts/Headers/useHeaderCellConfig.js +1 -1
- package/esm/parts/Headers/useHeaderCellHandlers.js +2 -4
- package/esm/parts/HoC/withConditionalDnDColumnContext.js +2 -3
- package/esm/parts/HoC/withConditionalDnDRowContext.js +1 -2
- package/esm/parts/Row.js +0 -1
- package/esm/parts/RowLoading.js +0 -1
- package/esm/parts/RowVariants/RowVariantHeader.js +0 -1
- package/esm/parts/RowVariants/index.js +2 -2
- package/esm/parts/Rows.js +2 -2
- package/esm/parts/TableContent.js +0 -1
- package/esm/parts/VirtualRowsList.js +0 -1
- package/esm/redux/reducers/headersReducers/logic.js +2 -2
- package/esm/styled.js +50 -20
- package/package.json +19 -19
|
@@ -14,7 +14,6 @@ var dsIcons = require('@elliemae/ds-icons');
|
|
|
14
14
|
var styled$1 = require('styled-components');
|
|
15
15
|
var styled = require('../../../styled.js');
|
|
16
16
|
var constants = require('../../../configs/constants.js');
|
|
17
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
18
17
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
19
18
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
20
19
|
require('react-virtual');
|
|
@@ -116,8 +115,6 @@ const expandRowColumn = {
|
|
|
116
115
|
}, void 0, GlobalExpandIcon));
|
|
117
116
|
},
|
|
118
117
|
Cell: _ref2 => {
|
|
119
|
-
var _row$original$subRows;
|
|
120
|
-
|
|
121
118
|
let {
|
|
122
119
|
cell,
|
|
123
120
|
row,
|
|
@@ -134,7 +131,7 @@ const expandRowColumn = {
|
|
|
134
131
|
} = ctx;
|
|
135
132
|
const uniqueId = row.uid;
|
|
136
133
|
const isExpanded = expandedRows[uniqueId];
|
|
137
|
-
const shouldPrintCaret =
|
|
134
|
+
const shouldPrintCaret = row.original.subRows?.length && row.depth === 0 || // only allows 1 level of expands
|
|
138
135
|
row.original.tableRowDetails || row.original.dimsumHeaderValue;
|
|
139
136
|
const onRowExpandHandler = React.useCallback(e => {
|
|
140
137
|
e.stopPropagation();
|
|
@@ -150,7 +147,7 @@ const expandRowColumn = {
|
|
|
150
147
|
const isDragging = draggableProps ? draggableProps.isDragging : false;
|
|
151
148
|
const isDragOverlay = dragAndDropRows && !draggableProps;
|
|
152
149
|
const indentStyle = React.useMemo(() => ({
|
|
153
|
-
marginLeft:
|
|
150
|
+
marginLeft: `${row.depth * 32}px`,
|
|
154
151
|
marginRight: '18px',
|
|
155
152
|
paddingLeft: '2px',
|
|
156
153
|
paddingRight: '2px',
|
|
@@ -161,7 +158,7 @@ const expandRowColumn = {
|
|
|
161
158
|
}), [row.depth]);
|
|
162
159
|
const rowProps = React.useMemo(() => ({
|
|
163
160
|
role: 'button',
|
|
164
|
-
key:
|
|
161
|
+
key: `${row.uid}-expand-button`,
|
|
165
162
|
title: 'Toggle Row Expanded',
|
|
166
163
|
onClick: onRowExpandHandler,
|
|
167
164
|
onKeyDown: e => {
|
|
@@ -12,7 +12,6 @@ require('core-js/modules/esnext.iterator.filter.js');
|
|
|
12
12
|
var React = require('react');
|
|
13
13
|
var dsForm = require('@elliemae/ds-form');
|
|
14
14
|
var constants = require('../../../configs/constants.js');
|
|
15
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
16
15
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
17
16
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
18
17
|
require('react-virtual');
|
|
@@ -111,7 +110,7 @@ const multiSelectColumn = {
|
|
|
111
110
|
const {
|
|
112
111
|
uid
|
|
113
112
|
} = row;
|
|
114
|
-
const selectedState = selection
|
|
113
|
+
const selectedState = selection?.[uid];
|
|
115
114
|
const PureCheckboxCell = React.useMemo(() => /*#__PURE__*/_jsx__default["default"](dsForm.DSCheckbox, {
|
|
116
115
|
"data-testid": constants.DATA_TESTID.DATA_TABLE_CHECKBOX,
|
|
117
116
|
title: "Toggle Row Selected",
|
|
@@ -10,7 +10,6 @@ var constants = require('../../../configs/constants.js');
|
|
|
10
10
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
11
11
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
12
12
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
13
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
14
13
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
15
14
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
16
15
|
require('react-virtual');
|
|
@@ -68,7 +67,7 @@ const singleSelectColumn = {
|
|
|
68
67
|
const {
|
|
69
68
|
uid
|
|
70
69
|
} = row;
|
|
71
|
-
const selectedState = selection
|
|
70
|
+
const selectedState = selection?.[uid];
|
|
72
71
|
const PureCheckBox = React.useMemo(() => /*#__PURE__*/_jsx__default["default"](CenteredContent, {}, void 0, /*#__PURE__*/_jsx__default["default"](StyledDSRadio // eslint-disable-next-line react/prop-types
|
|
73
72
|
, {
|
|
74
73
|
containerProps: {
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
8
7
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
8
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
@@ -11,9 +10,9 @@ require('core-js/modules/esnext.async-iterator.filter.js');
|
|
|
11
10
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
12
11
|
var React = require('react');
|
|
13
12
|
var dsControlledForm = require('@elliemae/ds-controlled-form');
|
|
14
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
15
13
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
16
14
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
15
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
17
16
|
require('@elliemae/ds-button');
|
|
18
17
|
require('@elliemae/ds-popperjs');
|
|
19
18
|
require('styled-components');
|
|
@@ -90,11 +89,11 @@ const ComboboxEditableCell = props => {
|
|
|
90
89
|
const handleOnBlur = React.useCallback(() => {
|
|
91
90
|
const property = columnId;
|
|
92
91
|
onCellValueChange({
|
|
93
|
-
value: value
|
|
92
|
+
value: value?.value,
|
|
94
93
|
property,
|
|
95
94
|
rowIndex: cell.row.index
|
|
96
95
|
});
|
|
97
|
-
}, [columnId, onCellValueChange, value
|
|
96
|
+
}, [columnId, onCellValueChange, value?.value, cell]);
|
|
98
97
|
return /*#__PURE__*/_jsx__default["default"](EditableCell.EditableCell, {
|
|
99
98
|
StandardRender: DefaultCellRender,
|
|
100
99
|
EditableRenderer: /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSComboBox, {
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
9
7
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
10
8
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
11
9
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
12
10
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
13
11
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
12
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
14
13
|
require('@elliemae/ds-button');
|
|
15
14
|
require('@elliemae/ds-popperjs');
|
|
16
15
|
require('styled-components');
|
|
@@ -3,15 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var styled = require('styled-components');
|
|
9
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
10
8
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
11
9
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
12
10
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
13
11
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
14
12
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
15
14
|
require('@elliemae/ds-button');
|
|
16
15
|
require('@elliemae/ds-popperjs');
|
|
17
16
|
require('../../../redux/reducers/index.js');
|
|
@@ -15,7 +15,6 @@ var dsForm = require('@elliemae/ds-form');
|
|
|
15
15
|
var dsFormLayoutBlocks = require('@elliemae/ds-form-layout-blocks');
|
|
16
16
|
var dsIcons = require('@elliemae/ds-icons');
|
|
17
17
|
var FilterPopover = require('../../../../exported-related/FilterPopover.js');
|
|
18
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
19
18
|
require('../../../../styled.js');
|
|
20
19
|
require('../../../../DataTableContext.js');
|
|
21
20
|
require('react/jsx-runtime');
|
|
@@ -65,8 +64,6 @@ const opts = {
|
|
|
65
64
|
allowNegative: true
|
|
66
65
|
};
|
|
67
66
|
const CurrencyRangeFilter = props => {
|
|
68
|
-
var _filterValue$from, _filterValue$to, _column$ref$current$o, _column$ref, _column$ref$current;
|
|
69
|
-
|
|
70
67
|
const {
|
|
71
68
|
column,
|
|
72
69
|
filterValue = {
|
|
@@ -123,15 +120,15 @@ const CurrencyRangeFilter = props => {
|
|
|
123
120
|
}
|
|
124
121
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
|
|
125
122
|
label: "Min",
|
|
126
|
-
inputID:
|
|
123
|
+
inputID: `${idPreffix}-min-${column.id}`
|
|
127
124
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
|
|
128
125
|
containerProps: {
|
|
129
126
|
style: {
|
|
130
127
|
textAlign: 'right'
|
|
131
128
|
}
|
|
132
129
|
},
|
|
133
|
-
id:
|
|
134
|
-
value:
|
|
130
|
+
id: `${idPreffix}-min-${column.id}`,
|
|
131
|
+
value: `${filterValue?.from ?? ''}`,
|
|
135
132
|
onChange: handleFromChange,
|
|
136
133
|
placeholder: "0.00",
|
|
137
134
|
mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
|
|
@@ -141,15 +138,15 @@ const CurrencyRangeFilter = props => {
|
|
|
141
138
|
}
|
|
142
139
|
})), /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
|
|
143
140
|
label: "Max",
|
|
144
|
-
inputID:
|
|
141
|
+
inputID: `${idPreffix}-max-${column.id}`
|
|
145
142
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
|
|
146
143
|
containerProps: {
|
|
147
144
|
style: {
|
|
148
145
|
textAlign: 'right'
|
|
149
146
|
}
|
|
150
147
|
},
|
|
151
|
-
id:
|
|
152
|
-
value:
|
|
148
|
+
id: `${idPreffix}-max-${column.id}`,
|
|
149
|
+
value: `${filterValue?.to ?? ''}`,
|
|
153
150
|
onChange: handleToChange,
|
|
154
151
|
placeholder: "0.00",
|
|
155
152
|
mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
|
|
@@ -159,7 +156,7 @@ const CurrencyRangeFilter = props => {
|
|
|
159
156
|
}))),
|
|
160
157
|
triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
|
|
161
158
|
customStyles: {
|
|
162
|
-
width:
|
|
159
|
+
width: column.ref?.current?.offsetWidth ?? '0px'
|
|
163
160
|
},
|
|
164
161
|
innerRef: innerRef,
|
|
165
162
|
ariaLabel: "Open Currency Range Filter"
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var dsIcons = require('@elliemae/ds-icons');
|
|
9
8
|
var Grid = require('@elliemae/ds-grid');
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var dsIcons = require('@elliemae/ds-icons');
|
|
9
8
|
var Grid = require('@elliemae/ds-grid');
|
|
@@ -15,7 +15,6 @@ var dsForm = require('@elliemae/ds-form');
|
|
|
15
15
|
var dsFormLayoutBlocks = require('@elliemae/ds-form-layout-blocks');
|
|
16
16
|
var dsIcons = require('@elliemae/ds-icons');
|
|
17
17
|
var FilterPopover = require('../../../../exported-related/FilterPopover.js');
|
|
18
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
19
18
|
require('../../../../styled.js');
|
|
20
19
|
require('../../../../DataTableContext.js');
|
|
21
20
|
require('react/jsx-runtime');
|
|
@@ -64,8 +63,6 @@ const opts = {
|
|
|
64
63
|
allowNegative: true
|
|
65
64
|
};
|
|
66
65
|
const NumberRangeFilter = props => {
|
|
67
|
-
var _filterValue$from, _filterValue$to, _column$ref$current$o, _column$ref, _column$ref$current;
|
|
68
|
-
|
|
69
66
|
const {
|
|
70
67
|
column,
|
|
71
68
|
filterValue = {
|
|
@@ -126,15 +123,15 @@ const NumberRangeFilter = props => {
|
|
|
126
123
|
}
|
|
127
124
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
|
|
128
125
|
label: "Low",
|
|
129
|
-
inputID:
|
|
126
|
+
inputID: `${idPreffix}-low-${column.id}`
|
|
130
127
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
|
|
131
128
|
containerProps: {
|
|
132
129
|
style: {
|
|
133
130
|
textAlign: 'right'
|
|
134
131
|
}
|
|
135
132
|
},
|
|
136
|
-
id:
|
|
137
|
-
value:
|
|
133
|
+
id: `${idPreffix}-low-${column.id}`,
|
|
134
|
+
value: `${filterValue?.from ?? ''}`,
|
|
138
135
|
onChange: handleFromChange,
|
|
139
136
|
placeholder: "0",
|
|
140
137
|
mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
|
|
@@ -144,15 +141,15 @@ const NumberRangeFilter = props => {
|
|
|
144
141
|
}
|
|
145
142
|
})), /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
|
|
146
143
|
label: "High",
|
|
147
|
-
inputID:
|
|
144
|
+
inputID: `${idPreffix}-high-${column.id}`
|
|
148
145
|
}, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
|
|
149
146
|
containerProps: {
|
|
150
147
|
style: {
|
|
151
148
|
textAlign: 'right'
|
|
152
149
|
}
|
|
153
150
|
},
|
|
154
|
-
id:
|
|
155
|
-
value:
|
|
151
|
+
id: `${idPreffix}-high-${column.id}`,
|
|
152
|
+
value: `${filterValue?.to ?? ''}`,
|
|
156
153
|
onChange: handleToChange,
|
|
157
154
|
placeholder: "0",
|
|
158
155
|
mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
|
|
@@ -162,7 +159,7 @@ const NumberRangeFilter = props => {
|
|
|
162
159
|
}))),
|
|
163
160
|
triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
|
|
164
161
|
customStyles: {
|
|
165
|
-
width:
|
|
162
|
+
width: column.ref?.current?.offsetWidth ?? '0px'
|
|
166
163
|
},
|
|
167
164
|
innerRef: innerRef,
|
|
168
165
|
ariaLabel: "Open Number Range Filter"
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
require('core-js/modules/esnext.async-iterator.map.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.map.js');
|
|
8
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
8
|
require('core-js/modules/esnext.set.add-all.js');
|
|
10
9
|
require('core-js/modules/esnext.set.delete-all.js');
|
|
11
10
|
require('core-js/modules/esnext.set.difference.js');
|
|
@@ -5,13 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
require('react');
|
|
7
7
|
var BaseSelectFilter = require('./BaseSelectFilter.js');
|
|
8
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
9
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
10
8
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
11
9
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
12
10
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
13
11
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
14
12
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
15
14
|
require('@elliemae/ds-button');
|
|
16
15
|
require('@elliemae/ds-popperjs');
|
|
17
16
|
require('styled-components');
|
|
@@ -64,7 +63,7 @@ const MultiSelectFilter = _ref => {
|
|
|
64
63
|
isMulti: true,
|
|
65
64
|
column: column,
|
|
66
65
|
ctx: ctx,
|
|
67
|
-
selectedItems: filterValue
|
|
66
|
+
selectedItems: filterValue ?? [],
|
|
68
67
|
type: FilterTypes.FILTER_TYPES.MULTI_SELECT,
|
|
69
68
|
onValueChange: onValueChange,
|
|
70
69
|
patchHeaderFilterButtonAndMenu: patchHeaderFilterButtonAndMenu,
|
|
@@ -5,13 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
require('react');
|
|
7
7
|
var BaseSelectFilter = require('./BaseSelectFilter.js');
|
|
8
|
-
require('@babel/runtime/helpers/defineProperty');
|
|
9
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
10
8
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
11
9
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
12
10
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
13
11
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
14
12
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
|
+
require('@babel/runtime/helpers/defineProperty');
|
|
15
14
|
require('@elliemae/ds-button');
|
|
16
15
|
require('@elliemae/ds-popperjs');
|
|
17
16
|
require('styled-components');
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
8
|
var React = require('react');
|
|
10
9
|
var utils = require('./utils.js');
|
|
11
10
|
|
|
@@ -6,7 +6,6 @@ var constants = require('../../../../configs/constants.js');
|
|
|
6
6
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
8
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
9
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
10
9
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
11
10
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
12
11
|
require('react');
|
|
@@ -34,18 +33,14 @@ require('../../../../parts/Footer.js');
|
|
|
34
33
|
require('../../../../parts/HoC/SortableItemContext.js');
|
|
35
34
|
|
|
36
35
|
const focusNextMenuItem = (e, index) => {
|
|
37
|
-
var _menuItems$item;
|
|
38
|
-
|
|
39
36
|
e.preventDefault();
|
|
40
|
-
const menuItems = document.querySelectorAll(
|
|
41
|
-
|
|
37
|
+
const menuItems = document.querySelectorAll(`[data-testid="${constants.DATA_TESTID.DATA_TABLE_SELECT_MENU_ITEM}"]`);
|
|
38
|
+
menuItems.item(index + 1)?.focus();
|
|
42
39
|
};
|
|
43
40
|
const focusPrevMenuItem = (e, index) => {
|
|
44
|
-
var _menuItems$item2;
|
|
45
|
-
|
|
46
41
|
e.preventDefault();
|
|
47
|
-
const menuItems = document.querySelectorAll(
|
|
48
|
-
|
|
42
|
+
const menuItems = document.querySelectorAll(`[data-testid="${constants.DATA_TESTID.DATA_TABLE_SELECT_MENU_ITEM}"]`);
|
|
43
|
+
menuItems.item(index - 1)?.focus();
|
|
49
44
|
};
|
|
50
45
|
|
|
51
46
|
exports.focusNextMenuItem = focusNextMenuItem;
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var dsIcons = require('@elliemae/ds-icons');
|
|
9
8
|
var Grid = require('@elliemae/ds-grid');
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
8
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
10
9
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
11
10
|
var React = require('react');
|
|
@@ -17,8 +16,6 @@ var useTableColsWithAddons = require('./useTableColsWithAddons.js');
|
|
|
17
16
|
var constants = require('./constants.js');
|
|
18
17
|
|
|
19
18
|
const useDatatableConfig = props => {
|
|
20
|
-
var _columnHeaderRef$curr, _columnHeaderRef$curr2, _columnHeaderRef$curr3;
|
|
21
|
-
|
|
22
19
|
const virtualListRef = React.useRef(null);
|
|
23
20
|
const columnHeaderRef = React.useRef(null); // ===========================================================================
|
|
24
21
|
// Column config
|
|
@@ -36,7 +33,7 @@ const useDatatableConfig = props => {
|
|
|
36
33
|
size: dataLength,
|
|
37
34
|
parentRef: virtualListRef,
|
|
38
35
|
overscan: 15,
|
|
39
|
-
paddingStart:
|
|
36
|
+
paddingStart: columnHeaderRef.current?.getBoundingClientRect()?.height ?? 24
|
|
40
37
|
}); // ===========================================================================
|
|
41
38
|
// Action ref setup
|
|
42
39
|
// ===========================================================================
|
|
@@ -18,16 +18,14 @@ const flatten = function (data, expandedRows, uniqueRowAccessor) {
|
|
|
18
18
|
const result = [];
|
|
19
19
|
|
|
20
20
|
const doit = function (row) {
|
|
21
|
-
var _row$subRows, _row$subRows$length, _row$subRows2;
|
|
22
|
-
|
|
23
21
|
let index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
24
22
|
let parentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
25
23
|
let parentIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
26
24
|
let depth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
|
|
27
|
-
const id = (parentId ?
|
|
25
|
+
const id = (parentId ? `${parentId}.` : '') + index.toString();
|
|
28
26
|
const uid = getIdFromUniqueRowAccessor.getIdFromUniqueRowAccessor(uniqueRowAccessor, {
|
|
29
27
|
id,
|
|
30
|
-
original: row
|
|
28
|
+
original: row ?? {}
|
|
31
29
|
});
|
|
32
30
|
const isExpanded = expandedRows[uid];
|
|
33
31
|
const rowToPush = {
|
|
@@ -39,13 +37,13 @@ const flatten = function (data, expandedRows, uniqueRowAccessor) {
|
|
|
39
37
|
parentIndex,
|
|
40
38
|
depth,
|
|
41
39
|
isExpanded,
|
|
42
|
-
subRows:
|
|
43
|
-
childrenCount:
|
|
44
|
-
original: row
|
|
40
|
+
subRows: row?.subRows ?? [],
|
|
41
|
+
childrenCount: row?.subRows?.length ?? 0,
|
|
42
|
+
original: row ?? {}
|
|
45
43
|
};
|
|
46
44
|
result.push(rowToPush); // If we have subrows and we are expanded
|
|
47
45
|
|
|
48
|
-
if (row
|
|
46
|
+
if (row?.subRows && expandedRows[uid] && depth <= maxDepth) {
|
|
49
47
|
row.subRows.forEach((subRow, i) => doit(subRow, i, uid, rowToPush.realIndex, depth + 1));
|
|
50
48
|
}
|
|
51
49
|
};
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
require('core-js/modules/esnext.async-iterator.map.js');
|
|
5
5
|
require('core-js/modules/esnext.iterator.map.js');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
7
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
8
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
@@ -28,7 +27,7 @@ const augmentColumns = columns => {
|
|
|
28
27
|
const augmentColumn = function (column, index) {
|
|
29
28
|
let parentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
30
29
|
let depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
31
|
-
let id =
|
|
30
|
+
let id = `column${index}`;
|
|
32
31
|
if (typeof column.Header === 'string') id = column.Header;
|
|
33
32
|
if (typeof column.accessor === 'string') id = column.accessor;
|
|
34
33
|
if (column.columns) column.columns = column.columns.map((col, i) => augmentColumn(col, i, id, depth + 1));
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var styled = require('../styled.js');
|
|
9
8
|
var DataTableContext = require('../DataTableContext.js');
|
|
@@ -53,9 +52,7 @@ const EditableCell = props => {
|
|
|
53
52
|
}
|
|
54
53
|
}, [isEditing, handleCellClick, setIsEditing]);
|
|
55
54
|
const handleOnBlur = React.useCallback(event => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (isEditing && !((_event$currentTarget = event.currentTarget) !== null && _event$currentTarget !== void 0 && _event$currentTarget.contains(event.relatedTarget))) {
|
|
55
|
+
if (isEditing && !event.currentTarget?.contains(event.relatedTarget)) {
|
|
59
56
|
// Not triggered when swapping focus between children
|
|
60
57
|
setIsEditing(false);
|
|
61
58
|
}
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
-
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
5
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
8
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
9
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
10
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
11
|
+
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
13
12
|
var React = require('react');
|
|
14
13
|
var DSButton = require('@elliemae/ds-button');
|
|
15
14
|
var dsPopperjs = require('@elliemae/ds-popperjs');
|
|
@@ -38,8 +37,6 @@ const PopperContent = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
|
38
37
|
componentId: "sc-16i88ut-2"
|
|
39
38
|
})(["background-color:#fff;"]);
|
|
40
39
|
const FilterPopover = _ref2 => {
|
|
41
|
-
var _column$ref$current$o, _column$ref, _column$ref$current;
|
|
42
|
-
|
|
43
40
|
let {
|
|
44
41
|
column,
|
|
45
42
|
columnId,
|
|
@@ -114,10 +111,8 @@ const FilterPopover = _ref2 => {
|
|
|
114
111
|
display: 'flex'
|
|
115
112
|
},
|
|
116
113
|
onBlur: e => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (e.target !== referenceElement && !((_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(e.relatedTarget))) {
|
|
120
|
-
referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.focus();
|
|
114
|
+
if (e.target !== referenceElement && !popperRef.current?.contains(e.relatedTarget)) {
|
|
115
|
+
referenceElement?.focus();
|
|
121
116
|
}
|
|
122
117
|
}
|
|
123
118
|
}, void 0, /*#__PURE__*/_jsx__default["default"](FilterButton, {
|
|
@@ -135,7 +130,7 @@ const FilterPopover = _ref2 => {
|
|
|
135
130
|
if (isIconVisible) setReferenceElement(_ref);
|
|
136
131
|
innerRef.current = _ref;
|
|
137
132
|
},
|
|
138
|
-
tabIndex: reduxHeader
|
|
133
|
+
tabIndex: reduxHeader?.withTabStops ? 0 : -1
|
|
139
134
|
})), referenceElement && /*#__PURE__*/_jsx__default["default"](dsPopperjs.DSPopperJS, {
|
|
140
135
|
referenceElement: referenceElement,
|
|
141
136
|
showPopover: isMenuOpen,
|
|
@@ -147,16 +142,14 @@ const FilterPopover = _ref2 => {
|
|
|
147
142
|
zIndex: 10,
|
|
148
143
|
withoutAnimation: true,
|
|
149
144
|
extraPopperStyles: _objectSpread(_objectSpread({}, customStyles), {}, {
|
|
150
|
-
minWidth:
|
|
145
|
+
minWidth: column.ref?.current?.offsetWidth ?? '0px'
|
|
151
146
|
}),
|
|
152
147
|
placementOrderPreference: ['bottom-end']
|
|
153
148
|
}, void 0, /*#__PURE__*/jsxRuntime.jsx(PopperContent, {
|
|
154
149
|
onKeyDown: e => {
|
|
155
150
|
if (e.code === 'Tab') {
|
|
156
151
|
setTimeout(() => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if (!(popperRef !== null && popperRef !== void 0 && (_popperRef$current2 = popperRef.current) !== null && _popperRef$current2 !== void 0 && _popperRef$current2.contains(document.activeElement))) {
|
|
152
|
+
if (!popperRef?.current?.contains(document.activeElement)) {
|
|
160
153
|
patchHeader(columnId, {
|
|
161
154
|
hideFilterMenu: true,
|
|
162
155
|
hideFilterButton: false
|
|
@@ -7,7 +7,6 @@ require('core-js/modules/esnext.iterator.constructor.js');
|
|
|
7
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
8
|
var moment = require('moment');
|
|
9
9
|
var constants = require('../../configs/constants.js');
|
|
10
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
11
10
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
12
11
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
13
12
|
require('react');
|
|
@@ -40,6 +39,6 @@ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
|
40
39
|
|
|
41
40
|
// use file instead of index to avoid circular imports!
|
|
42
41
|
|
|
43
|
-
const dateRangeFilterFn = (unfilteredData, filterKey, filterValue) => unfilteredData.filter(datum => !(filterValue
|
|
42
|
+
const dateRangeFilterFn = (unfilteredData, filterKey, filterValue) => unfilteredData.filter(datum => !(filterValue?.startDate && filterValue?.endDate) || moment__default["default"](filterValue?.startDate, constants.momentFormat).isSameOrBefore(datum[filterKey], 'day') && moment__default["default"](filterValue?.endDate, constants.momentFormat).isSameOrAfter(datum[filterKey], 'day'));
|
|
44
43
|
|
|
45
44
|
exports.dateRangeFilterFn = dateRangeFilterFn;
|
|
@@ -8,6 +8,6 @@ require('core-js/modules/esnext.iterator.filter.js');
|
|
|
8
8
|
|
|
9
9
|
const isEmpty = number => number === null || number === undefined;
|
|
10
10
|
|
|
11
|
-
const numberRangeFilterFn = (unfilteredData, filterKey, filterValue) => unfilteredData.filter(datum => isEmpty(filterValue
|
|
11
|
+
const numberRangeFilterFn = (unfilteredData, filterKey, filterValue) => unfilteredData.filter(datum => isEmpty(filterValue?.from) || isEmpty(filterValue?.to) || datum[filterKey] >= filterValue.from && datum[filterKey] <= filterValue.to);
|
|
12
12
|
|
|
13
13
|
exports.numberRangeFilterFn = numberRangeFilterFn;
|
|
@@ -7,7 +7,6 @@ require('core-js/modules/esnext.iterator.constructor.js');
|
|
|
7
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
8
|
var moment = require('moment');
|
|
9
9
|
var constants = require('../../configs/constants.js');
|
|
10
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
11
10
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
12
11
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
13
12
|
require('react');
|