@economic/taco 2.4.3 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. package/dist/components/Icon/components/ChartArea.d.ts +3 -0
  2. package/dist/components/Icon/components/ChartBar.d.ts +3 -0
  3. package/dist/components/Icon/components/ChartLine.d.ts +3 -0
  4. package/dist/components/Icon/components/ChartPie.d.ts +3 -0
  5. package/dist/components/Icon/components/ChartTable.d.ts +3 -0
  6. package/dist/components/Icon/components/index.d.ts +1 -1
  7. package/dist/components/Input/Input.d.ts +1 -1
  8. package/dist/components/Menu/components/Item.d.ts +1 -1
  9. package/dist/components/Menu/components/Link.d.ts +1 -1
  10. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  11. package/dist/components/Select2/components/Option.d.ts +1 -1
  12. package/dist/components/Select2/components/Search.d.ts +1 -1
  13. package/dist/components/Table3/hooks/features/useSettings.d.ts +1 -0
  14. package/dist/components/Table3/hooks/useTable.d.ts +1 -0
  15. package/dist/components/Table3/types.d.ts +1 -0
  16. package/dist/components/Tag/Tag.d.ts +1 -1
  17. package/dist/esm/index.css +5 -0
  18. package/dist/esm/packages/taco/src/components/Icon/components/ChartArea.js +19 -0
  19. package/dist/esm/packages/taco/src/components/Icon/components/ChartArea.js.map +1 -0
  20. package/dist/esm/packages/taco/src/components/Icon/components/ChartBar.js +19 -0
  21. package/dist/esm/packages/taco/src/components/Icon/components/ChartBar.js.map +1 -0
  22. package/dist/esm/packages/taco/src/components/Icon/components/ChartLine.js +19 -0
  23. package/dist/esm/packages/taco/src/components/Icon/components/ChartLine.js.map +1 -0
  24. package/dist/esm/packages/taco/src/components/Icon/components/ChartPie.js +17 -0
  25. package/dist/esm/packages/taco/src/components/Icon/components/ChartPie.js.map +1 -0
  26. package/dist/esm/packages/taco/src/components/Icon/components/ChartTable.js +19 -0
  27. package/dist/esm/packages/taco/src/components/Icon/components/ChartTable.js.map +1 -0
  28. package/dist/esm/packages/taco/src/components/Icon/components/index.js +10 -0
  29. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +7 -2
  31. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +2 -1
  33. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/Table3.js +3 -1
  35. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js +2 -2
  37. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Drag.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +3 -3
  39. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +2 -1
  41. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +2 -1
  43. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +3 -1
  45. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +14 -5
  47. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +10 -4
  49. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +82 -78
  51. package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js +7 -1
  53. package/dist/esm/packages/taco/src/components/Table3/hooks/useCssGrid.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +1 -0
  55. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js +5 -1
  57. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  59. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +11 -1
  60. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -1
  61. package/dist/esm/packages/taco/src/utils/hooks/useDropTarget.js +1 -1
  62. package/dist/esm/packages/taco/src/utils/hooks/useDropTarget.js.map +1 -1
  63. package/dist/hooks/useLocalStorage.d.ts +1 -1
  64. package/dist/index.css +5 -0
  65. package/dist/taco.cjs.development.js +232 -102
  66. package/dist/taco.cjs.development.js.map +1 -1
  67. package/dist/taco.cjs.production.min.js +1 -1
  68. package/dist/taco.cjs.production.min.js.map +1 -1
  69. package/package.json +2 -2
  70. package/types.json +21765 -11931
