@economic/taco 1.28.0 → 1.29.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Header/Header.d.ts +2 -1
- package/dist/components/Header/components/Button.d.ts +1 -1
- package/dist/components/Header/components/Logo.d.ts +1 -0
- package/dist/components/Icon/components/ColumnFreeze.d.ts +3 -0
- package/dist/components/Icon/components/ColumnUnfreeze.d.ts +3 -0
- package/dist/components/Icon/components/index.d.ts +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Menu/components/Item.d.ts +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Navigation2/components/Link.d.ts +1 -1
- package/dist/components/Provider/Localization.d.ts +12 -4
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +1 -1
- package/dist/components/Table2/Table2.d.ts +11 -4
- package/dist/components/Table2/components/row/ExpandedRow.d.ts +1 -1
- package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +2 -2
- package/dist/components/Table2/hooks/useTable.d.ts +4 -0
- package/dist/components/Table2/types.d.ts +3 -4
- package/dist/components/Table2/utilities/cell.d.ts +1 -1
- package/dist/components/Table2/utilities/columns.d.ts +1 -0
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/components/Truncate/Truncate.d.ts +6 -0
- package/dist/esm/packages/taco/src/components/Header/Header.js +3 -2
- package/dist/esm/packages/taco/src/components/Header/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Button.js +3 -1
- package/dist/esm/packages/taco/src/components/Header/components/Button.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/Logo.js +19 -2
- package/dist/esm/packages/taco/src/components/Header/components/Logo.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js +1 -1
- package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnFreeze.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js +19 -0
- package/dist/esm/packages/taco/src/components/Icon/components/ColumnUnfreeze.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js +4 -0
- package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Input/Input.js +14 -14
- package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -6
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -0
- package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +2 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +21 -9
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +243 -111
- package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +5 -5
- package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +76 -31
- package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +2 -2
- package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +85 -19
- package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +3 -0
- package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +6 -3
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +2 -2
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +6 -9
- package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +14 -6
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +8 -8
- package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +17 -8
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +32 -0
- package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +1 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +5 -1
- package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
- package/dist/taco.cjs.development.js +601 -234
- 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/package.json +2 -2
- package/types.json +74 -19
@@ -750,6 +750,36 @@ function IconClose(props, svgRef) {
|
|
750
750
|
}
|
751
751
|
var Close = /*#__PURE__*/React.forwardRef(IconClose);
|
752
752
|
|
753
|
+
function IconColumnFreeze(props, svgRef) {
|
754
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
755
|
+
fill: "none",
|
756
|
+
xmlns: "http://www.w3.org/2000/svg",
|
757
|
+
viewBox: "0 0 24 24",
|
758
|
+
ref: svgRef
|
759
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
760
|
+
fillRule: "evenodd",
|
761
|
+
clipRule: "evenodd",
|
762
|
+
d: "M14 4.5h-4v15h4v-15zm1.5 0v15h3.75a.25.25 0 00.25-.25V4.75a.25.25 0 00-.25-.25H15.5zM4.75 3A1.75 1.75 0 003 4.75v14.5c0 .966.784 1.75 1.75 1.75h14.5A1.75 1.75 0 0021 19.25V4.75A1.75 1.75 0 0019.25 3H4.75z",
|
763
|
+
fill: "currentColor"
|
764
|
+
}));
|
765
|
+
}
|
766
|
+
var ColumnFreeze = /*#__PURE__*/React.forwardRef(IconColumnFreeze);
|
767
|
+
|
768
|
+
function IconColumnUnfreeze(props, svgRef) {
|
769
|
+
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
770
|
+
fill: "none",
|
771
|
+
xmlns: "http://www.w3.org/2000/svg",
|
772
|
+
viewBox: "0 0 24 24",
|
773
|
+
ref: svgRef
|
774
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
775
|
+
fillRule: "evenodd",
|
776
|
+
clipRule: "evenodd",
|
777
|
+
d: "M9.6 4.5H14v15h-2.378a2.26 2.26 0 010 1.5h7.628A1.75 1.75 0 0021 19.25V4.75A1.75 1.75 0 0019.25 3H4.75A1.75 1.75 0 003 4.75v6.75c.576 0 1.152.22 1.591.659l1.659 1.659 1.659-1.659a2.244 2.244 0 011.691-.657V4.5zm5.9 15v-15h3.75a.25.25 0 01.25.25v14.5a.25.25 0 01-.25.25H15.5zM2.47 20.78a.75.75 0 010-1.06L5.19 17l-2.72-2.72a.75.75 0 111.06-1.06l2.72 2.72 2.72-2.72a.75.75 0 111.06 1.06L7.31 17l2.72 2.72a.75.75 0 11-1.06 1.06l-2.72-2.72-2.72 2.72a.75.75 0 01-1.06 0z",
|
778
|
+
fill: "currentColor"
|
779
|
+
}));
|
780
|
+
}
|
781
|
+
var ColumnUnfreeze = /*#__PURE__*/React.forwardRef(IconColumnUnfreeze);
|
782
|
+
|
753
783
|
function IconColumns(props, svgRef) {
|
754
784
|
return /*#__PURE__*/React.createElement("svg", Object.assign({
|
755
785
|
fill: "none",
|
@@ -3036,6 +3066,8 @@ const icons = {
|
|
3036
3066
|
'clamp-open': ClampOpen,
|
3037
3067
|
clamp: Clamp,
|
3038
3068
|
close: Close,
|
3069
|
+
'column-freeze': ColumnFreeze,
|
3070
|
+
'column-unfreeze': ColumnUnfreeze,
|
3039
3071
|
columns: Columns,
|
3040
3072
|
'connection-enable': ConnectionEnable,
|
3041
3073
|
'connection-revoke': ConnectionRevoke,
|
@@ -3825,15 +3857,22 @@ const defaultLocalisationTexts = {
|
|
3825
3857
|
deselectAll: 'Deselect all rows',
|
3826
3858
|
select: 'Select row',
|
3827
3859
|
selectAll: 'Select all rows'
|
3860
|
+
},
|
3861
|
+
menu: {
|
3862
|
+
freezeColumns: 'Freeze first [X] columns',
|
3863
|
+
unfreezeColumns: 'Unfreeze all columns'
|
3828
3864
|
}
|
3829
3865
|
},
|
3830
3866
|
columnSettings: {
|
3831
|
-
|
3832
|
-
|
3833
|
-
|
3834
|
-
|
3867
|
+
columnsHidden: 'Hidden columns',
|
3868
|
+
columnsHiddenDrop: 'Drop column here to hide',
|
3869
|
+
columnsVisible: 'Visible columns',
|
3870
|
+
columnsVisibleDrop: 'Drop column here to show',
|
3871
|
+
noHiddenColumns: 'No hidden columns',
|
3872
|
+
noVisibleColumns: 'No visible columns',
|
3835
3873
|
search: 'Search column...',
|
3836
|
-
tooltip: 'Column settings'
|
3874
|
+
tooltip: 'Column settings',
|
3875
|
+
button: 'Columns'
|
3837
3876
|
},
|
3838
3877
|
editing: {
|
3839
3878
|
button: 'Edit',
|
@@ -4380,6 +4419,8 @@ const InputWithoutDeprecatedFeatures = /*#__PURE__*/React.forwardRef(function In
|
|
4380
4419
|
className: className,
|
4381
4420
|
"data-taco": "input",
|
4382
4421
|
onKeyDown: handleKeyDown,
|
4422
|
+
"aria-invalid": invalid,
|
4423
|
+
"data-highlighted": highlighted,
|
4383
4424
|
ref: internalRef,
|
4384
4425
|
style: {
|
4385
4426
|
paddingLeft: prefixRect ? `${prefixRect.width - 1}px` : undefined,
|
@@ -4404,20 +4445,18 @@ const Affix = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function Af
|
|
4404
4445
|
disabled,
|
4405
4446
|
type
|
4406
4447
|
} = props;
|
4407
|
-
|
4408
|
-
|
4409
|
-
|
4410
|
-
|
4411
|
-
'
|
4412
|
-
|
4413
|
-
|
4414
|
-
|
4415
|
-
|
4416
|
-
|
4417
|
-
|
4418
|
-
|
4419
|
-
}
|
4420
|
-
return null;
|
4448
|
+
return /*#__PURE__*/React.createElement("div", {
|
4449
|
+
className: cn('group absolute top-0 flex h-full items-center justify-center px-2',
|
4450
|
+
// icon
|
4451
|
+
'[&_[data-taco="icon"]]:!h-5 [&_[data-taco="icon"]]:!w-5', {
|
4452
|
+
'text-grey-300': disabled,
|
4453
|
+
'text-grey-700': !disabled,
|
4454
|
+
'left-0 [&>button]:!-ml-2': type === 'prefix',
|
4455
|
+
'right-0 [&>button]:!-mr-2': type === 'postfix'
|
4456
|
+
}),
|
4457
|
+
"data-affix-type": type,
|
4458
|
+
ref: ref
|
4459
|
+
}, children);
|
4421
4460
|
}));
|
4422
4461
|
const Input = /*#__PURE__*/React.forwardRef(function LegacyInput(props, ref) {
|
4423
4462
|
var _attributes$postfix;
|
@@ -8317,6 +8356,7 @@ const SearchInput = /*#__PURE__*/React.forwardRef(function SearchInput({
|
|
8317
8356
|
onKeyDown: handleKeyDown,
|
8318
8357
|
postfix: /*#__PURE__*/React.createElement(React.Fragment, null, props.disabled || props.readOnly || !props.value ? null : /*#__PURE__*/React.createElement(IconButton, {
|
8319
8358
|
"aria-hidden": true,
|
8359
|
+
"aria-label": texts.searchInput.clear,
|
8320
8360
|
className: "group-peer-focus:visible group-peer-hover:visible !text-grey-700 invisible mr-0.5 !h-5 !min-h-[theme(spacing.4)] !w-5 !min-w-[theme(spacing.4)] text-xs hover:visible group-hover:visible",
|
8321
8361
|
icon: "close",
|
8322
8362
|
onClick: handleCancelClick,
|
@@ -8523,7 +8563,9 @@ const Root$1 = /*#__PURE__*/React__default.forwardRef(function Listbox2(props, r
|
|
8523
8563
|
value,
|
8524
8564
|
...otherProps
|
8525
8565
|
} = props;
|
8526
|
-
|
8566
|
+
// The id name cannot start with a number, otherwise unit tests will fail when trying to querry element with such id.
|
8567
|
+
// That's why adding prefix.
|
8568
|
+
const id = 'listbox2-' + useId(nativeId);
|
8527
8569
|
const context = React__default.useMemo(() => ({
|
8528
8570
|
disabled,
|
8529
8571
|
readOnly,
|
@@ -8578,7 +8620,9 @@ const Option = /*#__PURE__*/React__default.forwardRef(function Listbox2Option(pr
|
|
8578
8620
|
setValue,
|
8579
8621
|
value: currentValue
|
8580
8622
|
} = useListbox2Context();
|
8581
|
-
|
8623
|
+
// The id name cannot start with a number, otherwise unit tests will fail when trying to querry element with such id.
|
8624
|
+
// That's why adding prefix.
|
8625
|
+
const id = 'option-' + useId(nativeId);
|
8582
8626
|
const selected = Array.isArray(currentValue) ? currentValue.includes(value) : currentValue === value;
|
8583
8627
|
const handleClick = event => {
|
8584
8628
|
if (disabled || listboxDisabled || listboxReadOnly) {
|
@@ -9509,8 +9553,9 @@ const Collection$1 = props => {
|
|
9509
9553
|
const {
|
9510
9554
|
children
|
9511
9555
|
} = props;
|
9556
|
+
// max-h-[11.5rem] = is 5.5 options + spacing between them. Option height is 2rem, spacing 0.125. In total it's 11.5.
|
9512
9557
|
return /*#__PURE__*/React__default.createElement(ScrollArea, {
|
9513
|
-
className: "flex max-h-[
|
9558
|
+
className: "flex max-h-[11.5rem] w-full flex-col gap-y-0.5 px-1.5"
|
9514
9559
|
}, children);
|
9515
9560
|
};
|
9516
9561
|
|
@@ -11328,6 +11373,7 @@ const COLUMN_ID_FOR_DRAGGABLE = '__draggable';
|
|
11328
11373
|
const COLUMN_ID_FOR_SELECTION = '__select';
|
11329
11374
|
const COLUMN_ID_FOR_EXPANSION = '__expansion';
|
11330
11375
|
const COLUMN_ID_FOR_ACTIONS = '__actions';
|
11376
|
+
const isInternalFrozenColumn = id => isInternalColumn(id) && id !== COLUMN_ID_FOR_ACTIONS;
|
11331
11377
|
const isInternalColumn = id => id === COLUMN_ID_FOR_SELECTION || id === COLUMN_ID_FOR_EXPANSION || id === COLUMN_ID_FOR_ACTIONS || id === COLUMN_ID_FOR_DRAGGABLE;
|
11332
11378
|
const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls
|
11333
11379
|
const toggleBetween$1 = (fromRowIndex, toRowIndex) => {
|
@@ -11504,6 +11550,7 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
|
|
11504
11550
|
}
|
11505
11551
|
const ExpandCell = /*#__PURE__*/React__default.memo(({
|
11506
11552
|
expandedRowRenderer,
|
11553
|
+
isExpanded,
|
11507
11554
|
row,
|
11508
11555
|
texts
|
11509
11556
|
}) => {
|
@@ -11511,7 +11558,6 @@ const ExpandCell = /*#__PURE__*/React__default.memo(({
|
|
11511
11558
|
if (!hasExpandedRow) {
|
11512
11559
|
return null;
|
11513
11560
|
}
|
11514
|
-
const isExpanded = row.getIsExpanded();
|
11515
11561
|
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
11516
11562
|
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isExpanded ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand, /*#__PURE__*/React__default.createElement(Shortcut$1, {
|
11517
11563
|
className: "ml-2",
|
@@ -11548,8 +11594,13 @@ function createRowExpansionColumn(expandedRowRenderer, texts) {
|
|
11548
11594
|
})),
|
11549
11595
|
cell: ({
|
11550
11596
|
row
|
11551
|
-
}) =>
|
11597
|
+
}) =>
|
11598
|
+
/*#__PURE__*/
|
11599
|
+
// ExpandCell is memoised and that's why calling row.getIsExpanded() inside it doesn't return the correct
|
11600
|
+
// expand state. This is the reason why isExpanded is pulled out of the ExpandCell component.
|
11601
|
+
React__default.createElement(ExpandCell, {
|
11552
11602
|
expandedRowRenderer: expandedRowRenderer,
|
11603
|
+
isExpanded: row.getIsExpanded(),
|
11553
11604
|
row: row,
|
11554
11605
|
texts: texts
|
11555
11606
|
}),
|
@@ -11654,11 +11705,14 @@ function createRowActionsColumn(rowActions, texts) {
|
|
11654
11705
|
align: 'right',
|
11655
11706
|
className: (row, table) => {
|
11656
11707
|
var _table$options$meta3;
|
11657
|
-
return
|
11658
|
-
|
11659
|
-
'group-
|
11660
|
-
|
11661
|
-
|
11708
|
+
return (
|
11709
|
+
// Adding z-index so that it shows on top of frozen columns
|
11710
|
+
cn('items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 !px-1 z-[1]', {
|
11711
|
+
'group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.200)]': !row.getIsSelected(),
|
11712
|
+
'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]': !row.getIsSelected() && (!((_table$options$meta3 = table.options.meta) !== null && _table$options$meta3 !== void 0 && _table$options$meta3.shouldPauseHoverState) || table.options.meta.editMode.isEditing),
|
11713
|
+
'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected()
|
11714
|
+
})
|
11715
|
+
);
|
11662
11716
|
},
|
11663
11717
|
headerClassName: 'hover:!bg-white !px-1'
|
11664
11718
|
},
|
@@ -11687,15 +11741,15 @@ const getCellAlignmentClasses = (alignment = 'left') => ({
|
|
11687
11741
|
'justify-end text-right': alignment === 'right',
|
11688
11742
|
'justify-center text-center': alignment === 'center'
|
11689
11743
|
});
|
11690
|
-
const
|
11691
|
-
const
|
11744
|
+
const getFrozenShadowClasses = (column, frozenColumns, isHorizontallyOffset) => {
|
11745
|
+
const frozen = !!column.getIsPinned();
|
11692
11746
|
// react-table has column.getPinnedIndex() but it does not exclude hidden columns, so the number is wrong
|
11693
|
-
const
|
11694
|
-
const
|
11695
|
-
const
|
11747
|
+
const frozenColumnIndex = frozenColumns.indexOf(column.id);
|
11748
|
+
const isLastFrozen = frozen && frozenColumnIndex === frozenColumns.length - 1;
|
11749
|
+
const hideFrozenShadow = !isHorizontallyOffset && (column.id === COLUMN_ID_FOR_EXPANSION || column.id === COLUMN_ID_FOR_SELECTION);
|
11696
11750
|
return {
|
11697
|
-
'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]':
|
11698
|
-
'shadow-[1px_0px_0px_theme(colors.grey.300)]':
|
11751
|
+
'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && isHorizontallyOffset,
|
11752
|
+
'shadow-[1px_0px_0px_theme(colors.grey.300)]': isLastFrozen && !isHorizontallyOffset && !hideFrozenShadow
|
11699
11753
|
};
|
11700
11754
|
};
|
11701
11755
|
const isKeyboardFocusableElement = element => {
|
@@ -11712,18 +11766,18 @@ const ColumnBase = /*#__PURE__*/React__default.forwardRef(function Table2ColumnB
|
|
11712
11766
|
table,
|
11713
11767
|
...attributes
|
11714
11768
|
} = props;
|
11715
|
-
const
|
11769
|
+
const isFrozenColumn = !!column.getIsPinned();
|
11716
11770
|
const meta = table.options.meta;
|
11717
11771
|
const left = meta.columnOffsets[column.id];
|
11718
|
-
const
|
11719
|
-
const className = cn('border-grey-300',
|
11772
|
+
const columnFreezing = table.getLeftVisibleLeafColumns().map(c => c.id);
|
11773
|
+
const className = cn('border-grey-300', getFrozenShadowClasses(column, columnFreezing, scrolled), getCellAlignmentClasses((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.align), {
|
11720
11774
|
'cursor-pointer': !!attributes.onClick
|
11721
11775
|
}, attributes.className);
|
11722
11776
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
|
11723
11777
|
className: className,
|
11724
11778
|
style: {
|
11725
11779
|
...style,
|
11726
|
-
left:
|
11780
|
+
left: isFrozenColumn && Number.isInteger(left) ? left : undefined
|
11727
11781
|
},
|
11728
11782
|
ref: ref
|
11729
11783
|
}));
|
@@ -12115,7 +12169,7 @@ const Cell = function Cell(props) {
|
|
12115
12169
|
const controlRef = React__default.useRef(null);
|
12116
12170
|
const cellClassName = (_cell$column$columnDe = cell.column.columnDef.meta) === null || _cell$column$columnDe === void 0 ? void 0 : _cell$column$columnDe.className;
|
12117
12171
|
const isActiveRow = meta.activeRowIndex === rowIndex;
|
12118
|
-
const
|
12172
|
+
const isFrozen = !!cell.column.getIsPinned();
|
12119
12173
|
const isDragging = meta.dragging[cell.row.id];
|
12120
12174
|
const isSelected = cell.row.getIsSelected();
|
12121
12175
|
const isDataColumn = !isInternalColumn(cell.column.id);
|
@@ -12141,7 +12195,7 @@ const Cell = function Cell(props) {
|
|
12141
12195
|
}, [isIndicatorVisible, isLastRow]);
|
12142
12196
|
const className = cn('[&>[data-taco="tag"]]:-my-0.5', {
|
12143
12197
|
'border-b': !isLastRow,
|
12144
|
-
'sticky z-[1]':
|
12198
|
+
'sticky z-[1]': isFrozen,
|
12145
12199
|
// use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating
|
12146
12200
|
'bg-white': !isActiveRow && !isSelected,
|
12147
12201
|
'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,
|
@@ -12150,10 +12204,10 @@ const Cell = function Cell(props) {
|
|
12150
12204
|
'!wcag-blue-500': isDragging,
|
12151
12205
|
'[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,
|
12152
12206
|
'!bg-red-100': hasValidationErrorsInRow,
|
12153
|
-
'z-[1]':
|
12207
|
+
'z-[1]': isFrozen && isActiveRow,
|
12154
12208
|
// First column should have higher z-index so that row indicator always show on top of the cell
|
12155
|
-
// control components.
|
12156
|
-
'z-[
|
12209
|
+
// control components. A z-index of 3, will show the indicator when columns are pinned.
|
12210
|
+
'z-[3]': isFrozen && isActiveRow && index === 0,
|
12157
12211
|
'border-blue !border-y-2 border-x-0': isIndicatorVisible,
|
12158
12212
|
'border-l-2 rounded-l': isIndicatorVisible && index === 0,
|
12159
12213
|
'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex
|
@@ -12193,9 +12247,6 @@ const Cell = function Cell(props) {
|
|
12193
12247
|
role: 'cell'
|
12194
12248
|
};
|
12195
12249
|
const [detailModeEditing, setDetailModeEditing] = React__default.useState(false);
|
12196
|
-
const detailModeClassName = cn({
|
12197
|
-
'!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
|
12198
|
-
});
|
12199
12250
|
// reset the editing state when we move column
|
12200
12251
|
React__default.useEffect(() => {
|
12201
12252
|
if (meta.editMode.columnIndex !== index) {
|
@@ -12234,6 +12285,9 @@ const Cell = function Cell(props) {
|
|
12234
12285
|
}
|
12235
12286
|
}
|
12236
12287
|
};
|
12288
|
+
attributes.onBlur = () => {
|
12289
|
+
setDetailModeEditing(false);
|
12290
|
+
};
|
12237
12291
|
if (canEditThisCell) {
|
12238
12292
|
var _allFocussableColumnI, _allFocussableColumnI2;
|
12239
12293
|
const firstDataColumnIndex = (_allFocussableColumnI = allFocussableColumnIndexes.at(0)) !== null && _allFocussableColumnI !== void 0 ? _allFocussableColumnI : 0;
|
@@ -12253,18 +12307,24 @@ const Cell = function Cell(props) {
|
|
12253
12307
|
if (!detailModeEditing) {
|
12254
12308
|
var _input$setSelectionRa, _input$value, _input$value2;
|
12255
12309
|
(_input$setSelectionRa = input.setSelectionRange) === null || _input$setSelectionRa === void 0 ? void 0 : _input$setSelectionRa.call(input, (_input$value = input.value) === null || _input$value === void 0 ? void 0 : _input$value.length, (_input$value2 = input.value) === null || _input$value2 === void 0 ? void 0 : _input$value2.length);
|
12256
|
-
|
12310
|
+
} else {
|
12311
|
+
var _input$select;
|
12312
|
+
input === null || input === void 0 ? void 0 : (_input$select = input.select) === null || _input$select === void 0 ? void 0 : _input$select.call(input);
|
12257
12313
|
}
|
12314
|
+
setDetailModeEditing(!detailModeEditing);
|
12258
12315
|
return;
|
12259
12316
|
}
|
12317
|
+
// Datepicker doesn't have keydown event handler its value doesn't change when user types inside
|
12318
|
+
// datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric
|
12319
|
+
// character
|
12320
|
+
if (control !== null && control !== void 0 && control.closest('[data-taco="datepicker"]') && /^[a-z0-9]$/i.test(event.key)) {
|
12321
|
+
setDetailModeEditing(true);
|
12322
|
+
}
|
12260
12323
|
}
|
12261
12324
|
// Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).
|
12262
12325
|
if (event.key === 'Escape' && event.currentTarget.contains(control)) {
|
12263
12326
|
event.preventDefault();
|
12264
|
-
const input = control;
|
12265
12327
|
if (detailModeEditing) {
|
12266
|
-
var _input$select;
|
12267
|
-
input === null || input === void 0 ? void 0 : (_input$select = input.select) === null || _input$select === void 0 ? void 0 : _input$select.call(input);
|
12268
12328
|
setDetailModeEditing(false);
|
12269
12329
|
} else {
|
12270
12330
|
var _tableRef$current3;
|
@@ -12347,7 +12407,7 @@ const Cell = function Cell(props) {
|
|
12347
12407
|
};
|
12348
12408
|
}
|
12349
12409
|
return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, attributes), /*#__PURE__*/React__default.createElement(EditingCell, {
|
12350
|
-
|
12410
|
+
detailModeEditing: detailModeEditing,
|
12351
12411
|
cell: cell,
|
12352
12412
|
cellRef: internalRef,
|
12353
12413
|
columnIndex: index,
|
@@ -12358,7 +12418,12 @@ const Cell = function Cell(props) {
|
|
12358
12418
|
tableRef: tableRef,
|
12359
12419
|
ref: controlRef,
|
12360
12420
|
rowValues: rows[rowIndex].original,
|
12361
|
-
rowsLength: rows.length
|
12421
|
+
rowsLength: rows.length,
|
12422
|
+
enableDetailModeEditing: () => {
|
12423
|
+
if (!detailModeEditing) {
|
12424
|
+
setDetailModeEditing(true);
|
12425
|
+
}
|
12426
|
+
}
|
12362
12427
|
}));
|
12363
12428
|
} else {
|
12364
12429
|
if (meta.onRowClick) {
|
@@ -12379,13 +12444,14 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12379
12444
|
cell,
|
12380
12445
|
cellRef,
|
12381
12446
|
columnIndex,
|
12382
|
-
|
12447
|
+
detailModeEditing,
|
12383
12448
|
isEditingThisCell = false,
|
12384
12449
|
onSave: handleSave,
|
12385
12450
|
rowIndex,
|
12386
12451
|
rowValues,
|
12387
12452
|
table,
|
12388
|
-
tableRef
|
12453
|
+
tableRef,
|
12454
|
+
enableDetailModeEditing
|
12389
12455
|
} = props;
|
12390
12456
|
const {
|
12391
12457
|
editMode: {
|
@@ -12410,6 +12476,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12410
12476
|
const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;
|
12411
12477
|
// On each save, the initialValue will be set to the new value of the cell
|
12412
12478
|
const initialValue = React__default.useRef(value);
|
12479
|
+
const stateReset = React__default.useRef(false);
|
12413
12480
|
// It is important that we let consumers pass a newValue as an argument because when setState is called before
|
12414
12481
|
// onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened
|
12415
12482
|
// before the saveIfChanged method is called.
|
@@ -12470,15 +12537,39 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12470
12537
|
const pinnedColumnsWidth = React__default.useMemo(() => {
|
12471
12538
|
const pinnedColumns = table.getState().columnPinning.left;
|
12472
12539
|
if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {
|
12473
|
-
const
|
12474
|
-
const
|
12475
|
-
if (
|
12540
|
+
const lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];
|
12541
|
+
const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];
|
12542
|
+
if (lastFrozenColumnOffset !== undefined) {
|
12476
12543
|
var _table$getState$colum;
|
12477
|
-
return
|
12544
|
+
return lastFrozenColumnOffset + ((_table$getState$colum = table.getState().columnSizing[lastFrozenColumn]) !== null && _table$getState$colum !== void 0 ? _table$getState$colum : 0);
|
12478
12545
|
}
|
12479
12546
|
}
|
12480
12547
|
return 0;
|
12481
12548
|
}, [meta.columnOffsets, table.getState().columnSizing]);
|
12549
|
+
React__default.useEffect(() => {
|
12550
|
+
if (hasChanged(initialValue.current, state)) {
|
12551
|
+
var _controlRef$current2;
|
12552
|
+
// For an input we want to make sure that if the value is changed then we go into detail mode, so that
|
12553
|
+
// arrow keys doesn't trigger the quick mode shortcuts.
|
12554
|
+
if (((_controlRef$current2 = controlRef.current) === null || _controlRef$current2 === void 0 ? void 0 : _controlRef$current2.nodeName) === 'INPUT') {
|
12555
|
+
enableDetailModeEditing();
|
12556
|
+
}
|
12557
|
+
showIndicator();
|
12558
|
+
} else {
|
12559
|
+
hideIndicator();
|
12560
|
+
}
|
12561
|
+
return hideIndicator;
|
12562
|
+
}, [state]);
|
12563
|
+
// This effect makes sure we select the input control value when escape key is pressed
|
12564
|
+
React__default.useEffect(() => {
|
12565
|
+
var _controlRef$current3, _controlRef$current4;
|
12566
|
+
const isControlInput = ((_controlRef$current3 = controlRef.current) === null || _controlRef$current3 === void 0 ? void 0 : _controlRef$current3.nodeName) === 'INPUT' && ((_controlRef$current4 = controlRef.current) === null || _controlRef$current4 === void 0 ? void 0 : _controlRef$current4.getAttribute('data-inline-editing-component')) === 'true';
|
12567
|
+
if (stateReset.current && isControlInput) {
|
12568
|
+
var _controlRef$current5;
|
12569
|
+
(_controlRef$current5 = controlRef.current) === null || _controlRef$current5 === void 0 ? void 0 : _controlRef$current5.select();
|
12570
|
+
}
|
12571
|
+
stateReset.current = false;
|
12572
|
+
}, [stateReset.current]);
|
12482
12573
|
const handleFocus = event => {
|
12483
12574
|
var _event$target, _cellRef$current;
|
12484
12575
|
meta.editMode.setColumn(columnIndex);
|
@@ -12494,14 +12585,17 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12494
12585
|
(_tableRef$current4 = tableRef.current) === null || _tableRef$current4 === void 0 ? void 0 : _tableRef$current4.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);
|
12495
12586
|
}
|
12496
12587
|
};
|
12497
|
-
|
12498
|
-
|
12499
|
-
|
12500
|
-
|
12501
|
-
|
12588
|
+
// In order to reset the value of an input when escape key is pressed this keydown handler is required.
|
12589
|
+
// Instead of adding this event handler in parent component, this handler is added here because we have access
|
12590
|
+
// to the state handler of the control component.
|
12591
|
+
const handleKeyDown = event => {
|
12592
|
+
const control = event.target;
|
12593
|
+
const isControlInput = control.nodeName === 'INPUT' && (control === null || control === void 0 ? void 0 : control.getAttribute('data-inline-editing-component')) === 'true';
|
12594
|
+
if (isControlInput && event.key === 'Escape') {
|
12595
|
+
setState(initialValue.current);
|
12596
|
+
stateReset.current = true;
|
12502
12597
|
}
|
12503
|
-
|
12504
|
-
}, [state]);
|
12598
|
+
};
|
12505
12599
|
const showIndicator = () => {
|
12506
12600
|
var _table$getState$sorti;
|
12507
12601
|
let willRowMoveReason = null;
|
@@ -12550,6 +12644,9 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12550
12644
|
const className = cn(getCellAlignmentClasses((_cell$column$columnDe4 = cell.column.columnDef.meta) === null || _cell$column$columnDe4 === void 0 ? void 0 : _cell$column$columnDe4.align));
|
12551
12645
|
const indicatorMountNode = (_cellRef$current2 = cellRef.current) === null || _cellRef$current2 === void 0 ? void 0 : (_cellRef$current2$par = _cellRef$current2.parentElement) === null || _cellRef$current2$par === void 0 ? void 0 : _cellRef$current2$par.querySelector(':first-child');
|
12552
12646
|
let controlComponent;
|
12647
|
+
const detailModeClassName = cn({
|
12648
|
+
'!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
|
12649
|
+
});
|
12553
12650
|
if (cellControl) {
|
12554
12651
|
if (typeof cellControl === 'function') {
|
12555
12652
|
controlComponent = cellControl({
|
@@ -12559,14 +12656,15 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12559
12656
|
ref: controlRef,
|
12560
12657
|
setValue: setState,
|
12561
12658
|
value: state,
|
12562
|
-
'data-inline-editing-component': 'true'
|
12563
|
-
className: detailModeClassName
|
12659
|
+
'data-inline-editing-component': 'true'
|
12564
12660
|
}, cell.row.original);
|
12565
12661
|
} else {
|
12566
12662
|
switch (cellControl) {
|
12567
12663
|
case 'datepicker':
|
12568
12664
|
controlComponent = /*#__PURE__*/React__default.createElement(Datepicker, Object.assign({}, attributes, {
|
12569
|
-
className:
|
12665
|
+
className: cn({
|
12666
|
+
'[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing
|
12667
|
+
}),
|
12570
12668
|
invalid: hasValidationError,
|
12571
12669
|
onBlur: event => {
|
12572
12670
|
const newDate = event.detail;
|
@@ -12595,7 +12693,8 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12595
12693
|
setState(event.target.value);
|
12596
12694
|
},
|
12597
12695
|
ref: controlRef,
|
12598
|
-
value: String(state !== null && state !== void 0 ? state : '')
|
12696
|
+
value: String(state !== null && state !== void 0 ? state : ''),
|
12697
|
+
onKeyDown: handleKeyDown
|
12599
12698
|
}));
|
12600
12699
|
break;
|
12601
12700
|
}
|
@@ -12613,7 +12712,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
|
|
12613
12712
|
}));
|
12614
12713
|
|
12615
12714
|
const Header$1 = function Header(props) {
|
12616
|
-
var _header$column$column, _header$column$column2, _asc$desc$header$colu, _header$column$column4, _header$column$column5, _header$column$column6, _header$column$column7, _asc$desc$header$colu2, _header$column$column8;
|
12715
|
+
var _header$column$column, _header$column$column2, _asc$desc$header$colu, _header$column$column4, _header$column$column5, _header$column$column6, _header$column$column7, _asc$desc$header$colu2, _header$column$column8, _header$column$column9;
|
12617
12716
|
const {
|
12618
12717
|
header,
|
12619
12718
|
index,
|
@@ -12623,11 +12722,14 @@ const Header$1 = function Header(props) {
|
|
12623
12722
|
...columnProps
|
12624
12723
|
} = props;
|
12625
12724
|
const textRef = React__default.useRef(null);
|
12626
|
-
const
|
12725
|
+
const frozen = !!header.column.getIsPinned();
|
12627
12726
|
const isOtherColumnBeingResized = table.getState().columnSizingInfo.isResizingColumn && table.getState().columnSizingInfo.isResizingColumn !== header.id;
|
12727
|
+
const {
|
12728
|
+
enableColumnFreezing
|
12729
|
+
} = table.options.meta;
|
12628
12730
|
const className = cn('group/header sticky top-0 bg-white border-b-2 relative font-bold z-[5] hover:z-[6]', {
|
12629
12731
|
'z-[6]': header.column.getIsResizing(),
|
12630
|
-
'z-[7]':
|
12732
|
+
'z-[7]': frozen,
|
12631
12733
|
'cursor-pointer select-none': header.column.getCanSort(),
|
12632
12734
|
'hover:bg-grey-100': header.column.getCanSort() || header.column.getCanResize() || ((_header$column$column = header.column.columnDef.meta) === null || _header$column$column === void 0 ? void 0 : _header$column$column.menu),
|
12633
12735
|
'pointer-events-none': isOtherColumnBeingResized
|
@@ -12639,7 +12741,7 @@ const Header$1 = function Header(props) {
|
|
12639
12741
|
const size = Math.ceil(node.getBoundingClientRect().width);
|
12640
12742
|
table.setColumnSizing(sizes => ({
|
12641
12743
|
...sizes,
|
12642
|
-
[header.id]: !
|
12744
|
+
[header.id]: !isInternalFrozenColumn(header.id) && size < MIN_COLUMN_SIZE ? MIN_COLUMN_SIZE : size
|
12643
12745
|
}));
|
12644
12746
|
}
|
12645
12747
|
};
|
@@ -12663,7 +12765,7 @@ const Header$1 = function Header(props) {
|
|
12663
12765
|
...sizes
|
12664
12766
|
};
|
12665
12767
|
if (size) {
|
12666
|
-
nextSizes[header.id] = !
|
12768
|
+
nextSizes[header.id] = !isInternalFrozenColumn(header.id) && size < MIN_COLUMN_SIZE ? MIN_COLUMN_SIZE : size;
|
12667
12769
|
} else {
|
12668
12770
|
delete nextSizes[header.id];
|
12669
12771
|
}
|
@@ -12696,7 +12798,7 @@ const Header$1 = function Header(props) {
|
|
12696
12798
|
ref: refCallback,
|
12697
12799
|
role: "columnheader",
|
12698
12800
|
"data-column-index": index
|
12699
|
-
}),
|
12801
|
+
}), isInternalFrozenColumn(header.id) ? reactTable$1.flexRender(header.column.columnDef.header, header.getContext()) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
12700
12802
|
className: cn('flex flex-grow overflow-hidden', {
|
12701
12803
|
'group-hover/header:-ml-2': !!header.column.getIsSorted() && !!((_header$column$column4 = header.column.columnDef.meta) !== null && _header$column$column4 !== void 0 && _header$column$column4.menu)
|
12702
12804
|
}, getCellAlignmentClasses((_header$column$column5 = header.column.columnDef.meta) === null || _header$column$column5 === void 0 ? void 0 : _header$column$column5.align))
|
@@ -12712,9 +12814,12 @@ const Header$1 = function Header(props) {
|
|
12712
12814
|
name: "chevron-down-solid",
|
12713
12815
|
className: "pointer-events-none -my-0.5"
|
12714
12816
|
})
|
12715
|
-
}[header.column.getIsSorted()]) !== null && _asc$desc$header$colu2 !== void 0 ? _asc$desc$header$colu2 : null), (_header$column$column8 = header.column.columnDef.meta) !== null && _header$column$column8 !== void 0 && _header$column$column8.menu ? /*#__PURE__*/React__default.createElement(HeaderMenu, {
|
12716
|
-
header:
|
12717
|
-
|
12817
|
+
}[header.column.getIsSorted()]) !== null && _asc$desc$header$colu2 !== void 0 ? _asc$desc$header$colu2 : null), (_header$column$column8 = header.column.columnDef.meta) !== null && _header$column$column8 !== void 0 && _header$column$column8.menu || enableColumnFreezing ? /*#__PURE__*/React__default.createElement(HeaderMenu, {
|
12818
|
+
menu: (_header$column$column9 = header.column.columnDef.meta) === null || _header$column$column9 === void 0 ? void 0 : _header$column$column9.menu,
|
12819
|
+
enableColumnFreezing: enableColumnFreezing,
|
12820
|
+
table: table,
|
12821
|
+
columnIndex: index
|
12822
|
+
}) : null), header.column.getCanResize() ? /*#__PURE__*/React__default.createElement(Tooltip, {
|
12718
12823
|
placement: "top",
|
12719
12824
|
title: "Resize column"
|
12720
12825
|
}, /*#__PURE__*/React__default.createElement("div", {
|
@@ -12736,26 +12841,84 @@ const Header$1 = function Header(props) {
|
|
12736
12841
|
}))) : null);
|
12737
12842
|
};
|
12738
12843
|
const HeaderMenu = ({
|
12739
|
-
|
12844
|
+
menu,
|
12845
|
+
enableColumnFreezing,
|
12846
|
+
table,
|
12847
|
+
columnIndex
|
12740
12848
|
}) => {
|
12741
12849
|
const [open, setOpen] = React__default.useState(false);
|
12850
|
+
const {
|
12851
|
+
texts
|
12852
|
+
} = useLocalization();
|
12853
|
+
const {
|
12854
|
+
frozenColumnsCount,
|
12855
|
+
setFrozenColumnsCount
|
12856
|
+
} = table.options.meta;
|
12857
|
+
const columns = table.getAllLeafColumns();
|
12858
|
+
const {
|
12859
|
+
columnVisibility,
|
12860
|
+
columnOrder
|
12861
|
+
} = table.getState();
|
12862
|
+
const visibleInternalColumnsCount = React__default.useMemo(() => columns.filter(column => isInternalFrozenColumn(column.id)).length, [columns]);
|
12863
|
+
const columnPosition = columnIndex + 1;
|
12864
|
+
const externalFrozenColumnsCount = columnPosition - visibleInternalColumnsCount;
|
12865
|
+
const isSomeExternalColumnFrozen = frozenColumnsCount !== 0;
|
12866
|
+
const freeAllColumns = () => {
|
12867
|
+
setFrozenColumnsCount(0);
|
12868
|
+
};
|
12869
|
+
const freezeColumns = () => {
|
12870
|
+
setFrozenColumnsCount(externalFrozenColumnsCount);
|
12871
|
+
};
|
12742
12872
|
const className = cn('-my-0.5 -mr-1 -ml-0.5 hidden !h-6 !min-h-[theme(spacing.6)] !w-6 !min-w-[theme(spacing.6)] flex-shrink-0 justify-end group-hover/header:flex', {
|
12743
12873
|
'!flex': open
|
12744
12874
|
});
|
12745
|
-
|
12746
|
-
|
12747
|
-
|
12748
|
-
|
12749
|
-
React__default.createElement(
|
12750
|
-
|
12751
|
-
|
12875
|
+
const freezeMenuItems = [/*#__PURE__*/React__default.createElement(Menu$1.Item, {
|
12876
|
+
icon: "column-freeze",
|
12877
|
+
onClick: freezeColumns,
|
12878
|
+
key: "_freeze-columns_"
|
12879
|
+
}, externalFrozenColumnsCount > 1 ? texts.table2.columns.menu.freezeColumns.replace('[X]', String(externalFrozenColumnsCount)) : texts.table2.columns.menu.freezeColumns.replace('[X] ', '')), ...(isSomeExternalColumnFrozen ? [/*#__PURE__*/React__default.createElement(Menu$1.Item, {
|
12880
|
+
icon: "column-unfreeze",
|
12881
|
+
onClick: freeAllColumns,
|
12882
|
+
key: "_unfreeze-columns_"
|
12883
|
+
}, texts.table2.columns.menu.unfreezeColumns)] : [])];
|
12884
|
+
React__default.useEffect(() => {
|
12885
|
+
// Update column pinning/freezing whenever frozen columns count changes, or column order or visiblity changes
|
12886
|
+
const totalFrozenColumnsCount = visibleInternalColumnsCount + frozenColumnsCount;
|
12887
|
+
table.setColumnPinning({
|
12888
|
+
left: columns.slice(0, totalFrozenColumnsCount).map(column => column.id),
|
12889
|
+
right: []
|
12890
|
+
});
|
12891
|
+
}, [frozenColumnsCount, columnVisibility, columnOrder, visibleInternalColumnsCount]);
|
12892
|
+
const menuProps = {
|
12752
12893
|
trigger: /*#__PURE__*/React__default.createElement(IconButton, {
|
12753
12894
|
className: className,
|
12754
12895
|
icon: "more"
|
12755
12896
|
}),
|
12756
12897
|
open: open,
|
12757
12898
|
onChange: setOpen
|
12758
|
-
}
|
12899
|
+
};
|
12900
|
+
let menuComponent = null;
|
12901
|
+
if (menu) {
|
12902
|
+
menuComponent = menu(menuProps);
|
12903
|
+
if (enableColumnFreezing) {
|
12904
|
+
const menuContent = React__default.Children.only(menuComponent.props.children);
|
12905
|
+
const menuContentChildren = React__default.Children.toArray(menuContent.props.children);
|
12906
|
+
const menuItemsWithFreezingItems = [...menuContentChildren, /*#__PURE__*/React__default.createElement(Menu$1.Separator, null), ...freezeMenuItems];
|
12907
|
+
const menuContentWithFreezingItems = /*#__PURE__*/React__default.createElement(Menu$1.Content, null, menuItemsWithFreezingItems.map((item, key) => /*#__PURE__*/React__default.cloneElement(item, {
|
12908
|
+
key
|
12909
|
+
})));
|
12910
|
+
menuComponent = /*#__PURE__*/React__default.cloneElement(menuComponent, {
|
12911
|
+
children: menuContentWithFreezingItems
|
12912
|
+
});
|
12913
|
+
}
|
12914
|
+
} else if (enableColumnFreezing) {
|
12915
|
+
menuComponent = /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, freezeMenuItems));
|
12916
|
+
}
|
12917
|
+
// This div catches the mousedown events from menu item and menu trigger and prevents
|
12918
|
+
// mousedown event from bubbling up to the Header component to prevent toggling sorting
|
12919
|
+
return menuComponent ? /*#__PURE__*/React__default.createElement("div", {
|
12920
|
+
onMouseDown: event => event.stopPropagation()
|
12921
|
+
}, menuComponent) : null;
|
12759
12922
|
};
|
12760
12923
|
|
12761
12924
|
const Footer$3 = function Footer(props) {
|
@@ -12766,9 +12929,9 @@ const Footer$3 = function Footer(props) {
|
|
12766
12929
|
table,
|
12767
12930
|
...columnProps
|
12768
12931
|
} = props;
|
12769
|
-
const
|
12932
|
+
const isFrozen = !!footer.column.getIsPinned();
|
12770
12933
|
const className = cn('group/header sticky bottom-0 bg-white border-t-2 relative', getCellSizingClasses('normal'), {
|
12771
|
-
'z-[1]':
|
12934
|
+
'z-[1]': isFrozen
|
12772
12935
|
}, props.className);
|
12773
12936
|
return /*#__PURE__*/React__default.createElement(ColumnBase, Object.assign({}, columnProps, {
|
12774
12937
|
// base props
|
@@ -12790,9 +12953,9 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
12790
12953
|
const columnHelper = reactTable$1.createColumnHelper();
|
12791
12954
|
return React__default.useMemo(() => {
|
12792
12955
|
var _options$actionsForRo;
|
12956
|
+
let internalFrozenColumnCount = 0;
|
12793
12957
|
// cannot be typed correctly until https://github.com/TanStack/table/discussions/4530 is resolved
|
12794
12958
|
const columns = [];
|
12795
|
-
const defaultColumnPinning = [];
|
12796
12959
|
const defaultColumnSizing = {};
|
12797
12960
|
const defaultColumnVisibility = {};
|
12798
12961
|
const defaultSorting = [];
|
@@ -12800,9 +12963,6 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
12800
12963
|
React__default.Children.toArray(children).filter(child => !!child).forEach(child => {
|
12801
12964
|
if ( /*#__PURE__*/React__default.isValidElement(child)) {
|
12802
12965
|
var _child$props$minWidth;
|
12803
|
-
if (child.props.defaultPinned && options.enableColumnPinning) {
|
12804
|
-
defaultColumnPinning.push(child.props.accessor);
|
12805
|
-
}
|
12806
12966
|
if (child.props.defaultWidth) {
|
12807
12967
|
defaultColumnSizing[child.props.accessor] = child.props.defaultWidth;
|
12808
12968
|
}
|
@@ -12861,22 +13021,22 @@ function useColumnDefinitions(children, options, tableRef) {
|
|
12861
13021
|
});
|
12862
13022
|
if (options.enableRowExpansion && options.expandedRowRenderer) {
|
12863
13023
|
columns.unshift(columnHelper.display(createRowExpansionColumn(options.expandedRowRenderer, texts)));
|
12864
|
-
|
13024
|
+
internalFrozenColumnCount++;
|
12865
13025
|
}
|
12866
13026
|
if (options.enableRowSelection) {
|
12867
13027
|
columns.unshift(columnHelper.display(createRowSelectionColumn(options.enableMultipleRowSelection, lastSelectedRowIndex, options.onRowDrag, tableRef, texts)));
|
12868
|
-
|
13028
|
+
internalFrozenColumnCount++;
|
12869
13029
|
}
|
12870
13030
|
if (options.onRowDrag) {
|
12871
13031
|
columns.unshift(columnHelper.display(createRowDraggableColumn(options.onRowDrag, texts)));
|
12872
|
-
|
13032
|
+
internalFrozenColumnCount++;
|
12873
13033
|
}
|
12874
13034
|
if ((_options$actionsForRo = options.actionsForRow) !== null && _options$actionsForRo !== void 0 && _options$actionsForRo.length) {
|
12875
13035
|
columns.push(columnHelper.display(createRowActionsColumn(options.actionsForRow, texts)));
|
12876
13036
|
}
|
12877
13037
|
return {
|
12878
13038
|
columns,
|
12879
|
-
|
13039
|
+
internalFrozenColumnCount,
|
12880
13040
|
defaultColumnSizing,
|
12881
13041
|
defaultColumnVisibility,
|
12882
13042
|
defaultSorting,
|
@@ -12891,15 +13051,18 @@ const getSortingFn = dataType => {
|
|
12891
13051
|
return 'auto';
|
12892
13052
|
};
|
12893
13053
|
|
12894
|
-
//
|
13054
|
+
// frozen columns have position sticky, and because we support more than one of them
|
12895
13055
|
// we must set a 'left' css value. this hook listens to changes on state that will
|
12896
|
-
// affect the left offset (resize, visibility,
|
13056
|
+
// affect the left offset (resize, visibility, freezing) and updates offsets based on width
|
12897
13057
|
const useColumnOffsetStateListener = (table, setColumnOffsets) => {
|
12898
13058
|
const {
|
12899
13059
|
columnOrder,
|
12900
13060
|
columnSizingInfo,
|
12901
13061
|
columnVisibility
|
12902
13062
|
} = table.getState();
|
13063
|
+
const {
|
13064
|
+
frozenColumnsCount
|
13065
|
+
} = table.options.meta;
|
12903
13066
|
React__default.useEffect(() => {
|
12904
13067
|
const offsets = {};
|
12905
13068
|
// store left offsets for each visible column
|
@@ -12908,7 +13071,7 @@ const useColumnOffsetStateListener = (table, setColumnOffsets) => {
|
|
12908
13071
|
return offset + column.getSize();
|
12909
13072
|
}, 0);
|
12910
13073
|
setColumnOffsets(offsets);
|
12911
|
-
}, [columnOrder, columnSizingInfo, columnVisibility]);
|
13074
|
+
}, [columnOrder, columnSizingInfo, columnVisibility, frozenColumnsCount]);
|
12912
13075
|
};
|
12913
13076
|
|
12914
13077
|
const useRowSelectionListener = (table, onRowSelect) => {
|
@@ -12933,16 +13096,16 @@ const useSettingsStateListener = (table, onChangeSettings) => {
|
|
12933
13096
|
handler = setTimeout(() => onChangeSettings({
|
12934
13097
|
columnFilters: state.columnFilters,
|
12935
13098
|
columnOrder: state.columnOrder,
|
12936
|
-
columnPinning: state.columnPinning,
|
12937
13099
|
columnSizing: state.columnSizing,
|
12938
13100
|
columnVisibility: state.columnVisibility,
|
13101
|
+
frozenColumnCount: meta.frozenColumnsCount,
|
12939
13102
|
globalFilter: state.globalFilter,
|
12940
13103
|
rowDensity: meta.rowDensity,
|
12941
13104
|
sorting: state.sorting
|
12942
13105
|
}), 250);
|
12943
13106
|
}
|
12944
13107
|
return () => clearTimeout(handler);
|
12945
|
-
}, [state.columnFilters, state.columnOrder,
|
13108
|
+
}, [state.columnFilters, state.columnOrder, meta.frozenColumnsCount, state.columnSizing, state.columnVisibility, state.globalFilter, meta.rowDensity, state.sorting]);
|
12946
13109
|
};
|
12947
13110
|
|
12948
13111
|
const useActiveRow = (defaultActiveRowIndex = 0) => {
|
@@ -12990,14 +13153,14 @@ const useActiveRowStateListener = (table, rows, activeRowIndex) => {
|
|
12990
13153
|
};
|
12991
13154
|
|
12992
13155
|
function useTable$1(children, props, ref) {
|
12993
|
-
var _settings$
|
13156
|
+
var _settings$frozenColum, _settings$columnOrder, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity;
|
12994
13157
|
const {
|
12995
13158
|
actionsForRow = [],
|
12996
13159
|
data,
|
12997
13160
|
defaultActiveRowIndex,
|
12998
13161
|
disableColumnFiltering = false,
|
12999
13162
|
disableColumnHiding = false,
|
13000
|
-
|
13163
|
+
disableColumnFreezing = false,
|
13001
13164
|
disableColumnReordering = false,
|
13002
13165
|
disableColumnResizing = false,
|
13003
13166
|
disableRowDensity = false,
|
@@ -13024,7 +13187,7 @@ function useTable$1(children, props, ref) {
|
|
13024
13187
|
const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;
|
13025
13188
|
const {
|
13026
13189
|
columns,
|
13027
|
-
|
13190
|
+
internalFrozenColumnCount,
|
13028
13191
|
defaultColumnSizing,
|
13029
13192
|
defaultSorting,
|
13030
13193
|
defaultColumnVisibility,
|
@@ -13033,7 +13196,7 @@ function useTable$1(children, props, ref) {
|
|
13033
13196
|
actionsForRow,
|
13034
13197
|
enableColumnFiltering: !disableColumnFiltering,
|
13035
13198
|
enableColumnHiding: !disableColumnHiding,
|
13036
|
-
|
13199
|
+
enableColumnFreezing: !disableColumnFreezing,
|
13037
13200
|
enableRowExpansion,
|
13038
13201
|
enableRowSelection,
|
13039
13202
|
enableMultipleRowSelection,
|
@@ -13041,11 +13204,13 @@ function useTable$1(children, props, ref) {
|
|
13041
13204
|
onRowDrag
|
13042
13205
|
}, ref);
|
13043
13206
|
const lastSortedOrFilteredRows = React__default.useRef(null);
|
13207
|
+
const totalFrozenColumns = internalFrozenColumnCount + ((_settings$frozenColum = settings === null || settings === void 0 ? void 0 : settings.frozenColumnCount) !== null && _settings$frozenColum !== void 0 ? _settings$frozenColum : 0);
|
13208
|
+
const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);
|
13044
13209
|
// defaults
|
13045
13210
|
const initialState = {
|
13046
13211
|
columnOrder: (_settings$columnOrder = settings === null || settings === void 0 ? void 0 : settings.columnOrder) !== null && _settings$columnOrder !== void 0 ? _settings$columnOrder : columns.map(column => column.id),
|
13047
13212
|
columnPinning: {
|
13048
|
-
left:
|
13213
|
+
left: frozenColumns,
|
13049
13214
|
right: []
|
13050
13215
|
},
|
13051
13216
|
columnSizing: (_settings$columnSizin = settings === null || settings === void 0 ? void 0 : settings.columnSizing) !== null && _settings$columnSizin !== void 0 ? _settings$columnSizin : defaultColumnSizing,
|
@@ -13063,6 +13228,8 @@ function useTable$1(children, props, ref) {
|
|
13063
13228
|
const [dragging, setDragging] = React__default.useState({});
|
13064
13229
|
const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React__default.useState(false);
|
13065
13230
|
const [shouldDisableTableActions, setShouldDisableTableActions] = React__default.useState(false);
|
13231
|
+
// Frozen column count is the count of external columns that are frozen
|
13232
|
+
const [frozenColumnsCount, setFrozenColumnsCount] = React__default.useState(totalFrozenColumns - internalFrozenColumnCount);
|
13066
13233
|
// For some reason, using state instead of ref didn't work as expected, that's why ref is used
|
13067
13234
|
const focussableColumnIndexes = React__default.useRef([]);
|
13068
13235
|
// some options get set even if they are undefined, so we have to do it conditionally
|
@@ -13072,7 +13239,7 @@ function useTable$1(children, props, ref) {
|
|
13072
13239
|
enableColumnResizing: !disableColumnResizing,
|
13073
13240
|
enableGlobalFilter: !disableSearch,
|
13074
13241
|
enableHiding: !disableColumnHiding,
|
13075
|
-
enablePinning: !
|
13242
|
+
enablePinning: !disableColumnFreezing,
|
13076
13243
|
enableRowSelection: enableRowSelection,
|
13077
13244
|
enableMultiRowSelection: enableMultipleRowSelection,
|
13078
13245
|
enableSorting: !disableSorting
|
@@ -13133,9 +13300,13 @@ function useTable$1(children, props, ref) {
|
|
13133
13300
|
dragging,
|
13134
13301
|
setDragging,
|
13135
13302
|
// computed
|
13303
|
+
enableColumnFreezing: !disableColumnFreezing,
|
13136
13304
|
enableColumnReordering: !disableColumnReordering,
|
13305
|
+
enableColumnHiding: !disableColumnHiding,
|
13137
13306
|
shouldPauseHoverState,
|
13138
13307
|
setShouldPauseHoverState,
|
13308
|
+
frozenColumnsCount,
|
13309
|
+
setFrozenColumnsCount,
|
13139
13310
|
// resorting
|
13140
13311
|
shouldPauseSortingAndFiltering,
|
13141
13312
|
setShouldPauseSortingAndFiltering,
|
@@ -13333,6 +13504,10 @@ function Container(externalProps) {
|
|
13333
13504
|
}
|
13334
13505
|
Container.displayName = 'SortableContainer';
|
13335
13506
|
|
13507
|
+
const isFormElement = element => {
|
13508
|
+
const formElementNodeNames = ['BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'FIELDSET'];
|
13509
|
+
return formElementNodeNames.includes(element.nodeName);
|
13510
|
+
};
|
13336
13511
|
function Item$3(props) {
|
13337
13512
|
const {
|
13338
13513
|
asChild,
|
@@ -13356,7 +13531,7 @@ function Item$3(props) {
|
|
13356
13531
|
};
|
13357
13532
|
const onPointerDown = event => {
|
13358
13533
|
// allow form components, like checkboxes, to be active
|
13359
|
-
if (event.target
|
13534
|
+
if (event.currentTarget.contains(event.target) && !isFormElement(event.target)) {
|
13360
13535
|
listeners === null || listeners === void 0 ? void 0 : listeners.onPointerDown(event);
|
13361
13536
|
}
|
13362
13537
|
};
|
@@ -13396,50 +13571,80 @@ function List$1(externalProps) {
|
|
13396
13571
|
}
|
13397
13572
|
List$1.displayName = 'SortableList';
|
13398
13573
|
|
13574
|
+
const Truncate = ({
|
13575
|
+
tooltip,
|
13576
|
+
children
|
13577
|
+
}) => {
|
13578
|
+
const ref = React__default.useRef(null);
|
13579
|
+
const [mounted, setMounted] = React__default.useState(false);
|
13580
|
+
const {
|
13581
|
+
truncated
|
13582
|
+
} = useTruncated(ref.current, [mounted]);
|
13583
|
+
React__default.useEffect(() => {
|
13584
|
+
setMounted(true);
|
13585
|
+
return () => setMounted(false);
|
13586
|
+
}, []);
|
13587
|
+
const clonedChildrenWithRef = /*#__PURE__*/React__default.cloneElement(React__default.Children.only(children), {
|
13588
|
+
ref,
|
13589
|
+
className: cn(children.props.className, 'truncate')
|
13590
|
+
});
|
13591
|
+
if (truncated) {
|
13592
|
+
return /*#__PURE__*/React__default.createElement(Tooltip, {
|
13593
|
+
title: tooltip
|
13594
|
+
}, clonedChildrenWithRef);
|
13595
|
+
}
|
13596
|
+
return clonedChildrenWithRef;
|
13597
|
+
};
|
13598
|
+
|
13399
13599
|
const OrderableColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
|
13400
|
-
var _column$columnDef$hea;
|
13600
|
+
var _ref, _column$columnDef$hea, _column$columnDef$hea2;
|
13401
13601
|
const {
|
13402
13602
|
canBeReordered,
|
13403
13603
|
column,
|
13404
|
-
|
13604
|
+
children,
|
13605
|
+
isColumnFixed,
|
13405
13606
|
...attributes
|
13406
13607
|
} = props;
|
13407
13608
|
let icon;
|
13408
13609
|
if (canBeReordered) {
|
13409
13610
|
icon = /*#__PURE__*/React__default.createElement(Icon, {
|
13410
13611
|
name: "drag",
|
13411
|
-
|
13612
|
+
/** top margin of -3px on Icon, is added to make sure that each OrderableColumn is of 32px height **/
|
13613
|
+
className: "text-grey-500 hover:text-grey-700 mr-0.5 -ml-[6px] -mt-[3px] inline-block !h-5 !w-5 cursor-move"
|
13412
13614
|
});
|
13413
|
-
} else if (
|
13615
|
+
} else if (isColumnFixed) {
|
13414
13616
|
icon = /*#__PURE__*/React__default.createElement("span", {
|
13415
13617
|
className: "mr-0.5 inline-flex w-4"
|
13416
13618
|
});
|
13417
13619
|
}
|
13620
|
+
// columnName should be a string
|
13621
|
+
const columnName = (_ref = (_column$columnDef$hea = (_column$columnDef$hea2 = column.columnDef.header) === null || _column$columnDef$hea2 === void 0 ? void 0 : _column$columnDef$hea2.toString()) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : column.columnDef.id) !== null && _ref !== void 0 ? _ref : '';
|
13418
13622
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, {
|
13419
|
-
className: "hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-
|
13623
|
+
className: "hover:bg-grey-100 aria-pressed:bg-grey-200 flex w-full items-center justify-between gap-x-2 rounded py-[6px] px-2 aria-pressed:z-10",
|
13420
13624
|
ref: ref
|
13421
|
-
}), /*#__PURE__*/React__default.createElement(
|
13422
|
-
|
13423
|
-
},
|
13424
|
-
|
13425
|
-
|
13426
|
-
}) : null);
|
13625
|
+
}), /*#__PURE__*/React__default.createElement(Truncate, {
|
13626
|
+
tooltip: columnName
|
13627
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
13628
|
+
className: "select-none"
|
13629
|
+
}, icon, columnName)), children);
|
13427
13630
|
});
|
13428
13631
|
const isOrderingAllowed = (table, column) => {
|
13429
13632
|
var _column$columnDef$met;
|
13430
13633
|
const meta = table.options.meta;
|
13431
|
-
if (table.options.enablePinning) {
|
13432
|
-
return true;
|
13433
|
-
}
|
13434
13634
|
return meta.enableColumnReordering ? !((_column$columnDef$met = column.columnDef.meta) !== null && _column$columnDef$met !== void 0 && _column$columnDef$met.disableReordering) : false;
|
13435
13635
|
};
|
13636
|
+
const isColumnOrderingDisabled = (table, column) => {
|
13637
|
+
var _column$columnDef$met2;
|
13638
|
+
const meta = table.options.meta;
|
13639
|
+
return meta.enableColumnReordering && !!((_column$columnDef$met2 = column.columnDef.meta) !== null && _column$columnDef$met2 !== void 0 && _column$columnDef$met2.disableReordering);
|
13640
|
+
};
|
13436
13641
|
const SortableColumnContainer = ({
|
13437
13642
|
state,
|
13438
13643
|
moveColumn,
|
13439
13644
|
reorderColumn,
|
13440
|
-
table
|
13645
|
+
table,
|
13646
|
+
query
|
13441
13647
|
}) => {
|
13442
|
-
var _ref;
|
13443
13648
|
const {
|
13444
13649
|
texts
|
13445
13650
|
} = useLocalization();
|
@@ -13448,7 +13653,7 @@ const SortableColumnContainer = ({
|
|
13448
13653
|
const draggedColumn = state[listId].find(c => c.id === activeId);
|
13449
13654
|
const targetColumn = state[listId].find(c => c.id === overId);
|
13450
13655
|
if (draggedColumn && targetColumn) {
|
13451
|
-
reorderColumn(draggedColumn.id, targetColumn.id, listId === '
|
13656
|
+
reorderColumn(draggedColumn.id, targetColumn.id, listId === 'visible');
|
13452
13657
|
}
|
13453
13658
|
};
|
13454
13659
|
const move = (activeId, oldListId) => {
|
@@ -13457,80 +13662,114 @@ const SortableColumnContainer = ({
|
|
13457
13662
|
moveColumn(column);
|
13458
13663
|
}
|
13459
13664
|
};
|
13460
|
-
const
|
13461
|
-
|
13462
|
-
|
13463
|
-
}
|
13464
|
-
const
|
13465
|
-
|
13665
|
+
const handleColumnCheckboxChange = column => () => {
|
13666
|
+
moveColumn === null || moveColumn === void 0 ? void 0 : moveColumn(column);
|
13667
|
+
column.toggleVisibility();
|
13668
|
+
};
|
13669
|
+
const isColumnHidingAllowed = meta.enableColumnHiding;
|
13670
|
+
const isQueryFilterNotApplied = query === '';
|
13671
|
+
const filteredHiddenColumns = state.hidden.filter(column => {
|
13672
|
+
var _column$columnDef$hea3;
|
13673
|
+
return (_column$columnDef$hea3 = column.columnDef.header) === null || _column$columnDef$hea3 === void 0 ? void 0 : _column$columnDef$hea3.toString().toLowerCase().includes(query.toLowerCase());
|
13674
|
+
});
|
13675
|
+
const filteredVisibleColumns = state.visible.filter(column => {
|
13676
|
+
var _column$columnDef$hea4;
|
13677
|
+
return (_column$columnDef$hea4 = column.columnDef.header) === null || _column$columnDef$hea4 === void 0 ? void 0 : _column$columnDef$hea4.toString().toLowerCase().includes(query.toLowerCase());
|
13678
|
+
});
|
13679
|
+
const visibleListDescriptionText = isQueryFilterNotApplied ? texts.table2.columnSettings.columnsVisibleDrop : texts.table2.columnSettings.noVisibleColumns;
|
13680
|
+
const hiddenListDescriptionText = isQueryFilterNotApplied ? texts.table2.columnSettings.columnsHiddenDrop : texts.table2.columnSettings.noHiddenColumns;
|
13681
|
+
if (isColumnHidingAllowed) {
|
13466
13682
|
return /*#__PURE__*/React__default.createElement(Container, {
|
13467
13683
|
reorder: reorder,
|
13468
13684
|
move: move
|
13469
|
-
}, /*#__PURE__*/React__default.createElement(
|
13470
|
-
|
13471
|
-
|
13472
|
-
|
13473
|
-
|
13474
|
-
|
13685
|
+
}, /*#__PURE__*/React__default.createElement(Truncate, {
|
13686
|
+
tooltip: texts.table2.columnSettings.columnsVisible
|
13687
|
+
}, /*#__PURE__*/React__default.createElement("h5", {
|
13688
|
+
className: "mx-4 my-[6px]"
|
13689
|
+
}, texts.table2.columnSettings.columnsVisible)), /*#__PURE__*/React__default.createElement(List$1, {
|
13690
|
+
id: "visible",
|
13691
|
+
className: "flex min-h-[theme(spacing.8)] flex-col overflow-hidden px-2"
|
13692
|
+
}, filteredVisibleColumns.length ? filteredVisibleColumns.map(column => {
|
13693
|
+
// When searching a column, we disable reordering and make it fixed
|
13694
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
13695
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
13475
13696
|
return /*#__PURE__*/React__default.createElement(Item$3, {
|
13476
13697
|
key: column.id,
|
13477
|
-
disabled:
|
13698
|
+
disabled: !canBeReordered,
|
13478
13699
|
id: column.id,
|
13479
13700
|
asChild: true
|
13480
13701
|
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
13481
13702
|
canBeReordered: canBeReordered,
|
13482
13703
|
column: column,
|
13483
|
-
|
13484
|
-
|
13485
|
-
|
13486
|
-
|
13704
|
+
isColumnFixed: isColumnFixed
|
13705
|
+
}, column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
|
13706
|
+
className: "!mt-0",
|
13707
|
+
checked: column.getIsVisible(),
|
13708
|
+
onChange: handleColumnCheckboxChange(column)
|
13709
|
+
}) : null));
|
13710
|
+
}) :
|
13711
|
+
/*#__PURE__*/
|
13712
|
+
// For some reason wrapping this paragraph with Truncate will throw error in scenarios where
|
13713
|
+
// we conditionally hide or show the paragraph e.g. moving the last column to the hide list
|
13714
|
+
React__default.createElement("p", {
|
13715
|
+
className: "text-grey-500 mb-0 flex h-8 items-center truncate px-2"
|
13716
|
+
}, visibleListDescriptionText)), /*#__PURE__*/React__default.createElement(Truncate, {
|
13717
|
+
tooltip: texts.table2.columnSettings.columnsHidden
|
13718
|
+
}, /*#__PURE__*/React__default.createElement("h5", {
|
13719
|
+
className: "mx-4 my-[6px] truncate"
|
13720
|
+
}, texts.table2.columnSettings.columnsHidden)), /*#__PURE__*/React__default.createElement(List$1, {
|
13721
|
+
id: "hidden",
|
13722
|
+
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2"
|
13723
|
+
}, filteredHiddenColumns.length ? filteredHiddenColumns.map(column => {
|
13724
|
+
// When searching a column, we disable reordering and make it fixed
|
13725
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
13726
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
13727
|
+
return /*#__PURE__*/React__default.createElement(Item$3, {
|
13728
|
+
key: column.id,
|
13729
|
+
disabled: !canBeReordered,
|
13730
|
+
id: column.id,
|
13731
|
+
asChild: true
|
13732
|
+
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
13733
|
+
canBeReordered: canBeReordered,
|
13734
|
+
column: column,
|
13735
|
+
isColumnFixed: isColumnFixed
|
13736
|
+
}, column.getCanHide() ? /*#__PURE__*/React__default.createElement(Checkbox, {
|
13737
|
+
className: "!mt-0",
|
13738
|
+
checked: column.getIsVisible(),
|
13739
|
+
onChange: handleColumnCheckboxChange(column)
|
13740
|
+
}) : null));
|
13741
|
+
}) :
|
13742
|
+
/*#__PURE__*/
|
13743
|
+
// For some reason wrapping this paragraph with Truncate will throw error in scenarios where
|
13744
|
+
// we conditionally hide or show the paragraph e.g. moving the last column to the visible list
|
13745
|
+
React__default.createElement("p", {
|
13746
|
+
className: "text-grey-500 mb-0 flex h-8 items-center truncate px-2"
|
13747
|
+
}, hiddenListDescriptionText)));
|
13487
13748
|
}
|
13488
13749
|
return /*#__PURE__*/React__default.createElement(Container, {
|
13489
13750
|
reorder: reorder,
|
13490
13751
|
move: move
|
13491
|
-
}, /*#__PURE__*/React__default.createElement(
|
13492
|
-
|
13493
|
-
|
13494
|
-
|
13495
|
-
|
13496
|
-
|
13497
|
-
|
13498
|
-
|
13752
|
+
}, /*#__PURE__*/React__default.createElement(List$1, {
|
13753
|
+
id: "visible",
|
13754
|
+
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-hidden px-2"
|
13755
|
+
}, state.visible.length ? state.visible.filter(column => {
|
13756
|
+
var _column$columnDef$hea5;
|
13757
|
+
return (_column$columnDef$hea5 = column.columnDef.header) === null || _column$columnDef$hea5 === void 0 ? void 0 : _column$columnDef$hea5.toString().toLowerCase().includes(query.toLowerCase());
|
13758
|
+
}).map(column => {
|
13759
|
+
// When searching a column, we disable reordering and make it fixed
|
13760
|
+
const canBeReordered = isOrderingAllowed(table, column) && isQueryFilterNotApplied;
|
13761
|
+
const isColumnFixed = isColumnOrderingDisabled(table, column) && isQueryFilterNotApplied;
|
13499
13762
|
return /*#__PURE__*/React__default.createElement(Item$3, {
|
13500
13763
|
key: column.id,
|
13501
|
-
disabled:
|
13764
|
+
disabled: !canBeReordered,
|
13502
13765
|
id: column.id,
|
13503
13766
|
asChild: true
|
13504
13767
|
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
13505
13768
|
canBeReordered: canBeReordered,
|
13506
13769
|
column: column,
|
13507
|
-
|
13508
|
-
onDoubleClick: handleDoubleClick(column.id, 'pinned')
|
13770
|
+
isColumnFixed: isColumnFixed
|
13509
13771
|
}));
|
13510
|
-
}) :
|
13511
|
-
className: "text-grey-500 mb-0 flex h-8 items-center px-2"
|
13512
|
-
}, texts.table2.columnSettings.columnsPinnedDrop)), /*#__PURE__*/React__default.createElement("h5", {
|
13513
|
-
className: "mx-4"
|
13514
|
-
}, texts.table2.columnSettings.columnsOther), /*#__PURE__*/React__default.createElement(List$1, {
|
13515
|
-
id: "other",
|
13516
|
-
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
|
13517
|
-
}, state.other.length ? state.other.map(column => {
|
13518
|
-
var _column$columnDef$met4;
|
13519
|
-
const canBeReordered = isOrderingAllowed(table, column);
|
13520
|
-
return /*#__PURE__*/React__default.createElement(Item$3, {
|
13521
|
-
key: column.id,
|
13522
|
-
disabled: (_column$columnDef$met4 = column.columnDef.meta) === null || _column$columnDef$met4 === void 0 ? void 0 : _column$columnDef$met4.disableReordering,
|
13523
|
-
id: column.id,
|
13524
|
-
asChild: true
|
13525
|
-
}, /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
13526
|
-
canBeReordered: canBeReordered,
|
13527
|
-
column: column,
|
13528
|
-
isReorderingAllowed: isReorderingAllowed,
|
13529
|
-
onDoubleClick: handleDoubleClick(column.id, 'other')
|
13530
|
-
}));
|
13531
|
-
}) : /*#__PURE__*/React__default.createElement("p", {
|
13532
|
-
className: "text-grey-500 mb-0 flex h-8 items-center px-2"
|
13533
|
-
}, texts.table2.columnSettings.columnsOtherDrop)));
|
13772
|
+
}) : null));
|
13534
13773
|
};
|
13535
13774
|
const reorder = (draggedColumnId, targetColumnId, list = []) => {
|
13536
13775
|
const nextColumnOrder = [...list];
|
@@ -13546,38 +13785,109 @@ const ColumnSettingsButton = ({
|
|
13546
13785
|
const [query, setQuery] = React__default.useState('');
|
13547
13786
|
const columns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));
|
13548
13787
|
const [state, setState] = React__default.useState({
|
13549
|
-
|
13550
|
-
|
13788
|
+
visible: columns.filter(column => column.getIsVisible()),
|
13789
|
+
hidden: columns.filter(column => !column.getIsVisible())
|
13551
13790
|
});
|
13552
|
-
const
|
13553
|
-
|
13554
|
-
|
13555
|
-
|
13556
|
-
|
13557
|
-
|
13791
|
+
const initialOrderedColumns = React__default.useRef(columns);
|
13792
|
+
const moveColumnToList = column => {
|
13793
|
+
// If column can't hide then don't toggle visiblity
|
13794
|
+
if (column.getCanHide()) {
|
13795
|
+
column.toggleVisibility();
|
13796
|
+
}
|
13797
|
+
if (state.visible.find(c => c.id === column.id)) {
|
13798
|
+
setState(currentState => {
|
13799
|
+
const filteredColumns = currentState.visible.filter(c => c.id !== column.id);
|
13800
|
+
if (column.getCanHide()) {
|
13801
|
+
const hiddenColumns = [column].concat(...currentState.hidden);
|
13802
|
+
// Sort the hidden column so that they follow the initial order of fixed columns
|
13803
|
+
const sortedFixedHiddenColumns = hiddenColumns.filter(hiddenColumn => {
|
13804
|
+
var _hiddenColumn$columnD;
|
13805
|
+
return !!((_hiddenColumn$columnD = hiddenColumn.columnDef.meta) !== null && _hiddenColumn$columnD !== void 0 && _hiddenColumn$columnD.disableReordering);
|
13806
|
+
}).sort((colA, colB) => {
|
13807
|
+
const indexA = initialOrderedColumns.current.indexOf(colA);
|
13808
|
+
const indexB = initialOrderedColumns.current.indexOf(colB);
|
13809
|
+
return indexA - indexB;
|
13810
|
+
});
|
13811
|
+
const reorderableHiddenColumns = hiddenColumns.filter(hiddenColumn => {
|
13812
|
+
var _hiddenColumn$columnD2;
|
13813
|
+
return !((_hiddenColumn$columnD2 = hiddenColumn.columnDef.meta) !== null && _hiddenColumn$columnD2 !== void 0 && _hiddenColumn$columnD2.disableReordering);
|
13814
|
+
});
|
13815
|
+
return {
|
13816
|
+
visible: filteredColumns,
|
13817
|
+
hidden: [...sortedFixedHiddenColumns, ...reorderableHiddenColumns]
|
13818
|
+
};
|
13819
|
+
}
|
13820
|
+
// If column can't hide and it is dragged to hidden column list then move the column to the bottom of
|
13821
|
+
// the visible column list
|
13822
|
+
return {
|
13823
|
+
visible: filteredColumns.concat(column),
|
13824
|
+
hidden: currentState.hidden
|
13825
|
+
};
|
13826
|
+
});
|
13558
13827
|
} else {
|
13559
|
-
setState(currentState =>
|
13560
|
-
|
13561
|
-
|
13562
|
-
|
13828
|
+
setState(currentState => {
|
13829
|
+
let visibleColumns = [];
|
13830
|
+
// If ordering is allowed then we don't care about the previous column order
|
13831
|
+
if (isOrderingAllowed(table, column)) {
|
13832
|
+
visibleColumns = currentState.visible.concat(column);
|
13833
|
+
} else {
|
13834
|
+
const orderedVisibleColumns = initialOrderedColumns.current.filter(orderedColumn => !state.hidden.find(c => c.id === orderedColumn.id) || orderedColumn.id === column.id).map(({
|
13835
|
+
id
|
13836
|
+
}) => id);
|
13837
|
+
const movedColumnIndex = orderedVisibleColumns.indexOf(column.id);
|
13838
|
+
// Index of the column that is moved to visible list
|
13839
|
+
// Intial value for the index is the last item in visible list
|
13840
|
+
let index = currentState.visible.length;
|
13841
|
+
currentState.visible.find((col, colIndex) => {
|
13842
|
+
const columnIndex = orderedVisibleColumns.indexOf(col.id);
|
13843
|
+
// Index where the moved column should be shown in visible list
|
13844
|
+
if (movedColumnIndex < columnIndex) {
|
13845
|
+
index = colIndex;
|
13846
|
+
return true;
|
13847
|
+
}
|
13848
|
+
return false;
|
13849
|
+
});
|
13850
|
+
visibleColumns = currentState.visible.slice(0, index).concat(column).concat(currentState.visible.slice(index));
|
13851
|
+
}
|
13852
|
+
return {
|
13853
|
+
visible: visibleColumns,
|
13854
|
+
hidden: currentState.hidden.filter(c => c.id !== column.id)
|
13855
|
+
};
|
13856
|
+
});
|
13563
13857
|
}
|
13564
13858
|
};
|
13565
|
-
const
|
13566
|
-
|
13859
|
+
const reorderColumnInList = (draggedColumnId, targetColumnId, isVisible) => {
|
13860
|
+
var _columns$find, _columns$find$columnD;
|
13861
|
+
const isTargetColumnFixed = !!((_columns$find = columns.find(column => column.id === targetColumnId)) !== null && _columns$find !== void 0 && (_columns$find$columnD = _columns$find.columnDef.meta) !== null && _columns$find$columnD !== void 0 && _columns$find$columnD.disableReordering);
|
13862
|
+
if (isVisible) {
|
13863
|
+
let firstReorderableVisibleColumnId = targetColumnId;
|
13864
|
+
if (isTargetColumnFixed) {
|
13865
|
+
var _state$visible$find$i, _state$visible$find;
|
13866
|
+
firstReorderableVisibleColumnId = (_state$visible$find$i = (_state$visible$find = state.visible.find(visibleColumn => {
|
13867
|
+
var _visibleColumn$column;
|
13868
|
+
return !((_visibleColumn$column = visibleColumn.columnDef.meta) !== null && _visibleColumn$column !== void 0 && _visibleColumn$column.disableReordering);
|
13869
|
+
})) === null || _state$visible$find === void 0 ? void 0 : _state$visible$find.id) !== null && _state$visible$find$i !== void 0 ? _state$visible$find$i : targetColumnId;
|
13870
|
+
}
|
13567
13871
|
setState(currentState => ({
|
13568
13872
|
...currentState,
|
13569
|
-
|
13873
|
+
visible: reorder(draggedColumnId, firstReorderableVisibleColumnId, currentState.visible)
|
13570
13874
|
}));
|
13571
13875
|
} else {
|
13876
|
+
let firstReorderableHiddenColumnId = targetColumnId;
|
13877
|
+
if (isTargetColumnFixed) {
|
13878
|
+
var _state$hidden$find$id, _state$hidden$find;
|
13879
|
+
firstReorderableHiddenColumnId = (_state$hidden$find$id = (_state$hidden$find = state.hidden.find(visibleColumn => {
|
13880
|
+
var _visibleColumn$column2;
|
13881
|
+
return !((_visibleColumn$column2 = visibleColumn.columnDef.meta) !== null && _visibleColumn$column2 !== void 0 && _visibleColumn$column2.disableReordering);
|
13882
|
+
})) === null || _state$hidden$find === void 0 ? void 0 : _state$hidden$find.id) !== null && _state$hidden$find$id !== void 0 ? _state$hidden$find$id : targetColumnId;
|
13883
|
+
}
|
13572
13884
|
setState(currentState => ({
|
13573
13885
|
...currentState,
|
13574
|
-
|
13886
|
+
hidden: reorder(draggedColumnId, firstReorderableHiddenColumnId, currentState.hidden)
|
13575
13887
|
}));
|
13576
13888
|
}
|
13577
13889
|
};
|
13578
|
-
|
13579
|
-
// a range of issues using the native apis directly
|
13580
|
-
React__default.useEffect(() => {
|
13890
|
+
const changeColumnOrder = newColumnOrder => {
|
13581
13891
|
const internals = [];
|
13582
13892
|
if (table.options.enableRowSelection) {
|
13583
13893
|
internals.push(COLUMN_ID_FOR_SELECTION);
|
@@ -13585,14 +13895,42 @@ const ColumnSettingsButton = ({
|
|
13585
13895
|
if (table.options.enableExpanding) {
|
13586
13896
|
internals.push(COLUMN_ID_FOR_EXPANSION);
|
13587
13897
|
}
|
13588
|
-
table.
|
13589
|
-
|
13590
|
-
|
13591
|
-
|
13898
|
+
table.setColumnOrder(internals.concat(newColumnOrder.map(c => c.id)));
|
13899
|
+
};
|
13900
|
+
// probably a more elegant way to do this without local state but had
|
13901
|
+
// a range of issues using the native apis directly
|
13902
|
+
React__default.useEffect(() => {
|
13903
|
+
changeColumnOrder([...state.visible, ...state.hidden]);
|
13592
13904
|
}, [state]);
|
13593
|
-
|
13905
|
+
// This effect moves up all fixed/unorderable columns before orderable columns.
|
13906
|
+
// For custom column order, the fixed/unorderable columns will also move up before orderable columns.
|
13907
|
+
// The order between all fixed/unorderable column items, and all orderable column items will be same as it was
|
13908
|
+
// specified by the consumer.
|
13909
|
+
React__default.useEffect(() => {
|
13910
|
+
const orderableColumns = [];
|
13911
|
+
const fixedColumns = [];
|
13912
|
+
columns.forEach(column => {
|
13913
|
+
var _column$columnDef$met3;
|
13914
|
+
const isColumnFixed = !!((_column$columnDef$met3 = column.columnDef.meta) !== null && _column$columnDef$met3 !== void 0 && _column$columnDef$met3.disableReordering);
|
13915
|
+
if (isColumnFixed) {
|
13916
|
+
fixedColumns.push(column);
|
13917
|
+
} else {
|
13918
|
+
orderableColumns.push(column);
|
13919
|
+
}
|
13920
|
+
});
|
13921
|
+
const newOrderedColumns = [...fixedColumns, ...orderableColumns];
|
13922
|
+
// Changes order in the table
|
13923
|
+
changeColumnOrder(newOrderedColumns);
|
13924
|
+
// Changes order in the column settings button popover
|
13925
|
+
setState({
|
13926
|
+
visible: newOrderedColumns.filter(column => column.getIsVisible()),
|
13927
|
+
hidden: newOrderedColumns.filter(column => !column.getIsVisible())
|
13928
|
+
});
|
13929
|
+
// update initial column order
|
13930
|
+
initialOrderedColumns.current = newOrderedColumns;
|
13931
|
+
}, []);
|
13932
|
+
return /*#__PURE__*/React__default.createElement(Button$1, {
|
13594
13933
|
"aria-label": texts.table2.columnSettings.tooltip,
|
13595
|
-
icon: "columns",
|
13596
13934
|
popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps), /*#__PURE__*/React__default.createElement(Popover.Content, {
|
13597
13935
|
align: "end"
|
13598
13936
|
}, /*#__PURE__*/React__default.createElement("div", {
|
@@ -13602,25 +13940,18 @@ const ColumnSettingsButton = ({
|
|
13602
13940
|
placeholder: texts.table2.columnSettings.search,
|
13603
13941
|
value: query
|
13604
13942
|
}) : null, /*#__PURE__*/React__default.createElement("div", {
|
13605
|
-
className: "-ml-4 -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.
|
13606
|
-
},
|
13607
|
-
className: "flex min-h-[theme(spacing.8)] flex-col gap-y-px overflow-x-hidden px-2"
|
13608
|
-
}, columns.filter(column => {
|
13609
|
-
var _column$columnDef$hea2;
|
13610
|
-
return (_column$columnDef$hea2 = column.columnDef.header) === null || _column$columnDef$hea2 === void 0 ? void 0 : _column$columnDef$hea2.toString().toLowerCase().includes(query.toLowerCase());
|
13611
|
-
}).map(column => /*#__PURE__*/React__default.createElement(OrderableColumn, {
|
13612
|
-
key: column.id,
|
13613
|
-
canBeReordered: false,
|
13614
|
-
column: column,
|
13615
|
-
isReorderingAllowed: false
|
13616
|
-
}))) : /*#__PURE__*/React__default.createElement(SortableColumnContainer, {
|
13943
|
+
className: "-ml-[calc(theme(spacing.4)_-_2px)] -mb-2 max-h-64 w-[calc(100%_+_theme(spacing.7)_-_1px)] overflow-auto"
|
13944
|
+
}, /*#__PURE__*/React__default.createElement(SortableColumnContainer, {
|
13617
13945
|
state: state,
|
13618
|
-
moveColumn:
|
13619
|
-
reorderColumn:
|
13620
|
-
table: table
|
13946
|
+
moveColumn: moveColumnToList,
|
13947
|
+
reorderColumn: reorderColumnInList,
|
13948
|
+
table: table,
|
13949
|
+
query: query
|
13621
13950
|
}))))),
|
13622
13951
|
tooltip: texts.table2.columnSettings.tooltip
|
13623
|
-
}
|
13952
|
+
}, /*#__PURE__*/React__default.createElement(Icon, {
|
13953
|
+
name: "columns"
|
13954
|
+
}), texts.table2.columnSettings.button);
|
13624
13955
|
};
|
13625
13956
|
|
13626
13957
|
const ExpandedRow = ({
|
@@ -13645,6 +13976,9 @@ const ExpandedRow = ({
|
|
13645
13976
|
});
|
13646
13977
|
}
|
13647
13978
|
}, []);
|
13979
|
+
if (props.children === null || props.children === undefined) {
|
13980
|
+
return null;
|
13981
|
+
}
|
13648
13982
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({
|
13649
13983
|
className: "border-grey-300 bg-grey-50 col-span-full border-b p-4"
|
13650
13984
|
}, props, {
|
@@ -14275,6 +14609,7 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
14275
14609
|
} = props;
|
14276
14610
|
const tableRef = useMergedRef(ref);
|
14277
14611
|
const timeoutIdRef = React__default.useRef();
|
14612
|
+
const prevScrollY = React__default.useRef(0);
|
14278
14613
|
// react-table
|
14279
14614
|
const {
|
14280
14615
|
rows,
|
@@ -14445,15 +14780,26 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
14445
14780
|
} else {
|
14446
14781
|
const _temp3 = function () {
|
14447
14782
|
if (typeof loadMore === 'function') {
|
14783
|
+
const scrollY = event.currentTarget.scrollTop;
|
14784
|
+
const isVerticalScrolling = scrollY !== prevScrollY.current;
|
14785
|
+
prevScrollY.current = scrollY;
|
14448
14786
|
const _temp2 = function () {
|
14449
|
-
if (
|
14787
|
+
if (
|
14788
|
+
// This condition will also prevent triggering of loadMore function when scrolled upwards
|
14789
|
+
event.currentTarget.scrollHeight - event.currentTarget.scrollTop - event.currentTarget.clientHeight < 600 && !loadingRef.current &&
|
14790
|
+
// We don't want to trigger loadMore function on horizontal scrolling
|
14791
|
+
isVerticalScrolling) {
|
14450
14792
|
const _temp = _finallyRethrows(function () {
|
14451
|
-
|
14452
|
-
|
14453
|
-
|
14454
|
-
|
14455
|
-
|
14456
|
-
|
14793
|
+
return _catch(function () {
|
14794
|
+
const isAllRowsSelected = table.getIsAllRowsSelected();
|
14795
|
+
loadingRef.current = true;
|
14796
|
+
return Promise.resolve(loadMore()).then(function () {
|
14797
|
+
if (isAllRowsSelected) {
|
14798
|
+
table.toggleAllRowsSelected(true);
|
14799
|
+
}
|
14800
|
+
});
|
14801
|
+
}, function (error) {
|
14802
|
+
console.error(error);
|
14457
14803
|
});
|
14458
14804
|
}, function (_wasThrown, _result) {
|
14459
14805
|
loadingRef.current = false;
|
@@ -14483,7 +14829,7 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
14483
14829
|
handleMouseLeave = () => meta.setShouldPauseHoverState(false);
|
14484
14830
|
}
|
14485
14831
|
const className = cn('bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group', props.className);
|
14486
|
-
const enableSettingsButton = table.options.
|
14832
|
+
const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;
|
14487
14833
|
const hasInternalToolbar = enableSettingsButton || meta.editMode.enableEditMode || table.options.enableColumnFilters || meta.enableRowDensity || table.options.enableGlobalFilter;
|
14488
14834
|
const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;
|
14489
14835
|
const hasFooters = React__default.useMemo(() => {
|
@@ -14844,7 +15190,9 @@ const Button$3 = /*#__PURE__*/React__default.forwardRef(function Button(props, r
|
|
14844
15190
|
ref: ref
|
14845
15191
|
}));
|
14846
15192
|
});
|
14847
|
-
const getButtonClasses$1 = () => cn('!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer
|
15193
|
+
const getButtonClasses$1 = (rounded = true) => cn('!h-9 !w-9 flex-shrink-0 flex-grow-0 cursor-pointer relative', 'focus:!outline-none focus:!shadow-none focus-visible:!yt-focus-dark ', 'bg-transparent hover:bg-white/[.08] focus:bg-white/[.08] aria-current-page:bg-white/[.08]', '!text-white hover:text-white focus:text-white', {
|
15194
|
+
'!rounded-full': rounded
|
15195
|
+
});
|
14848
15196
|
|
14849
15197
|
const Link$1 = /*#__PURE__*/React__default.forwardRef(function Link(props, ref) {
|
14850
15198
|
const {
|
@@ -14883,7 +15231,24 @@ const getLinkClasses = (icon = undefined) => cn('flex h-8 flex-shrink-0 flex-gro
|
|
14883
15231
|
});
|
14884
15232
|
|
14885
15233
|
const Logo = /*#__PURE__*/React__default.forwardRef(function Logo(props, ref) {
|
14886
|
-
const className = cn('-
|
15234
|
+
const className = cn('h-7 w-7 m-1 self-center justify-self-center flex-shrink-0 flex-grow-0', props.className);
|
15235
|
+
return /*#__PURE__*/React__default.createElement("svg", Object.assign({}, props, {
|
15236
|
+
className: className,
|
15237
|
+
ref: ref,
|
15238
|
+
viewBox: "0 0 28 28",
|
15239
|
+
xmlns: "http://www.w3.org/2000/svg"
|
15240
|
+
}), /*#__PURE__*/React__default.createElement("g", {
|
15241
|
+
className: "fill-brand-sunsetOrange"
|
15242
|
+
}, /*#__PURE__*/React__default.createElement("path", {
|
15243
|
+
d: "M3.2496172 16.0366c-1.44938-.2893-2.857854.6517-3.1442248 2.1011-.2863702 1.4493.6516388 2.8578 2.1010248 3.1442 1.44938.2893 2.85786-.6517 3.14423-2.101.28929-1.4465-.65164-2.855-2.10103-3.1443z"
|
15244
|
+
}), /*#__PURE__*/React__default.createElement("path", {
|
15245
|
+
d: "M18.9911672 19.1692c-2.4137-.4792-4.7602 1.0871-5.2423 3.5037-.4793 2.4137 1.087 4.7602 3.5036 5.2423 2.4137.4793 4.7602-1.087 5.2424-3.5036.4792-2.4166-1.0871-4.7631-3.5037-5.2424z"
|
15246
|
+
}), /*#__PURE__*/React__default.createElement("path", {
|
15247
|
+
d: "M23.6958672.105135c-2.8988-.578585-5.7157 1.303275-6.2943 4.199125l-.5172 2.62116c-.3828 1.93446-2.2647 3.19098-4.1992 2.80819l-1.7474-.35651c-1.92569-.3828-3.18221-2.25589-2.79941-4.19035l.08766-.43832c.33021-1.68608-.7656-3.33417-2.45168-3.66438-1.69776-.336043-3.33709.75976-3.67606 2.45461-.33897 1.68607.76561 3.3254 2.45168 3.66437l.43833.09058c1.93446.3828 3.19098 2.26467 2.79941 4.19039l-.16948.8737c-.3828 1.9345.87372 3.8163 2.79945 4.1991 1.9344.3828 3.8163-.8737 4.1991-2.8082l.1695-.8737c.3828-1.9257 2.2646-3.1822 4.1903-2.7994l2.63.526c2.8987.5698 5.7157-1.31206 6.2855-4.20791.5844-2.90169-1.2974-5.718636-4.1962-6.288455z"
|
15248
|
+
})));
|
15249
|
+
});
|
15250
|
+
const LogoLegacy = /*#__PURE__*/React__default.forwardRef(function Logo(props, ref) {
|
15251
|
+
const className = cn('-mr-[156px] xs:-mr-14 md:!mr-0 h-9 shrink-0 w-[180px] px-1', props.className);
|
14887
15252
|
return /*#__PURE__*/React__default.createElement("svg", Object.assign({}, props, {
|
14888
15253
|
className: className,
|
14889
15254
|
ref: ref,
|
@@ -14969,7 +15334,7 @@ const PrimaryNavigation = /*#__PURE__*/React__default.forwardRef(function Primar
|
|
14969
15334
|
});
|
14970
15335
|
|
14971
15336
|
const SecondaryNavigation = /*#__PURE__*/React__default.forwardRef(function SecondaryNavigation(props, ref) {
|
14972
|
-
const className = cn('flex h-full items-center gap-2 mb-0 flex-shrink-0', props.className);
|
15337
|
+
const className = cn('flex h-full items-center gap-2 mb-0 flex-shrink-0 mr-2', props.className);
|
14973
15338
|
return /*#__PURE__*/React__default.createElement("div", Object.assign({}, props, {
|
14974
15339
|
className: className,
|
14975
15340
|
ref: ref
|
@@ -14977,7 +15342,7 @@ const SecondaryNavigation = /*#__PURE__*/React__default.forwardRef(function Seco
|
|
14977
15342
|
});
|
14978
15343
|
|
14979
15344
|
const MenuButton = /*#__PURE__*/React__default.forwardRef(function MenuButton(props, ref) {
|
14980
|
-
const className = cn(getButtonClasses$1(), '
|
15345
|
+
const className = cn(getButtonClasses$1(false), 'mr-1 !bg-transparent hover:!bg-white/[.08] focus:!bg-white/[.08]] lg:hidden z-[2]');
|
14981
15346
|
return /*#__PURE__*/React__default.createElement(IconButton, Object.assign({}, props, {
|
14982
15347
|
className: className,
|
14983
15348
|
"data-taco": "header-toggle-sidebar",
|
@@ -15229,7 +15594,7 @@ function AgreementDisplay$1(props) {
|
|
15229
15594
|
}
|
15230
15595
|
|
15231
15596
|
const Header$2 = /*#__PURE__*/React__default.forwardRef(function Header(props, ref) {
|
15232
|
-
const className = cn('bg-blue-900 flex h-16 w-full shrink-0 items-center gap-
|
15597
|
+
const className = cn('bg-blue-900 flex h-16 w-full shrink-0 items-center gap-2 pl-4', '[&>*:focus-visible]:yt-focus-dark [&>*]:rounded',
|
15233
15598
|
// styles for logo wrapped inside an anchor
|
15234
15599
|
props.className);
|
15235
15600
|
return /*#__PURE__*/React__default.createElement("header", Object.assign({}, props, {
|
@@ -15242,6 +15607,7 @@ Header$2.AgreementSelector = AgreementSelector;
|
|
15242
15607
|
Header$2.Button = Button$3;
|
15243
15608
|
Header$2.Link = Link$1;
|
15244
15609
|
Header$2.Logo = Logo;
|
15610
|
+
Header$2.LogoLegacy = LogoLegacy;
|
15245
15611
|
Header$2.PrimaryNavigation = PrimaryNavigation;
|
15246
15612
|
Header$2.SecondaryNavigation = SecondaryNavigation;
|
15247
15613
|
Header$2.MenuButton = MenuButton;
|
@@ -15619,6 +15985,7 @@ exports.VisuallyHidden = VisuallyHidden;
|
|
15619
15985
|
exports.WindowedTable = WindowedTable;
|
15620
15986
|
exports.convertRowIndexPathToNumberArray = convertRowIndexPathToNumberArray;
|
15621
15987
|
exports.defaultLocalisationTexts = defaultLocalisationTexts;
|
15988
|
+
exports.defaultLocalizationContext = defaultLocalizationContext;
|
15622
15989
|
exports.findByValue = findByValue$1;
|
15623
15990
|
exports.format = format;
|
15624
15991
|
exports.getByRowIndexPath = getByRowIndexPath;
|