@economic/taco 1.28.0 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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;
|