@@ -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 { clickableNodeNames, 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 cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isFrozen = !!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 '[&>[data-taco=\"tag\"]]:-my-0.5',\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isFrozen,\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]': isFrozen && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components. A z-index of 3, will show the indicator when columns are pinned.\n 'z-[3]': isFrozen && 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, table) : 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 // 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 as HTMLElement;\n const isTargetInput = target !== null && target.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 attributes.onBlur = () => {\n setDetailModeEditing(false);\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 } else {\n input?.select?.();\n }\n\n setDetailModeEditing(!detailModeEditing);\n\n return;\n }\n\n // Datepicker doesn't have keydown event handler its value doesn't change when user types inside\n // datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric\n // character\n if (control?.closest('[data-taco=\"datepicker\"]') && /^[a-z0-9]$/i.test(event.key)) {\n setDetailModeEditing(true);\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\n if (detailModeEditing) {\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 detailModeEditing={detailModeEditing}\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 enableDetailModeEditing={() => {\n if (!detailModeEditing) {\n setDetailModeEditing(true);\n }\n }}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = (event: React.MouseEvent<HTMLElement>) => {\n const { target } = event;\n // This check prevents triggering row click, when a click is performed in the dropdown (e.g. Select option or DayPicker date selection)\n if (internalRef.current && target instanceof HTMLElement && internalRef.current.contains(target)) {\n // Checking that target is clickable element or it is a child of clickable element\n if (\n clickableNodeNames.includes(target.tagName) ||\n target.closest(clickableNodeNames.map(tag => `[role=row] ${tag}`).join(','))\n ) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n }\n };\n }\n }\n\n return <ColumnBase {...attributes}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</ColumnBase>;\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 detailModeEditing: boolean;\n enableDetailModeEditing: () => void;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeEditing,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n tableRef,\n enableDetailModeEditing,\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 const stateReset = React.useRef(false);\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 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 lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];\n const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];\n\n if (lastFrozenColumnOffset !== undefined) {\n return lastFrozenColumnOffset + (table.getState().columnSizing[lastFrozenColumn] ?? 0);\n }\n }\n\n return 0;\n }, [meta.columnOffsets, table.getState().columnSizing]);\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n // For an input we want to make sure that if the value is changed then we go into detail mode, so that\n // arrow keys doesn't trigger the quick mode shortcuts.\n if (controlRef.current?.nodeName === 'INPUT') {\n enableDetailModeEditing();\n }\n\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n // This effect makes sure we select the input control value when escape key is pressed\n React.useEffect(() => {\n const isControlInput =\n controlRef.current?.nodeName === 'INPUT' &&\n controlRef.current?.getAttribute('data-inline-editing-component') === 'true';\n\n if (stateReset.current && isControlInput) {\n (controlRef.current as HTMLInputElement)?.select();\n }\n\n stateReset.current = false;\n }, [stateReset.current]);\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 // In order to reset the value of an input when escape key is pressed this keydown handler is required.\n // Instead of adding this event handler in parent component, this handler is added here because we have access\n // to the state handler of the control component.\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const control = event.target as HTMLInputElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n if (isControlInput && event.key === 'Escape') {\n setState(initialValue.current);\n stateReset.current = true;\n }\n };\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 const detailModeClassName = cn({ '!yt-focus-dark': detailModeEditing });\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 },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={cn({ '[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing })}\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 onKeyDown={handleKeyDown}\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","cellClassName","_cell$column$columnDe","column","columnDef","className","isActiveRow","activeRowIndex","isFrozen","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","_cell$column$columnDe2","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","_tableRef$current","current","classList","add","_tableRef$current2","remove","cn","getCellSizingClasses","_table$options$meta","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","onBlur","_allFocussableColumnI","_allFocussableColumnI2","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","_input$setSelectionRa","_input$value","_input$value2","setSelectionRange","call","value","_input$select","test","currentTarget","contains","_tableRef$current3","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","enableDetailModeEditing","onRowClick","onClick","HTMLElement","_meta$onRowClick","clickableNodeNames","map","tag","join","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","stateReset","saveIfChanged","eventOrNewValue","newValue","_temp2","hasChanged","_temp","_catch","updatedRow","Promise","resolve","then","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","error","e","reject","isFocusInsideTable","_meta$tableRef$curren","isBodyFocussed","body","_controlRef$current","_controlRef$current$f","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastFrozenColumn","lastFrozenColumnOffset","columnOffsets","undefined","_table$getState$colum","columnSizing","_controlRef$current2","showIndicator","hideIndicator","_controlRef$current3","_controlRef$current4","_controlRef$current5","handleFocus","_event$target","_event$target2","rect","_cellRef$current","getBoundingClientRect","leftOffset","_tableRef$current4","scrollTo","scrollTop","handleKeyDown","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","_table$getState$sorti","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","_cell$column$columnDe3","onFocus","getCellAlignmentClasses","_cell$column$columnDe4","align","indicatorMountNode","_cellRef$current2","_cellRef$current2$par","parentElement","querySelector","controlComponent","detailModeClassName","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","_rowMoveReason$cellId","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 { clickableNodeNames, 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 cellClassName = cell.column.columnDef.meta?.className;\n\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isFrozen = !!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 '[&>[data-taco=\"tag\"]]:-my-0.5',\n '[[data-dragged-over=\"true\"]_&]:bg-grey-100',\n {\n 'border-b': !isLastRow,\n 'sticky z-[1]': isFrozen,\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]': isFrozen && isActiveRow,\n // First column should have higher z-index so that row indicator always show on top of the cell\n // control components. A z-index of 3, will show the indicator when columns are pinned.\n 'z-[3]': isFrozen && 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, table) : 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 // 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 const target = event.target as HTMLElement;\n const isTargetInput = target !== null && target.nodeName === 'INPUT';\n\n // In Edit mode, If mouse click is happening outside of cell (in case of any dropdowns like date picker or select),\n // then it should not be processed as a click on a cell.\n if (!event.currentTarget.contains(target)) {\n return;\n }\n\n handleMouseDown(event);\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 attributes.onBlur = () => {\n setDetailModeEditing(false);\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 } else {\n input?.select?.();\n }\n\n setDetailModeEditing(!detailModeEditing);\n\n return;\n }\n\n // Datepicker doesn't have keydown event handler its value doesn't change when user types inside\n // datepicker input, so we need to explicitly enable detail editing mode on typing any alphanumeric\n // character\n if (control?.closest('[data-taco=\"datepicker\"]') && /^[a-z0-9]$/i.test(event.key)) {\n setDetailModeEditing(true);\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\n if (detailModeEditing) {\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 detailModeEditing={detailModeEditing}\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 enableDetailModeEditing={() => {\n if (!detailModeEditing) {\n setDetailModeEditing(true);\n }\n }}\n />\n </ColumnBase>\n );\n } else {\n if (meta.onRowClick) {\n attributes.onClick = (event: React.MouseEvent<HTMLElement>) => {\n const { target } = event;\n // This check prevents triggering row click, when a click is performed in the dropdown (e.g. Select option or DayPicker date selection)\n if (internalRef.current && target instanceof HTMLElement && internalRef.current.contains(target)) {\n // Checking that target is clickable element or it is a child of clickable element\n if (\n clickableNodeNames.includes(target.tagName) ||\n target.closest(clickableNodeNames.map(tag => `[role=row] ${tag}`).join(','))\n ) {\n return;\n }\n\n meta.onRowClick?.(cell.row.original);\n }\n };\n }\n }\n\n return <ColumnBase {...attributes}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</ColumnBase>;\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 detailModeEditing: boolean;\n enableDetailModeEditing: () => void;\n};\n\nconst EditingCell = React.memo(\n React.forwardRef<HTMLElement, EditingCellProps>((props, ref) => {\n const {\n cell,\n cellRef,\n columnIndex,\n detailModeEditing,\n isEditingThisCell = false,\n onSave: handleSave,\n rowIndex,\n rowValues,\n table,\n tableRef,\n enableDetailModeEditing,\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 const stateReset = React.useRef(false);\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 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 lastFrozenColumn = pinnedColumns[pinnedColumns.length - 1];\n const lastFrozenColumnOffset = meta.columnOffsets[lastFrozenColumn];\n\n if (lastFrozenColumnOffset !== undefined) {\n return lastFrozenColumnOffset + (table.getState().columnSizing[lastFrozenColumn] ?? 0);\n }\n }\n\n return 0;\n }, [meta.columnOffsets, table.getState().columnSizing]);\n\n React.useEffect(() => {\n if (hasChanged(initialValue.current, state)) {\n // For an input we want to make sure that if the value is changed then we go into detail mode, so that\n // arrow keys doesn't trigger the quick mode shortcuts.\n if (controlRef.current?.nodeName === 'INPUT') {\n enableDetailModeEditing();\n }\n\n showIndicator();\n } else {\n hideIndicator();\n }\n\n return hideIndicator;\n }, [state]);\n\n // This effect makes sure we select the input control value when escape key is pressed\n React.useEffect(() => {\n const isControlInput =\n controlRef.current?.nodeName === 'INPUT' &&\n controlRef.current?.getAttribute('data-inline-editing-component') === 'true';\n\n if (stateReset.current && isControlInput) {\n (controlRef.current as HTMLInputElement)?.select();\n }\n\n stateReset.current = false;\n }, [stateReset.current]);\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 // In order to reset the value of an input when escape key is pressed this keydown handler is required.\n // Instead of adding this event handler in parent component, this handler is added here because we have access\n // to the state handler of the control component.\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const control = event.target as HTMLInputElement;\n const isControlInput =\n control.nodeName === 'INPUT' && control?.getAttribute('data-inline-editing-component') === 'true';\n\n if (isControlInput && event.key === 'Escape') {\n setState(initialValue.current);\n stateReset.current = true;\n }\n };\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 const detailModeClassName = cn({ '!yt-focus-dark': detailModeEditing });\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 },\n cell.row.original\n );\n } else {\n switch (cellControl) {\n case 'datepicker':\n controlComponent = (\n <Datepicker\n {...attributes}\n className={cn({ '[&_input]:!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': detailModeEditing })}\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 onKeyDown={handleKeyDown}\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","cellClassName","_cell$column$columnDe","column","columnDef","className","isActiveRow","activeRowIndex","isFrozen","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","_cell$column$columnDe2","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","_tableRef$current","current","classList","add","_tableRef$current2","remove","cn","getCellSizingClasses","_table$options$meta","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","currentTarget","contains","preventDefault","setTimeout","select","onBlur","_allFocussableColumnI","_allFocussableColumnI2","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","_input$setSelectionRa","_input$value","_input$value2","setSelectionRange","call","value","_input$select","test","_tableRef$current3","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","enableDetailModeEditing","onRowClick","onClick","HTMLElement","_meta$onRowClick","clickableNodeNames","map","tag","join","flexRender","getContext","memo","forwardRef","handleSave","setValidationErrors","setRowMoveReason","useMergedRef","cellId","cellValidationError","getValue","ariaLabel","header","globalFilter","getState","state","setState","isHoveringAnotherRowWhileEditing","hasValidationError","initialValue","stateReset","saveIfChanged","eventOrNewValue","newValue","_temp2","hasChanged","_temp","_catch","updatedRow","Promise","resolve","then","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","error","e","reject","isFocusInsideTable","_meta$tableRef$curren","isBodyFocussed","body","_controlRef$current","_controlRef$current$f","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastFrozenColumn","lastFrozenColumnOffset","columnOffsets","undefined","_table$getState$colum","columnSizing","_controlRef$current2","showIndicator","hideIndicator","_controlRef$current3","_controlRef$current4","_controlRef$current5","handleFocus","_event$target","_event$target2","rect","_cellRef$current","getBoundingClientRect","leftOffset","_tableRef$current4","scrollTo","scrollTop","handleKeyDown","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","_table$getState$sorti","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","_cell$column$columnDe3","onFocus","getCellAlignmentClasses","_cell$column$columnDe4","align","indicatorMountNode","_cellRef$current2","_cellRef$current2$par","parentElement","querySelector","controlComponent","detailModeClassName","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","_rowMoveReason$cellId","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
@@ -15,13 +15,14 @@ const InternalRow = ({
15
15
  const meta = table.options.meta;
16
16
  const isActiveRow = meta.activeRowIndex === rowIndex;
17
17
  const isDragging = meta.dragging[row.id];
18
- const [, dropTargetProps] = useDropTarget(event => onRowDrop(event, row.original));
18
+ const [isDraggedOver, dropTargetProps] = useDropTarget(event => onRowDrop(event, row.original));
19
19
  const attributes = {
20
20
  ...props,
21
21
  ...(typeof onRowDrop === 'function' ? dropTargetProps : undefined),
22
22
  'aria-current': isActiveRow ? true : undefined,
23
23
  'aria-grabbed': isDragging ? true : undefined,
24
24
  'data-row-index': rowIndex,
25
+ 'data-dragged-over': isDraggedOver,
25
26
  draggable: meta.enableRowDragging ? true : undefined,
26
27
  onMouseEnter: () => setIsHovered(true),
27
28
  onMouseLeave: () => setIsHovered(false),
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table2/components/row/Row.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta } from '@tanstack/react-table';\nimport { RowContextProvider, useRowContext } from './Context';\nimport { useDropTarget } from '../../../../utils/hooks/useDropTarget';\n\nconst InternalRow = ({ onRowDrop, row, rowIndex, table, ...props }) => {\n const { setIsHovered } = useRowContext();\n\n const meta = table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isDragging = meta.dragging[row.id];\n\n const [, dropTargetProps] = useDropTarget(event => onRowDrop(event, row.original));\n\n const attributes = {\n ...props,\n ...(typeof onRowDrop === 'function' ? dropTargetProps : undefined),\n 'aria-current': isActiveRow ? true : undefined,\n 'aria-grabbed': isDragging ? true : undefined,\n 'data-row-index': rowIndex,\n draggable: meta.enableRowDragging ? true : undefined,\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n role: 'row',\n };\n\n return <div {...attributes} />;\n};\n\nexport const Row = props => {\n const meta = props.table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === props.rowIndex;\n\n return (\n <RowContextProvider isActiveRow={isActiveRow} meta={props.table.options.meta} rowIndex={props.rowIndex}>\n <InternalRow {...props} />\n </RowContextProvider>\n );\n};\n"],"names":["InternalRow","onRowDrop","row","rowIndex","table","props","setIsHovered","useRowContext","meta","options","isActiveRow","activeRowIndex","isDragging","dragging","id","dropTargetProps","useDropTarget","event","original","attributes","undefined","draggable","enableRowDragging","onMouseEnter","onMouseLeave","role","React","Row","RowContextProvider"],"mappings":";;;;AAKA,MAAMA,WAAW,GAAGA,CAAC;EAAEC,SAAS;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAO;EAC9D,MAAM;IAAEC;GAAc,GAAGC,aAAa,EAAE;EAExC,MAAMC,IAAI,GAAGJ,KAAK,CAACK,OAAO,CAACD,IAAsB;EACjD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKR,QAAQ;EACpD,MAAMS,UAAU,GAAGJ,IAAI,CAACK,QAAQ,CAACX,GAAG,CAACY,EAAE,CAAC;EAExC,MAAM,GAAGC,eAAe,CAAC,GAAGC,aAAa,CAACC,KAAK,IAAIhB,SAAS,CAACgB,KAAK,EAAEf,GAAG,CAACgB,QAAQ,CAAC,CAAC;EAElF,MAAMC,UAAU,GAAG;IACf,GAAGd,KAAK;IACR,IAAI,OAAOJ,SAAS,KAAK,UAAU,GAAGc,eAAe,GAAGK,SAAS,CAAC;IAClE,cAAc,EAAEV,WAAW,GAAG,IAAI,GAAGU,SAAS;IAC9C,cAAc,EAAER,UAAU,GAAG,IAAI,GAAGQ,SAAS;IAC7C,gBAAgB,EAAEjB,QAAQ;IAC1BkB,SAAS,EAAEb,IAAI,CAACc,iBAAiB,GAAG,IAAI,GAAGF,SAAS;IACpDG,YAAY,EAAEA,MAAMjB,YAAY,CAAC,IAAI,CAAC;IACtCkB,YAAY,EAAEA,MAAMlB,YAAY,CAAC,KAAK,CAAC;IACvCmB,IAAI,EAAE;GACT;EAED,oBAAOC,sDAASP,UAAU,EAAI;AAClC,CAAC;MAEYQ,GAAG,GAAGtB,KAAK;EACpB,MAAMG,IAAI,GAAGH,KAAK,CAACD,KAAK,CAACK,OAAO,CAACD,IAAsB;EACvD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKN,KAAK,CAACF,QAAQ;EAE1D,oBACIuB,6BAACE,kBAAkB;IAAClB,WAAW,EAAEA,WAAW;IAAEF,IAAI,EAAEH,KAAK,CAACD,KAAK,CAACK,OAAO,CAACD,IAAI;IAAEL,QAAQ,EAAEE,KAAK,CAACF;kBAC1FuB,6BAAC1B,WAAW,oBAAKK,KAAK,EAAI,CACT;AAE7B;;;;"}
1
+ {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table2/components/row/Row.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta } from '@tanstack/react-table';\nimport { RowContextProvider, useRowContext } from './Context';\nimport { useDropTarget } from '../../../../utils/hooks/useDropTarget';\n\nconst InternalRow = ({ onRowDrop, row, rowIndex, table, ...props }) => {\n const { setIsHovered } = useRowContext();\n\n const meta = table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isDragging = meta.dragging[row.id];\n\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => onRowDrop(event, row.original));\n\n const attributes = {\n ...props,\n ...(typeof onRowDrop === 'function' ? dropTargetProps : undefined),\n 'aria-current': isActiveRow ? true : undefined,\n 'aria-grabbed': isDragging ? true : undefined,\n 'data-row-index': rowIndex,\n 'data-dragged-over': isDraggedOver,\n draggable: meta.enableRowDragging ? true : undefined,\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n role: 'row',\n };\n\n return <div {...attributes} />;\n};\n\nexport const Row = props => {\n const meta = props.table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === props.rowIndex;\n\n return (\n <RowContextProvider isActiveRow={isActiveRow} meta={props.table.options.meta} rowIndex={props.rowIndex}>\n <InternalRow {...props} />\n </RowContextProvider>\n );\n};\n"],"names":["InternalRow","onRowDrop","row","rowIndex","table","props","setIsHovered","useRowContext","meta","options","isActiveRow","activeRowIndex","isDragging","dragging","id","isDraggedOver","dropTargetProps","useDropTarget","event","original","attributes","undefined","draggable","enableRowDragging","onMouseEnter","onMouseLeave","role","React","Row","RowContextProvider"],"mappings":";;;;AAKA,MAAMA,WAAW,GAAGA,CAAC;EAAEC,SAAS;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAO;EAC9D,MAAM;IAAEC;GAAc,GAAGC,aAAa,EAAE;EAExC,MAAMC,IAAI,GAAGJ,KAAK,CAACK,OAAO,CAACD,IAAsB;EACjD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKR,QAAQ;EACpD,MAAMS,UAAU,GAAGJ,IAAI,CAACK,QAAQ,CAACX,GAAG,CAACY,EAAE,CAAC;EAExC,MAAM,CAACC,aAAa,EAAEC,eAAe,CAAC,GAAGC,aAAa,CAACC,KAAK,IAAIjB,SAAS,CAACiB,KAAK,EAAEhB,GAAG,CAACiB,QAAQ,CAAC,CAAC;EAE/F,MAAMC,UAAU,GAAG;IACf,GAAGf,KAAK;IACR,IAAI,OAAOJ,SAAS,KAAK,UAAU,GAAGe,eAAe,GAAGK,SAAS,CAAC;IAClE,cAAc,EAAEX,WAAW,GAAG,IAAI,GAAGW,SAAS;IAC9C,cAAc,EAAET,UAAU,GAAG,IAAI,GAAGS,SAAS;IAC7C,gBAAgB,EAAElB,QAAQ;IAC1B,mBAAmB,EAAEY,aAAa;IAClCO,SAAS,EAAEd,IAAI,CAACe,iBAAiB,GAAG,IAAI,GAAGF,SAAS;IACpDG,YAAY,EAAEA,MAAMlB,YAAY,CAAC,IAAI,CAAC;IACtCmB,YAAY,EAAEA,MAAMnB,YAAY,CAAC,KAAK,CAAC;IACvCoB,IAAI,EAAE;GACT;EAED,oBAAOC,sDAASP,UAAU,EAAI;AAClC,CAAC;MAEYQ,GAAG,GAAGvB,KAAK;EACpB,MAAMG,IAAI,GAAGH,KAAK,CAACD,KAAK,CAACK,OAAO,CAACD,IAAsB;EACvD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKN,KAAK,CAACF,QAAQ;EAE1D,oBACIwB,6BAACE,kBAAkB;IAACnB,WAAW,EAAEA,WAAW;IAAEF,IAAI,EAAEH,KAAK,CAACD,KAAK,CAACK,OAAO,CAACD,IAAI;IAAEL,QAAQ,EAAEE,KAAK,CAACF;kBAC1FwB,6BAAC3B,WAAW,oBAAKK,KAAK,EAAI,CACT;AAE7B;;;;"}
@@ -132,6 +132,8 @@ const Table = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
132
132
  "data-taco": "table2-body",
133
133
  role: "rowgroup"
134
134
  }, renderBody())), /*#__PURE__*/React__default.createElement("div", {
135
+ className: "border-grey-300 col-span-full -mt-px border-t"
136
+ }), tableMeta.enableFooter ? /*#__PURE__*/React__default.createElement("div", {
135
137
  className: "group/footer contents",
136
138
  "data-taco": "table2-footer",
137
139
  role: "rowgroup"
@@ -144,7 +146,7 @@ const Table = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
144
146
  }, flexRender(footer.column.columnDef.footer, footer.getContext()))))), length ? /*#__PURE__*/React__default.createElement(Summary, {
145
147
  length: length,
146
148
  table: table
147
- }) : null)) : /*#__PURE__*/React__default.createElement("div", {
149
+ }) : null) : null) : /*#__PURE__*/React__default.createElement("div", {
148
150
  className: "col-span-full min-h-[theme(spacing.8)]"
149
151
  }, EmptyState ? /*#__PURE__*/React__default.createElement(EmptyState, null) : null)));
