@economic/taco 1.21.6 → 1.21.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/components/Table2/components/column/Indicator.d.ts +2 -1
  2. package/dist/components/Table2/components/row/Context.d.ts +17 -11
  3. package/dist/components/Table2/components/row/Row.d.ts +1 -6
  4. package/dist/components/Table2/hooks/listeners/useColumnOffsetStateListener.d.ts +1 -2
  5. package/dist/components/Table2/hooks/useShouldPauseHoverState.d.ts +2 -0
  6. package/dist/components/Table2/hooks/useTable.d.ts +3 -2
  7. package/dist/esm/packages/taco/src/components/Table2/Table2.js +7 -3
  8. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Table2/components/Search.js +1 -1
  10. package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +46 -20
  12. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +2 -5
  14. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +44 -15
  16. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +23 -44
  18. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +10 -30
  20. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table2/hooks/useShouldPauseHoverState.js +19 -0
  22. package/dist/esm/packages/taco/src/components/Table2/hooks/useShouldPauseHoverState.js.map +1 -0
  23. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +7 -5
  24. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +8 -0
  26. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  27. package/dist/taco.cjs.development.js +165 -126
  28. package/dist/taco.cjs.development.js.map +1 -1
  29. package/dist/taco.cjs.production.min.js +1 -1
  30. package/dist/taco.cjs.production.min.js.map +1 -1
  31. package/package.json +2 -2
  32. package/types.json +7 -2
@@ -12,5 +12,6 @@ export declare type IndicatorProps = {
12
12
  reason: IndicatorReason;
13
13
  columnName: string;
14
14
  mountNode: Element | null;
15
+ validationErrors: any;
15
16
  };
16
- export declare const Indicator: ({ reason, columnName, mountNode }: IndicatorProps) => React.ReactPortal;
17
+ export declare const Indicator: ({ reason, columnName, mountNode, validationErrors }: IndicatorProps) => React.ReactPortal;
@@ -1,16 +1,22 @@
1
1
  import React from 'react';
2
2
  import { SaveHandlerErrorResponse } from '../../types';
3
3
  import { IndicatorReason } from '../column/Indicator';
