@economic/taco 1.30.1 → 1.30.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Table2/hooks/listeners/useFilterStateListener.d.ts +3 -0
- package/dist/components/Table2/hooks/useTable.d.ts +1 -0
- package/dist/components/Table2/types.d.ts +1 -0
- package/dist/esm/packages/taco/src/components/Button/Button.js +2 -1
- package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +7 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/Table2.js +15 -9
- package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js +12 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +13 -1
- 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/columns.js +4 -1
- package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
- package/dist/taco.cjs.development.js +48 -13
- 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 +6 -1
@@ -80,6 +80,7 @@ export declare type Table2RowActionProps<TType> = {
|
|
80
80
|
disabled?: boolean | ((row: TType) => boolean);
|
81
81
|
icon: IconName | ((row: TType) => IconName);
|
82
82
|
onClick?: (row: TType) => void;
|
83
|
+
shortcutKey?: string;
|
83
84
|
text: string | ((row: TType) => string);
|
84
85
|
visible?: boolean | ((row: TType) => boolean);
|
85
86
|
};
|
@@ -5,10 +5,11 @@ import { createButtonWithOverlays, getButtonClasses, getAppearanceClasses, creat
|
|
5
5
|
|
6
6
|
const Base = /*#__PURE__*/forwardRef(function ButtonBase(props, ref) {
|
7
7
|
const {
|
8
|
+
appearance,
|
8
9
|
fluid,
|
9
10
|
...otherProps
|
10
11
|
} = props;
|
11
|
-
const className = cn(getButtonClasses(), getAppearanceClasses(
|
12
|
+
const className = cn(getButtonClasses(), getAppearanceClasses(appearance), 'rounded px-3', {
|
12
13
|
'cursor-not-allowed opacity-50': props.disabled,
|
13
14
|
'focus:yt-focus active:focus:yt-focus': !props.disabled,
|
14
15
|
'w-full': fluid
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../../../../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Appearance } from '../../types';\nimport * as ButtonPrimitive from '../../primitives/Button';\nimport { getAppearanceClasses, getButtonClasses, createButtonWithTooltip, createButtonWithOverlays } from './util';\nimport { HangerProps } from '../Hanger/Hanger';\nimport { MenuProps } from '../Menu/Menu';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { PopoverProps } from '../Popover/Popover';\nimport './Button.css';\nimport { Icon } from '../Icon/Icon';\nimport { DrawerProps } from '../Drawer/Drawer';\n\nexport type ButtonProps = ButtonPrimitive.ButtonProps & {\n /** Appearance will change the style of the button */\n appearance?: Appearance;\n /**\n * Dialog component associated with the button, clicking the button will open the dialog.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated dialog when clicked.\n */\n dialog?: (props: Partial<DialogProps>) => JSX.Element;\n /**\n * Drawer component associated with the button, clicking the button will open the drawer.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated drawer when clicked.\n */\n drawer?: (props: Partial<DrawerProps>) => JSX.Element;\n /** If fluid, button expands to the width of it's container */\n fluid?: boolean;\n /** Hanger component associated with the button. */\n hanger?: (props: Partial<HangerProps>) => JSX.Element;\n /** Menu component associated with the button. */\n menu?: (props: Partial<MenuProps>) => JSX.Element;\n /**\n * Popover component associated with the button, clicking the button will open the popover.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated popover when clicked.\n */\n popover?: (props: Partial<PopoverProps>) => JSX.Element;\n /** A tooltip to show when hovering over the button */\n tooltip?: string | JSX.Element;\n};\n\nconst Base = React.forwardRef(function ButtonBase(props: ButtonProps, ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>) {\n const { fluid, ...otherProps } = props;\n const className = cn(\n getButtonClasses(),\n getAppearanceClasses(
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../../../../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Appearance } from '../../types';\nimport * as ButtonPrimitive from '../../primitives/Button';\nimport { getAppearanceClasses, getButtonClasses, createButtonWithTooltip, createButtonWithOverlays } from './util';\nimport { HangerProps } from '../Hanger/Hanger';\nimport { MenuProps } from '../Menu/Menu';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { PopoverProps } from '../Popover/Popover';\nimport './Button.css';\nimport { Icon } from '../Icon/Icon';\nimport { DrawerProps } from '../Drawer/Drawer';\n\nexport type ButtonProps = ButtonPrimitive.ButtonProps & {\n /** Appearance will change the style of the button */\n appearance?: Appearance;\n /**\n * Dialog component associated with the button, clicking the button will open the dialog.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated dialog when clicked.\n */\n dialog?: (props: Partial<DialogProps>) => JSX.Element;\n /**\n * Drawer component associated with the button, clicking the button will open the drawer.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated drawer when clicked.\n */\n drawer?: (props: Partial<DrawerProps>) => JSX.Element;\n /** If fluid, button expands to the width of it's container */\n fluid?: boolean;\n /** Hanger component associated with the button. */\n hanger?: (props: Partial<HangerProps>) => JSX.Element;\n /** Menu component associated with the button. */\n menu?: (props: Partial<MenuProps>) => JSX.Element;\n /**\n * Popover component associated with the button, clicking the button will open the popover.\n * *Note* that `onClick` event on button won't be handled, as in this case, the purpose of\n * the button should be only to open the associated popover when clicked.\n */\n popover?: (props: Partial<PopoverProps>) => JSX.Element;\n /** A tooltip to show when hovering over the button */\n tooltip?: string | JSX.Element;\n};\n\nconst Base = React.forwardRef(function ButtonBase(props: ButtonProps, ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>) {\n const { appearance, fluid, ...otherProps } = props;\n const className = cn(\n getButtonClasses(),\n getAppearanceClasses(appearance),\n 'rounded px-3',\n {\n 'cursor-not-allowed opacity-50': props.disabled,\n 'focus:yt-focus active:focus:yt-focus': !props.disabled,\n 'w-full': fluid,\n },\n props.className\n );\n\n return createButtonWithTooltip({ ...otherProps, 'data-taco': 'button' }, className, ref);\n});\n\nexport const Button = React.forwardRef(function Button(\n props: ButtonProps,\n ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>\n) {\n const { dialog, drawer, hanger, menu, popover, ...buttonProps } = props;\n\n let children = buttonProps.children;\n\n // add a chevron icon to menu buttons\n if (typeof menu === 'function') {\n children = Array.isArray(children)\n ? [...children, <Icon key=\"chevron-down\" name=\"chevron-down\" />]\n : [children, <Icon key=\"chevron-down\" name=\"chevron-down\" />];\n }\n\n const button = (\n <Base {...buttonProps} ref={ref}>\n {children}\n </Base>\n );\n\n return createButtonWithOverlays({ dialog, drawer, hanger, menu, popover }, button);\n});\n"],"names":["Base","React","ButtonBase","props","ref","appearance","fluid","otherProps","className","cn","getButtonClasses","getAppearanceClasses","disabled","createButtonWithTooltip","Button","dialog","drawer","hanger","menu","popover","buttonProps","children","Array","isArray","Icon","key","name","button","createButtonWithOverlays"],"mappings":";;;;;AA4CA,MAAMA,IAAI,gBAAGC,UAAgB,CAAC,SAASC,UAAU,CAACC,KAAkB,EAAEC,GAAqD;EACvH,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGJ,KAAK;EAClD,MAAMK,SAAS,GAAGC,EAAE,CAChBC,gBAAgB,EAAE,EAClBC,oBAAoB,CAACN,UAAU,CAAC,EAChC,cAAc,EACd;IACI,+BAA+B,EAAEF,KAAK,CAACS,QAAQ;IAC/C,sCAAsC,EAAE,CAACT,KAAK,CAACS,QAAQ;IACvD,QAAQ,EAAEN;GACb,EACDH,KAAK,CAACK,SAAS,CAClB;EAED,OAAOK,uBAAuB,CAAC;IAAE,GAAGN,UAAU;IAAE,WAAW,EAAE;GAAU,EAAEC,SAAS,EAAEJ,GAAG,CAAC;AAC5F,CAAC,CAAC;MAEWU,MAAM,gBAAGb,UAAgB,CAAC,SAASa,MAAM,CAClDX,KAAkB,EAClBC,GAAqD;EAErD,MAAM;IAAEW,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAE,GAAGC;GAAa,GAAGjB,KAAK;EAEvE,IAAIkB,QAAQ,GAAGD,WAAW,CAACC,QAAQ;;EAGnC,IAAI,OAAOH,IAAI,KAAK,UAAU,EAAE;IAC5BG,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAC5B,CAAC,GAAGA,QAAQ,eAAEpB,cAACuB,IAAI;MAACC,GAAG,EAAC,cAAc;MAACC,IAAI,EAAC;MAAiB,CAAC,GAC9D,CAACL,QAAQ,eAAEpB,cAACuB,IAAI;MAACC,GAAG,EAAC,cAAc;MAACC,IAAI,EAAC;MAAiB,CAAC;;EAGrE,MAAMC,MAAM,gBACR1B,cAACD,IAAI,oBAAKoB,WAAW;IAAEhB,GAAG,EAAEA;MACvBiB,QAAQ,CAEhB;EAED,OAAOO,wBAAwB,CAAC;IAAEb,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC;GAAS,EAAEQ,MAAM,CAAC;AACtF,CAAC;;;;"}
|
@@ -1,6 +1,12 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
import cn from 'classnames';
|
3
3
|
|
4
|
+
const replaceWithShortform = key => {
|
5
|
+
if (key === 'Delete') {
|
6
|
+
return 'Del';
|
7
|
+
}
|
8
|
+
return key;
|
9
|
+
};
|
4
10
|
const Shortcut = ({
|
5
11
|
keys,
|
6
12
|
...props
|
@@ -11,7 +17,7 @@ const Shortcut = ({
|
|
11
17
|
}), keys.map(key => /*#__PURE__*/React__default.createElement("kbd", {
|
12
18
|
key: key,
|
13
19
|
className: "wcag-blue-900 inline-flex h-4 items-center rounded px-1 font-mono text-xs font-normal"
|
14
|
-
}, key)));
|
20
|
+
}, replaceWithShortform(key))));
|
15
21
|
};
|
16
22
|
|
17
23
|
export { Shortcut };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Shortcut.js","sources":["../../../../../../../src/components/Shortcut/Shortcut.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nexport type ShortcutProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> & {\n keys: string[];\n};\n\nexport const Shortcut = ({ keys, ...props }: ShortcutProps) => {\n const className = cn('inline-flex gap-0.5', props.className);\n\n return (\n <span {...props} className={className}>\n {keys.map(key => (\n <kbd key={key} className=\"wcag-blue-900 inline-flex h-4 items-center rounded px-1 font-mono text-xs font-normal\">\n {key}\n </kbd>\n ))}\n </span>\n );\n};\n"],"names":["Shortcut","keys","props","className","cn","React","map"
|
1
|
+
{"version":3,"file":"Shortcut.js","sources":["../../../../../../../src/components/Shortcut/Shortcut.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nconst replaceWithShortform = (key: string) => {\n if (key === 'Delete') {\n return 'Del';\n }\n\n return key;\n};\nexport type ShortcutProps = Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> & {\n keys: string[];\n};\n\nexport const Shortcut = ({ keys, ...props }: ShortcutProps) => {\n const className = cn('inline-flex gap-0.5', props.className);\n\n return (\n <span {...props} className={className}>\n {keys.map(key => (\n <kbd key={key} className=\"wcag-blue-900 inline-flex h-4 items-center rounded px-1 font-mono text-xs font-normal\">\n {replaceWithShortform(key)}\n </kbd>\n ))}\n </span>\n );\n};\n"],"names":["replaceWithShortform","key","Shortcut","keys","props","className","cn","React","map"],"mappings":";;;AAGA,MAAMA,oBAAoB,GAAIC,GAAW;EACrC,IAAIA,GAAG,KAAK,QAAQ,EAAE;IAClB,OAAO,KAAK;;EAGhB,OAAOA,GAAG;AACd,CAAC;MAKYC,QAAQ,GAAG,CAAC;EAAEC,IAAI;EAAE,GAAGC;CAAsB;EACtD,MAAMC,SAAS,GAAGC,EAAE,CAAC,qBAAqB,EAAEF,KAAK,CAACC,SAAS,CAAC;EAE5D,oBACIE,uDAAUH,KAAK;IAAEC,SAAS,EAAEA;MACvBF,IAAI,CAACK,GAAG,CAACP,GAAG,iBACTM;IAAKN,GAAG,EAAEA,GAAG;IAAEI,SAAS,EAAC;KACpBL,oBAAoB,CAACC,GAAG,CAAC,CAEjC,CAAC,CACC;AAEf;;;;"}
|
@@ -42,7 +42,8 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
42
42
|
const {
|
43
43
|
rows,
|
44
44
|
table,
|
45
|
-
footers
|
45
|
+
footers,
|
46
|
+
actionShortcuts
|
46
47
|
} = useTable(props.children, props, tableRef);
|
47
48
|
const meta = table.options.meta;
|
48
49
|
const {
|
@@ -81,6 +82,14 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
81
82
|
const editButtonRef = React__default.useRef(null);
|
82
83
|
// support grid like keyboard navigation between cells
|
83
84
|
const handleKeyDown = event => {
|
85
|
+
if (!meta.editMode.isEditing && actionShortcuts[event.key]) {
|
86
|
+
var _tableRef$current;
|
87
|
+
const rowAction = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector(`[role="row"][aria-current="true"] [role="cell"]:last-child [aria-label="${actionShortcuts[event.key]}"]`);
|
88
|
+
if (rowAction) {
|
89
|
+
rowAction.click();
|
90
|
+
}
|
91
|
+
return;
|
92
|
+
}
|
84
93
|
if (document.activeElement === tableRef.current) {
|
85
94
|
if (event.key === 'ArrowUp') {
|
86
95
|
event.preventDefault();
|
@@ -104,8 +113,8 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
104
113
|
meta.setShouldPauseHoverState(true);
|
105
114
|
// the virtualiser doesn't always scroll right to the bottom for the last row
|
106
115
|
if (nextIndex === rows.length - 1) {
|
107
|
-
var _tableRef$
|
108
|
-
(_tableRef$
|
116
|
+
var _tableRef$current2;
|
117
|
+
(_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.scrollTo(0, tableRef.current.scrollHeight);
|
109
118
|
} else {
|
110
119
|
virtualiser.scrollToIndex(nextIndex + 2);
|
111
120
|
}
|
@@ -209,14 +218,11 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
|
|
209
218
|
const _temp3 = function () {
|
210
219
|
if (typeof loadMore === 'function') {
|
211
220
|
const scrollY = event.currentTarget.scrollTop;
|
212
|
-
const
|
221
|
+
const isScrollingDown = scrollY > prevScrollY.current;
|
213
222
|
prevScrollY.current = scrollY;
|
223
|
+
const scrolledPercentage = Math.round(100 / event.currentTarget.scrollHeight * scrollY);
|
214
224
|
const _temp2 = function () {
|
215
|
-
if (
|
216
|
-
// This condition will also prevent triggering of loadMore function when scrolled upwards
|
217
|
-
event.currentTarget.scrollHeight - event.currentTarget.scrollTop - event.currentTarget.clientHeight < 600 && !loadingRef.current &&
|
218
|
-
// We don't want to trigger loadMore function on horizontal scrolling
|
219
|
-
isVerticalScrolling) {
|
225
|
+
if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {
|
220
226
|
const _temp = _finallyRethrows(function () {
|
221
227
|
return _catch(function () {
|
222
228
|
const isAllRowsSelected = table.getIsAllRowsSelected();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n columnsHidden: string;\n columnsHiddenDrop: string;\n columnsVisible: string;\n columnsVisibleDrop: string;\n noHiddenColumns: string;\n noVisibleColumns: string;\n search: string;\n tooltip: string;\n button: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<HTMLDivElement> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<HTMLDivElement>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isVerticalScrolling = scrollY !== prevScrollY.current;\n\n prevScrollY.current = scrollY;\n\n if (\n // This condition will also prevent triggering of loadMore function when scrolled upwards\n event.currentTarget.scrollHeight - event.currentTarget.scrollTop - event.currentTarget.clientHeight < 600 &&\n !loadingRef.current &&\n // We don't want to trigger loadMore function on horizontal scrolling\n isVerticalScrolling\n ) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row className=\"group/row contents\" row={row} rowIndex={virtualRow.index} table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionProps, Table2Settings } from './types';\n"],"names":["Column","_","displayName","Table2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","current","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","document","activeElement","key","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","querySelector","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isVerticalScrolling","clientHeight","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Table2.js","sources":["../../../../../../../src/components/Table2/Table2.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Row as TRow, TableMeta } from '@tanstack/react-table';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { Cell } from './components/column/Cell';\nimport { Header } from './components/column/Header';\nimport { Footer } from './components/column/Footer';\nimport { Table2Props, Table2ColumnProps } from './types';\nimport { useTable } from './hooks/useTable';\nimport { useVirtualiser } from './hooks/useVirtualiser';\nimport { Group } from '../Group/Group';\nimport { useGridTemplate } from './hooks/useGridTemplate';\nimport { RowDensityButton } from './components/RowDensityButton';\nimport { ColumnSettingsButton } from './components/ColumnSettingsButton';\nimport { ExpandedRow } from './components/row/ExpandedRow';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { EditModeButton } from './components/EditModeButton';\n\nexport type Table2Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n menu: {\n freezeColumns: (count: number) => string;\n unfreezeColumns: string;\n };\n };\n columnSettings: {\n columnsHidden: string;\n columnsHiddenDrop: string;\n columnsVisible: string;\n columnsVisibleDrop: string;\n noHiddenColumns: string;\n noVisibleColumns: string;\n search: string;\n tooltip: string;\n button: string;\n };\n editing: {\n button: string;\n tooltip: string;\n tooltipDisabled: string;\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isAllOf: string;\n isEmpty: string;\n isNotEmpty: string;\n };\n tooltip: string;\n total: string;\n };\n rowDensity: {\n tooltip: string;\n };\n search: {\n placeholder: string;\n };\n shortcuts: {\n tooltip: string;\n search: string;\n filter: string;\n previousRow: string;\n nextRow: string;\n editCell: string;\n previousColumn: string;\n nextColumn: string;\n rowClick: string;\n selectRow: string;\n selectAllRows: string;\n expandRow: string;\n collapseRow: string;\n };\n};\n\nfunction Column<TType = any>(_: Table2ColumnProps<TType>) {\n return null;\n}\nColumn.displayName = 'Table2Column';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n} & (<TType>(props: Table2Props<TType> & { ref?: React.Ref<HTMLDivElement> }) => JSX.Element);\n\nconst Table2 = React.forwardRef(function Table2<TType = any>(props: Table2Props<TType>, ref: React.Ref<HTMLDivElement>) {\n // dom\n const {\n emptyState: EmptyState,\n expandedRowRenderer,\n length = props.data.length,\n loadMore,\n onRowClick,\n toolbarLeft,\n toolbarRight,\n _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n const prevScrollY = React.useRef<number>(0);\n\n // react-table\n const { rows, table, footers, actionShortcuts } = useTable(props.children, props, tableRef);\n const meta = table.options.meta as TableMeta<TType>;\n\n const { columnVisibility, columnOrder, globalFilter } = table.getState();\n\n // If column visibility or order changes then we turn off the edit mode so that control indexes gets computed\n // when user turns on the editing mode again. This is a temporary solution to make sure the keyboard navigation\n // still keeps working on changes in column visibility, order, or both\n React.useEffect(() => {\n meta.resetFocussableColumnIndexes();\n }, [columnVisibility, columnOrder]);\n\n React.useEffect(() => {\n // Whenever edit mode is turned off we reset the focussableColumnIndexes ref to an empty array so that\n // we don't have stale values, in case column visibility or ordering changes\n if (!meta.editMode.isEditing) {\n meta.resetFocussableColumnIndexes();\n }\n }, [meta.editMode.isEditing]);\n\n React.useEffect(() => {\n return () => clearTimeout(timeoutIdRef.current);\n }, []);\n\n // virtualiser\n const { virtualiser, virtualiserOffsets, setExpandedRowSizes } = useVirtualiser({ rows, table }, tableRef);\n\n // css grid\n const gridTemplateColumns = useGridTemplate(table);\n\n // handlers\n const editButtonRef = React.useRef(null);\n\n // support grid like keyboard navigation between cells\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (!meta.editMode.isEditing && actionShortcuts[event.key]) {\n const rowAction = tableRef.current?.querySelector(\n `[role=\"row\"][aria-current=\"true\"] [role=\"cell\"]:last-child [aria-label=\"${actionShortcuts[event.key]}\"]`\n ) as HTMLButtonElement;\n\n if (rowAction) {\n rowAction.click();\n }\n\n return;\n }\n\n if (document.activeElement === tableRef.current) {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n virtualiser.scrollToOffset(0);\n } else {\n meta.moveToPreviousRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n virtualiser.scrollToIndex(nextIndex - 1);\n });\n }\n\n return;\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n virtualiser.scrollToOffset(virtualiser.totalSize + 1);\n } else {\n meta.moveToNextRow(rows, nextIndex => {\n meta.setShouldPauseHoverState(true);\n\n // the virtualiser doesn't always scroll right to the bottom for the last row\n if (nextIndex === rows.length - 1) {\n tableRef.current?.scrollTo(0, tableRef.current.scrollHeight);\n } else {\n virtualiser.scrollToIndex(nextIndex + 2);\n }\n });\n }\n\n return;\n }\n\n const canToggleRowExpansion = table.options.enableExpanding;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta.activeRowIndex]?.toggleExpanded(false);\n }\n }\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n\n if (event.ctrlKey || event.metaKey) {\n if (canToggleRowExpansion) {\n rows[meta?.activeRowIndex]?.toggleExpanded(true);\n }\n }\n\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (onRowClick) {\n onRowClick(rows[meta?.activeRowIndex].original);\n }\n\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n\n if (table.options.enableRowSelection) {\n rows[meta.activeRowIndex]?.toggleSelected();\n }\n\n return;\n }\n\n if (event.ctrlKey || event.metaKey) {\n if (event.key === 'a' && table.options.enableRowSelection) {\n event.preventDefault();\n table.toggleAllRowsSelected();\n }\n\n return;\n }\n }\n };\n\n let handleBlur;\n\n if (meta.editMode.isEditing) {\n handleBlur = (event: React.FocusEvent) => {\n let elementGainingFocus = event.relatedTarget;\n\n if (elementGainingFocus === undefined) {\n return;\n }\n\n // we might be focusing on a select or a popover that was triggered from inside the table\n // so see if the element gaining focus is inside a portal and look up its controller\n const portalId = elementGainingFocus?.closest('[data-radix-popper-content-wrapper] > :first-child')?.id;\n\n if (portalId) {\n elementGainingFocus = event.currentTarget.querySelector(`[aria-controls=\"${portalId}\"]`) ?? event.relatedTarget;\n }\n\n if (!event.currentTarget?.contains(elementGainingFocus) && elementGainingFocus !== editButtonRef.current) {\n // When we call manually blur on control component while navigating to the next cell, then when this\n // handler is run, the related target is not the next control component and active element is null,\n // that's why we explictly need to check what's the next focussed element in order to figure out whether\n // we should disabled the sorting or not.\n timeoutIdRef.current = setTimeout(() => {\n const parentRow = event.target.closest('[role=\"row\"]');\n const isNewFocussedElementInSameRow = parentRow?.contains(document.activeElement);\n\n // When we manually call blur on control component and focus another component then\n // we have to make sure we\n if (meta.shouldPauseSortingAndFiltering && !isNewFocussedElementInSameRow) {\n // if client side - unpause sorting\n meta.setShouldPauseSortingAndFiltering(false);\n }\n });\n }\n };\n }\n\n // TODO: this can probably be extracted into a hook\n // we only show the pinned shadow on display columns when scrolling is active\n const [scrolled, setScrolled] = React.useState(false);\n\n // extract - infinite loading\n const loadingRef = React.useRef(false);\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.currentTarget.scrollLeft > 0 && !scrolled) {\n setScrolled(true);\n } else if (event.currentTarget.scrollLeft === 0 && scrolled) {\n setScrolled(false);\n } else if (typeof loadMore === 'function') {\n const scrollY = event.currentTarget.scrollTop;\n const isScrollingDown = scrollY > prevScrollY.current;\n prevScrollY.current = scrollY;\n\n const scrolledPercentage = Math.round((100 / event.currentTarget.scrollHeight) * scrollY);\n\n if (isScrollingDown && !loadingRef.current && scrolledPercentage >= 80) {\n try {\n const isAllRowsSelected = table.getIsAllRowsSelected();\n loadingRef.current = true;\n await loadMore();\n\n if (isAllRowsSelected) {\n table.toggleAllRowsSelected(true);\n }\n } catch (error) {\n console.error(error);\n } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.shouldPauseHoverState) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setShouldPauseHoverState(false);\n }\n\n const className = cn(\n 'bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group',\n props.className\n );\n\n const enableSettingsButton = table.options.enableHiding || meta.enableColumnReordering;\n const hasInternalToolbar =\n enableSettingsButton ||\n meta.editMode.enableEditMode ||\n table.options.enableColumnFilters ||\n meta.enableRowDensity ||\n table.options.enableGlobalFilter;\n const hasToolbar = hasInternalToolbar || !!toolbarLeft || !toolbarRight;\n\n const hasFooters = React.useMemo(() => {\n const summaryIds = Object.keys(footers);\n const visibleIds = Object.keys(columnVisibility).filter(c => !columnVisibility[c]);\n return summaryIds.length && summaryIds.some(v => !visibleIds.includes(v));\n }, [footers, columnVisibility]);\n\n return (\n <div className=\"-m-0.5 flex h-full w-[calc(100%_+_0.25rem)] flex-col gap-4 overflow-hidden p-0.5\">\n {hasToolbar ? (\n <div className=\"flex flex-wrap gap-2\">\n {toolbarLeft}\n {hasInternalToolbar ? (\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {meta.editMode.enableEditMode ? (\n <EditModeButton\n ref={editButtonRef}\n table={table}\n tableRef={tableRef}\n scrollToIndex={virtualiser.scrollToIndex}\n />\n ) : null}\n {table.options.enableColumnFilters ? <FiltersButton length={length} table={table} /> : null}\n {toolbarRight}\n {meta.enableRowDensity ? <RowDensityButton table={table} /> : null}\n {enableSettingsButton ? <ColumnSettingsButton table={table} /> : null}\n {table.options.enableGlobalFilter ? (\n <Search\n disabled={meta.shouldDisableTableActions}\n onSearch={table.setGlobalFilter}\n value={globalFilter}\n />\n ) : null}\n </Group>\n ) : null}\n {/*<ShortcutsGuideButton table={table} />*/}\n </div>\n ) : null}\n <div\n className={className}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n onScroll={handleScroll}\n ref={tableRef}\n role=\"table\"\n style={{\n gridTemplateColumns,\n gridTemplateRows: rows.length ? undefined : '40px',\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n }}\n tabIndex={0}>\n <div className=\"contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map((header, columnIndex) => (\n <Header\n key={header.id}\n header={header}\n index={columnIndex}\n isLastColumn={columnIndex === headerGroup.headers.length - 1}\n scrolled={scrolled}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </div>\n ))}\n </div>\n {rows.length ? (\n <div className=\"contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {virtualiserOffsets.top ? (\n <div style={{ height: virtualiserOffsets.top }} className=\"col-span-full\" />\n ) : null}\n {virtualiser.virtualItems.map(virtualRow => {\n const row = rows[virtualRow.index];\n\n return (\n <React.Fragment key={row.id}>\n <Row className=\"group/row contents\" row={row} rowIndex={virtualRow.index} table={table}>\n {row.getVisibleCells().map((cell, columnIndex) => (\n <Cell\n cell={cell}\n key={`${cell.id}_${cell.getValue()}`}\n index={columnIndex}\n isLastRow={virtualRow.index === rows.length - 1}\n rows={rows}\n rowIndex={virtualRow.index}\n scrolled={scrolled}\n scrollToIndex={virtualiser.scrollToIndex}\n scrollToOffset={virtualiser.scrollToOffset}\n table={table}\n tableRef={tableRef}\n />\n ))}\n </Row>\n {row.getIsExpanded() && expandedRowRenderer ? (\n <ExpandedRow index={virtualRow.index} setSize={setExpandedRowSizes}>\n {expandedRowRenderer(row.original)?.()}\n </ExpandedRow>\n ) : null}\n </React.Fragment>\n );\n })}\n {virtualiserOffsets.bottom ? (\n <div style={{ height: virtualiserOffsets.bottom }} className=\"col-span-full\" />\n ) : null}\n </div>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n {hasFooters ? (\n <div role=\"rowgroup\" className=\"contents\" data-taco=\"table2-footer\">\n {table.getFooterGroups().map(footerGroup => (\n <div key={footerGroup.id} role=\"row\" className=\"contents\">\n {footerGroup.headers.map((footer, cellIndex) => (\n <Footer key={footer.id} footer={footer} index={cellIndex} scrolled={scrolled} table={table}>\n {footers[footer.id]\n ? footers[footer.id](rows.map((row: TRow<TType>) => row.original[footer.id]))\n : null}\n </Footer>\n ))}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n {!!_experimentalActionsForTable &&\n table.options.enableRowSelection &&\n (table.getIsSomeRowsSelected() || table.getIsAllRowsSelected()) ? (\n <BatchActionsMenu<TType>\n className=\"fixed-center-x bottom-0 z-50 mb-4 print:hidden\"\n actionsForTable={_experimentalActionsForTable}\n summary={_experimentalActionsForTableSummary}\n table={table}\n />\n ) : null}\n </div>\n );\n}) as ForwardedTable2WithStatics;\n\nTable2.Column = Column;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionProps, Table2Settings } from './types';\n"],"names":["Column","_","displayName","Table2","React","forwardRef","props","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","toolbarLeft","toolbarRight","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","prevScrollY","rows","table","footers","actionShortcuts","useTable","children","meta","options","columnVisibility","columnOrder","globalFilter","getState","useEffect","resetFocussableColumnIndexes","editMode","isEditing","clearTimeout","current","virtualiser","virtualiserOffsets","setExpandedRowSizes","useVirtualiser","gridTemplateColumns","useGridTemplate","editButtonRef","handleKeyDown","event","key","rowAction","querySelector","click","document","activeElement","preventDefault","ctrlKey","metaKey","setActiveRowIndex","scrollToOffset","moveToPreviousRow","nextIndex","setShouldPauseHoverState","scrollToIndex","totalSize","moveToNextRow","scrollTo","scrollHeight","canToggleRowExpansion","enableExpanding","activeRowIndex","toggleExpanded","original","enableRowSelection","toggleSelected","toggleAllRowsSelected","handleBlur","elementGainingFocus","relatedTarget","undefined","portalId","closest","id","currentTarget","contains","setTimeout","parentRow","target","isNewFocussedElementInSameRow","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","scrolled","setScrolled","useState","loadingRef","handleScroll","scrollLeft","scrollY","scrollTop","isScrollingDown","scrolledPercentage","Math","round","isAllRowsSelected","getIsAllRowsSelected","error","console","handleMouseLeave","shouldPauseHoverState","className","cn","enableSettingsButton","enableHiding","enableColumnReordering","hasInternalToolbar","enableEditMode","enableColumnFilters","enableRowDensity","enableGlobalFilter","hasToolbar","hasFooters","useMemo","summaryIds","Object","keys","visibleIds","filter","c","some","v","includes","Group","EditModeButton","FiltersButton","RowDensityButton","ColumnSettingsButton","Search","disabled","shouldDisableTableActions","onSearch","setGlobalFilter","value","onBlur","onKeyDown","onMouseLeave","onScroll","role","style","gridTemplateRows","opacity","tabIndex","getHeaderGroups","map","headerGroup","headers","header","columnIndex","Header","index","isLastColumn","top","height","virtualItems","virtualRow","row","Fragment","Row","rowIndex","getVisibleCells","cell","Cell","getValue","isLastRow","getIsExpanded","ExpandedRow","setSize","bottom","getFooterGroups","footerGroup","footer","cellIndex","Footer","getIsSomeRowsSelected","BatchActionsMenu","actionsForTable","summary"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
import React__default from 'react';
|
2
|
+
|
3
|
+
const useFilterStateListener = (table, onRowSelect) => {
|
4
|
+
React__default.useEffect(() => {
|
5
|
+
if (onRowSelect) {
|
6
|
+
table.resetRowSelection();
|
7
|
+
}
|
8
|
+
}, [table.getState().columnFilters, table.getState().globalFilter]);
|
9
|
+
};
|
10
|
+
|
11
|
+
export { useFilterStateListener };
|
12
|
+
//# sourceMappingURL=useFilterStateListener.js.map
|
package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useFilterStateListener.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useFilterStateListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useFilterStateListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable } from '@tanstack/react-table';\nimport { RowSelectionHandler } from '../../types';\n\nexport const useFilterStateListener = <TType = any>(table: RTTable<TType>, onRowSelect: RowSelectionHandler | undefined) => {\n React.useEffect(() => {\n if (onRowSelect) {\n table.resetRowSelection();\n }\n }, [table.getState().columnFilters, table.getState().globalFilter]);\n};\n"],"names":["useFilterStateListener","table","onRowSelect","React","useEffect","resetRowSelection","getState","columnFilters","globalFilter"],"mappings":";;MAIaA,sBAAsB,GAAG,CAAcC,KAAqB,EAAEC,WAA4C;EACnHC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIF,WAAW,EAAE;MACbD,KAAK,CAACI,iBAAiB,EAAE;;GAEhC,EAAE,CAACJ,KAAK,CAACK,QAAQ,EAAE,CAACC,aAAa,EAAEN,KAAK,CAACK,QAAQ,EAAE,CAACE,YAAY,CAAC,CAAC;AACvE;;;;"}
|
@@ -9,6 +9,7 @@ import { useRowSelectionListener } from './listeners/useRowSelectionListener.js'
|
|
9
9
|
import { useSettingsStateListener } from './listeners/useSettingsStateListener.js';
|
10
10
|
import { useActiveRow } from './useActiveRow.js';
|
11
11
|
import { useActiveRowStateListener } from './listeners/useActiveRowStateListener.js';
|
12
|
+
import { useFilterStateListener } from './listeners/useFilterStateListener.js';
|
12
13
|
|
13
14
|
function useTable(children, props, ref) {
|
14
15
|
var _settings$frozenColum, _settings$columnOrder, _settings$columnSizin, _settings$columnVisib, _settings$rowDensity;
|
@@ -61,6 +62,15 @@ function useTable(children, props, ref) {
|
|
61
62
|
expandedRowRenderer,
|
62
63
|
onRowDrag
|
63
64
|
}, ref);
|
65
|
+
const actionShortcuts = actionsForRow === null || actionsForRow === void 0 ? void 0 : actionsForRow.reduce((shortcuts, action) => {
|
66
|
+
if (action.shortcutKey) {
|
67
|
+
return {
|
68
|
+
...shortcuts,
|
69
|
+
[action.shortcutKey]: action.ariaLabel
|
70
|
+
};
|
71
|
+
}
|
72
|
+
return shortcuts;
|
73
|
+
}, {});
|
64
74
|
const lastSortedOrFilteredRows = React__default.useRef(null);
|
65
75
|
const totalFrozenColumns = internalFrozenColumnCount + ((_settings$frozenColum = settings === null || settings === void 0 ? void 0 : settings.frozenColumnCount) !== null && _settings$frozenColum !== void 0 ? _settings$frozenColum : 0);
|
66
76
|
const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);
|
@@ -200,12 +210,14 @@ function useTable(children, props, ref) {
|
|
200
210
|
// state listeners
|
201
211
|
useActiveRowStateListener(table, rows, activeRow);
|
202
212
|
useColumnOffsetStateListener(table, setColumnOffsets);
|
213
|
+
useFilterStateListener(table, onRowSelect);
|
203
214
|
useRowSelectionListener(table, onRowSelect);
|
204
215
|
useSettingsStateListener(table, onChangeSettings);
|
205
216
|
return {
|
206
217
|
rows,
|
207
218
|
table,
|
208
|
-
footers
|
219
|
+
footers,
|
220
|
+
actionShortcuts
|
209
221
|
};
|
210
222
|
}
|
211
223
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2Children, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\nimport { useIsHoverStatePaused } from '../../../hooks/useIsHoverStatePaused';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n enableRowDragging: boolean;\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnFreezing: boolean;\n enableColumnReordering: boolean;\n enableColumnHiding: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\n frozenColumnsCount: number;\n setFrozenColumnsCount: OnChangeFn<number>;\n // other\n onRowClick?: RowClickHandler<TData>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n // last sorted or filtered rows\n lastSortedOrFilteredRows: React.MutableRefObject<Array<any>>;\n }\n}\n\nexport function useTable<TType = any>(children: Table2Children, props: Table2Props<TType>, ref: React.RefObject<HTMLDivElement>) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnFreezing = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n // experimental\n _experimentalActionsForTable,\n } = props;\n\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, internalFrozenColumnCount, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnFreezing: !disableColumnFreezing,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n expandedRowRenderer,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n const totalFrozenColumns = internalFrozenColumnCount + (settings?.frozenColumnCount ?? 0);\n const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: frozenColumns,\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState({});\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // Frozen column count is the count of external columns that are frozen\n const [frozenColumnsCount, setFrozenColumnsCount] = React.useState(totalFrozenColumns - internalFrozenColumnCount);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnFreezing,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n enableRowDragging: !!onRowDrag,\n dragging,\n setDragging,\n // computed\n enableColumnFreezing: !disableColumnFreezing,\n enableColumnReordering: !disableColumnReordering,\n enableColumnHiding: !disableColumnHiding,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n frozenColumnsCount,\n setFrozenColumnsCount,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n // last sorted or filtered rows\n lastSortedOrFilteredRows,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers };\n}\n"],"names":["useTable","children","props","ref","actionsForRow","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnFreezing","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","internalFrozenColumnCount","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnFreezing","lastSortedOrFilteredRows","React","useRef","totalFrozenColumns","frozenColumnCount","frozenColumns","slice","map","column","id","initialState","columnOrder","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","frozenColumnsCount","setFrozenColumnsCount","focussableColumnIndexes","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableRowDragging","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","useActiveRowStateListener","useColumnOffsetStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useTable.js","sources":["../../../../../../../../src/components/Table2/hooks/useTable.ts"],"sourcesContent":["import React from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n OnChangeFn,\n getSortedRowModel,\n getFilteredRowModel,\n RowData,\n TableState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2Children, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener';\nimport { ColumnOffsetState } from '../types';\nimport { useRowSelectionListener } from './listeners/useRowSelectionListener';\nimport { useSettingsStateListener } from './listeners/useSettingsStateListener';\nimport { columnFilterFn, globalFilterFn } from '../utilities/filterFn';\nimport { ActiveRowHandler, ActiveRowMoveHandler, useActiveRow } from './useActiveRow';\nimport { useActiveRowStateListener } from './listeners/useActiveRowStateListener';\nimport { useEditMode } from './useEditMode';\nimport { useIsHoverStatePaused } from '../../../hooks/useIsHoverStatePaused';\nimport { useFilterStateListener } from './listeners/useFilterStateListener';\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n // active row\n activeRowIndex: number;\n setActiveRowIndex: ActiveRowHandler;\n moveToPreviousRow: ActiveRowMoveHandler<TData>;\n moveToNextRow: ActiveRowMoveHandler<TData>;\n // offsets\n columnOffsets: ColumnOffsetState;\n // density\n enableRowDensity: boolean;\n rowDensity: RowDensity;\n setRowDensity: OnChangeFn<RowDensity>;\n // dragging\n enableRowDragging: boolean;\n dragging: Record<string, boolean>;\n setDragging: OnChangeFn<Record<string, boolean>>;\n // computed\n enableColumnFreezing: boolean;\n enableColumnReordering: boolean;\n enableColumnHiding: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\n frozenColumnsCount: number;\n setFrozenColumnsCount: OnChangeFn<number>;\n // other\n onRowClick?: RowClickHandler<TData>;\n // editing\n editMode: useEditMode;\n // used to determine first and last data column position\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n // disable table actions\n shouldDisableTableActions: boolean;\n setShouldDisableTableActions: OnChangeFn<boolean>;\n // active row column indexes\n focussableColumnIndexes: number[];\n addFocussableColumnIndex: (index: number) => void;\n resetFocussableColumnIndexes: () => void;\n // table ref\n tableRef: React.RefObject<HTMLDivElement>;\n // last sorted or filtered rows\n lastSortedOrFilteredRows: React.MutableRefObject<Array<any>>;\n }\n}\n\nexport function useTable<TType = any>(children: Table2Children, props: Table2Props<TType>, ref: React.RefObject<HTMLDivElement>) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnFreezing = false,\n disableColumnReordering = false,\n disableColumnResizing = false,\n disableRowDensity = false,\n disableRowExpansion = false,\n disableRowSelection = false,\n disableMultipleRowSelection = false,\n disableSearch = false,\n disableSorting = false,\n expandedRowRenderer,\n manualColumnFiltering = false,\n manualSearch = false,\n manualSorting = false,\n onChangeSettings,\n onRowClick,\n onRowDrag,\n onRowSelect,\n onSave,\n settings = {},\n // experimental\n _experimentalActionsForTable,\n } = props;\n\n const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, internalFrozenColumnCount, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnFreezing: !disableColumnFreezing,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n expandedRowRenderer,\n onRowDrag,\n },\n ref\n );\n\n const actionShortcuts = actionsForRow?.reduce((shortcuts, action) => {\n if (action.shortcutKey) {\n return { ...shortcuts, [action.shortcutKey]: action.ariaLabel };\n }\n\n return shortcuts;\n }, {});\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n const totalFrozenColumns = internalFrozenColumnCount + (settings?.frozenColumnCount ?? 0);\n const frozenColumns = columns.slice(0, totalFrozenColumns).map(column => column.id);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: frozenColumns,\n right: [],\n },\n columnSizing: settings?.columnSizing ?? defaultColumnSizing,\n columnVisibility: settings?.columnVisibility ?? defaultColumnVisibility,\n };\n\n // Data column index - these are needed to make sure left and right arrow key shortcuts focuses only the data columns\n const dataColumnStartOffset = [!!onRowDrag, !!enableRowExpansion, !!enableRowSelection].reduce((t, e) => t + (e ? 1 : 0), 0);\n const dataColumnEndOffset = actionsForRow.length ? 1 : 0;\n\n // custom\n const activeRow = useActiveRow<TType>(defaultActiveRowIndex);\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState({});\n const [rowDensity, setRowDensity] = React.useState<RowDensity>(settings?.rowDensity ?? 'normal');\n const [dragging, setDragging] = React.useState<Record<string, boolean>>({});\n const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React.useState<boolean>(false);\n const [shouldDisableTableActions, setShouldDisableTableActions] = React.useState<boolean>(false);\n // Frozen column count is the count of external columns that are frozen\n const [frozenColumnsCount, setFrozenColumnsCount] = React.useState(totalFrozenColumns - internalFrozenColumnCount);\n // For some reason, using state instead of ref didn't work as expected, that's why ref is used\n const focussableColumnIndexes = React.useRef<number[]>([]);\n\n // some options get set even if they are undefined, so we have to do it conditionally\n const options: Partial<TableOptions<any>> = {\n enableExpanding: enableRowExpansion,\n enableColumnFilters: !disableColumnFiltering,\n enableColumnResizing: !disableColumnResizing,\n enableGlobalFilter: !disableSearch,\n enableHiding: !disableColumnHiding,\n enablePinning: !disableColumnFreezing,\n enableRowSelection: enableRowSelection,\n enableMultiRowSelection: enableMultipleRowSelection,\n enableSorting: !disableSorting,\n };\n\n // resizing\n if (options.enableColumnResizing) {\n options.columnResizeMode = 'onChange';\n }\n\n // sorting\n if (options.enableSorting) {\n initialState.sorting = settings?.sorting ?? defaultSorting;\n\n if (manualSorting) {\n options.manualSorting = true;\n } else {\n options.getSortedRowModel = getSortedRowModel();\n }\n }\n\n // filtering\n if (options.enableColumnFilters) {\n initialState.columnFilters = settings?.columnFilters ?? [];\n\n if (manualColumnFiltering) {\n options.manualFiltering = true;\n } else {\n options.filterFns = {\n tacoFilter: (row, columnId, filter) => columnFilterFn(row.getValue(columnId), filter),\n };\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n // search\n if (options.enableGlobalFilter) {\n if (manualSearch) {\n options.manualFiltering = true;\n } else {\n options.globalFilterFn = (row, columnId, query) => globalFilterFn(row.getValue(columnId), query);\n options.getFilteredRowModel = getFilteredRowModel();\n }\n }\n\n const table = useReactTable({\n data,\n columns: columns as any,\n getCoreRowModel: getCoreRowModel(),\n initialState,\n ...options,\n meta: {\n ...activeRow,\n editMode,\n // offsets\n columnOffsets,\n // density\n enableRowDensity: !disableRowDensity,\n rowDensity,\n setRowDensity,\n // dragging\n enableRowDragging: !!onRowDrag,\n dragging,\n setDragging,\n // computed\n enableColumnFreezing: !disableColumnFreezing,\n enableColumnReordering: !disableColumnReordering,\n enableColumnHiding: !disableColumnHiding,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n frozenColumnsCount,\n setFrozenColumnsCount,\n // resorting\n shouldPauseSortingAndFiltering,\n setShouldPauseSortingAndFiltering,\n // other\n onRowClick,\n // data column positions\n dataColumnStartOffset,\n dataColumnEndOffset,\n // disable table actions\n shouldDisableTableActions,\n setShouldDisableTableActions,\n // active row column indexes\n focussableColumnIndexes: focussableColumnIndexes.current,\n addFocussableColumnIndex: (index: number) => {\n if (!focussableColumnIndexes.current.includes(index)) {\n focussableColumnIndexes.current = [...focussableColumnIndexes.current, index].sort((a, b) => a - b);\n }\n },\n resetFocussableColumnIndexes: () => {\n focussableColumnIndexes.current = [];\n },\n // table ref\n tableRef: ref,\n // last sorted or filtered rows\n lastSortedOrFilteredRows,\n },\n });\n\n const tableRows = table.getRowModel().rows;\n\n if (!shouldPauseSortingAndFiltering) {\n lastSortedOrFilteredRows.current = tableRows;\n }\n\n const rows = shouldPauseSortingAndFiltering ? lastSortedOrFilteredRows.current : tableRows;\n\n // state listeners\n useActiveRowStateListener<TType>(table, rows, activeRow);\n useColumnOffsetStateListener(table, setColumnOffsets);\n useFilterStateListener<TType>(table, onRowSelect);\n useRowSelectionListener<TType>(table, onRowSelect);\n useSettingsStateListener(table, onChangeSettings);\n\n return { rows, table, footers, actionShortcuts };\n}\n"],"names":["useTable","children","props","ref","actionsForRow","data","defaultActiveRowIndex","disableColumnFiltering","disableColumnHiding","disableColumnFreezing","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","internalFrozenColumnCount","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnFreezing","actionShortcuts","reduce","shortcuts","action","shortcutKey","ariaLabel","lastSortedOrFilteredRows","React","useRef","totalFrozenColumns","frozenColumnCount","frozenColumns","slice","map","column","id","initialState","columnOrder","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useIsHoverStatePaused","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","frozenColumnsCount","setFrozenColumnsCount","focussableColumnIndexes","options","enableExpanding","enableColumnFilters","enableColumnResizing","enableGlobalFilter","enableHiding","enablePinning","enableMultiRowSelection","enableSorting","columnResizeMode","sorting","getSortedRowModel","columnFilters","manualFiltering","filterFns","tacoFilter","row","columnId","filter","columnFilterFn","getValue","getFilteredRowModel","globalFilterFn","query","table","useReactTable","getCoreRowModel","meta","enableRowDensity","enableRowDragging","enableColumnReordering","current","addFocussableColumnIndex","index","includes","sort","a","b","resetFocussableColumnIndexes","tableRef","tableRows","getRowModel","rows","useActiveRowStateListener","useColumnOffsetStateListener","useFilterStateListener","useRowSelectionListener","useSettingsStateListener"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n IsEmpty,\n IsNotEmpty,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n frozenColumnCount?: number;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type RowExpansionRenderer<TType = any> = (row: TType) => (() => JSX.Element) | null;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Children<TType = any> = (React.ReactElement<Table2ColumnProps<TType>> | boolean | null | undefined)[];\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: Table2Children;\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnFreezing?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAcYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;EACPA,0EAAO;EACPA,gFAAU;AACd,CAAC,EAbWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n IsEmpty,\n IsNotEmpty,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n shortcutKey?: string;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n frozenColumnCount?: number;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type RowExpansionRenderer<TType = any> = (row: TType) => (() => JSX.Element) | null;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Children<TType = any> = (React.ReactElement<Table2ColumnProps<TType>> | boolean | null | undefined)[];\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: Table2Children;\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnFreezing?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: RowExpansionRenderer<TType>;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAcYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;EACPA,0EAAO;EACPA,gFAAU;AACd,CAAC,EAbWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
|
@@ -295,7 +295,10 @@ const RowActionsCell = /*#__PURE__*/React__default.memo(({
|
|
295
295
|
}
|
296
296
|
},
|
297
297
|
tabIndex: tabIndex,
|
298
|
-
tooltip: getActionPropertyValue(action.text, row.original)
|
298
|
+
tooltip: action.shortcutKey ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, getActionPropertyValue(action.text, row.original), /*#__PURE__*/React__default.createElement(Shortcut, {
|
299
|
+
className: "ml-2",
|
300
|
+
keys: [action.shortcutKey]
|
301
|
+
})) : getActionPropertyValue(action.text, row.original)
|
299
302
|
})), visibleMoreActions.length ? /*#__PURE__*/React__default.createElement(IconButton, {
|
300
303
|
className: actionClassName,
|
301
304
|
"aria-label": texts.table2.columns.actions.tooltip,
|