150
152
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Table3.js","sources":["../../../../../../../src/components/Table3/Table3.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { flexRender, TableMeta } from '@tanstack/react-table';\nimport { FocusScope } from '@react-aria/focus';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useCssGrid } from './hooks/useCssGrid';\nimport { useTable } from './hooks/useTable';\nimport { useTableRenderStrategy } from './strategies';\nimport { Table3ColumnProps, Table3Props, Table3Ref } from './types';\nimport { Toolbar } from './components/toolbar/Toolbar';\nimport { useColumnFreezingStyle } from './hooks/features/useColumnFreezing';\nimport { useTableRefInstanceSetup } from './hooks/useTableRefInstanceSetup';\nimport { Summary } from './components/columns/footer/Summary';\nimport { isEventTriggeredOnInteractiveElement } from '../../utils/keyboard';\nimport { useCssVars } from './hooks/useCssVars';\nimport './style.css';\n\nfunction Column<TType = unknown>(_: Table3ColumnProps<TType>) {\n return null;\n}\n\ntype FixedForwardRef = <T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => JSX.Element\n) => (props: P & React.RefAttributes<T>) => JSX.Element;\n\n// Cast the old forwardRef to the new one\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\nconst Table = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { emptyState: EmptyState, toolbarLeft, toolbarRight } = props;\n const internalRef = useMergedRef<Table3Ref>(ref);\n\n const { table, length } = useTable<TType>(props);\n useTableRefInstanceSetup(table, internalRef);\n\n React.useEffect(() => {\n if (props.autoFocus) {\n internalRef.current?.focus();\n }\n }, []);\n\n const { renderBody, scrollToIndex } = useTableRenderStrategy<TType>(props, table, internalRef);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n // prevent global shortcuts activating while active in other elements, like inputs or buttons\n if (isEventTriggeredOnInteractiveElement(event.target)) {\n return;\n }\n\n tableMeta.hoverState.handleKeyDown(event);\n tableMeta.currentRow.handleKeyDown(event, table.getRowModel().rows.length, scrollToIndex);\n tableMeta.rowClick.handleKeyDown(event, table);\n tableMeta.rowSelection.handleKeyDown(event, table);\n tableMeta.editing.handleKeyDown(event);\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n const handleBlur = (event: React.FocusEvent) => {\n tableMeta.editing.handleBlur(event);\n };\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n tableMeta.columnFreezing.handleScroll(event);\n };\n\n const className = cn(\n 'border-grey-300 relative grid h-full w-full flex-grow overflow-auto rounded border bg-white scroll-mt-[41px]',\n '[&[data-resizing=\"true\"]]:select-none',\n {\n 'text-xs': tableMeta.fontSize.size === 'small',\n 'text-sm': tableMeta.fontSize.size === 'medium',\n 'text-base': tableMeta.fontSize.size === 'large',\n }\n );\n\n const { style: cssGridStyle } = useCssGrid<TType>(table);\n const { style: cssVars } = useCssVars(tableMeta.rowHeight.height, tableMeta.fontSize.size);\n\n const style = {\n ...cssVars,\n ...cssGridStyle,\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n };\n\n const columnFreezingStyle = useColumnFreezingStyle(props.id, table);\n const isServerLoadingAndNotReady = tableMeta.isUsingServer && props.length === undefined;\n\n return (\n <>\n {columnFreezingStyle ? <style data-taco=\"table3-column-freezing-styles\">{columnFreezingStyle}</style> : null}\n <Toolbar\n table={table}\n tableProps={props}\n total={length}\n left={toolbarLeft}\n right={toolbarRight}\n scrollToIndex={scrollToIndex}\n />\n <div\n className={className}\n id={props.id}\n data-font-size={tableMeta.fontSize.size}\n data-editing={tableMeta.editing.isEditing}\n data-horizontally-scrolled={tableMeta.columnFreezing.horizontallyScrolled}\n data-pause-hover={tableMeta?.hoverState.isPaused}\n data-resizing={!!state.columnSizingInfo.isResizingColumn}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onScroll={handleScroll}\n ref={internalRef}\n role=\"table\"\n style={style}>\n {isServerLoadingAndNotReady ? null : (\n <div className=\"group/header contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map(header => (\n <React.Fragment key={header.id}>\n {flexRender(header.column.columnDef.header, { ...header.getContext(), scrollToIndex })}\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n )}\n {table.getRowModel().rows.length ? (\n <>\n <FocusScope>\n <div className=\"group/body contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {renderBody()}\n </div>\n </FocusScope>\n <div className=\"group/footer contents\" data-taco=\"table2-footer\" role=\"rowgroup\">\n {table.getFooterGroups().map(footerGroup => (\n <div className=\"contents\" key={footerGroup.id} role=\"row\">\n {footerGroup.headers.map(footer => (\n <React.Fragment key={footer.id}>\n {flexRender(footer.column.columnDef.footer, footer.getContext())}\n </React.Fragment>\n ))}\n </div>\n ))}\n {length ? <Summary length={length} table={table} /> : null}\n </div>\n </>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n </div>\n </>\n );\n});\n\ntype Table3WithStatics = (<TType = unknown>(props: Table3Props<TType> & React.RefAttributes<Table3Ref>) => JSX.Element) & {\n Column: typeof Column;\n};\n\nexport const Table3 = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const stringifiedChildren = String(props.children);\n // we force a remount (using key) when the child columns change because there are too many places to add children as an effect\n // this is cheaper from a complexity perspective, and probably performance wise as well\n const key = React.useMemo(() => String('tableKey_' + stringifiedChildren), [stringifiedChildren]);\n return <Table<TType> {...props} key={key} ref={ref} />;\n}) as Table3WithStatics;\nTable3.Column = Column;\n\n// hooks\nexport { useTable3DataLoader } from './hooks/useTableDataLoader';\n\n// types\nexport type {\n useTable3DataFetcher,\n useTable3DataOptions,\n useTable3DataFetcherValues as useTableDataValues,\n} from './hooks/useTableDataLoader';\n\nexport type {\n Table3Ref,\n Table3Props,\n Table3Preset,\n Table3Settings,\n Table3SettingsHandler,\n Table3RowHeight,\n Table3FilterComparator,\n Table3FilterHandler,\n Table3LoadPageHandler,\n Table3LoadAllHandler,\n Table3RowGotoHandler,\n Table3SortHandler,\n Table3Shortcuts,\n Table3ShortcutHandlerFn,\n Table3ShortcutHandlerObject,\n Table3FontSize,\n Table3SortDirection,\n Table3SortFn,\n Table3RowActionRenderer,\n Table3RowSelectionHandler,\n Table3RowExpansionRenderer,\n Table3RowDropHandler,\n Table3RowDragHandler,\n Table3RowClickHandler,\n Table3ColumnProps,\n Table3ColumnAlignment,\n Table3ColumnDataType,\n Table3ColumnHeaderMenu,\n Table3ColumnClassNameHandler,\n Table3ColumnFooterRenderer,\n Table3ColumnRenderer,\n Table3ColumnControlRenderer,\n Table3ColumnControlProps,\n} from './types';\n"],"names":["Column","_","fixedForwardRef","React","forwardRef","Table","Table3","props","ref","emptyState","EmptyState","toolbarLeft","toolbarRight","internalRef","useMergedRef","table","length","useTable","useTableRefInstanceSetup","useEffect","autoFocus","_internalRef$current","current","focus","renderBody","scrollToIndex","useTableRenderStrategy","tableMeta","options","meta","state","getState","handleKeyDown","event","isEventTriggeredOnInteractiveElement","target","hoverState","currentRow","getRowModel","rows","rowClick","rowSelection","editing","document","addEventListener","removeEventListener","handleBlur","handleScroll","columnFreezing","Promise","resolve","e","reject","className","cn","fontSize","size","style","cssGridStyle","useCssGrid","cssVars","useCssVars","rowHeight","height","opacity","columnFreezingStyle","useColumnFreezingStyle","id","isServerLoadingAndNotReady","isUsingServer","undefined","Toolbar","tableProps","total","left","right","isEditing","horizontallyScrolled","isPaused","columnSizingInfo","isResizingColumn","onBlur","onScroll","role","getHeaderGroups","map","headerGroup","key","headers","header","Fragment","flexRender","column","columnDef","getContext","FocusScope","getFooterGroups","footerGroup","footer","Summary","stringifiedChildren","String","children","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"Table3.js","sources":["../../../../../../../src/components/Table3/Table3.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { flexRender, TableMeta } from '@tanstack/react-table';\nimport { FocusScope } from '@react-aria/focus';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useCssGrid } from './hooks/useCssGrid';\nimport { useTable } from './hooks/useTable';\nimport { useTableRenderStrategy } from './strategies';\nimport { Table3ColumnProps, Table3Props, Table3Ref } from './types';\nimport { Toolbar } from './components/toolbar/Toolbar';\nimport { useColumnFreezingStyle } from './hooks/features/useColumnFreezing';\nimport { useTableRefInstanceSetup } from './hooks/useTableRefInstanceSetup';\nimport { Summary } from './components/columns/footer/Summary';\nimport { isEventTriggeredOnInteractiveElement } from '../../utils/keyboard';\nimport { useCssVars } from './hooks/useCssVars';\nimport './style.css';\n\nfunction Column<TType = unknown>(_: Table3ColumnProps<TType>) {\n return null;\n}\n\ntype FixedForwardRef = <T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => JSX.Element\n) => (props: P & React.RefAttributes<T>) => JSX.Element;\n\n// Cast the old forwardRef to the new one\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\nconst Table = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { emptyState: EmptyState, toolbarLeft, toolbarRight } = props;\n const internalRef = useMergedRef<Table3Ref>(ref);\n\n const { table, length } = useTable<TType>(props);\n useTableRefInstanceSetup(table, internalRef);\n\n React.useEffect(() => {\n if (props.autoFocus) {\n internalRef.current?.focus();\n }\n }, []);\n\n const { renderBody, scrollToIndex } = useTableRenderStrategy<TType>(props, table, internalRef);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n // prevent global shortcuts activating while active in other elements, like inputs or buttons\n if (isEventTriggeredOnInteractiveElement(event.target)) {\n return;\n }\n\n tableMeta.hoverState.handleKeyDown(event);\n tableMeta.currentRow.handleKeyDown(event, table.getRowModel().rows.length, scrollToIndex);\n tableMeta.rowClick.handleKeyDown(event, table);\n tableMeta.rowSelection.handleKeyDown(event, table);\n tableMeta.editing.handleKeyDown(event);\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n const handleBlur = (event: React.FocusEvent) => {\n tableMeta.editing.handleBlur(event);\n };\n\n const handleScroll = async (event: React.MouseEvent<HTMLDivElement>) => {\n tableMeta.columnFreezing.handleScroll(event);\n };\n\n const className = cn(\n 'border-grey-300 relative grid h-full w-full flex-grow overflow-auto rounded border bg-white scroll-mt-[41px]',\n '[&[data-resizing=\"true\"]]:select-none',\n {\n 'text-xs': tableMeta.fontSize.size === 'small',\n 'text-sm': tableMeta.fontSize.size === 'medium',\n 'text-base': tableMeta.fontSize.size === 'large',\n }\n );\n\n const { style: cssGridStyle } = useCssGrid<TType>(table);\n const { style: cssVars } = useCssVars(tableMeta.rowHeight.height, tableMeta.fontSize.size);\n\n const style = {\n ...cssVars,\n ...cssGridStyle,\n // create a new stacking context so our internal z-indexes don't effect external components\n // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n opacity: 0.999,\n };\n\n const columnFreezingStyle = useColumnFreezingStyle(props.id, table);\n const isServerLoadingAndNotReady = tableMeta.isUsingServer && props.length === undefined;\n\n return (\n <>\n {columnFreezingStyle ? <style data-taco=\"table3-column-freezing-styles\">{columnFreezingStyle}</style> : null}\n <Toolbar\n table={table}\n tableProps={props}\n total={length}\n left={toolbarLeft}\n right={toolbarRight}\n scrollToIndex={scrollToIndex}\n />\n <div\n className={className}\n id={props.id}\n data-font-size={tableMeta.fontSize.size}\n data-editing={tableMeta.editing.isEditing}\n data-horizontally-scrolled={tableMeta.columnFreezing.horizontallyScrolled}\n data-pause-hover={tableMeta?.hoverState.isPaused}\n data-resizing={!!state.columnSizingInfo.isResizingColumn}\n data-taco=\"table2\"\n onBlur={handleBlur}\n onScroll={handleScroll}\n ref={internalRef}\n role=\"table\"\n style={style}>\n {isServerLoadingAndNotReady ? null : (\n <div className=\"group/header contents\" data-taco=\"table2-header\" role=\"rowgroup\">\n {table.getHeaderGroups().map(headerGroup => (\n <div className=\"contents\" key={headerGroup.id} role=\"row\">\n {headerGroup.headers.map(header => (\n <React.Fragment key={header.id}>\n {flexRender(header.column.columnDef.header, { ...header.getContext(), scrollToIndex })}\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n )}\n {table.getRowModel().rows.length ? (\n <>\n <FocusScope>\n <div className=\"group/body contents\" data-taco=\"table2-body\" role=\"rowgroup\">\n {renderBody()}\n </div>\n </FocusScope>\n {/* This div makes sure that there is always a free space between the rows and footer when \n table height exceeds the cumulative height of all rows. See useCSSGrid.ts */}\n <div className=\"border-grey-300 col-span-full -mt-px border-t\" />\n {tableMeta.enableFooter ? (\n <div className=\"group/footer contents\" data-taco=\"table2-footer\" role=\"rowgroup\">\n {table.getFooterGroups().map(footerGroup => (\n <div className=\"contents\" key={footerGroup.id} role=\"row\">\n {footerGroup.headers.map(footer => (\n <React.Fragment key={footer.id}>\n {flexRender(footer.column.columnDef.footer, footer.getContext())}\n </React.Fragment>\n ))}\n </div>\n ))}\n {length ? <Summary length={length} table={table} /> : null}\n </div>\n ) : null}\n </>\n ) : (\n <div className=\"col-span-full min-h-[theme(spacing.8)]\">{EmptyState ? <EmptyState /> : null}</div>\n )}\n </div>\n </>\n );\n});\n\ntype Table3WithStatics = (<TType = unknown>(props: Table3Props<TType> & React.RefAttributes<Table3Ref>) => JSX.Element) & {\n Column: typeof Column;\n};\n\nexport const Table3 = fixedForwardRef(function Table3<TType = unknown>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const stringifiedChildren = String(props.children);\n // we force a remount (using key) when the child columns change because there are too many places to add children as an effect\n // this is cheaper from a complexity perspective, and probably performance wise as well\n const key = React.useMemo(() => String('tableKey_' + stringifiedChildren), [stringifiedChildren]);\n return <Table<TType> {...props} key={key} ref={ref} />;\n}) as Table3WithStatics;\nTable3.Column = Column;\n\n// hooks\nexport { useTable3DataLoader } from './hooks/useTableDataLoader';\n\n// types\nexport type {\n useTable3DataFetcher,\n useTable3DataOptions,\n useTable3DataFetcherValues as useTableDataValues,\n} from './hooks/useTableDataLoader';\n\nexport type {\n Table3Ref,\n Table3Props,\n Table3Preset,\n Table3Settings,\n Table3SettingsHandler,\n Table3RowHeight,\n Table3FilterComparator,\n Table3FilterHandler,\n Table3LoadPageHandler,\n Table3LoadAllHandler,\n Table3RowGotoHandler,\n Table3SortHandler,\n Table3Shortcuts,\n Table3ShortcutHandlerFn,\n Table3ShortcutHandlerObject,\n Table3FontSize,\n Table3SortDirection,\n Table3SortFn,\n Table3RowActionRenderer,\n Table3RowSelectionHandler,\n Table3RowExpansionRenderer,\n Table3RowDropHandler,\n Table3RowDragHandler,\n Table3RowClickHandler,\n Table3ColumnProps,\n Table3ColumnAlignment,\n Table3ColumnDataType,\n Table3ColumnHeaderMenu,\n Table3ColumnClassNameHandler,\n Table3ColumnFooterRenderer,\n Table3ColumnRenderer,\n Table3ColumnControlRenderer,\n Table3ColumnControlProps,\n} from './types';\n"],"names":["Column","_","fixedForwardRef","React","forwardRef","Table","Table3","props","ref","emptyState","EmptyState","toolbarLeft","toolbarRight","internalRef","useMergedRef","table","length","useTable","useTableRefInstanceSetup","useEffect","autoFocus","_internalRef$current","current","focus","renderBody","scrollToIndex","useTableRenderStrategy","tableMeta","options","meta","state","getState","handleKeyDown","event","isEventTriggeredOnInteractiveElement","target","hoverState","currentRow","getRowModel","rows","rowClick","rowSelection","editing","document","addEventListener","removeEventListener","handleBlur","handleScroll","columnFreezing","Promise","resolve","e","reject","className","cn","fontSize","size","style","cssGridStyle","useCssGrid","cssVars","useCssVars","rowHeight","height","opacity","columnFreezingStyle","useColumnFreezingStyle","id","isServerLoadingAndNotReady","isUsingServer","undefined","Toolbar","tableProps","total","left","right","isEditing","horizontallyScrolled","isPaused","columnSizingInfo","isResizingColumn","onBlur","onScroll","role","getHeaderGroups","map","headerGroup","key","headers","header","Fragment","flexRender","column","columnDef","getContext","FocusScope","enableFooter","getFooterGroups","footerGroup","footer","Summary","stringifiedChildren","String","children","useMemo"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAASA,MAAMA,CAAkBC,CAA2B;EACxD,OAAO,IAAI;AACf;AAMA;MACaC,eAAe,GAAGC,cAAK,CAACC;AAErC,MAAMC,KAAK,gBAAGH,eAAe,CAAC,SAASI,MAAMA,CAAkBC,KAAyB,EAAEC,GAAyB;EAC/G,MAAM;IAAEC,UAAU,EAAEC,UAAU;IAAEC,WAAW;IAAEC;GAAc,GAAGL,KAAK;EACnE,MAAMM,WAAW,GAAGC,YAAY,CAAYN,GAAG,CAAC;EAEhD,MAAM;IAAEO,KAAK;IAAEC;GAAQ,GAAGC,QAAQ,CAAQV,KAAK,CAAC;EAChDW,wBAAwB,CAACH,KAAK,EAAEF,WAAW,CAAC;EAE5CV,cAAK,CAACgB,SAAS,CAAC;IACZ,IAAIZ,KAAK,CAACa,SAAS,EAAE;MAAA,IAAAC,oBAAA;MACjB,CAAAA,oBAAA,GAAAR,WAAW,CAACS,OAAO,cAAAD,oBAAA,uBAAnBA,oBAAA,CAAqBE,KAAK,EAAE;;GAEnC,EAAE,EAAE,CAAC;EAEN,MAAM;IAAEC,UAAU;IAAEC;GAAe,GAAGC,sBAAsB,CAAQnB,KAAK,EAAEQ,KAAK,EAAEF,WAAW,CAAC;EAC9F,MAAMc,SAAS,GAAGZ,KAAK,CAACa,OAAO,CAACC,IAAwB;EACxD,MAAMC,KAAK,GAAGf,KAAK,CAACgB,QAAQ,EAAE;EAE9B5B,cAAK,CAACgB,SAAS,CAAC;IACZ,MAAMa,aAAa,GAAIC,KAAoB;;MAEvC,IAAIC,oCAAoC,CAACD,KAAK,CAACE,MAAM,CAAC,EAAE;QACpD;;MAGJR,SAAS,CAACS,UAAU,CAACJ,aAAa,CAACC,KAAK,CAAC;MACzCN,SAAS,CAACU,UAAU,CAACL,aAAa,CAACC,KAAK,EAAElB,KAAK,CAACuB,WAAW,EAAE,CAACC,IAAI,CAACvB,MAAM,EAAES,aAAa,CAAC;MACzFE,SAAS,CAACa,QAAQ,CAACR,aAAa,CAACC,KAAK,EAAElB,KAAK,CAAC;MAC9CY,SAAS,CAACc,YAAY,CAACT,aAAa,CAACC,KAAK,EAAElB,KAAK,CAAC;MAClDY,SAAS,CAACe,OAAO,CAACV,aAAa,CAACC,KAAK,CAAC;KACzC;IAEDU,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEZ,aAAa,CAAC;IAEnD,OAAO;MACHW,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEb,aAAa,CAAC;KACzD;GACJ,EAAE,EAAE,CAAC;EAEN,MAAMc,UAAU,GAAIb,KAAuB;IACvCN,SAAS,CAACe,OAAO,CAACI,UAAU,CAACb,KAAK,CAAC;GACtC;EAED,MAAMc,YAAY,aAAUd,KAAuC;IAAA;MAC/DN,SAAS,CAACqB,cAAc,CAACD,YAAY,CAACd,KAAK,CAAC;MAAC,OAAAgB,OAAA,CAAAC,OAAA;KAChD,QAAAC,CAAA;MAAA,OAAAF,OAAA,CAAAG,MAAA,CAAAD,CAAA;;;EAED,MAAME,SAAS,GAAGC,EAAE,CAChB,8GAA8G,EAC9G,uCAAuC,EACvC;IACI,SAAS,EAAE3B,SAAS,CAAC4B,QAAQ,CAACC,IAAI,KAAK,OAAO;IAC9C,SAAS,EAAE7B,SAAS,CAAC4B,QAAQ,CAACC,IAAI,KAAK,QAAQ;IAC/C,WAAW,EAAE7B,SAAS,CAAC4B,QAAQ,CAACC,IAAI,KAAK;GAC5C,CACJ;EAED,MAAM;IAAEC,KAAK,EAAEC;GAAc,GAAGC,UAAU,CAAQ5C,KAAK,CAAC;EACxD,MAAM;IAAE0C,KAAK,EAAEG;GAAS,GAAGC,UAAU,CAAClC,SAAS,CAACmC,SAAS,CAACC,MAAM,EAAEpC,SAAS,CAAC4B,QAAQ,CAACC,IAAI,CAAC;EAE1F,MAAMC,KAAK,GAAG;IACV,GAAGG,OAAO;IACV,GAAGF,YAAY;;;IAGfM,OAAO,EAAE;GACZ;EAED,MAAMC,mBAAmB,GAAGC,sBAAsB,CAAC3D,KAAK,CAAC4D,EAAE,EAAEpD,KAAK,CAAC;EACnE,MAAMqD,0BAA0B,GAAGzC,SAAS,CAAC0C,aAAa,IAAI9D,KAAK,CAACS,MAAM,KAAKsD,SAAS;EAExF,oBACInE,4DACK8D,mBAAmB,gBAAG9D;iBAAiB;KAAiC8D,mBAAmB,CAAS,GAAG,IAAI,eAC5G9D,6BAACoE,OAAO;IACJxD,KAAK,EAAEA,KAAK;IACZyD,UAAU,EAAEjE,KAAK;IACjBkE,KAAK,EAAEzD,MAAM;IACb0D,IAAI,EAAE/D,WAAW;IACjBgE,KAAK,EAAE/D,YAAY;IACnBa,aAAa,EAAEA;IACjB,eACFtB;IACIkD,SAAS,EAAEA,SAAS;IACpBc,EAAE,EAAE5D,KAAK,CAAC4D,EAAE;sBACIxC,SAAS,CAAC4B,QAAQ,CAACC,IAAI;oBACzB7B,SAAS,CAACe,OAAO,CAACkC,SAAS;kCACbjD,SAAS,CAACqB,cAAc,CAAC6B,oBAAoB;wBACvDlD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAES,UAAU,CAAC0C,QAAQ;qBACjC,CAAC,CAAChD,KAAK,CAACiD,gBAAgB,CAACC,gBAAgB;iBAC9C,QAAQ;IAClBC,MAAM,EAAEnC,UAAU;IAClBoC,QAAQ,EAAEnC,YAAY;IACtBvC,GAAG,EAAEK,WAAW;IAChBsE,IAAI,EAAC,OAAO;IACZ1B,KAAK,EAAEA;KACNW,0BAA0B,GAAG,IAAI,gBAC9BjE;IAAKkD,SAAS,EAAC,uBAAuB;iBAAW,eAAe;IAAC8B,IAAI,EAAC;KACjEpE,KAAK,CAACqE,eAAe,EAAE,CAACC,GAAG,CAACC,WAAW,iBACpCnF;IAAKkD,SAAS,EAAC,UAAU;IAACkC,GAAG,EAAED,WAAW,CAACnB,EAAE;IAAEgB,IAAI,EAAC;KAC/CG,WAAW,CAACE,OAAO,CAACH,GAAG,CAACI,MAAM,iBAC3BtF,6BAACA,cAAK,CAACuF,QAAQ;IAACH,GAAG,EAAEE,MAAM,CAACtB;KACvBwB,UAAU,CAACF,MAAM,CAACG,MAAM,CAACC,SAAS,CAACJ,MAAM,EAAE;IAAE,GAAGA,MAAM,CAACK,UAAU,EAAE;IAAErE;GAAe,CAAC,CAE7F,CAAC,CAET,CAAC,CAET,EACAV,KAAK,CAACuB,WAAW,EAAE,CAACC,IAAI,CAACvB,MAAM,gBAC5Bb,yEACIA,6BAAC4F,UAAU,qBACP5F;IAAKkD,SAAS,EAAC,qBAAqB;iBAAW,aAAa;IAAC8B,IAAI,EAAC;KAC7D3D,UAAU,EAAE,CACX,CACG,eAGbrB;IAAKkD,SAAS,EAAC;IAAkD,EAChE1B,SAAS,CAACqE,YAAY,gBACnB7F;IAAKkD,SAAS,EAAC,uBAAuB;iBAAW,eAAe;IAAC8B,IAAI,EAAC;KACjEpE,KAAK,CAACkF,eAAe,EAAE,CAACZ,GAAG,CAACa,WAAW,iBACpC/F;IAAKkD,SAAS,EAAC,UAAU;IAACkC,GAAG,EAAEW,WAAW,CAAC/B,EAAE;IAAEgB,IAAI,EAAC;KAC/Ce,WAAW,CAACV,OAAO,CAACH,GAAG,CAACc,MAAM,iBAC3BhG,6BAACA,cAAK,CAACuF,QAAQ;IAACH,GAAG,EAAEY,MAAM,CAAChC;KACvBwB,UAAU,CAACQ,MAAM,CAACP,MAAM,CAACC,SAAS,CAACM,MAAM,EAAEA,MAAM,CAACL,UAAU,EAAE,CAAC,CAEvE,CAAC,CAET,CAAC,EACD9E,MAAM,gBAAGb,6BAACiG,OAAO;IAACpF,MAAM,EAAEA,MAAM;IAAED,KAAK,EAAEA;IAAS,GAAG,IAAI,CACxD,GACN,IAAI,CACT,gBAEHZ;IAAKkD,SAAS,EAAC;KAA0C3C,UAAU,gBAAGP,6BAACO,UAAU,OAAG,GAAG,IAAI,CAC9F,CACC,CACP;AAEX,CAAC,CAAC;MAMWJ,MAAM,gBAAGJ,eAAe,CAAC,SAASI,MAAMA,CAAkBC,KAAyB,EAAEC,GAAyB;EACvH,MAAM6F,mBAAmB,GAAGC,MAAM,CAAC/F,KAAK,CAACgG,QAAQ,CAAC;;;EAGlD,MAAMhB,GAAG,GAAGpF,cAAK,CAACqG,OAAO,CAAC,MAAMF,MAAM,CAAC,WAAW,GAAGD,mBAAmB,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC;EACjG,oBAAOlG,6BAACE,KAAK,oBAAYE,KAAK;IAAEgF,GAAG,EAAEA,GAAG;IAAE/E,GAAG,EAAEA;KAAO;AAC1D,CAAC;AACDF,MAAM,CAACN,MAAM,GAAGA,MAAM;;;;"}
@@ -77,8 +77,8 @@ function createRowDragColumn(onRowDrag) {
77
77
  },
