@economic/taco 1.21.7 → 1.21.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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;
@@ -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;;;;"}
@@ -288,6 +288,7 @@ const Cell = function Cell(props) {
288
288
  onSave: meta.editMode.onSave,
289
289
  rowIndex: rowIndex,
290
290
  table: table,
291
+ tableRef: tableRef,
291
292
  ref: controlRef,
292
293
  rowValues: rows[rowIndex].original,
293
294
  rowsLength: rows.length
@@ -308,7 +309,7 @@ const Cell = function Cell(props) {
308
309
  }, flexRender(cell.column.columnDef.cell, cell.getContext())));
309
310
  };
310
311
  const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__default.forwardRef((props, ref) => {
311
- 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;
312
313
  const {
313
314
  cell,
314
315
  cellRef,
@@ -318,7 +319,8 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
318
319
  onSave: handleSave,
319
320
  rowIndex,
320
321
  rowValues,
321
- table
322
+ table,
323
+ tableRef
322
324
  } = props;
323
325
  const {
324
326
  editMode: {
@@ -400,14 +402,32 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
400
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);
401
403
  }
402
404
  }, [isEditingThisCell, controlRef.current]);
403
- // 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]);
404
417
  const handleFocus = event => {
405
- var _event$target;
418
+ var _event$target, _cellRef$current;
406
419
  meta.editMode.setColumn(columnIndex);
407
420
  if ((_event$target = event.target) !== null && _event$target !== void 0 && _event$target.select) {
408
421
  var _event$target2;
409
422
  (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.select();
410
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
+ }
411
431
  };
412
432
  React__default.useEffect(() => {
413
433
  if (hasChanged(initialValue.current, state)) {
@@ -463,7 +483,7 @@ const EditingCell = /*#__PURE__*/React__default.memo( /*#__PURE__*/React__defaul
463
483
  'data-inline-editing-component': 'true'
464
484
  };
465
485
  const className = cn(getCellAlignmentClasses((_cell$column$columnDe5 = cell.column.columnDef.meta) === null || _cell$column$columnDe5 === void 0 ? void 0 : _cell$column$columnDe5.align));
466
- 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');
467
487
  let controlComponent;
468
488
  if (cellControl) {
469
489
  if (typeof cellControl === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Table2/components/column/Cell.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport cn from 'classnames';\nimport { flexRender, Cell as RTCell, Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Input } from '../../../Input/Input';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellAlignmentClasses, getCellSizingClasses, isKeyboardFocusableElement } from '../../utilities/cell';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { Datepicker } from '../../../Datepicker/Datepicker';\nimport { Switch } from '../../../Switch/Switch';\nimport { SaveHandler, SaveHandlerErrorResponse, Table2Filter } from '../../types';\nimport { columnFilterFn, globalFilterFn } from '../../utilities/filterFn';\nimport { MOVE_DIR } from '../../hooks/useEditMode';\nimport { useRowContext } from '../row/Context';\nimport { Indicator, IndicatorReason } from './Indicator';\nimport { ValidationError } from './ValidationError';\nimport { hasChanged, willRowMoveAfterSorting } from './utils';\nimport { useMergedRef } from '../../../../hooks/useMergedRef';\n\ntype CellProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n cell: RTCell<TType, unknown>;\n index: number;\n isLastRow: boolean;\n rowIndex: number;\n rows: RTRow<TType>[];\n scrollToIndex: (index: number, options?: any) => void;\n scrollToOffset: (index: number, options?: any) => void;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const Cell = function Cell<TType = unknown>(props: CellProps<TType>) {\n const { cell, index, isLastRow, rowIndex, rows, scrollToIndex, scrollToOffset, table, tableRef, ...columnProps } = props;\n const meta = table.options.meta as TableMeta<any>;\n\n const { addFocussableColumnIndex, focussableColumnIndexes: allFocussableColumnIndexes } = meta;\n\n const {\n editMode: { validationErrors, rowMoveReason },\n isHovered: isHoveredRow,\n } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n const internalRef = React.useRef<HTMLDivElement>(null);\n const controlRef = React.useRef<HTMLElement>(null);\n const disableTruncation = cell.column.columnDef.meta?.disableTruncation;\n const cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isPinned = !!cell.column.getIsPinned();\n const isDragging = meta.dragging[cell.row.id];\n const isSelected = cell.row.getIsSelected();\n const isDataColumn = !isInternalColumn(cell.column.id);\n const hasCellControl = !!cell.column.columnDef.meta?.control;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const lastColumnIndex = allVisibleColumns.length > 0 ? allVisibleColumns.length - 1 : 0;\n\n // editing\n const isEditingThisRow = meta.editMode.isEditing && isActiveRow;\n const canEditThisCell = isEditingThisRow && isDataColumn;\n const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;\n const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;\n\n const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;\n\n React.useEffect(() => {\n // Adds padding to the table so that indicator doesn't get cropped\n if (isIndicatorVisible && isLastRow) {\n tableRef.current?.classList.add('pb-4');\n }\n\n return () => tableRef.current?.classList.remove('pb-4');\n }, [isIndicatorVisible, isLastRow]);\n\n const className = cn(\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isPinned,\n // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating\n 'bg-white': !isActiveRow && !isSelected,\n 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,\n 'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,\n 'bg-blue-100': isSelected,\n '!wcag-blue-500': isDragging,\n '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,\n '!bg-red-100': hasValidationErrorsInRow,\n 'z-[1]': isPinned && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components.\n 'z-[2]': isPinned && isActiveRow && index === 0,\n 'border-blue !border-y-2 border-x-0': isIndicatorVisible,\n 'border-l-2 rounded-l': isIndicatorVisible && index === 0,\n 'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex,\n },\n getCellSizingClasses(\n table.options.meta?.rowDensity,\n (isEditingThisRow || isHoveringThisRowWhileEditing) && hasCellControl\n ),\n typeof cellClassName === 'function' ? cellClassName(cell.row) : cellClassName\n );\n\n const handleMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n // only detect left clicks\n if (event.button === 0) {\n const activeElement = document.activeElement;\n const isActiveElementControl = activeElement?.closest('[role=\"cell\"]');\n const hasActiveRowChanged = meta.activeRowIndex !== rowIndex;\n\n // When user clicks on a cell that is not in the active row, for some reason blur event is not called on the cell\n // previous cell control element so we need to manually call it in order to save the changes in that cell\n if (isActiveElementControl && hasActiveRowChanged) {\n (activeElement as HTMLElement).blur();\n }\n\n meta.setActiveRowIndex(rowIndex);\n\n if (meta.editMode.isEditing) {\n if (allFocussableColumnIndexes.includes(index)) {\n meta.editMode.setColumn(index);\n } else {\n meta.editMode.setColumn(allFocussableColumnIndexes[0]);\n }\n }\n }\n };\n\n const attributes = {\n ...columnProps,\n // base props,\n column: cell.column,\n table,\n // dom attributes\n className,\n 'data-column-index': index,\n 'data-row-index': rowIndex,\n onMouseDown: handleMouseDown,\n ref: internalRef,\n role: 'cell',\n };\n\n const [detailModeEditing, setDetailModeEditing] = React.useState(false);\n\n const detailModeClassName = cn({\n '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing,\n });\n\n // reset the editing state when we move column\n React.useEffect(() => {\n if (meta.editMode.columnIndex !== index) {\n setDetailModeEditing(false);\n }\n }, [meta.editMode.columnIndex]);\n\n React.useEffect(() => {\n if (isEditingThisRow && controlRef.current && isKeyboardFocusableElement(controlRef.current)) {\n addFocussableColumnIndex(index);\n }\n }, [isEditingThisRow, allFocussableColumnIndexes, addFocussableColumnIndex, index]);\n\n const moveRow = (moveDirection: MOVE_DIR) => {\n if (moveDirection === MOVE_DIR.PREV) {\n meta.moveToPreviousRow(rows, nextIndex => scrollToIndex(nextIndex - 1));\n } else if (moveDirection === MOVE_DIR.NEXT) {\n meta.moveToNextRow(rows, nextIndex => scrollToIndex(nextIndex + 2));\n }\n };\n\n if (meta.editMode.onSave && hasCellControl && (canEditThisCell || (isHoveringThisRowWhileEditing && isDataColumn))) {\n attributes.onMouseDown = event => {\n handleMouseDown(event);\n\n const target = event.target;\n const isTargetInput = target !== null && (target as HTMLElement).nodeName === 'INPUT';\n\n // event.target?.select is only truthy for input elements\n // if event.target is active element, then that means we should select the text\n if (isTargetInput && target !== document.activeElement) {\n event.preventDefault();\n\n setTimeout(() => {\n (target as HTMLInputElement).select();\n }, 1);\n } else if (isTargetInput && target === document.activeElement) {\n // if user left clicks on the input then we are into edit mode\n // only detect left clicks\n if (event.button === 0) {\n setDetailModeEditing(true);\n }\n }\n };\n\n if (canEditThisCell) {\n const firstDataColumnIndex = allFocussableColumnIndexes.at(0) ?? 0;\n const lastDataColumnIndex = allFocussableColumnIndexes.at(-1) ?? 0;\n\n attributes.onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const control = event.target as HTMLElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n // For some reason, Taco Input keyboard event always return true when \"event.isDefaultPrevented()\" is\n // called. So we need to check if the control is input or not so that we don't return early.\n if (!isControlInput && (event.isDefaultPrevented() || event.isPropagationStopped())) {\n return;\n }\n\n if (control.tagName === 'INPUT') {\n if (event.key === 'Enter') {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (!detailModeEditing) {\n input.setSelectionRange?.(input.value?.length, input.value?.length);\n setDetailModeEditing(true);\n }\n\n return;\n }\n }\n\n // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).\n if (event.key === 'Escape' && event.currentTarget.contains(control)) {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (detailModeEditing) {\n input?.select?.();\n setDetailModeEditing(false);\n } else {\n meta.editMode.toggleEditing(false);\n tableRef.current?.focus();\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowLeft') || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n\n const isFirstRow = rowIndex === 0;\n const isFirstColumn = index === firstDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the first column then we don't do any thing so that focus\n // remains on the first column.\n if (!isFirstColumn) {\n control.blur();\n meta.editMode.moveToFirstColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is first row and first column, then don't move column.\n if (!isFirstRow || !isFirstColumn) {\n control.blur();\n meta.editMode.moveToPreviousColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowRight') || (event.key === 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n\n const isLastColumn = index === lastDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the last column then we don't do any thing so that focus\n // remains on the last column.\n if (!isLastColumn) {\n control.blur();\n meta.editMode.moveToLastColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is last row and last column, then don't move column.\n if (!isLastRow || !isLastColumn) {\n control.blur();\n meta.editMode.moveToNextColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowUp') {\n event.preventDefault();\n\n // if it is the first row then return early, so that focus on the cell is not lost\n if (rowIndex === 0) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n\n scrollToOffset(0);\n } else {\n moveRow(MOVE_DIR.PREV);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowDown') {\n event.preventDefault();\n\n // if it is the last row then return early, so that focus on the cell is not lost\n if (rowIndex === rows.length - 1) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n scrollToIndex(rows.length + 20);\n } else {\n moveRow(MOVE_DIR.NEXT);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n };\n }\n\n return (\n <ColumnBase {...attributes}>\n <EditingCell\n detailModeClassName={detailModeClassName}\n cell={cell}\n cellRef={internalRef}\n columnIndex={index}\n isEditingThisCell={isEditingThisCell}\n onSave={meta.editMode.onSave}\n rowIndex={rowIndex}\n table={table}\n ref={controlRef}\n rowValues={rows[rowIndex].original}\n rowsLength={rows.length}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = event => {\n if (event.target !== internalRef.current) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n };\n }\n }\n\n return (\n <ColumnBase {...attributes}>\n <div className={disableTruncation ? '-my-[0.45rem]' : 'truncate'}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </div>\n </ColumnBase>\n );\n};\n\ntype EditingCellProps = {\n cell: RTCell<any, unknown>;\n cellRef: React.RefObject<HTMLDivElement>;\n columnIndex: number;\n isEditingThisCell: boolean;\n onSave: SaveHandler<any>;\n rowIndex: number;\n table: RTTable<any>;\n rowValues: Record<string, any>;\n rowsLength: number;\n detailModeClassName?: string;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeClassName,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n } = props;\n const {\n editMode: { validationErrors, setValidationErrors, rowMoveReason, setRowMoveReason },\n isHovered,\n } = useRowContext();\n\n const controlRef = useMergedRef(ref);\n const cellId = cell.column.id;\n const cellValidationError = validationErrors?.[cellId];\n\n const value = cell.getValue();\n const ariaLabel = cell.column.columnDef.header as string | undefined;\n const meta = table.options.meta as TableMeta<any>;\n const { globalFilter } = table.getState();\n\n const [state, setState] = React.useState(value);\n\n const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;\n const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;\n // On each save, the initialValue will be set to the new value of the cell\n const initialValue = React.useRef<any>(value);\n\n // It is important that we let consumers pass a newValue as an argument because when setState is called before\n // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened\n // before the saveIfChanged method is called.\n const saveIfChanged = async (eventOrNewValue?: any) => {\n let newValue = state;\n\n // if eventOrNewValue is not an event object\n if (!eventOrNewValue.target) {\n newValue = eventOrNewValue;\n }\n\n if (hasChanged(value, newValue)) {\n try {\n const updatedRow = { ...cell.row.original, [cellId]: newValue };\n\n await handleSave(updatedRow, cellId);\n\n // If sorting is paused then update the last sorted or filtered rows to store the newly updated row\n if (meta.shouldPauseSortingAndFiltering) {\n meta.lastSortedOrFilteredRows.current = meta.lastSortedOrFilteredRows.current.map(row => {\n if (row.id === cell.row.id) {\n row.original = updatedRow;\n }\n\n return row;\n });\n }\n\n // Reset error if save was successful\n setValidationErrors(null);\n } catch (error) {\n setValidationErrors({ ...validationErrors, ...(error as SaveHandlerErrorResponse) });\n }\n }\n };\n\n // Ensures we \"auto focus\" the field if the cell is being edited.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n // When control is blurred then body gets the focus that's why we have to make sure if activeElement\n // is body then we focus the cell if it is being edited.\n const isBodyFocussed = document.body === document.activeElement;\n\n // Don't focus cell if any table popup(filter popup, column settings popup) is open.\n if (isEditingThisCell && (isFocusInsideTable || isBodyFocussed)) {\n (controlRef.current as HTMLElement)?.focus?.();\n }\n }, [isEditingThisCell, controlRef.current]);\n\n // make sure the cell becomes active if the field is focused\n const handleFocus = event => {\n meta.editMode.setColumn(columnIndex);\n\n if (event.target?.select) {\n event.target?.select();\n }\n };\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n const showIndicator = () => {\n let willRowMoveReason: IndicatorReason | null = null;\n\n const isFilteredByGlobalFilter = Object.values<unknown>({ ...rowValues, [cellId]: state }).some(cellValue =>\n // Global filter can be undefined when there is no text being searched so we pass an empty string to\n // globalFilterFn as query in that case.\n globalFilterFn(String(cellValue), globalFilter ? String(globalFilter) : '')\n );\n\n if (!isFilteredByGlobalFilter) {\n willRowMoveReason = IndicatorReason.SEARCH;\n } else if (cell.column.getIsFiltered() && !columnFilterFn(state, cell.column.getFilterValue() as Table2Filter)) {\n willRowMoveReason = IndicatorReason.FILTER;\n } else if (\n !willRowMoveReason &&\n cell.column.getIsSorted() &&\n willRowMoveAfterSorting(\n state,\n cell,\n rowIndex,\n table.getRowModel().rows,\n !!table.getState().sorting.find(s => s.id === cell.column.id)?.desc\n )\n ) {\n willRowMoveReason = IndicatorReason.SORTING;\n }\n\n if (willRowMoveReason !== null) {\n meta.setShouldPauseSortingAndFiltering(true);\n setRowMoveReason({ [cellId]: willRowMoveReason });\n }\n };\n\n const hideIndicator = () => {\n setRowMoveReason(prevState => {\n const newState = { ...prevState };\n delete newState[cellId];\n\n return newState;\n });\n };\n\n const cellControl = cell.column.columnDef.meta?.control;\n\n const attributes = {\n 'aria-label': ariaLabel,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref,\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 };\n\n const className = cn(getCellAlignmentClasses(cell.column.columnDef.meta?.align));\n const indicatorMountNode = cellRef.current?.parentElement?.querySelector(':first-child') as Element | null;\n\n let controlComponent;\n\n if (cellControl) {\n if (typeof cellControl === 'function') {\n controlComponent = cellControl(\n {\n invalid: hasValidationError,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref: controlRef,\n setValue: setState,\n value: state,\n 'data-inline-editing-component': 'true',\n className: detailModeClassName,\n },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={detailModeClassName}\n invalid={hasValidationError}\n onBlur={event => {\n const newDate = (event as any).detail;\n saveIfChanged(newDate);\n }}\n onChange={event => {\n setState((event as any).detail);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={state as Date}\n />\n );\n break;\n\n case 'switch':\n controlComponent = (\n <Switch\n {...attributes}\n className={cn('mx-2 mt-1.5', detailModeClassName)}\n checked={Boolean(state)}\n onChange={setState}\n ref={controlRef as RefObject<HTMLButtonElement>}\n />\n );\n break;\n default:\n controlComponent = (\n <Input\n {...attributes}\n className={cn(className, detailModeClassName)}\n invalid={hasValidationError}\n onChange={event => {\n setState(event.target.value);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={String(state ?? '')}\n />\n );\n break;\n }\n }\n }\n\n const indicatorReason = rowMoveReason[cellId] ?? null;\n\n return (\n <>\n {indicatorReason !== null && (\n <Indicator\n reason={indicatorReason}\n columnName={String(cell.column.columnDef.header)}\n mountNode={indicatorMountNode}\n validationErrors={validationErrors}\n />\n )}\n <span className=\"relative flex-grow\">\n {controlComponent}\n {hasValidationError && <ValidationError>{String(cellValidationError)}</ValidationError>}\n </span>\n </>\n );\n })\n);\n"],"names":["Cell","props","cell","index","isLastRow","rowIndex","rows","scrollToIndex","scrollToOffset","table","tableRef","columnProps","meta","options","addFocussableColumnIndex","focussableColumnIndexes","allFocussableColumnIndexes","editMode","validationErrors","rowMoveReason","isHovered","isHoveredRow","useRowContext","hasValidationErrorsInRow","internalRef","React","useRef","controlRef","disableTruncation","column","columnDef","cellClassName","className","isActiveRow","activeRowIndex","isPinned","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","detailModeClassName","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","onRowClick","onClick","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","saveIfChanged","eventOrNewValue","newValue","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","map","error","isFocusInsideTable","isBodyFocussed","body","handleFocus","showIndicator","hideIndicator","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onBlur","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
1
+ {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Table2/components/column/Cell.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport cn from 'classnames';\nimport { flexRender, Cell as RTCell, Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Input } from '../../../Input/Input';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellAlignmentClasses, getCellSizingClasses, isKeyboardFocusableElement } from '../../utilities/cell';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { Datepicker } from '../../../Datepicker/Datepicker';\nimport { Switch } from '../../../Switch/Switch';\nimport { SaveHandler, SaveHandlerErrorResponse, Table2Filter } from '../../types';\nimport { columnFilterFn, globalFilterFn } from '../../utilities/filterFn';\nimport { MOVE_DIR } from '../../hooks/useEditMode';\nimport { useRowContext } from '../row/Context';\nimport { Indicator, IndicatorReason } from './Indicator';\nimport { ValidationError } from './ValidationError';\nimport { hasChanged, willRowMoveAfterSorting } from './utils';\nimport { useMergedRef } from '../../../../hooks/useMergedRef';\n\ntype CellProps<TType = unknown> = Omit<ColumnBaseProps<TType>, 'column' | 'isEditing'> & {\n cell: RTCell<TType, unknown>;\n index: number;\n isLastRow: boolean;\n rowIndex: number;\n rows: RTRow<TType>[];\n scrollToIndex: (index: number, options?: any) => void;\n scrollToOffset: (index: number, options?: any) => void;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport const Cell = function Cell<TType = unknown>(props: CellProps<TType>) {\n const { cell, index, isLastRow, rowIndex, rows, scrollToIndex, scrollToOffset, table, tableRef, ...columnProps } = props;\n const meta = table.options.meta as TableMeta<any>;\n\n const { addFocussableColumnIndex, focussableColumnIndexes: allFocussableColumnIndexes } = meta;\n\n const {\n editMode: { validationErrors, rowMoveReason },\n isHovered: isHoveredRow,\n } = useRowContext();\n const hasValidationErrorsInRow = !!validationErrors;\n\n const internalRef = React.useRef<HTMLDivElement>(null);\n const controlRef = React.useRef<HTMLElement>(null);\n const disableTruncation = cell.column.columnDef.meta?.disableTruncation;\n const cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isPinned = !!cell.column.getIsPinned();\n const isDragging = meta.dragging[cell.row.id];\n const isSelected = cell.row.getIsSelected();\n const isDataColumn = !isInternalColumn(cell.column.id);\n const hasCellControl = !!cell.column.columnDef.meta?.control;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const lastColumnIndex = allVisibleColumns.length > 0 ? allVisibleColumns.length - 1 : 0;\n\n // editing\n const isEditingThisRow = meta.editMode.isEditing && isActiveRow;\n const canEditThisCell = isEditingThisRow && isDataColumn;\n const isEditingThisCell = canEditThisCell && meta.editMode.columnIndex === index;\n const isHoveringThisRowWhileEditing = meta.editMode.isEditing && isHoveredRow && !meta.shouldPauseHoverState;\n\n const isIndicatorVisible = Object.keys(rowMoveReason).length > 0;\n\n React.useEffect(() => {\n // Adds padding to the table so that indicator doesn't get cropped\n if (isIndicatorVisible && isLastRow) {\n tableRef.current?.classList.add('pb-4');\n }\n\n return () => tableRef.current?.classList.remove('pb-4');\n }, [isIndicatorVisible, isLastRow]);\n\n const className = cn(\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isPinned,\n // use isHoveredRow rather than css group-hover/row because we want to hide hover state when keyboard navigating\n 'bg-white': !isActiveRow && !isSelected,\n 'group-hover/row:bg-grey-100': !isActiveRow && !isSelected && !meta.shouldPauseHoverState,\n 'bg-grey-200 group-hover/row:bg-grey-200': isActiveRow && !isSelected,\n 'bg-blue-100': isSelected,\n '!wcag-blue-500': isDragging,\n '[&>*]:!grayscale [&_.bg-white]:!bg-grey-100': !isEditingThisRow && isHoveringThisRowWhileEditing,\n '!bg-red-100': hasValidationErrorsInRow,\n 'z-[1]': isPinned && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components.\n 'z-[2]': isPinned && isActiveRow && index === 0,\n 'border-blue !border-y-2 border-x-0': isIndicatorVisible,\n 'border-l-2 rounded-l': isIndicatorVisible && index === 0,\n 'border-r-2 rounded-r': isIndicatorVisible && index === lastColumnIndex,\n },\n getCellSizingClasses(\n table.options.meta?.rowDensity,\n (isEditingThisRow || isHoveringThisRowWhileEditing) && hasCellControl\n ),\n typeof cellClassName === 'function' ? cellClassName(cell.row) : cellClassName\n );\n\n const handleMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n // only detect left clicks\n if (event.button === 0) {\n const activeElement = document.activeElement;\n const isActiveElementControl = activeElement?.closest('[role=\"cell\"]');\n const hasActiveRowChanged = meta.activeRowIndex !== rowIndex;\n\n // When user clicks on a cell that is not in the active row, for some reason blur event is not called on the cell\n // previous cell control element so we need to manually call it in order to save the changes in that cell\n if (isActiveElementControl && hasActiveRowChanged) {\n (activeElement as HTMLElement).blur();\n }\n\n meta.setActiveRowIndex(rowIndex);\n\n if (meta.editMode.isEditing) {\n if (allFocussableColumnIndexes.includes(index)) {\n meta.editMode.setColumn(index);\n } else {\n meta.editMode.setColumn(allFocussableColumnIndexes[0]);\n }\n }\n }\n };\n\n const attributes = {\n ...columnProps,\n // base props,\n column: cell.column,\n table,\n // dom attributes\n className,\n 'data-column-index': index,\n 'data-row-index': rowIndex,\n onMouseDown: handleMouseDown,\n ref: internalRef,\n role: 'cell',\n };\n\n const [detailModeEditing, setDetailModeEditing] = React.useState(false);\n\n const detailModeClassName = cn({\n '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing,\n });\n\n // reset the editing state when we move column\n React.useEffect(() => {\n if (meta.editMode.columnIndex !== index) {\n setDetailModeEditing(false);\n }\n }, [meta.editMode.columnIndex]);\n\n React.useEffect(() => {\n if (isEditingThisRow && controlRef.current && isKeyboardFocusableElement(controlRef.current)) {\n addFocussableColumnIndex(index);\n }\n }, [isEditingThisRow, allFocussableColumnIndexes, addFocussableColumnIndex, index]);\n\n const moveRow = (moveDirection: MOVE_DIR) => {\n if (moveDirection === MOVE_DIR.PREV) {\n meta.moveToPreviousRow(rows, nextIndex => scrollToIndex(nextIndex - 1));\n } else if (moveDirection === MOVE_DIR.NEXT) {\n meta.moveToNextRow(rows, nextIndex => scrollToIndex(nextIndex + 2));\n }\n };\n\n if (meta.editMode.onSave && hasCellControl && (canEditThisCell || (isHoveringThisRowWhileEditing && isDataColumn))) {\n attributes.onMouseDown = event => {\n handleMouseDown(event);\n\n const target = event.target;\n const isTargetInput = target !== null && (target as HTMLElement).nodeName === 'INPUT';\n\n // event.target?.select is only truthy for input elements\n // if event.target is active element, then that means we should select the text\n if (isTargetInput && target !== document.activeElement) {\n event.preventDefault();\n\n setTimeout(() => {\n (target as HTMLInputElement).select();\n }, 1);\n } else if (isTargetInput && target === document.activeElement) {\n // if user left clicks on the input then we are into edit mode\n // only detect left clicks\n if (event.button === 0) {\n setDetailModeEditing(true);\n }\n }\n };\n\n if (canEditThisCell) {\n const firstDataColumnIndex = allFocussableColumnIndexes.at(0) ?? 0;\n const lastDataColumnIndex = allFocussableColumnIndexes.at(-1) ?? 0;\n\n attributes.onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const control = event.target as HTMLElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n // For some reason, Taco Input keyboard event always return true when \"event.isDefaultPrevented()\" is\n // called. So we need to check if the control is input or not so that we don't return early.\n if (!isControlInput && (event.isDefaultPrevented() || event.isPropagationStopped())) {\n return;\n }\n\n if (control.tagName === 'INPUT') {\n if (event.key === 'Enter') {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (!detailModeEditing) {\n input.setSelectionRange?.(input.value?.length, input.value?.length);\n setDetailModeEditing(true);\n }\n\n return;\n }\n }\n\n // Don't exit edit mode if the target of the escape isn't a child of the cell (e.g. if its a popover).\n if (event.key === 'Escape' && event.currentTarget.contains(control)) {\n event.preventDefault();\n const input = control as HTMLInputElement;\n\n if (detailModeEditing) {\n input?.select?.();\n setDetailModeEditing(false);\n } else {\n meta.editMode.toggleEditing(false);\n tableRef.current?.focus();\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowLeft') || (event.key === 'Tab' && event.shiftKey)) {\n event.preventDefault();\n\n const isFirstRow = rowIndex === 0;\n const isFirstColumn = index === firstDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the first column then we don't do any thing so that focus\n // remains on the first column.\n if (!isFirstColumn) {\n control.blur();\n meta.editMode.moveToFirstColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is first row and first column, then don't move column.\n if (!isFirstRow || !isFirstColumn) {\n control.blur();\n meta.editMode.moveToPreviousColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if ((!detailModeEditing && event.key === 'ArrowRight') || (event.key === 'Tab' && !event.shiftKey)) {\n event.preventDefault();\n\n const isLastColumn = index === lastDataColumnIndex;\n\n if (event.ctrlKey || event.metaKey) {\n // If the current active column is the last column then we don't do any thing so that focus\n // remains on the last column.\n if (!isLastColumn) {\n control.blur();\n meta.editMode.moveToLastColumn(allFocussableColumnIndexes);\n }\n } else {\n // If it is last row and last column, then don't move column.\n if (!isLastRow || !isLastColumn) {\n control.blur();\n meta.editMode.moveToNextColumn(allFocussableColumnIndexes, moveRow);\n }\n }\n\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowUp') {\n event.preventDefault();\n\n // if it is the first row then return early, so that focus on the cell is not lost\n if (rowIndex === 0) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(0);\n\n scrollToOffset(0);\n } else {\n moveRow(MOVE_DIR.PREV);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n\n if (!detailModeEditing && event.key === 'ArrowDown') {\n event.preventDefault();\n\n // if it is the last row then return early, so that focus on the cell is not lost\n if (rowIndex === rows.length - 1) {\n return;\n }\n\n control.blur();\n\n if (event.ctrlKey || event.metaKey) {\n meta.setActiveRowIndex(rows.length - 1);\n scrollToIndex(rows.length + 20);\n } else {\n moveRow(MOVE_DIR.NEXT);\n }\n\n meta.setShouldPauseHoverState(true);\n return;\n }\n };\n }\n\n return (\n <ColumnBase {...attributes}>\n <EditingCell\n detailModeClassName={detailModeClassName}\n cell={cell}\n cellRef={internalRef}\n columnIndex={index}\n isEditingThisCell={isEditingThisCell}\n onSave={meta.editMode.onSave}\n rowIndex={rowIndex}\n table={table}\n tableRef={tableRef}\n ref={controlRef}\n rowValues={rows[rowIndex].original}\n rowsLength={rows.length}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = event => {\n if (event.target !== internalRef.current) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n };\n }\n }\n\n return (\n <ColumnBase {...attributes}>\n <div className={disableTruncation ? '-my-[0.45rem]' : 'truncate'}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </div>\n </ColumnBase>\n );\n};\n\ntype EditingCellProps = {\n cell: RTCell<any, unknown>;\n cellRef: React.RefObject<HTMLDivElement>;\n columnIndex: number;\n isEditingThisCell: boolean;\n onSave: SaveHandler<any>;\n rowIndex: number;\n table: RTTable<any>;\n tableRef: React.RefObject<HTMLDivElement>;\n rowValues: Record<string, any>;\n rowsLength: number;\n detailModeClassName?: string;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeClassName,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n tableRef,\n } = props;\n const {\n editMode: { validationErrors, setValidationErrors, rowMoveReason, setRowMoveReason },\n isHovered,\n } = useRowContext();\n\n const controlRef = useMergedRef(ref);\n const cellId = cell.column.id;\n const cellValidationError = validationErrors?.[cellId];\n\n const value = cell.getValue();\n const ariaLabel = cell.column.columnDef.header as string | undefined;\n const meta = table.options.meta as TableMeta<any>;\n const { globalFilter } = table.getState();\n\n const [state, setState] = React.useState(value);\n\n const isHoveringAnotherRowWhileEditing = meta.editMode.isEditing && meta.activeRowIndex !== rowIndex && isHovered;\n const hasValidationError = !isHoveringAnotherRowWhileEditing && !!cellValidationError;\n // On each save, the initialValue will be set to the new value of the cell\n const initialValue = React.useRef<any>(value);\n\n // It is important that we let consumers pass a newValue as an argument because when setState is called before\n // onBlur then saveIfChanged method gets the stale state value. This happens because the rerender hasn't happened\n // before the saveIfChanged method is called.\n const saveIfChanged = async (eventOrNewValue?: any) => {\n let newValue = state;\n\n // if eventOrNewValue is not an event object\n if (!eventOrNewValue.target) {\n newValue = eventOrNewValue;\n }\n\n if (hasChanged(value, newValue)) {\n try {\n const updatedRow = { ...cell.row.original, [cellId]: newValue };\n\n await handleSave(updatedRow, cellId);\n\n // If sorting is paused then update the last sorted or filtered rows to store the newly updated row\n if (meta.shouldPauseSortingAndFiltering) {\n meta.lastSortedOrFilteredRows.current = meta.lastSortedOrFilteredRows.current.map(row => {\n if (row.id === cell.row.id) {\n row.original = updatedRow;\n }\n\n return row;\n });\n }\n\n // Reset error if save was successful\n setValidationErrors(null);\n } catch (error) {\n setValidationErrors({ ...validationErrors, ...(error as SaveHandlerErrorResponse) });\n }\n }\n };\n\n // Ensures we \"auto focus\" the field if the cell is being edited.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n // When control is blurred then body gets the focus that's why we have to make sure if activeElement\n // is body then we focus the cell if it is being edited.\n const isBodyFocussed = document.body === document.activeElement;\n\n // Don't focus cell if any table popup(filter popup, column settings popup) is open.\n if (isEditingThisCell && (isFocusInsideTable || isBodyFocussed)) {\n (controlRef.current as HTMLElement)?.focus?.();\n }\n }, [isEditingThisCell, controlRef.current]);\n\n const pinnedColumnsWidth = React.useMemo(() => {\n const pinnedColumns = table.getState().columnPinning.left;\n\n if (Array.isArray(pinnedColumns) && pinnedColumns.length > 0) {\n const lastPinnedColumn = pinnedColumns[pinnedColumns.length - 1];\n const lastPinnedColumnOffset = meta.columnOffsets[lastPinnedColumn];\n\n if (lastPinnedColumnOffset !== undefined) {\n return lastPinnedColumnOffset + (table.getState().columnSizing[lastPinnedColumn] ?? 0);\n }\n }\n\n return 0;\n }, [meta.columnOffsets, table.getState().columnSizing]);\n\n const handleFocus = event => {\n meta.editMode.setColumn(columnIndex);\n\n if (event.target?.select) {\n event.target?.select();\n }\n\n // ensure the field is always visible (e.g. not hidden behind the pinned columns)\n const rect = cellRef.current?.getBoundingClientRect();\n const leftOffset = meta.columnOffsets[cellId];\n\n if (rect && leftOffset && rect.left < pinnedColumnsWidth) {\n tableRef.current?.scrollTo(leftOffset - pinnedColumnsWidth, tableRef.current.scrollTop);\n }\n };\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n const showIndicator = () => {\n let willRowMoveReason: IndicatorReason | null = null;\n\n const isFilteredByGlobalFilter = Object.values<unknown>({ ...rowValues, [cellId]: state }).some(cellValue =>\n // Global filter can be undefined when there is no text being searched so we pass an empty string to\n // globalFilterFn as query in that case.\n globalFilterFn(String(cellValue), globalFilter ? String(globalFilter) : '')\n );\n\n if (!isFilteredByGlobalFilter) {\n willRowMoveReason = IndicatorReason.SEARCH;\n } else if (cell.column.getIsFiltered() && !columnFilterFn(state, cell.column.getFilterValue() as Table2Filter)) {\n willRowMoveReason = IndicatorReason.FILTER;\n } else if (\n !willRowMoveReason &&\n cell.column.getIsSorted() &&\n willRowMoveAfterSorting(\n state,\n cell,\n rowIndex,\n table.getRowModel().rows,\n !!table.getState().sorting.find(s => s.id === cell.column.id)?.desc\n )\n ) {\n willRowMoveReason = IndicatorReason.SORTING;\n }\n\n if (willRowMoveReason !== null) {\n meta.setShouldPauseSortingAndFiltering(true);\n setRowMoveReason({ [cellId]: willRowMoveReason });\n }\n };\n\n const hideIndicator = () => {\n setRowMoveReason(prevState => {\n const newState = { ...prevState };\n delete newState[cellId];\n\n return newState;\n });\n };\n\n const cellControl = cell.column.columnDef.meta?.control;\n\n const attributes = {\n 'aria-label': ariaLabel,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref,\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 };\n\n const className = cn(getCellAlignmentClasses(cell.column.columnDef.meta?.align));\n const indicatorMountNode = cellRef.current?.parentElement?.querySelector(':first-child') as Element | null;\n\n let controlComponent;\n\n if (cellControl) {\n if (typeof cellControl === 'function') {\n controlComponent = cellControl(\n {\n invalid: hasValidationError,\n onBlur: saveIfChanged,\n onFocus: handleFocus,\n ref: controlRef,\n setValue: setState,\n value: state,\n 'data-inline-editing-component': 'true',\n className: detailModeClassName,\n },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={detailModeClassName}\n invalid={hasValidationError}\n onBlur={event => {\n const newDate = (event as any).detail;\n saveIfChanged(newDate);\n }}\n onChange={event => {\n setState((event as any).detail);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={state as Date}\n />\n );\n break;\n\n case 'switch':\n controlComponent = (\n <Switch\n {...attributes}\n className={cn('mx-2 mt-1.5', detailModeClassName)}\n checked={Boolean(state)}\n onChange={setState}\n ref={controlRef as RefObject<HTMLButtonElement>}\n />\n );\n break;\n default:\n controlComponent = (\n <Input\n {...attributes}\n className={cn(className, detailModeClassName)}\n invalid={hasValidationError}\n onChange={event => {\n setState(event.target.value);\n }}\n ref={controlRef as RefObject<HTMLInputElement>}\n value={String(state ?? '')}\n />\n );\n break;\n }\n }\n }\n\n const indicatorReason = rowMoveReason[cellId] ?? null;\n\n return (\n <>\n {indicatorReason !== null && (\n <Indicator\n reason={indicatorReason}\n columnName={String(cell.column.columnDef.header)}\n mountNode={indicatorMountNode}\n validationErrors={validationErrors}\n />\n )}\n <span className=\"relative flex-grow\">\n {controlComponent}\n {hasValidationError && <ValidationError>{String(cellValidationError)}</ValidationError>}\n </span>\n </>\n );\n })\n);\n"],"names":["Cell","props","cell","index","isLastRow","rowIndex","rows","scrollToIndex","scrollToOffset","table","tableRef","columnProps","meta","options","addFocussableColumnIndex","focussableColumnIndexes","allFocussableColumnIndexes","editMode","validationErrors","rowMoveReason","isHovered","isHoveredRow","useRowContext","hasValidationErrorsInRow","internalRef","React","useRef","controlRef","disableTruncation","column","columnDef","cellClassName","className","isActiveRow","activeRowIndex","isPinned","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","detailModeClassName","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","onRowClick","onClick","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","saveIfChanged","eventOrNewValue","newValue","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","map","error","isFocusInsideTable","isBodyFocussed","body","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastPinnedColumn","lastPinnedColumnOffset","columnOffsets","undefined","columnSizing","handleFocus","rect","getBoundingClientRect","leftOffset","scrollTo","scrollTop","showIndicator","hideIndicator","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onBlur","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
@@ -1,44 +1,24 @@
1
1
  import React__default from 'react';
2
2
 
3
- const isResizingPinnedColumn = (columnId, table) => {
4
- var _table$getState$colum, _table$getState$colum2;
5
- return !!columnId && ((_table$getState$colum = table.getState().columnPinning.left) === null || _table$getState$colum === void 0 ? void 0 : _table$getState$colum.includes((_table$getState$colum2 = table.getState().columnSizingInfo) === null || _table$getState$colum2 === void 0 ? void 0 : _table$getState$colum2.isResizingColumn));
6
- };
7
- const getOffsetsFromSize = (pinning, visibility, sizing) => {
8
- const pinned = pinning.left.filter(c => visibility[c] !== false);
9
- const offsets = {};
10
- let leftOffset = 0;
11
- for (const k of pinned) {
12
- if (!Number.isInteger(sizing[k])) {
13
- break;
14
- }
15
- offsets[k] = leftOffset;
16
- leftOffset += sizing[k];
17
- }
18
- return offsets;
19
- };
20
3
  // pinned columns have position sticky, and because we support more than one of them
21
4
  // we must set a 'left' css value. this hook listens to changes on state that will
22
5
  // affect the left offset (resize, visibility, pinning) and updates offsets based on width
23
6
  const useColumnOffsetStateListener = (table, setColumnOffsets) => {
24
7
  const {
25
- columnPinning,
26
- columnSizing,
8
+ columnOrder,
27
9
  columnSizingInfo,
28
10
  columnVisibility
29
11
  } = table.getState();
30
12
  React__default.useEffect(() => {
31
- if (isResizingPinnedColumn(columnSizingInfo.isResizingColumn, table)) {
32
- setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
33
- }
34
- }, [columnSizingInfo]);
35
- React__default.useEffect(() => {
36
- setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
37
- }, [columnVisibility]);
38
- React__default.useEffect(() => {
39
- setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
40
- }, [columnPinning.left]);
13
+ const offsets = {};
14
+ // store left offsets for each visible column
15
+ table.getVisibleLeafColumns().reduce((offset, column) => {
16
+ offsets[column.id] = offset;
17
+ return offset + column.getSize();
18
+ }, 0);
19
+ setColumnOffsets(offsets);
20
+ }, [columnOrder, columnSizingInfo, columnVisibility]);
41
21
  };
42
22
 
43
- export { getOffsetsFromSize, useColumnOffsetStateListener };
23
+ export { useColumnOffsetStateListener };
44
24
  //# sourceMappingURL=useColumnOffsetStateListener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnOffsetStateListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useColumnOffsetStateListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable, ColumnSizingState, ColumnPinningState, VisibilityState, OnChangeFn } from '@tanstack/react-table';\nimport { ColumnOffsetState } from '../../types';\n\nconst isResizingPinnedColumn = (columnId: string | false, table: RTTable<any>) =>\n !!columnId && table.getState().columnPinning.left?.includes(table.getState().columnSizingInfo?.isResizingColumn as string);\n\nexport const getOffsetsFromSize = (pinning: ColumnPinningState, visibility: VisibilityState, sizing: ColumnSizingState) => {\n const pinned = (pinning.left as string[]).filter(c => visibility[c] !== false);\n\n const offsets = {};\n let leftOffset = 0;\n\n for (const k of pinned) {\n if (!Number.isInteger(sizing[k])) {\n break;\n }\n\n offsets[k] = leftOffset;\n leftOffset += sizing[k];\n }\n\n return offsets;\n};\n\n// pinned columns have position sticky, and because we support more than one of them\n// we must set a 'left' css value. this hook listens to changes on state that will\n// affect the left offset (resize, visibility, pinning) and updates offsets based on width\nexport const useColumnOffsetStateListener = (table: RTTable<any>, setColumnOffsets: OnChangeFn<ColumnOffsetState>) => {\n const { columnPinning, columnSizing, columnSizingInfo, columnVisibility } = table.getState();\n\n React.useEffect(() => {\n if (isResizingPinnedColumn(columnSizingInfo.isResizingColumn, table)) {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }\n }, [columnSizingInfo]);\n\n React.useEffect(() => {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }, [columnVisibility]);\n\n React.useEffect(() => {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }, [columnPinning.left]);\n};\n"],"names":["isResizingPinnedColumn","columnId","table","getState","columnPinning","left","includes","columnSizingInfo","isResizingColumn","getOffsetsFromSize","pinning","visibility","sizing","pinned","filter","c","offsets","leftOffset","k","Number","isInteger","useColumnOffsetStateListener","setColumnOffsets","columnSizing","columnVisibility","React","useEffect"],"mappings":";;AAIA,MAAMA,sBAAsB,GAAG,CAACC,QAAwB,EAAEC,KAAmB;EAAA;EAAA,OACzE,CAAC,CAACD,QAAQ,8BAAIC,KAAK,CAACC,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,0DAAnC,sBAAqCC,QAAQ,2BAACJ,KAAK,CAACC,QAAQ,EAAE,CAACI,gBAAgB,2DAAjC,uBAAmCC,gBAA0B,CAAC;AAAA;MAEjHC,kBAAkB,GAAG,CAACC,OAA2B,EAAEC,UAA2B,EAAEC,MAAyB;EAClH,MAAMC,MAAM,GAAIH,OAAO,CAACL,IAAiB,CAACS,MAAM,CAACC,CAAC,IAAIJ,UAAU,CAACI,CAAC,CAAC,KAAK,KAAK,CAAC;EAE9E,MAAMC,OAAO,GAAG,EAAE;EAClB,IAAIC,UAAU,GAAG,CAAC;EAElB,KAAK,MAAMC,CAAC,IAAIL,MAAM,EAAE;IACpB,IAAI,CAACM,MAAM,CAACC,SAAS,CAACR,MAAM,CAACM,CAAC,CAAC,CAAC,EAAE;MAC9B;;IAGJF,OAAO,CAACE,CAAC,CAAC,GAAGD,UAAU;IACvBA,UAAU,IAAIL,MAAM,CAACM,CAAC,CAAC;;EAG3B,OAAOF,OAAO;AAClB;AAEA;AACA;AACA;MACaK,4BAA4B,GAAG,CAACnB,KAAmB,EAAEoB,gBAA+C;EAC7G,MAAM;IAAElB,aAAa;IAAEmB,YAAY;IAAEhB,gBAAgB;IAAEiB;GAAkB,GAAGtB,KAAK,CAACC,QAAQ,EAAE;EAE5FsB,cAAK,CAACC,SAAS,CAAC;IACZ,IAAI1B,sBAAsB,CAACO,gBAAgB,CAACC,gBAAgB,EAAEN,KAAK,CAAC,EAAE;MAClEoB,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;;GAE1F,EAAE,CAAChB,gBAAgB,CAAC,CAAC;EAEtBkB,cAAK,CAACC,SAAS,CAAC;IACZJ,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;GACtF,EAAE,CAACC,gBAAgB,CAAC,CAAC;EAEtBC,cAAK,CAACC,SAAS,CAAC;IACZJ,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;GACtF,EAAE,CAACnB,aAAa,CAACC,IAAI,CAAC,CAAC;AAC5B;;;;"}
1
+ {"version":3,"file":"useColumnOffsetStateListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useColumnOffsetStateListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable, OnChangeFn } from '@tanstack/react-table';\nimport { ColumnOffsetState } from '../../types';\n\n// pinned columns have position sticky, and because we support more than one of them\n// we must set a 'left' css value. this hook listens to changes on state that will\n// affect the left offset (resize, visibility, pinning) and updates offsets based on width\nexport const useColumnOffsetStateListener = (table: RTTable<any>, setColumnOffsets: OnChangeFn<ColumnOffsetState>) => {\n const { columnOrder, columnSizingInfo, columnVisibility } = table.getState();\n\n React.useEffect(() => {\n const offsets = {};\n\n // store left offsets for each visible column\n table.getVisibleLeafColumns().reduce((offset, column) => {\n offsets[column.id] = offset;\n return offset + column.getSize();\n }, 0);\n\n setColumnOffsets(offsets);\n }, [columnOrder, columnSizingInfo, columnVisibility]);\n};\n"],"names":["useColumnOffsetStateListener","table","setColumnOffsets","columnOrder","columnSizingInfo","columnVisibility","getState","React","useEffect","offsets","getVisibleLeafColumns","reduce","offset","column","id","getSize"],"mappings":";;AAIA;AACA;AACA;MACaA,4BAA4B,GAAG,CAACC,KAAmB,EAAEC,gBAA+C;EAC7G,MAAM;IAAEC,WAAW;IAAEC,gBAAgB;IAAEC;GAAkB,GAAGJ,KAAK,CAACK,QAAQ,EAAE;EAE5EC,cAAK,CAACC,SAAS,CAAC;IACZ,MAAMC,OAAO,GAAG,EAAE;;IAGlBR,KAAK,CAACS,qBAAqB,EAAE,CAACC,MAAM,CAAC,CAACC,MAAM,EAAEC,MAAM;MAChDJ,OAAO,CAACI,MAAM,CAACC,EAAE,CAAC,GAAGF,MAAM;MAC3B,OAAOA,MAAM,GAAGC,MAAM,CAACE,OAAO,EAAE;KACnC,EAAE,CAAC,CAAC;IAELb,gBAAgB,CAACO,OAAO,CAAC;GAC5B,EAAE,CAACN,WAAW,EAAEC,gBAAgB,EAAEC,gBAAgB,CAAC,CAAC;AACzD;;;;"}
@@ -3,7 +3,7 @@ import { getSortedRowModel, getFilteredRowModel, useReactTable, getCoreRowModel
3
3
  import { columnFilterFn, globalFilterFn } from '../utilities/filterFn.js';
4
4
  import { useEditMode } from './useEditMode.js';
5
5
  import { useColumnDefinitions } from './useColumnDefinitions.js';
6
- import { getOffsetsFromSize, useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener.js';
6
+ import { useColumnOffsetStateListener } from './listeners/useColumnOffsetStateListener.js';
7
7
  import { useRowSelectionListener } from './listeners/useRowSelectionListener.js';
8
8
  import { useSettingsStateListener } from './listeners/useSettingsStateListener.js';
9
9
  import { useActiveRow } from './useActiveRow.js';
@@ -78,7 +78,7 @@ function useTable(children, props, ref) {
78
78
  const activeRow = useActiveRow(defaultActiveRowIndex);
79
79
  const [shouldPauseHoverState, setShouldPauseHoverState] = useShouldPauseHoverState();
80
80
  const editMode = useEditMode(onSave);
81
- const [columnOffsets, setColumnOffsets] = React__default.useState(getOffsetsFromSize(initialState.columnPinning, initialState.columnVisibility, initialState.columnSizing));
81
+ const [columnOffsets, setColumnOffsets] = React__default.useState({});
82
82
  const [rowDensity, setRowDensity] = React__default.useState((_settings$rowDensity = settings === null || settings === void 0 ? void 0 : settings.rowDensity) !== null && _settings$rowDensity !== void 0 ? _settings$rowDensity : 'normal');
83
83
  const [dragging, setDragging] = React__default.useState({});
84
84
  const [shouldPauseSortingAndFiltering, setShouldPauseSortingAndFiltering] = React__default.useState(false);
@@ -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 ColumnPinningState,\n VisibilityState,\n ColumnSizingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { RowClickHandler, RowDensity, Table2ColumnProps, Table2Props } from '../types';\nimport { useColumnDefinitions } from './useColumnDefinitions';\nimport { getOffsetsFromSize, 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 { useShouldPauseHoverState } from './useShouldPauseHoverState';\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 enableColumnReordering: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\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>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n props: Table2Props<TType>,\n ref: React.RefObject<HTMLDivElement>\n) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnPinning = 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 const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, defaultColumnPinning, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnPinning: !disableColumnPinning,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: settings?.columnPinning?.left ?? defaultColumnPinning ?? [],\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] = useShouldPauseHoverState();\n const editMode = useEditMode(onSave);\n const [columnOffsets, setColumnOffsets] = React.useState(\n getOffsetsFromSize(\n initialState.columnPinning as ColumnPinningState,\n initialState.columnVisibility as VisibilityState,\n initialState.columnSizing as ColumnSizingState\n )\n );\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 // 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: !disableColumnPinning,\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 enableColumnReordering: !disableColumnReordering,\n shouldPauseHoverState,\n setShouldPauseHoverState,\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","disableColumnPinning","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","defaultColumnPinning","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnPinning","lastSortedOrFilteredRows","React","useRef","initialState","columnOrder","map","column","id","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useShouldPauseHoverState","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","getOffsetsFromSize","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","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, Table2ColumnProps, 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 { useShouldPauseHoverState } from './useShouldPauseHoverState';\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 enableColumnReordering: boolean;\n shouldPauseSortingAndFiltering: boolean;\n setShouldPauseSortingAndFiltering: OnChangeFn<boolean>;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: OnChangeFn<boolean>;\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>(\n children: React.ReactElement<Table2ColumnProps<TType>>[],\n props: Table2Props<TType>,\n ref: React.RefObject<HTMLDivElement>\n) {\n const {\n actionsForRow = [],\n data,\n defaultActiveRowIndex,\n disableColumnFiltering = false,\n disableColumnHiding = false,\n disableColumnPinning = 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 const enableRowExpansion = !disableRowExpansion && !!expandedRowRenderer;\n const enableRowSelection = !disableRowSelection && (!!onRowSelect || !!_experimentalActionsForTable?.length);\n const enableMultipleRowSelection = !disableMultipleRowSelection && enableRowSelection;\n\n const { columns, defaultColumnPinning, defaultColumnSizing, defaultSorting, defaultColumnVisibility, footers } =\n useColumnDefinitions<TType>(\n children,\n {\n actionsForRow,\n enableColumnFiltering: !disableColumnFiltering,\n enableColumnHiding: !disableColumnHiding,\n enableColumnPinning: !disableColumnPinning,\n enableRowExpansion,\n enableRowSelection,\n enableMultipleRowSelection,\n onRowDrag,\n },\n ref\n );\n\n const lastSortedOrFilteredRows = React.useRef<any>(null);\n\n // defaults\n const initialState: Partial<TableState> = {\n columnOrder: settings?.columnOrder ?? columns.map(column => column.id as string),\n columnPinning: {\n left: settings?.columnPinning?.left ?? defaultColumnPinning ?? [],\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] = useShouldPauseHoverState();\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 // 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: !disableColumnPinning,\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 enableColumnReordering: !disableColumnReordering,\n shouldPauseHoverState,\n setShouldPauseHoverState,\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","disableColumnPinning","disableColumnReordering","disableColumnResizing","disableRowDensity","disableRowExpansion","disableRowSelection","disableMultipleRowSelection","disableSearch","disableSorting","expandedRowRenderer","manualColumnFiltering","manualSearch","manualSorting","onChangeSettings","onRowClick","onRowDrag","onRowSelect","onSave","settings","_experimentalActionsForTable","enableRowExpansion","enableRowSelection","length","enableMultipleRowSelection","columns","defaultColumnPinning","defaultColumnSizing","defaultSorting","defaultColumnVisibility","footers","useColumnDefinitions","enableColumnFiltering","enableColumnHiding","enableColumnPinning","lastSortedOrFilteredRows","React","useRef","initialState","columnOrder","map","column","id","columnPinning","left","right","columnSizing","columnVisibility","dataColumnStartOffset","reduce","t","e","dataColumnEndOffset","activeRow","useActiveRow","shouldPauseHoverState","setShouldPauseHoverState","useShouldPauseHoverState","editMode","useEditMode","columnOffsets","setColumnOffsets","useState","rowDensity","setRowDensity","dragging","setDragging","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","shouldDisableTableActions","setShouldDisableTableActions","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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"}