4
- declare type RowContext = {
5
- validationErrors: SaveHandlerErrorResponse;
6
- setValidationErrors: React.Dispatch<React.SetStateAction<SaveHandlerErrorResponse>>;
7
- rowMoveReason: Record<string, IndicatorReason | null>;
8
- setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null>>>;
4
+ declare type RowContextValue = {
5
+ isActive: boolean;
6
+ editMode: {
7
+ validationErrors: SaveHandlerErrorResponse;
8
+ setValidationErrors: React.Dispatch<React.SetStateAction<SaveHandlerErrorResponse>>;
9
+ rowMoveReason: Record<string, IndicatorReason | null>;
10
+ setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null>>>;
11
+ };
12
+ isHovered: boolean;
13
+ setIsHovered: React.Dispatch<React.SetStateAction<boolean>>;
9
14
  };
10
- declare const RowContext: React.Context<RowContext>;
11
- export declare const useRowContext: () => RowContext;
12
- declare type RowProviderProps = RowContext & {
13
- children: React.ReactNode;
14
- };
15
- export declare const RowProvider: ({ children, ...providerProps }: RowProviderProps) => JSX.Element;
15
+ export declare const RowContext: React.Context<RowContextValue>;
16
+ export declare const RowContextProvider: ({ isActiveRow, children, meta }: {
17
+ isActiveRow: any;
18
+ children: any;
19
+ meta: any;
20
+ }) => JSX.Element;
21
+ export declare const useRowContext: () => RowContextValue;
16
22
  export {};
@@ -1,7 +1,2 @@
1
1
  /// <reference types="react" />
2
- export declare const Row: ({ row, rowIndex, table, ...props }: {
3
- [x: string]: any;
4
- row: any;
5
- rowIndex: any;
6
- table: any;
7
- }) => JSX.Element;
2
+ export declare const Row: (props: any) => JSX.Element;
@@ -1,4 +1,3 @@
1
- import { Table as RTTable, ColumnSizingState, ColumnPinningState, VisibilityState, OnChangeFn } from '@tanstack/react-table';
1
+ import { Table as RTTable, OnChangeFn } from '@tanstack/react-table';
2
2
  import { ColumnOffsetState } from '../../types';
3
- export declare const getOffsetsFromSize: (pinning: ColumnPinningState, visibility: VisibilityState, sizing: ColumnSizingState) => {};
4
3
  export declare const useColumnOffsetStateListener: (table: RTTable<any>, setColumnOffsets: OnChangeFn<ColumnOffsetState>) => void;
@@ -0,0 +1,2 @@
1
+ import { OnChangeFn } from '@tanstack/react-table';
2
+ export declare const useShouldPauseHoverState: () => [boolean, OnChangeFn<boolean>];
@@ -14,14 +14,15 @@ declare module '@tanstack/table-core' {
14
14
  enableRowDensity: boolean;
15
15
  rowDensity: RowDensity;
16
16
  setRowDensity: OnChangeFn<RowDensity>;
17
+ enableRowDragging: boolean;
17
18
  dragging: Record<string, boolean>;
18
19
  setDragging: OnChangeFn<Record<string, boolean>>;
19
20
  enableColumnReordering: boolean;
20
21
  shouldPauseSortingAndFiltering: boolean;
21
22
  setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;
23
+ shouldPauseHoverState: boolean;
24
+ setShouldPauseHoverState: OnChangeFn<boolean>;
22
25
  onRowClick?: RowClickHandler<TData>;
23
- hoveredRowIndex: number | undefined;
24
- setHoveredRowIndex: OnChangeFn<number | undefined>;
25
26
  editMode: useEditMode;
26
27
  dataColumnStartOffset: number;
27
28
  dataColumnEndOffset: number;
@@ -95,7 +95,10 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
95
95
  meta.setActiveRowIndex(0);
96
96
  virtualiser.scrollToOffset(0);
97
97
  } else {
98
- meta.moveToPreviousRow(rows, nextIndex => virtualiser.scrollToIndex(nextIndex - 1));
98
+ meta.moveToPreviousRow(rows, nextIndex => {
99
+ meta.setShouldPauseHoverState(true);
100
+ virtualiser.scrollToIndex(nextIndex - 1);
101
+ });
99
102
  }
100
103
  return;
101
104
  } else if (event.key === 'ArrowDown') {
@@ -105,6 +108,7 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
105
108
  virtualiser.scrollToOffset(virtualiser.totalSize + 1);
106
109
  } else {
107
110
  meta.moveToNextRow(rows, nextIndex => {
111
+ meta.setShouldPauseHoverState(true);
108
112
  // the virtualiser doesn't always scroll right to the bottom for the last row
109
113
  if (nextIndex === rows.length - 1) {
110
114
  var _tableRef$current;
@@ -246,9 +250,9 @@ const Table2 = /*#__PURE__*/React__default.forwardRef(function Table2(props, ref
246
250
  }
247
251
  };
248
252
  let handleMouseLeave;
249
- if (meta.hoveredRowIndex !== undefined) {
253
+ if (meta.shouldPauseHoverState) {
250
254
  // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy
251
- handleMouseLeave = () => meta.setHoveredRowIndex(undefined);
255
+ handleMouseLeave = () => meta.setShouldPauseHoverState(false);
252
256
  }
253
257
  const className = cn('bg-white border border-grey-300 focus:yt-focus focus:border-blue-500 grid auto-rows-max overflow-auto relative rounded group', props.className);
254
258
  const enableSettingsButton = table.options.enablePinning || table.options.enableHiding || meta.enableColumnReordering;
@@ -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, Table2ToolbarProps } 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 { useSeparatedChildren } from './hooks/useSeparatedChildren';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { ShortcutsGuideButton } from './components/ShortcutsGuideButton';\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 };\n columnSettings: {\n columnsOther: string;\n columnsOtherDrop: string;\n columnsPinned: string;\n columnsPinnedDrop: string;\n search: string;\n tooltip: 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\nfunction Toolbar(props: Table2ToolbarProps) {\n const className = cn('flex-grow', props.className);\n return <div {...props} className={className} />;\n}\nToolbar.displayName = 'Table2Toolbar';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n Toolbar: React.FunctionComponent<Table2ToolbarProps>;\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 _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n\n // react-table\n const [columns, toolbar] = useSeparatedChildren(props.children);\n const { rows, table, footers } = useTable(columns, 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 => virtualiser.scrollToIndex(nextIndex - 1));\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 // 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 event.preventDefault();\n\n if (event.key === 'a') {\n if (table.options.enableRowSelection) {\n table.toggleAllRowsSelected();\n }\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 if (\n event.currentTarget.scrollHeight - event.currentTarget.scrollTop - event.currentTarget.clientHeight < 600 &&\n !loadingRef.current\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 } finally {\n loadingRef.current = false;\n }\n }\n }\n };\n\n let handleMouseLeave;\n\n if (meta.hoveredRowIndex !== undefined) {\n // sometimes the row's onMouseLeave doesn't trigger, this adds some extra redundancy\n handleMouseLeave = () => meta.setHoveredRowIndex(undefined);\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.enablePinning || 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 = !!toolbar || hasInternalToolbar;\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 {toolbar}\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 {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;\nTable2.Toolbar = Toolbar;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionProps, Table2Settings, Table2ToolbarProps } from './types';\n"],"names":["Column","_","displayName","Toolbar","props","className","cn","React","Table2","forwardRef","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","columns","toolbar","useSeparatedChildren","children","rows","table","footers","useTable","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","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","scrollTop","clientHeight","isAllRowsSelected","getIsAllRowsSelected","handleMouseLeave","hoveredRowIndex","setHoveredRowIndex","enableSettingsButton","enablePinning","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","ShortcutsGuideButton","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, Table2ToolbarProps } 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 { useSeparatedChildren } from './hooks/useSeparatedChildren';\nimport { BatchActionsMenu } from './components/BatchActionsMenu';\nimport { Row } from './components/row/Row';\nimport { FiltersButton } from './components/filters/FiltersButton';\nimport { Search } from './components/Search';\nimport { ShortcutsGuideButton } from './components/ShortcutsGuideButton';\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 };\n columnSettings: {\n columnsOther: string;\n columnsOtherDrop: string;\n columnsPinned: string;\n columnsPinnedDrop: string;\n search: string;\n tooltip: 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\nfunction Toolbar(props: Table2ToolbarProps) {\n const className = cn('flex-grow', props.className);\n return <div {...props} className={className} />;\n}\nToolbar.displayName = 'Table2Toolbar';\n\nexport type ForwardedTable2WithStatics = React.ForwardRefExoticComponent<Table2Props<any>> & {\n Column: <TType>(props: Table2ColumnProps<TType>) => JSX.Element | null;\n Toolbar: React.FunctionComponent<Table2ToolbarProps>;\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 _experimentalActionsForTable,\n _experimentalActionsForTableSummary,\n } = props;\n const tableRef = useMergedRef<HTMLDivElement>(ref);\n const timeoutIdRef = React.useRef<NodeJS.Timeout>();\n\n // react-table\n const [columns, toolbar] = useSeparatedChildren(props.children);\n const { rows, table, footers } = useTable(columns, 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 event.preventDefault();\n\n if (event.key === 'a') {\n if (table.options.enableRowSelection) {\n table.toggleAllRowsSelected();\n }\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 if (\n event.currentTarget.scrollHeight - event.currentTarget.scrollTop - event.currentTarget.clientHeight < 600 &&\n !loadingRef.current\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 } 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.enablePinning || 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 = !!toolbar || hasInternalToolbar;\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 {toolbar}\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 {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;\nTable2.Toolbar = Toolbar;\n\nexport { Table2 };\nexport type { Table2Props };\nexport type { Table2ColumnProps, Table2ActionProps, Table2RowActionProps, Table2Settings, Table2ToolbarProps } from './types';\n"],"names":["Column","_","displayName","Toolbar","props","className","cn","React","Table2","forwardRef","ref","emptyState","EmptyState","expandedRowRenderer","length","data","loadMore","onRowClick","_experimentalActionsForTable","_experimentalActionsForTableSummary","tableRef","useMergedRef","timeoutIdRef","useRef","columns","toolbar","useSeparatedChildren","children","rows","table","footers","useTable","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","scrollTop","clientHeight","isAllRowsSelected","getIsAllRowsSelected","handleMouseLeave","shouldPauseHoverState","enableSettingsButton","enablePinning","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","ShortcutsGuideButton","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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"}
@@ -35,7 +35,7 @@ const Search = props => {
35
35
  (_props$onSearch3 = props.onSearch) === null || _props$onSearch3 === void 0 ? void 0 : _props$onSearch3.call(props, value);
36
36
  };
37
37
  useGlobalKeyboardShortcut(event => {
38
- if (event.key === 'f' && (event.ctrlKey || event.metaKey)) {
38
+ if (event.key === 'f' && (event.ctrlKey || event.metaKey) && !event.shiftKey) {
39
39
  if (document.activeElement !== ref.current) {
40
40
  var _ref$current;
41
41
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Table2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { SearchInput, SearchInputProps } from '../../SearchInput/SearchInput';\nimport { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport const Search = (props: SearchInputProps) => {\n const { value, ...attributes } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n props.onSearch?.('');\n }\n };\n\n // gets called when the \"clear\" button is clicked\n const handleInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.onInput) {\n props.onInput(event);\n }\n\n if (!event.isDefaultPrevented() && !event.currentTarget.value) {\n props.onSearch?.('');\n }\n };\n\n const handleBlur = event => {\n const value = event.target.value;\n props.onSearch?.(value);\n };\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'f' && (event.ctrlKey || event.metaKey)) {\n if (document.activeElement !== ref.current) {\n event.preventDefault();\n ref.current?.focus();\n }\n }\n });\n\n const className = cn('w-48', {\n '!wcag-blue-100': !!value,\n });\n\n return (\n <SearchInput\n {...attributes}\n className={className}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n placeholder={texts.table2.search.placeholder}\n ref={ref}\n />\n );\n};\n"],"names":["Search","props","value","attributes","texts","useLocalization","ref","React","useRef","handleKeyDown","event","key","onSearch","handleInput","onInput","isDefaultPrevented","currentTarget","handleBlur","target","useGlobalKeyboardShortcut","ctrlKey","metaKey","document","activeElement","current","preventDefault","focus","className","cn","SearchInput","onBlur","onKeyDown","placeholder","table2","search"],"mappings":";;;;;;MAMaA,MAAM,GAAIC,KAAuB;EAC1C,MAAM;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGF,KAAK;EACtC,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAEhD,MAAMC,aAAa,GAAIC,KAA4C;IAC/D,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAE;MAAA;MACxB,mBAAAV,KAAK,CAACW,QAAQ,oDAAd,qBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;;EAGD,MAAMY,WAAW,GAAIH,KAAwC;IACzD,IAAIT,KAAK,CAACa,OAAO,EAAE;MACfb,KAAK,CAACa,OAAO,CAACJ,KAAK,CAAC;;IAGxB,IAAI,CAACA,KAAK,CAACK,kBAAkB,EAAE,IAAI,CAACL,KAAK,CAACM,aAAa,CAACd,KAAK,EAAE;MAAA;MAC3D,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;EAED,MAAMgB,UAAU,GAAGP,KAAK;;IACpB,MAAMR,KAAK,GAAGQ,KAAK,CAACQ,MAAM,CAAChB,KAAK;IAChC,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAYC,KAAK,CAAC;GAC1B;EAEDiB,yBAAyB,CAAET,KAAoB;IAC3C,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,KAAKD,KAAK,CAACU,OAAO,IAAIV,KAAK,CAACW,OAAO,CAAC,EAAE;MACvD,IAAIC,QAAQ,CAACC,aAAa,KAAKjB,GAAG,CAACkB,OAAO,EAAE;QAAA;QACxCd,KAAK,CAACe,cAAc,EAAE;QACtB,gBAAAnB,GAAG,CAACkB,OAAO,iDAAX,aAAaE,KAAK,EAAE;;;GAG/B,CAAC;EAEF,MAAMC,SAAS,GAAGC,EAAE,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC1B;GACvB,CAAC;EAEF,oBACIK,6BAACsB,WAAW,oBACJ1B,UAAU;IACdwB,SAAS,EAAEA,SAAS;IACpBG,MAAM,EAAEb,UAAU;IAClBH,OAAO,EAAED,WAAW;IACpBkB,SAAS,EAAEtB,aAAa;IACxBuB,WAAW,EAAE5B,KAAK,CAAC6B,MAAM,CAACC,MAAM,CAACF,WAAW;IAC5C1B,GAAG,EAAEA;KACP;AAEV;;;;"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../../../../src/components/Table2/components/Search.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { SearchInput, SearchInputProps } from '../../SearchInput/SearchInput';\nimport { useGlobalKeyboardShortcut } from '../../../hooks/useGlobalKeyboardShortcut';\nimport { useLocalization } from '../../Provider/Localization';\n\nexport const Search = (props: SearchInputProps) => {\n const { value, ...attributes } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n props.onSearch?.('');\n }\n };\n\n // gets called when the \"clear\" button is clicked\n const handleInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.onInput) {\n props.onInput(event);\n }\n\n if (!event.isDefaultPrevented() && !event.currentTarget.value) {\n props.onSearch?.('');\n }\n };\n\n const handleBlur = event => {\n const value = event.target.value;\n props.onSearch?.(value);\n };\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'f' && (event.ctrlKey || event.metaKey) && !event.shiftKey) {\n if (document.activeElement !== ref.current) {\n event.preventDefault();\n ref.current?.focus();\n }\n }\n });\n\n const className = cn('w-48', {\n '!wcag-blue-100': !!value,\n });\n\n return (\n <SearchInput\n {...attributes}\n className={className}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n placeholder={texts.table2.search.placeholder}\n ref={ref}\n />\n );\n};\n"],"names":["Search","props","value","attributes","texts","useLocalization","ref","React","useRef","handleKeyDown","event","key","onSearch","handleInput","onInput","isDefaultPrevented","currentTarget","handleBlur","target","useGlobalKeyboardShortcut","ctrlKey","metaKey","shiftKey","document","activeElement","current","preventDefault","focus","className","cn","SearchInput","onBlur","onKeyDown","placeholder","table2","search"],"mappings":";;;;;;MAMaA,MAAM,GAAIC,KAAuB;EAC1C,MAAM;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGF,KAAK;EACtC,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAmB,IAAI,CAAC;EAEhD,MAAMC,aAAa,GAAIC,KAA4C;IAC/D,IAAIA,KAAK,CAACC,GAAG,KAAK,QAAQ,EAAE;MAAA;MACxB,mBAAAV,KAAK,CAACW,QAAQ,oDAAd,qBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;;EAGD,MAAMY,WAAW,GAAIH,KAAwC;IACzD,IAAIT,KAAK,CAACa,OAAO,EAAE;MACfb,KAAK,CAACa,OAAO,CAACJ,KAAK,CAAC;;IAGxB,IAAI,CAACA,KAAK,CAACK,kBAAkB,EAAE,IAAI,CAACL,KAAK,CAACM,aAAa,CAACd,KAAK,EAAE;MAAA;MAC3D,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAY,EAAE,CAAC;;GAE3B;EAED,MAAMgB,UAAU,GAAGP,KAAK;;IACpB,MAAMR,KAAK,GAAGQ,KAAK,CAACQ,MAAM,CAAChB,KAAK;IAChC,oBAAAD,KAAK,CAACW,QAAQ,qDAAd,sBAAAX,KAAK,EAAYC,KAAK,CAAC;GAC1B;EAEDiB,yBAAyB,CAAET,KAAoB;IAC3C,IAAIA,KAAK,CAACC,GAAG,KAAK,GAAG,KAAKD,KAAK,CAACU,OAAO,IAAIV,KAAK,CAACW,OAAO,CAAC,IAAI,CAACX,KAAK,CAACY,QAAQ,EAAE;MAC1E,IAAIC,QAAQ,CAACC,aAAa,KAAKlB,GAAG,CAACmB,OAAO,EAAE;QAAA;QACxCf,KAAK,CAACgB,cAAc,EAAE;QACtB,gBAAApB,GAAG,CAACmB,OAAO,iDAAX,aAAaE,KAAK,EAAE;;;GAG/B,CAAC;EAEF,MAAMC,SAAS,GAAGC,EAAE,CAAC,MAAM,EAAE;IACzB,gBAAgB,EAAE,CAAC,CAAC3B;GACvB,CAAC;EAEF,oBACIK,6BAACuB,WAAW,oBACJ3B,UAAU;IACdyB,SAAS,EAAEA,SAAS;IACpBG,MAAM,EAAEd,UAAU;IAClBH,OAAO,EAAED,WAAW;IACpBmB,SAAS,EAAEvB,aAAa;IACxBwB,WAAW,EAAE7B,KAAK,CAAC8B,MAAM,CAACC,MAAM,CAACF,WAAW;IAC5C3B,GAAG,EAAEA;KACP;AAEV;;;;"}
@@ -5,13 +5,13 @@ import { Input } from '../../../Input/Input.js';
5
5
  import { Datepicker } from '../../../Datepicker/Datepicker.js';
6
6
  import { _catch } from '../../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
7
7
  import { flexRender } from '@tanstack/react-table';
8
+ import { useRowContext } from '../row/Context.js';
8
9
  import { isInternalColumn } from '../../utilities/columns.js';
9
10
  import { getCellSizingClasses, isKeyboardFocusableElement, getCellAlignmentClasses } from '../../utilities/cell.js';
10
11
  import { ColumnBase } from './Base.js';
11
12
  import { Switch } from '../../../Switch/Switch.js';
12
13
  import { globalFilterFn, columnFilterFn } from '../../utilities/filterFn.js';
13
14
  import { MOVE_DIR } from '../../hooks/useEditMode.js';
14
- import { useRowContext } from '../row/Context.js';
15
15
  import { IndicatorReason, Indicator } from './Indicator.js';
16
16
  import { ValidationError } from './ValidationError.js';
17
17
  import { hasChanged, willRowMoveAfterSorting } from './utils.js';
@@ -36,8 +36,11 @@ const Cell = function Cell(props) {
36
36
  focussableColumnIndexes: allFocussableColumnIndexes
37
37
  } = meta;
38
38
  const {
39
- validationErrors,
40
- rowMoveReason
39
+ editMode: {
40
+ validationErrors,
41
+ rowMoveReason
42
+ },
43
+ isHovered: isHoveredRow
41
44
  } = useRowContext();
42
45
  const hasValidationErrorsInRow = !!validationErrors;
43
46
  const internalRef = React__default.useRef(null);
@@ -45,7 +48,6 @@ const Cell = function Cell(props) {
45
48
  const disableTruncation = (_cell$column$columnDe = cell.column.columnDef.meta) === null || _cell$column$columnDe === void 0 ? void 0 : _cell$column$columnDe.disableTruncation;
46
49
  const cellClassName = (_cell$column$columnDe2 = cell.column.columnDef.meta) === null || _cell$column$columnDe2 === void 0 ? void 0 : _cell$column$columnDe2.className;
47
50
  const isActiveRow = meta.activeRowIndex === rowIndex;
48
- const isHoveredRow = meta.hoveredRowIndex === rowIndex;
49
51
  const isPinned = !!cell.column.getIsPinned();
50
52
  const isDragging = meta.dragging[cell.row.id];
51
53
  const isSelected = cell.row.getIsSelected();
@@ -57,7 +59,7 @@ const Cell = function Cell(props) {
57
59
  const isEditingThisRow = meta.editMode.isEditing && isActiveRow;
58
60
  const canEditThisCell = isEditingThisRow && isDataColumn;
59
61
  const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;
60
- const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow;
62
+ const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;
61
63
  const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;
62
64
  React__default.useEffect(() => {
63
65
  // Adds padding to the table so that indicator doesn't get cropped
@@ -74,8 +76,8 @@ const Cell = function Cell(props) {
74
76
  'border-b': !isLastRow,
75
77
  'sticky z-[1]': isPinned,
76
78
  // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating
77
- 'bg-white': !isActiveRow && !isSelected && !isHoveredRow,
78
- 'bg-grey-100': !isActiveRow && !isSelected && isHoveredRow,
79
+ 'bg-white': !isActiveRow && !isSelected,
80
+ 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,
79
81
  'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,
80
82
  'bg-blue-100': isSelected,
81
83
  '!wcag-blue-500': isDragging,
@@ -256,7 +258,7 @@ const Cell = function Cell(props) {
256
258
  } else {
257
259
  moveRow(MOVE_DIR.PREV);
258
260
  }
259
- meta.setHoveredRowIndex(undefined);
261
+ meta.setShouldPauseHoverState(true);
260
262
  return;
261
263
  }
262
264
  if (!detailModeEditing && event.key === 'ArrowDown') {
@@ -272,7 +274,7 @@ const Cell = function Cell(props) {
272
274
  } else {
273
275
  moveRow(MOVE_DIR.NEXT);
274
276
  }
275
- meta.setHoveredRowIndex(undefined);
277
+ meta.setShouldPauseHoverState(true);
276
278
  return;
277
279
  }
278
280
  };
@@ -286,6 +288,7 @@ const Cell = function Cell(props) {
286
288
  onSave: meta.editMode.onSave,
287
289
  rowIndex: rowIndex,
288
290
  table: table,
291
+ tableRef: tableRef,
289
292
  ref: controlRef,
290
293
  rowValues: rows[rowIndex].original,
291
294
  rowsLength: rows.length
@@ -306,7 +309,7 @@ const Cell = function Cell(props) {
306
309
  }, flexRender(cell.column.columnDef.cell, cell.getContext())));
307
310
  };
308
311
  const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__default.forwardRef((props, ref) => {
309
- var _cell$column$columnDe4, _cell$column$columnDe5, _cellRef$current, _cellRef$current$pare, _rowMoveReason$cellId;
312
+ var _cell$column$columnDe4, _cell$column$columnDe5, _cellRef$current2, _cellRef$current2$par, _rowMoveReason$cellId;
310
313
  const {
311
314
  cell,
312
315
  cellRef,
@@ -316,13 +319,17 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
316
319
  onSave: handleSave,
317
320
  rowIndex,
318
321
  rowValues,
319
- table
322
+ table,
323
+ tableRef
320
324
  } = props;
321
325
  const {
322
- validationErrors,
323
- setValidationErrors,
324
- rowMoveReason,
325
- setRowMoveReason
326
+ editMode: {
327
+ validationErrors,
328
+ setValidationErrors,
329
+ rowMoveReason,
330
+ setRowMoveReason
331
+ },
332
+ isHovered
326
333
  } = useRowContext();
327
334
  const controlRef = useMergedRef(ref);
328
335
  const cellId = cell.column.id;
@@ -334,7 +341,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
334
341
  globalFilter
335
342
  } = table.getState();
336
343
  const [state, setState] = React__default.useState(value);
337
- const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && meta.hoveredRowIndex === rowIndex;
344
+ const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;
338
345
  const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;
339
346
  // On each save, the initialValue will be set to the new value of the cell
340
347
  const initialValue = React__default.useRef(value);
@@ -395,14 +402,32 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
395
402
  (_controlRef$current = controlRef.current) === null || _controlRef$current === void 0 ? void 0 : (_controlRef$current$f = _controlRef$current.focus) === null || _controlRef$current$f === void 0 ? void 0 : _controlRef$current$f.call(_controlRef$current);
396
403
  }
397
404
  }, [isEditingThisCell, controlRef.current]);
398
- // make sure the cell becomes active if the field is focused
405
+ const pinnedColumnsWidth = React__default.useMemo(() => {
406
+ const pinnedColumns = table.getState().columnPinning.left;
407
+ if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {
408
+ const lastPinnedColumn = pinnedColumns[pinnedColumns.length - 1];
409
+ const lastPinnedColumnOffset = meta.columnOffsets[lastPinnedColumn];
410
+ if (lastPinnedColumnOffset !== undefined) {
411
+ var _table$getState$colum;
412
+ return lastPinnedColumnOffset + ((_table$getState$colum = table.getState().columnSizing[lastPinnedColumn]) !== null && _table$getState$colum !== void 0 ? _table$getState$colum : 0);
413
+ }
414
+ }
415
+ return 0;
416
+ }, [meta.columnOffsets, table.getState().columnSizing]);
399
417
  const handleFocus = event => {
400
- var _event$target;
418
+ var _event$target, _cellRef$current;
401
419
  meta.editMode.setColumn(columnIndex);
402
420
  if ((_event$target = event.target) !== null && _event$target !== void 0 && _event$target.select) {
403
421
  var _event$target2;
404
422
  (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.select();
405
423
  }
424
+ // ensure the field is always visible (e.g. not hidden behind the pinned columns)
425
+ const rect = (_cellRef$current = cellRef.current) === null || _cellRef$current === void 0 ? void 0 : _cellRef$current.getBoundingClientRect();
426
+ const leftOffset = meta.columnOffsets[cellId];
427
+ if (rect && leftOffset && rect.left < pinnedColumnsWidth) {
428
+ var _tableRef$current4;
429
+ (_tableRef$current4 = tableRef.current) === null || _tableRef$current4 === void 0 ? void 0 : _tableRef$current4.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);
430
+ }
406
431
  };
407
432
  React__default.useEffect(() => {
408
433
  if (hasChanged(initialValue.current, state)) {
@@ -458,7 +483,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
458
483
  'data-inline-editing-component': 'true'
459
484
  };
460
485
  const className = cn(getCellAlignmentClasses((_cell$column$columnDe5 = cell.column.columnDef.meta) === null || _cell$column$columnDe5 === void 0 ? void 0 : _cell$column$columnDe5.align));
461
- const indicatorMountNode = (_cellRef$current = cellRef.current) === null || _cellRef$current === void 0 ? void 0 : (_cellRef$current$pare = _cellRef$current.parentElement) === null || _cellRef$current$pare === void 0 ? void 0 : _cellRef$current$pare.querySelector(':first-child');
486
+ const indicatorMountNode = (_cellRef$current2 = cellRef.current) === null || _cellRef$current2 === void 0 ? void 0 : (_cellRef$current2$par = _cellRef$current2.parentElement) === null || _cellRef$current2$par === void 0 ? void 0 : _cellRef$current2$par.querySelector(':first-child');
462
487
  let controlComponent;
463
488
  if (cellControl) {
464
489
  if (typeof cellControl === 'function') {
@@ -515,7 +540,8 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
515
540
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, indicatorReason !== null && /*#__PURE__*/React__default.createElement(Indicator, {
516
541
  reason: indicatorReason,
517
542
  columnName: String(cell.column.columnDef.header),
518
- mountNode: indicatorMountNode
543
+ mountNode: indicatorMountNode,
544
+ validationErrors: validationErrors
519
545
  }), /*#__PURE__*/React__default.createElement("span", {
520
546
  className: "relative flex-grow"
521
547
  }, controlComponent, hasValidationError && /*#__PURE__*/React__default.createElement(ValidationError, null, String(cellValidationError))));