@economic/taco 2.36.0 → 2.36.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Report/Report.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +6 -0
- package/dist/components/Table3/Table3.d.ts +1 -25
- package/dist/components/Table3/types.d.ts +1 -11
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +16 -7
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js +12 -2
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +3 -24
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +1 -2
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +0 -9
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/dom.js +2 -2
- package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
- package/dist/primitives/Table/types.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.d.ts +1 -1
- package/dist/taco.cjs.development.js +34 -46
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/dom.d.ts +1 -1
- package/package.json +2 -2
@@ -4156,7 +4156,7 @@ const getIndexOfFirstChildOverflowingParent = (element, overscan = 0) => {
|
|
4156
4156
|
}
|
4157
4157
|
return boundaryChildIndex;
|
4158
4158
|
};
|
4159
|
-
const getNextFocussableElement =
|
4159
|
+
const getNextFocussableElement = currentElement => {
|
4160
4160
|
if (!currentElement) {
|
4161
4161
|
return null;
|
4162
4162
|
}
|
@@ -4166,7 +4166,7 @@ const getNextFocussableElement = (currentElement, direction = 1) => {
|
|
4166
4166
|
if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {
|
4167
4167
|
return null;
|
4168
4168
|
}
|
4169
|
-
return focussableElements[currentElementIndex +
|
4169
|
+
return focussableElements[currentElementIndex + 1];
|
4170
4170
|
};
|
4171
4171
|
const getOverlaySelector = element => {
|
4172
4172
|
switch (element === null || element === void 0 ? void 0 : element.getAttribute('role')) {
|
@@ -10218,13 +10218,6 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
|
|
10218
10218
|
function configureReactTableOptions(options, props) {
|
10219
10219
|
var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
|
10220
10220
|
const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
|
10221
|
-
const getRowIdentityColumnAccessor = () => {
|
10222
|
-
if (!props.rowIdentityColumnAccessor) {
|
10223
|
-
return undefined;
|
10224
|
-
}
|
10225
|
-
const rowIdentityColumnAccessors = [props.rowIdentityColumnAccessor].flat();
|
10226
|
-
return originalRow => rowIdentityColumnAccessors.map(identityColumnAccessor => String(originalRow[identityColumnAccessor])).join('_');
|
10227
|
-
};
|
10228
10221
|
const tableOptions = {
|
10229
10222
|
defaultColumn: {
|
10230
10223
|
enableColumnFilter: options.enableFiltering || true,
|
@@ -10249,8 +10242,6 @@ function configureReactTableOptions(options, props) {
|
|
10249
10242
|
// models for default features
|
10250
10243
|
getExpandedRowModel: reactTable.getExpandedRowModel(),
|
10251
10244
|
getGroupedRowModel: reactTable.getGroupedRowModel(),
|
10252
|
-
// Use row indentity column values as id for each row
|
10253
|
-
getRowId: getRowIdentityColumnAccessor(),
|
10254
10245
|
groupedColumnMode: false
|
10255
10246
|
};
|
10256
10247
|
if (tableOptions.enableColumnResizing) {
|
@@ -11592,7 +11583,6 @@ function useTableManager(props, meta, internalColumns) {
|
|
11592
11583
|
// ensure data is always valid
|
11593
11584
|
const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
|
11594
11585
|
const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
|
11595
|
-
const rowIdentityColumnAccessor = props.rowIdentityColumnAccessor !== undefined ? [props.rowIdentityColumnAccessor].flat() : [];
|
11596
11586
|
// create a react-table instance
|
11597
11587
|
const instance = reactTable.useReactTable({
|
11598
11588
|
data,
|
@@ -11620,7 +11610,7 @@ function useTableManager(props, meta, internalColumns) {
|
|
11620
11610
|
rowDrag,
|
11621
11611
|
rowDrop: rowDrop,
|
11622
11612
|
rowExpansion: rowExpansion,
|
11623
|
-
|
11613
|
+
rowIdentityColumnId: props.rowIdentityColumnId,
|
11624
11614
|
rowGoto,
|
11625
11615
|
rowGroups: rowGroups,
|
11626
11616
|
rowHeight,
|
@@ -15279,12 +15269,17 @@ const BubbleSelect = props => {
|
|
15279
15269
|
};
|
15280
15270
|
|
15281
15271
|
const Search$2 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(props, ref) {
|
15272
|
+
const {
|
15273
|
+
onTabKeyPress,
|
15274
|
+
...otherProps
|
15275
|
+
} = props;
|
15282
15276
|
const {
|
15283
15277
|
listboxRef,
|
15284
15278
|
searchQuery,
|
15285
15279
|
setSearchQuery,
|
15286
15280
|
setValidationError,
|
15287
|
-
validationError
|
15281
|
+
validationError,
|
15282
|
+
setOpen
|
15288
15283
|
} = useSelect2Context();
|
15289
15284
|
const handleChange = event => {
|
15290
15285
|
if (validationError) {
|
@@ -15297,6 +15292,11 @@ const Search$2 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
|
|
15297
15292
|
if (event.key === ' ') {
|
15298
15293
|
return;
|
15299
15294
|
}
|
15295
|
+
// Select2 should close dropdown and receive focus, when user press Tab while searching (UX requirement to support better keyboard navigation)
|
15296
|
+
if (event.key === 'Tab') {
|
15297
|
+
setOpen(false);
|
15298
|
+
onTabKeyPress();
|
15299
|
+
}
|
15300
15300
|
if (isAriaSelectionKey(event) || event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
15301
15301
|
var _listboxRef$current;
|
15302
15302
|
event.preventDefault();
|
@@ -15311,7 +15311,7 @@ const Search$2 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
|
|
15311
15311
|
}),
|
15312
15312
|
invalid: !!validationError,
|
15313
15313
|
message: validationError === null || validationError === void 0 ? void 0 : validationError.message
|
15314
|
-
}, /*#__PURE__*/React__default.createElement(Input, Object.assign({},
|
15314
|
+
}, /*#__PURE__*/React__default.createElement(Input, Object.assign({}, otherProps, {
|
15315
15315
|
"aria-hidden": true,
|
15316
15316
|
autoFocus: true,
|
15317
15317
|
invalid: !!validationError,
|
@@ -15522,6 +15522,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
15522
15522
|
// align the listbox min width with the width of the input - it should never be smaller
|
15523
15523
|
const dimensions = useBoundingClientRectListener(internalRef);
|
15524
15524
|
// state
|
15525
|
+
const [tabTriggeredClose, setTabTriggeredClose] = React__default.useState(false);
|
15525
15526
|
const [open, setOpen] = React__default.useState(false);
|
15526
15527
|
const [value, _setValue] = reactUseControllableState.useControllableState({
|
15527
15528
|
// uncontrolled
|
@@ -15607,13 +15608,20 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
15607
15608
|
setShouldPauseHoverState(true);
|
15608
15609
|
}
|
15609
15610
|
};
|
15610
|
-
const
|
15611
|
-
|
15612
|
-
|
15611
|
+
const handleCloseAutoFocus = event => {
|
15612
|
+
event.preventDefault();
|
15613
|
+
event.stopPropagation();
|
15614
|
+
if (tabTriggeredClose) {
|
15615
|
+
const nextFocussableElement = getNextFocussableElement(internalRef.current);
|
15613
15616
|
if (nextFocussableElement) {
|
15614
15617
|
// UX requirement: move focus to the next focussable element when tab key is pressed to select the value
|
15615
15618
|
nextFocussableElement.focus();
|
15619
|
+
// Reset the tabTriggeredClose state
|
15620
|
+
setTabTriggeredClose(false);
|
15616
15621
|
}
|
15622
|
+
} else {
|
15623
|
+
var _internalRef$current;
|
15624
|
+
(_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.focus();
|
15617
15625
|
}
|
15618
15626
|
};
|
15619
15627
|
const selectOptions = searchQuery === '' ? flattenedChildren.map(child => child.props.value) : filteredChildren.map(child => isGroup(child) ? Array.isArray(child.props.children) && child.props.children.map(subChild => subChild.props.value) : child.props.value).flatMap(c => c) || [];
|
@@ -15668,10 +15676,10 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
15668
15676
|
asChild: true,
|
15669
15677
|
align: "start",
|
15670
15678
|
onOpenAutoFocus: () => {
|
15671
|
-
var _internalRef$
|
15672
|
-
(_internalRef$
|
15679
|
+
var _internalRef$current2;
|
15680
|
+
(_internalRef$current2 = internalRef.current) === null || _internalRef$current2 === void 0 ? void 0 : _internalRef$current2.focus();
|
15673
15681
|
},
|
15674
|
-
|
15682
|
+
onCloseAutoFocus: handleCloseAutoFocus,
|
15675
15683
|
sideOffset: 4,
|
15676
15684
|
tabIndex: -1
|
15677
15685
|
}, /*#__PURE__*/React__default.createElement("div", {
|
@@ -15681,7 +15689,8 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
15681
15689
|
}
|
15682
15690
|
}, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
|
15683
15691
|
placeholder: onCreate ? texts.select2.searchOrCreate : texts.select2.search,
|
15684
|
-
ref: searchRef
|
15692
|
+
ref: searchRef,
|
15693
|
+
onTabKeyPress: () => setTabTriggeredClose(true)
|
15685
15694
|
}), multiple && selectOptions.length > 1 && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$1, {
|
15686
15695
|
className: "!justify-start",
|
15687
15696
|
appearance: "discrete",
|
@@ -19273,22 +19282,6 @@ function Alert$1(props) {
|
|
19273
19282
|
const tableMeta = table.options.meta;
|
19274
19283
|
const [showFilterResetDialog, setShowFilterResetDialog] = React__default.useState(false);
|
19275
19284
|
const pendingChangesWithErrors = tableMeta.editing.getErrors();
|
19276
|
-
const resetPendingChanges = tableMeta.editing.resetChanges;
|
19277
|
-
const allRows = table.getPreFilteredRowModel().rows;
|
19278
|
-
// This effect deletes error in the alert if the row that has the error is deleted.
|
19279
|
-
React__default.useEffect(() => {
|
19280
|
-
pendingChangesWithErrors.forEach(errorRow => {
|
19281
|
-
const errorRowId = errorRow.rowId;
|
19282
|
-
try {
|
19283
|
-
// getRow throws error if it fails to find the row
|
19284
|
-
if (!table.getRow(errorRowId)) {
|
19285
|
-
resetPendingChanges(errorRowId);
|
19286
|
-
}
|
19287
|
-
} catch {
|
19288
|
-
resetPendingChanges(errorRowId);
|
19289
|
-
}
|
19290
|
-
});
|
19291
|
-
}, [allRows.length]);
|
19292
19285
|
const activeRow = React__default.useMemo(() => tableMeta.rowActive.rowActiveIndex ? table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex] : undefined, [tableMeta.rowActive.rowActiveIndex]);
|
19293
19286
|
// mark errors being rendered as seen
|
19294
19287
|
React__default.useEffect(() => {
|
@@ -19317,23 +19310,18 @@ function Alert$1(props) {
|
|
19317
19310
|
const title = (pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural).replace('[COUNT]', String(pendingChangesWithErrors.length));
|
19318
19311
|
// generate links to each invalid row, to go into the error message
|
19319
19312
|
const links = [];
|
19320
|
-
const rowIdentityColumn = tableMeta.
|
19321
|
-
// Since rowIdentityColumnAccessor can have multiple ids, we use the first id to refer to the row in Alert
|
19322
|
-
table.getColumn(String(tableMeta.rowIdentityColumnAccessor[0])) : undefined;
|
19313
|
+
const rowIdentityColumn = tableMeta.rowIdentityColumnId ? table.getColumn(tableMeta.rowIdentityColumnId) : undefined;
|
19323
19314
|
pendingChangesWithErrors.forEach((error, index) => {
|
19324
19315
|
// if appropriate, concatenate the item with the text "and"
|
19325
19316
|
if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {
|
19326
19317
|
// Add space before and after `messageAnd` text
|
19327
19318
|
links.push(` ${validationTexts.alert.messageAnd} `);
|
19328
19319
|
}
|
19329
|
-
const rowIndex = table.
|
19320
|
+
const rowIndex = table.getRowModel().rows.findIndex(row => row.id === error.rowId);
|
19330
19321
|
const handleClick = () => {
|
19331
|
-
// if row is visible
|
19332
19322
|
if (rowIndex > -1) {
|
19333
19323
|
scrollToRow(rowIndex);
|
19334
|
-
}
|
19335
|
-
// if row is filtered out
|
19336
|
-
else {
|
19324
|
+
} else {
|
19337
19325
|
setShowFilterResetDialog(error.rowId);
|
19338
19326
|
}
|
19339
19327
|
};
|