@economic/taco 2.30.1 → 2.31.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Table3/Table3.d.ts +18 -2
- package/dist/components/Table3/types.d.ts +11 -2
- package/dist/esm/packages/taco/src/components/Combobox/Combobox.js +1 -1
- package/dist/esm/packages/taco/src/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +5 -4
- package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +2 -2
- package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js +7 -9
- package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select/Select.js +2 -1
- package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select/useSelect.js +19 -1
- package/dist/esm/packages/taco/src/components/Select/useSelect.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -3
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +33 -12
- package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +24 -3
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +4 -5
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.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/features/useTableRowActive.js +5 -5
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +2 -1
- 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 +9 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/dom.js +1 -4
- 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 +113 -47
- 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 +0 -1
- package/package.json +2 -2
@@ -4122,9 +4122,6 @@ function isElementInteractive(element) {
|
|
4122
4122
|
}
|
4123
4123
|
return ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'].includes(element.tagName) && !element.hidden && !element.disabled && !element.readOnly;
|
4124
4124
|
}
|
4125
|
-
function isElementInsideTable3OrReport(element) {
|
4126
|
-
return !!(element !== null && element !== void 0 && element.closest('[data-taco^=table]'));
|
4127
|
-
}
|
4128
4125
|
|
4129
4126
|
function isPressingMetaKey(event) {
|
4130
4127
|
return isMacOs() ? event.metaKey : event.ctrlKey;
|
@@ -5826,7 +5823,9 @@ const useCombobox = ({
|
|
5826
5823
|
}
|
5827
5824
|
};
|
5828
5825
|
const handleInputKeyDown = event => {
|
5826
|
+
var _inputRef$current;
|
5829
5827
|
event.persist();
|
5828
|
+
const insideTheTable = !!((_inputRef$current = inputRef.current) !== null && _inputRef$current !== void 0 && _inputRef$current.closest('table, [role="rowgroup"]'));
|
5830
5829
|
if (!event.ctrlKey && !event.metaKey) {
|
5831
5830
|
switch (event.key) {
|
5832
5831
|
case 'Backspace':
|
@@ -5848,7 +5847,7 @@ const useCombobox = ({
|
|
5848
5847
|
}
|
5849
5848
|
case 'Enter':
|
5850
5849
|
{
|
5851
|
-
if (
|
5850
|
+
if (insideTheTable) {
|
5852
5851
|
event.preventDefault();
|
5853
5852
|
if (inline && !open) {
|
5854
5853
|
setOpen(true);
|
@@ -5866,7 +5865,7 @@ const useCombobox = ({
|
|
5866
5865
|
if (open) {
|
5867
5866
|
event.preventDefault();
|
5868
5867
|
} else {
|
5869
|
-
if (!inline && buttonRef.current && !
|
5868
|
+
if (!inline && buttonRef.current && !insideTheTable) {
|
5870
5869
|
buttonRef.current.click();
|
5871
5870
|
}
|
5872
5871
|
}
|
@@ -5886,7 +5885,7 @@ const useCombobox = ({
|
|
5886
5885
|
listRef.current.dispatchEvent(createCustomKeyboardEvent(event));
|
5887
5886
|
}
|
5888
5887
|
if (inline && !open) {
|
5889
|
-
if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && !
|
5888
|
+
if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && !insideTheTable) {
|
5890
5889
|
event.preventDefault();
|
5891
5890
|
const initialIndex = event.key === 'ArrowUp' ? data.length - 1 : 0;
|
5892
5891
|
setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);
|
@@ -5993,7 +5992,7 @@ const Combobox = /*#__PURE__*/React.forwardRef(function Combobox(props, ref) {
|
|
5993
5992
|
ref: ref
|
5994
5993
|
}), /*#__PURE__*/React.createElement(Input, Object.assign({}, input, {
|
5995
5994
|
autoComplete: "off",
|
5996
|
-
button: props.inline ? ( /*#__PURE__*/React.createElement(IconButton
|
5995
|
+
button: props.readOnly ? undefined : props.inline ? ( /*#__PURE__*/React.createElement(IconButton
|
5997
5996
|
// In case of inline combobox, this icon button acts only as visual chevron representation,
|
5998
5997
|
// so should be taken out of screen reader scope.
|
5999
5998
|
, {
|
@@ -6317,7 +6316,7 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
|
|
6317
6316
|
"data-taco": "datepicker",
|
6318
6317
|
style: style
|
6319
6318
|
}, /*#__PURE__*/React.createElement(Input, Object.assign({}, input, {
|
6320
|
-
button: /*#__PURE__*/React.createElement(IconButton, {
|
6319
|
+
button: input.readOnly ? undefined : ( /*#__PURE__*/React.createElement(IconButton, {
|
6321
6320
|
"aria-label": texts.datepicker.expand,
|
6322
6321
|
disabled: input.disabled || input.readOnly,
|
6323
6322
|
icon: "calendar",
|
@@ -6355,7 +6354,7 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
|
|
6355
6354
|
}
|
6356
6355
|
}, texts.datepicker.clear))))))))),
|
6357
6356
|
tooltip: texts.datepicker.calendar
|
6358
|
-
})
|
6357
|
+
}))
|
6359
6358
|
})));
|
6360
6359
|
});
|
6361
6360
|
Datepicker.displayName = 'Datepicker';
|
@@ -8195,13 +8194,12 @@ const Link$1 = /*#__PURE__*/React.forwardRef(function MenuLink(props, ref) {
|
|
8195
8194
|
const Trigger$6 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref) {
|
8196
8195
|
const menu = useCurrentMenu();
|
8197
8196
|
const internalRef = useMergedRef(ref);
|
8198
|
-
const
|
8199
|
-
|
8200
|
-
|
8201
|
-
|
8202
|
-
|
8203
|
-
|
8204
|
-
}
|
8197
|
+
const preventArrowDownShortcut = event => {
|
8198
|
+
var _internalRef$current;
|
8199
|
+
const isRenderedInTable = !!((_internalRef$current = internalRef.current) !== null && _internalRef$current !== void 0 && _internalRef$current.closest('tbody'));
|
8200
|
+
if (isRenderedInTable && event.key === 'ArrowDown') {
|
8201
|
+
var _internalRef$current2, _internalRef$current3;
|
8202
|
+
internalRef === null || internalRef === void 0 ? void 0 : (_internalRef$current2 = internalRef.current) === null || _internalRef$current2 === void 0 ? void 0 : (_internalRef$current3 = _internalRef$current2.parentNode) === null || _internalRef$current3 === void 0 ? void 0 : _internalRef$current3.dispatchEvent(createCustomKeyboardEvent(event));
|
8205
8203
|
}
|
8206
8204
|
};
|
8207
8205
|
React.useEffect(() => {
|
@@ -8212,7 +8210,7 @@ const Trigger$6 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref)
|
|
8212
8210
|
return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, Object.assign({}, props, {
|
8213
8211
|
asChild: true,
|
8214
8212
|
ref: internalRef,
|
8215
|
-
onKeyDown:
|
8213
|
+
onKeyDown: preventArrowDownShortcut
|
8216
8214
|
}));
|
8217
8215
|
});
|
8218
8216
|
|
@@ -8986,12 +8984,30 @@ const useSelect = ({
|
|
8986
8984
|
onChange(event);
|
8987
8985
|
}
|
8988
8986
|
};
|
8987
|
+
const handleButtonClick = event => {
|
8988
|
+
if (readOnly) {
|
8989
|
+
event.preventDefault();
|
8990
|
+
}
|
8991
|
+
};
|
8992
|
+
// select the value text if the select is readonly
|
8993
|
+
const handleButtonFocus = event => {
|
8994
|
+
if (readOnly) {
|
8995
|
+
const value = event.currentTarget.querySelector(':first-child');
|
8996
|
+
if (value) {
|
8997
|
+
var _window$getSelection, _window$getSelection$;
|
8998
|
+
(_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : (_window$getSelection$ = _window$getSelection.selectAllChildren) === null || _window$getSelection$ === void 0 ? void 0 : _window$getSelection$.call(_window$getSelection, value);
|
8999
|
+
}
|
9000
|
+
}
|
9001
|
+
};
|
8989
9002
|
const button = {
|
8990
9003
|
'aria-haspopup': 'listbox',
|
8991
9004
|
'aria-label': ariaLabel ? `${ariaLabel} ${text}` : undefined,
|
8992
9005
|
'aria-labelledby': ariaLabelledBy ? `${ariaLabelledBy} ${buttonId}` : undefined,
|
8993
|
-
|
9006
|
+
'aria-readonly': readOnly ? 'true' : undefined,
|
9007
|
+
disabled: disabled,
|
8994
9008
|
id: buttonId,
|
9009
|
+
onClick: handleButtonClick,
|
9010
|
+
onFocus: handleButtonFocus,
|
8995
9011
|
onKeyDown: !disabled && !readOnly ? handleButtonKeyDown : undefined,
|
8996
9012
|
tabIndex,
|
8997
9013
|
type: 'button'
|
@@ -9057,7 +9073,8 @@ const BaseSelect = /*#__PURE__*/React.forwardRef(function BaseSelect(props, ref)
|
|
9057
9073
|
'yt-select--readonly': props.readOnly
|
9058
9074
|
}, externalClassName);
|
9059
9075
|
const inputClassname = cn(getInputClasses(props), 'h-8 text-left !pr-0', {
|
9060
|
-
'border-blue-500': popover.open
|
9076
|
+
'border-blue-500': popover.open,
|
9077
|
+
'select-text': otherProps.readOnly
|
9061
9078
|
});
|
9062
9079
|
React.useEffect(() => {
|
9063
9080
|
if (autoFocus && internalRef.current) {
|
@@ -10043,6 +10060,13 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
|
|
10043
10060
|
function configureReactTableOptions(options, props) {
|
10044
10061
|
var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
|
10045
10062
|
const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
|
10063
|
+
const getRowIdentityColumnId = () => {
|
10064
|
+
if (!props.rowIdentityColumnId) {
|
10065
|
+
return undefined;
|
10066
|
+
}
|
10067
|
+
const rowIdentityColumnIds = [props.rowIdentityColumnId].flat();
|
10068
|
+
return originalRow => rowIdentityColumnIds.map(identityColumnId => String(originalRow[identityColumnId])).join('_');
|
10069
|
+
};
|
10046
10070
|
const tableOptions = {
|
10047
10071
|
defaultColumn: {
|
10048
10072
|
enableColumnFilter: options.enableFiltering || true,
|
@@ -10067,6 +10091,8 @@ function configureReactTableOptions(options, props) {
|
|
10067
10091
|
// models for default features
|
10068
10092
|
getExpandedRowModel: reactTable.getExpandedRowModel(),
|
10069
10093
|
getGroupedRowModel: reactTable.getGroupedRowModel(),
|
10094
|
+
// Use row indentity column values as id for each row
|
10095
|
+
getRowId: getRowIdentityColumnId(),
|
10070
10096
|
groupedColumnMode: false
|
10071
10097
|
};
|
10072
10098
|
if (tableOptions.enableColumnResizing) {
|
@@ -10420,11 +10446,11 @@ function useTableRowActive(isEnabled = false, initialRowActiveIndex) {
|
|
10420
10446
|
const [rowActiveIndex, setRowActiveIndex] = React__default.useState(initialRowActiveIndex);
|
10421
10447
|
const [rowHoverIndex, setRowHoverIndex] = React__default.useState(undefined);
|
10422
10448
|
const [isHoverStatePaused, setHoverStatePaused] = useIsHoverStatePaused();
|
10423
|
-
const move = (direction, length, scrollToIndex) => {
|
10424
|
-
const nextIndex =
|
10425
|
-
scrollToIndex(nextIndex);
|
10426
|
-
|
10427
|
-
};
|
10449
|
+
const move = (direction, length, scrollToIndex) => setRowActiveIndex(currentIndex => {
|
10450
|
+
const nextIndex = currentIndex !== undefined ? getNextIndex(direction, currentIndex, length) : 0;
|
10451
|
+
setTimeout(() => scrollToIndex(nextIndex), 1);
|
10452
|
+
return nextIndex;
|
10453
|
+
});
|
10428
10454
|
const onKeyDown = React__default.useCallback((event, length, scrollToIndex) => {
|
10429
10455
|
if (!isEnabled || event.defaultPrevented) {
|
10430
10456
|
return;
|
@@ -11242,6 +11268,7 @@ function useTableManager(props, meta, internalColumns) {
|
|
11242
11268
|
// ensure data is always valid
|
11243
11269
|
const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
|
11244
11270
|
const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
|
11271
|
+
const rowIdentityColumnId = props.rowIdentityColumnId !== undefined ? [props.rowIdentityColumnId].flat() : [];
|
11245
11272
|
// create a react-table instance
|
11246
11273
|
const instance = reactTable.useReactTable({
|
11247
11274
|
data,
|
@@ -11269,7 +11296,7 @@ function useTableManager(props, meta, internalColumns) {
|
|
11269
11296
|
rowDrag,
|
11270
11297
|
rowDrop: rowDrop,
|
11271
11298
|
rowExpansion: rowExpansion,
|
11272
|
-
rowIdentityColumnId
|
11299
|
+
rowIdentityColumnId,
|
11273
11300
|
rowGoto,
|
11274
11301
|
rowGroups: rowGroups,
|
11275
11302
|
rowHeight,
|
@@ -11646,12 +11673,11 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
|
|
11646
11673
|
} = useRowHeightVirtualisation(table);
|
11647
11674
|
// row groups
|
11648
11675
|
const rangeExtractor = useRowGroupVirtualisation(table);
|
11649
|
-
// account for thead and tfoot in the scroll area
|
11676
|
+
// account for thead and tfoot in the scroll area
|
11650
11677
|
const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;
|
11651
11678
|
// column groups offset the bottom padding :shrug:, multiplying by 1.5 ensures the bottom padding remains
|
11652
11679
|
// consistent when there are groups and when there aren't. 1.5 is relatively arbitrary, but it gives alignment
|
11653
11680
|
const scrollPaddingEnd = ROW_HEIGHT_ESTIMATES.medium * (table.getHeaderGroups().length > 1 ? 1.5 : 1);
|
11654
|
-
const scrollMargin = isTableRowGrouped ? 0 : scrollPaddingStart;
|
11655
11681
|
const virtualiser = reactVirtual.useVirtualizer({
|
11656
11682
|
count: rows.length,
|
11657
11683
|
estimateSize,
|
@@ -11659,7 +11685,7 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
|
|
11659
11685
|
overscan: tableMeta.printing.isPrinting ? rows.length : undefined,
|
11660
11686
|
rangeExtractor,
|
11661
11687
|
// correctly sets top and bottom spacing for the scroll container - very sensitive, don't change
|
11662
|
-
scrollMargin,
|
11688
|
+
scrollMargin: isTableRowGrouped ? 0 : scrollPaddingStart,
|
11663
11689
|
// correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list
|
11664
11690
|
scrollPaddingStart,
|
11665
11691
|
scrollPaddingEnd: tableMeta.footer.isEnabled ? scrollPaddingEnd * 2 : scrollPaddingEnd
|
@@ -11688,7 +11714,7 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
|
|
11688
11714
|
// use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0
|
11689
11715
|
const paddingStartIndex = isTableRowGrouped && rows.length > 1 ? 1 : 0;
|
11690
11716
|
// styling for offsetting rows - this "is" the virtualisation
|
11691
|
-
const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, (_ref = ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size)
|
11717
|
+
const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, (_ref = ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size)) !== null && _ref !== void 0 ? _ref : 0), Math.max(0, (_ref2 = totalSize - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref2 !== void 0 ? _ref2 : 0)] : [0, 0];
|
11692
11718
|
// ensure default active rows are scrolled to
|
11693
11719
|
React__default.useEffect(() => {
|
11694
11720
|
if (defaultRowActiveIndex) {
|
@@ -11703,7 +11729,7 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
|
|
11703
11729
|
let content = null;
|
11704
11730
|
if (rows.length) {
|
11705
11731
|
style = {
|
11706
|
-
height: `${totalSize
|
11732
|
+
height: `${totalSize}px`,
|
11707
11733
|
paddingBottom,
|
11708
11734
|
paddingTop
|
11709
11735
|
};
|
@@ -14554,13 +14580,19 @@ const Title$5 = /*#__PURE__*/React__default.forwardRef(function Select2Title(pro
|
|
14554
14580
|
|
14555
14581
|
const Placeholder = ({
|
14556
14582
|
disabled,
|
14583
|
+
readOnly,
|
14557
14584
|
...props
|
14558
|
-
}) =>
|
14559
|
-
|
14560
|
-
|
14561
|
-
|
14562
|
-
}
|
14563
|
-
|
14585
|
+
}) => {
|
14586
|
+
if (readOnly) {
|
14587
|
+
return null;
|
14588
|
+
}
|
14589
|
+
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, props, {
|
14590
|
+
className: cn({
|
14591
|
+
'text-grey-700': disabled,
|
14592
|
+
'text-grey-500': !disabled
|
14593
|
+
})
|
14594
|
+
}));
|
14595
|
+
};
|
14564
14596
|
const Trigger$7 = /*#__PURE__*/React__default.forwardRef(function Select2Trigger(props, ref) {
|
14565
14597
|
const {
|
14566
14598
|
multiple,
|
@@ -14594,13 +14626,14 @@ const Button$3 = /*#__PURE__*/React__default.forwardRef(function Select2TriggerB
|
|
14594
14626
|
open,
|
14595
14627
|
readOnly
|
14596
14628
|
} = useSelect2Context();
|
14597
|
-
const className = cn('
|
14629
|
+
const className = cn('px-1.5 h-fit', getInputClasses({
|
14598
14630
|
...props,
|
14599
14631
|
disabled,
|
14600
14632
|
highlighted,
|
14601
14633
|
invalid,
|
14602
14634
|
readOnly
|
14603
14635
|
}).replace('w-full', '').replace('px-2', ''), getFontSize(fontSize), {
|
14636
|
+
'select-text': readOnly,
|
14604
14637
|
'w-full': !((_props$className = props.className) !== null && _props$className !== void 0 && _props$className.includes('w-'))
|
14605
14638
|
}, props.className);
|
14606
14639
|
const handleClick = event => {
|
@@ -14612,17 +14645,28 @@ const Button$3 = /*#__PURE__*/React__default.forwardRef(function Select2TriggerB
|
|
14612
14645
|
onClick(event);
|
14613
14646
|
}
|
14614
14647
|
};
|
14648
|
+
// select the value text if the select is readonly
|
14649
|
+
const handleFocus = event => {
|
14650
|
+
if (readOnly) {
|
14651
|
+
const value = event.currentTarget.querySelector(':first-child');
|
14652
|
+
if (value) {
|
14653
|
+
var _window$getSelection, _window$getSelection$;
|
14654
|
+
(_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : (_window$getSelection$ = _window$getSelection.selectAllChildren) === null || _window$getSelection$ === void 0 ? void 0 : _window$getSelection$.call(_window$getSelection, value);
|
14655
|
+
}
|
14656
|
+
}
|
14657
|
+
};
|
14615
14658
|
return /*#__PURE__*/React__default.createElement("button", Object.assign({}, otherProps, {
|
14616
14659
|
"aria-invalid": invalid ? true : undefined,
|
14617
14660
|
"aria-readonly": readOnly ? true : undefined,
|
14618
14661
|
className: className,
|
14619
14662
|
disabled: disabled,
|
14620
14663
|
onClick: handleClick,
|
14664
|
+
onFocus: handleFocus,
|
14621
14665
|
ref: ref,
|
14622
14666
|
role: "combobox",
|
14623
|
-
tabIndex: disabled
|
14667
|
+
tabIndex: disabled ? -1 : tabIndex,
|
14624
14668
|
type: "button"
|
14625
|
-
}), children, /*#__PURE__*/React__default.createElement(Icon, {
|
14669
|
+
}), children, readOnly ? null : /*#__PURE__*/React__default.createElement(Icon, {
|
14626
14670
|
name: open ? 'chevron-up' : 'chevron-down',
|
14627
14671
|
className: "pointer-events-none -mr-1 ml-auto"
|
14628
14672
|
}));
|
@@ -14645,7 +14689,8 @@ const Single = /*#__PURE__*/React__default.forwardRef(function Select2TriggerSin
|
|
14645
14689
|
let output;
|
14646
14690
|
if (placeholder && currentValue === undefined) {
|
14647
14691
|
output = /*#__PURE__*/React__default.createElement(Placeholder, {
|
14648
|
-
disabled: disabled
|
14692
|
+
disabled: disabled,
|
14693
|
+
readOnly: readOnly
|
14649
14694
|
}, placeholder);
|
14650
14695
|
} else if (currentValue) {
|
14651
14696
|
if (tags && emptyValue !== value) {
|
@@ -14698,7 +14743,8 @@ const Multiple = /*#__PURE__*/React__default.forwardRef(function Select2TriggerM
|
|
14698
14743
|
}, /*#__PURE__*/React__default.createElement("div", {
|
14699
14744
|
className: "flex flex-wrap gap-1"
|
14700
14745
|
}, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement(Placeholder, {
|
14701
|
-
disabled: disabled
|
14746
|
+
disabled: disabled,
|
14747
|
+
readOnly: readOnly
|
14702
14748
|
}, placeholder)) : valuesAsChildren.map(child => ( /*#__PURE__*/React__default.createElement(Tag$1, {
|
14703
14749
|
key: String(child.props.value),
|
14704
14750
|
className: "truncate",
|
@@ -14758,7 +14804,8 @@ const MultipleValue = ({
|
|
14758
14804
|
className: "flex gap-1 truncate",
|
14759
14805
|
ref: el => setContentRef(el)
|
14760
14806
|
}, valuesAsChildren.length === 0 ? ( /*#__PURE__*/React__default.createElement(Placeholder, {
|
14761
|
-
disabled: disabled
|
14807
|
+
disabled: disabled,
|
14808
|
+
readOnly: readOnly
|
14762
14809
|
}, placeholder)) : valuesAsChildren.map((child, index) => {
|
14763
14810
|
const tag = /*#__PURE__*/React__default.createElement(Tag$1, {
|
14764
14811
|
key: String(child.props.value),
|
@@ -15186,8 +15233,6 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
|
|
15186
15233
|
var _listboxRef$current;
|
15187
15234
|
if (open) {
|
15188
15235
|
event.preventDefault();
|
15189
|
-
} else if (isElementInsideTable3OrReport(event.currentTarget)) {
|
15190
|
-
return;
|
15191
15236
|
} else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {
|
15192
15237
|
setOpen(true);
|
15193
15238
|
}
|
@@ -18809,6 +18854,22 @@ function Alert$1(props) {
|
|
18809
18854
|
const tableMeta = table.options.meta;
|
18810
18855
|
const [showFilterResetDialog, setShowFilterResetDialog] = React__default.useState(false);
|
18811
18856
|
const pendingChangesWithErrors = tableMeta.editing.getErrors();
|
18857
|
+
const deletePendingChange = tableMeta.editing.resetChanges;
|
18858
|
+
const allRows = table.getPreFilteredRowModel().rows;
|
18859
|
+
// This effect deletes error in the alert if the row that has the error is deleted.
|
18860
|
+
React__default.useEffect(() => {
|
18861
|
+
pendingChangesWithErrors.forEach(errorRow => {
|
18862
|
+
const errorRowId = errorRow.rowId;
|
18863
|
+
try {
|
18864
|
+
// getRow throws error if it fails to find the row
|
18865
|
+
if (!table.getRow(errorRowId)) {
|
18866
|
+
deletePendingChange(errorRowId);
|
18867
|
+
}
|
18868
|
+
} catch {
|
18869
|
+
deletePendingChange(errorRowId);
|
18870
|
+
}
|
18871
|
+
});
|
18872
|
+
}, [allRows.length]);
|
18812
18873
|
const activeRow = React__default.useMemo(() => tableMeta.rowActive.rowActiveIndex ? table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex] : undefined, [tableMeta.rowActive.rowActiveIndex]);
|
18813
18874
|
// mark errors being rendered as seen
|
18814
18875
|
React__default.useEffect(() => {
|
@@ -18837,18 +18898,23 @@ function Alert$1(props) {
|
|
18837
18898
|
const title = (pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural).replace('[COUNT]', String(pendingChangesWithErrors.length));
|
18838
18899
|
// generate links to each invalid row, to go into the error message
|
18839
18900
|
const links = [];
|
18840
|
-
const rowIdentityColumn = tableMeta.rowIdentityColumnId ?
|
18901
|
+
const rowIdentityColumn = tableMeta.rowIdentityColumnId ?
|
18902
|
+
// Since rowIdentityColumnId can have multiple ids, we use the first id to refer to the row in Alert
|
18903
|
+
table.getColumn(tableMeta.rowIdentityColumnId[0]) : undefined;
|
18841
18904
|
pendingChangesWithErrors.forEach((error, index) => {
|
18842
18905
|
// if appropriate, concatenate the item with the text "and"
|
18843
18906
|
if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {
|
18844
18907
|
// Add space before and after `messageAnd` text
|
18845
18908
|
links.push(` ${validationTexts.alert.messageAnd} `);
|
18846
18909
|
}
|
18847
|
-
const rowIndex = table.
|
18910
|
+
const rowIndex = table.getFilteredRowModel().rows.findIndex(row => row.id === error.rowId);
|
18848
18911
|
const handleClick = () => {
|
18912
|
+
// if row is visible
|
18849
18913
|
if (rowIndex > -1) {
|
18850
18914
|
scrollToRow(rowIndex);
|
18851
|
-
}
|
18915
|
+
}
|
18916
|
+
// if row is filtered out
|
18917
|
+
else {
|
18852
18918
|
setShowFilterResetDialog(error.rowId);
|
18853
18919
|
}
|
18854
18920
|
};
|