78
78
  // options
79
79
  enableResizing: false,
80
- size: 15,
81
- minSize: 15
80
+ size: 20,
81
+ minSize: 20
82
82
  };
83
83
  }
84
84
 
@@ -1 +1 @@
1
- {"version":3,"file":"Drag.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Drag.tsx"],"sourcesContent":["import React from 'react';\nimport { CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Table3RowDragHandler } from '../../../types';\nimport { Icon } from '../../../../Icon/Icon';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Footer } from '../footer/Footer';\n\nexport const COLUMN_ID = '__drag';\nconst GHOST_ELEMENT_ID = 'taco_table_dragging';\n\ntype CellProps<TType = unknown> = CellContext<TType, unknown> & {\n isSelected: boolean;\n onRowDrag: Table3RowDragHandler<TType>;\n};\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(props: CellProps<TType>) {\n const { isSelected, onRowDrag: handleRowDrag, row, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (table.options.enableRowSelection) {\n rows = isSelected ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n handleRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const handleDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging({});\n };\n\n return (\n <DisplayCell {...props}>\n <div draggable onDragStart={onDragStart} onDragOver={event => event.preventDefault()} onDragEnd={handleDragEnd}>\n <Icon\n aria-label={texts.table3.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible -mt-1 w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white\"\n />\n </div>\n </DisplayCell>\n );\n}) as <TType = unknown>(props: CellProps<TType>) => JSX.Element;\n\nexport function createRowDragColumn<TType = unknown>(onRowDrag: Table3RowDragHandler<TType>): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: ColumnHeader,\n cell: (context: CellContext<TType, unknown>) => (\n <Cell {...context} isSelected={context.row.getIsSelected()} onRowDrag={onRowDrag} />\n ),\n footer: Footer,\n meta: {\n align: 'center',\n className: '!p-0 !pt-[var(--table3-row-padding)]',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !p-0',\n },\n // options\n enableResizing: false,\n size: 15,\n minSize: 15,\n };\n}\n"],"names":["COLUMN_ID","GHOST_ELEMENT_ID","Cell","React","memo","MemoedCell","props","isSelected","onRowDrag","handleRowDrag","row","table","texts","useLocalization","tableMeta","options","meta","onDragStart","event","rows","enableRowSelection","getSelectedRowModel","data","map","original","rowDrag","setDragging","reduce","dragging","rowBeingDragged","id","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","handleDragEnd","_document$getElementB","getElementById","remove","DisplayCell","draggable","onDragOver","preventDefault","onDragEnd","Icon","table3","columns","drag","tooltip","name","createRowDragColumn","header","ColumnHeader","cell","context","getIsSelected","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size","minSize"],"mappings":"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"}
1
+ {"version":3,"file":"Drag.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Drag.tsx"],"sourcesContent":["import React from 'react';\nimport { CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Table3RowDragHandler } from '../../../types';\nimport { Icon } from '../../../../Icon/Icon';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Footer } from '../footer/Footer';\n\nexport const COLUMN_ID = '__drag';\nconst GHOST_ELEMENT_ID = 'taco_table_dragging';\n\ntype CellProps<TType = unknown> = CellContext<TType, unknown> & {\n isSelected: boolean;\n onRowDrag: Table3RowDragHandler<TType>;\n};\n\nconst Cell = React.memo(function MemoedCell<TType = unknown>(props: CellProps<TType>) {\n const { isSelected, onRowDrag: handleRowDrag, row, table } = props;\n const { texts } = useLocalization();\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (table.options.enableRowSelection) {\n rows = isSelected ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n handleRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const handleDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging({});\n };\n\n return (\n <DisplayCell {...props}>\n <div draggable onDragStart={onDragStart} onDragOver={event => event.preventDefault()} onDragEnd={handleDragEnd}>\n <Icon\n aria-label={texts.table3.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible -mt-1 w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed='true']]/row:text-white\"\n />\n </div>\n </DisplayCell>\n );\n}) as <TType = unknown>(props: CellProps<TType>) => JSX.Element;\n\nexport function createRowDragColumn<TType = unknown>(onRowDrag: Table3RowDragHandler<TType>): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: ColumnHeader,\n cell: (context: CellContext<TType, unknown>) => (\n <Cell {...context} isSelected={context.row.getIsSelected()} onRowDrag={onRowDrag} />\n ),\n footer: Footer,\n meta: {\n align: 'center',\n className: '!p-0 !pt-[var(--table3-row-padding)]',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !p-0',\n },\n // options\n enableResizing: false,\n size: 20,\n minSize: 20,\n };\n}\n"],"names":["COLUMN_ID","GHOST_ELEMENT_ID","Cell","React","memo","MemoedCell","props","isSelected","onRowDrag","handleRowDrag","row","table","texts","useLocalization","tableMeta","options","meta","onDragStart","event","rows","enableRowSelection","getSelectedRowModel","data","map","original","rowDrag","setDragging","reduce","dragging","rowBeingDragged","id","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","handleDragEnd","_document$getElementB","getElementById","remove","DisplayCell","draggable","onDragOver","preventDefault","onDragEnd","Icon","table3","columns","drag","tooltip","name","createRowDragColumn","header","ColumnHeader","cell","context","getIsSelected","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size","minSize"],"mappings":"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"}
@@ -103,7 +103,7 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
103
103
  return newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex && newProps.row.getIsSelected() !== oldProps.row.getIsSelected();
104
104
  });
105
105
  function createRowSelectionColumn(hasDrag, hasExpansion) {
106
- const size = hasDrag ? 22 : 40;
106
+ const size = hasDrag && hasExpansion ? 22 : 40;
107
107
  return {
108
108
  id: COLUMN_ID,
109
109
  header: Header,
@@ -113,7 +113,7 @@ function createRowSelectionColumn(hasDrag, hasExpansion) {
113
113
  align: 'center',
114
114
  className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {
115
115
  '!pr-0.5': hasExpansion,
116
- '!pr-2.5': !hasExpansion
116
+ '!pr-3': !hasExpansion
117
117
  }),
118
118
  enableOrdering: false,
119
119
  enableSearch: false,
@@ -121,7 +121,7 @@ function createRowSelectionColumn(hasDrag, hasExpansion) {
121
121
  header: '',
122
122
  headerClassName: cn('items-center !justify-end !p-0', {
123
123
  '!pr-0.5': hasExpansion,
124
- '!pr-2.5': !hasExpansion
124
+ '!pr-3': !hasExpansion
125
125
  })
126
126
  },
127
127
  // options
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Tooltip\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </Tooltip>\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n hasDrag: boolean,\n hasExpansion: boolean\n): DisplayColumnDef<TType, unknown> {\n const size = hasDrag ? 22 : 40;\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {\n '!pr-0.5': hasExpansion,\n '!pr-2.5': !hasExpansion,\n }),\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: cn('items-center !justify-end !p-0', { '!pr-0.5': hasExpansion, '!pr-2.5': !hasExpansion }),\n },\n // options\n enableResizing: false,\n size,\n minSize: size,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","_tableMeta$rowSelecti","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","Shortcut","keys","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","hasDrag","hasExpansion","size","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","minSize"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Tooltip\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </Tooltip>\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n hasDrag: boolean,\n hasExpansion: boolean\n): DisplayColumnDef<TType, unknown> {\n const size = hasDrag && hasExpansion ? 22 : 40;\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: cn('!pt-[var(--table3-row-padding)] !justify-end !p-0', {\n '!pr-0.5': hasExpansion,\n '!pr-3': !hasExpansion,\n }),\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: cn('items-center !justify-end !p-0', { '!pr-0.5': hasExpansion, '!pr-3': !hasExpansion }),\n },\n // options\n enableResizing: false,\n size,\n minSize: size,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","_tableMeta$rowSelecti","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","Shortcut","keys","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","hasDrag","hasExpansion","size","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","minSize"],"mappings":"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"}
@@ -242,7 +242,7 @@ const MemoedRow = /*#__PURE__*/React__default.memo(function MemoedRow(props) {
242
242
  }
243
243
  setIsHovered(false);
244
244
  };
245
- const [, dropTargetProps] = useDropTarget(event => onDrop === null || onDrop === void 0 ? void 0 : onDrop(event, row.original));
245
+ const [isDraggedOver, dropTargetProps] = useDropTarget(event => onDrop === null || onDrop === void 0 ? void 0 : onDrop(event, row.original));
246
246
  const className = cn('group/row contents',
247
247
  // resizing column requires dragging, which means the mouse might (on rare occasions) move over rows and trigger hover state
248
248
  // that in turn triggers rendering of e.g. row actions, which could cause janky ui - so don't allow mouse interaction when resizing
@@ -252,6 +252,7 @@ const MemoedRow = /*#__PURE__*/React__default.memo(function MemoedRow(props) {
252
252
  return /*#__PURE__*/React__default.createElement("div", Object.assign({}, attributes, onDrop ? dropTargetProps : undefined, {
253
253
  className: className,
254
254
  "data-row-index": index,
255
+ "data-dragged-over": isDraggedOver,
255
256
  onClick: handleClick,
256
257
  onClickCapture: handleClickCapture,
257
258
  onMouseEnter: handleMouseEnter,