@economic/taco 1.38.1 → 1.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. package/dist/components/Provider/Localization.d.ts +9 -1
  2. package/dist/components/Table2/Table2.d.ts +10 -1
  3. package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +1 -0
  4. package/dist/components/Table2/components/filters/components/EmptyFilter.d.ts +13 -0
  5. package/dist/components/Table2/hooks/useTableShortcuts.d.ts +2 -0
  6. package/dist/components/Table2/types.d.ts +8 -0
  7. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +3 -3
  8. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  9. package/dist/esm/packages/taco/src/components/Provider/Localization.js +9 -1
  10. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  11. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
  12. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  13. package/dist/esm/packages/taco/src/components/Table2/Table2.js +2 -1
  14. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +1 -1
  16. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +79 -24
  18. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +14 -6
  20. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js +63 -0
  22. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/EmptyFilter.js.map +1 -0
  23. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +2 -1
  24. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +4 -1
  26. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js +46 -0
  28. package/dist/esm/packages/taco/src/components/Table2/hooks/useTableShortcuts.js.map +1 -0
  29. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  30. package/dist/esm/packages/taco/src/utils/keyboard.js +1 -1
  31. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  32. package/dist/taco.cjs.development.js +208 -39
  33. package/dist/taco.cjs.development.js.map +1 -1
  34. package/dist/taco.cjs.production.min.js +1 -1
  35. package/dist/taco.cjs.production.min.js.map +1 -1
  36. package/package.json +2 -3
  37. package/types.json +131 -3
@@ -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({ '!shadow-[0_0_0_4px_rgba(0,99,255,0.25)]': 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","column","columnDef","className","isActiveRow","activeRowIndex","isFrozen","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","onBlur","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","test","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","enableDetailModeEditing","onRowClick","onClick","HTMLElement","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","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","error","isFocusInsideTable","isBodyFocussed","body","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastFrozenColumn","lastFrozenColumnOffset","columnOffsets","undefined","columnSizing","showIndicator","hideIndicator","handleFocus","rect","getBoundingClientRect","leftOffset","scrollTo","scrollTop","handleKeyDown","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","detailModeClassName","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
1
+ {"version":3,"file":"Cell.js","sources":["../../../../../../../../../src/components/Table2/components/column/Cell.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport cn from 'classnames';\nimport { flexRender, Cell as RTCell, Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { Input } from '../../../Input/Input';\nimport { ColumnBase, ColumnBaseProps } from './Base';\nimport { getCellAlignmentClasses, getCellSizingClasses, isKeyboardFocusableElement } from '../../utilities/cell';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { Datepicker } from '../../../Datepicker/Datepicker';\nimport { Switch } from '../../../Switch/Switch';\nimport { SaveHandler, SaveHandlerErrorResponse, Table2Filter } from '../../types';\nimport { columnFilterFn, globalFilterFn } from '../../utilities/filterFn';\nimport { MOVE_DIR } from '../../hooks/useEditMode';\nimport { useRowContext } from '../row/Context';\nimport { Indicator, IndicatorReason } from './Indicator';\nimport { ValidationError } from './ValidationError';\nimport { 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","column","columnDef","className","isActiveRow","activeRowIndex","isFrozen","getIsPinned","isDragging","dragging","row","id","isSelected","getIsSelected","isDataColumn","isInternalColumn","hasCellControl","control","allVisibleColumns","getVisibleLeafColumns","lastColumnIndex","length","isEditingThisRow","isEditing","canEditThisCell","isEditingThisCell","columnIndex","isHoveringThisRowWhileEditing","shouldPauseHoverState","isIndicatorVisible","Object","keys","useEffect","current","classList","add","remove","cn","getCellSizingClasses","rowDensity","handleMouseDown","event","button","activeElement","document","isActiveElementControl","closest","hasActiveRowChanged","blur","setActiveRowIndex","includes","setColumn","attributes","onMouseDown","ref","role","detailModeEditing","setDetailModeEditing","useState","isKeyboardFocusableElement","moveRow","moveDirection","MOVE_DIR","PREV","moveToPreviousRow","nextIndex","NEXT","moveToNextRow","onSave","target","isTargetInput","nodeName","preventDefault","setTimeout","select","onBlur","firstDataColumnIndex","at","lastDataColumnIndex","onKeyDown","isControlInput","getAttribute","isDefaultPrevented","isPropagationStopped","tagName","key","input","setSelectionRange","value","test","currentTarget","contains","toggleEditing","focus","shiftKey","isFirstRow","isFirstColumn","ctrlKey","metaKey","moveToFirstColumn","moveToPreviousColumn","isLastColumn","moveToLastColumn","moveToNextColumn","setShouldPauseHoverState","ColumnBase","EditingCell","cellRef","rowValues","original","rowsLength","enableDetailModeEditing","onRowClick","onClick","HTMLElement","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","hasChanged","updatedRow","shouldPauseSortingAndFiltering","lastSortedOrFilteredRows","error","isFocusInsideTable","isBodyFocussed","body","pinnedColumnsWidth","useMemo","pinnedColumns","columnPinning","left","Array","isArray","lastFrozenColumn","lastFrozenColumnOffset","columnOffsets","undefined","columnSizing","showIndicator","hideIndicator","handleFocus","rect","getBoundingClientRect","leftOffset","scrollTo","scrollTop","handleKeyDown","willRowMoveReason","isFilteredByGlobalFilter","values","some","cellValue","globalFilterFn","String","IndicatorReason","SEARCH","getIsFiltered","columnFilterFn","getFilterValue","FILTER","getIsSorted","willRowMoveAfterSorting","getRowModel","sorting","find","s","desc","SORTING","setShouldPauseSortingAndFiltering","prevState","newState","cellControl","onFocus","getCellAlignmentClasses","align","indicatorMountNode","parentElement","querySelector","controlComponent","detailModeClassName","invalid","setValue","Datepicker","newDate","detail","onChange","Switch","checked","Boolean","Input","indicatorReason","Indicator","reason","columnName","mountNode","ValidationError"],"mappings":"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"}
@@ -4,11 +4,12 @@ import { Icon } from '../../../Icon/Icon.js';
4
4
  import { useLocalization } from '../../../Provider/Localization.js';
5
5
  import { Button } from '../../../Button/Button.js';
6
6
  import { Popover } from '../../../Popover/Popover.js';
7
- import { Group } from '../../../Group/Group.js';
8
7
  import { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown.js';
9
8
  import { Shortcut } from '../../../Shortcut/Shortcut.js';
10
9
  import { isInternalColumn } from '../../utilities/columns.js';
10
+ import { Table2FilterComparator } from '../../types.js';
11
11
  import { ColumnFilter } from './components/ColumnFilter.js';
12
+ import { EmptyFilter } from './components/EmptyFilter.js';
12
13
 
13
14
  const FiltersButton = ({
14
15
  length,
@@ -18,7 +19,10 @@ const FiltersButton = ({
18
19
  texts
19
20
  } = useLocalization();
20
21
  const ref = React__default.useRef(null);
21
- const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));
22
+ const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort((a, b) => {
23
+ var _a$columnDef, _b$columnDef;
24
+ return (_a$columnDef = a.columnDef) === null || _a$columnDef === void 0 ? void 0 : _a$columnDef.header.localeCompare((_b$columnDef = b.columnDef) === null || _b$columnDef === void 0 ? void 0 : _b$columnDef.header);
25
+ });
22
26
  const {
23
27
  shouldDisableTableActions
24
28
  } = table.options.meta;
@@ -30,17 +34,11 @@ const FiltersButton = ({
30
34
  }
31
35
  return columns;
32
36
  }, []);
33
- const handleAdd = () => {
34
- const firstFilterableColumn = allColumns.find(c => c.getCanFilter() && !columnFilters.find(f => f.id === c.id));
35
- if (firstFilterableColumn) {
36
- firstFilterableColumn.setFilterValue({
37
- comparator: undefined,
38
- value: undefined
39
- });
40
- }
41
- };
37
+ const [emptyFilterCount, setEmptyFilterCount] = React__default.useState(1);
38
+ const handleAdd = () => setEmptyFilterCount(emptyFilterCount + 1);
42
39
  const handleReset = () => {
43
40
  table.resetColumnFilters();
41
+ setEmptyFilterCount(1);
44
42
  };
45
43
  useGlobalKeyDown({
46
44
  key: 'f',
@@ -51,37 +49,94 @@ const FiltersButton = ({
51
49
  event.preventDefault();
52
50
  (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
53
51
  });
52
+ const handleEmptyFilterChange = columnId => {
53
+ // create an actual filter on that column that the user selected
54
+ const column = allColumns.find(c => c.getCanFilter() && c.id === columnId);
55
+ if (column) {
56
+ column.setFilterValue({
57
+ comparator: undefined,
58
+ value: undefined
59
+ });
60
+ }
61
+ // hide the empty filter row because we now have a real filter
62
+ setEmptyFilterCount(emptyFilterCount - 1);
63
+ };
64
+ const handleRemove = () => {
65
+ if (filteredColumns.length === 1 && emptyFilterCount === 0) {
66
+ setEmptyFilterCount(1);
67
+ }
68
+ };
69
+ const handleRemoveEmptyFilter = () => {
70
+ setEmptyFilterCount(emptyFilterCount - 1);
71
+ };
72
+ const handleOpenChange = () => {
73
+ const emptyFilterCount = filteredColumns.length === 0 ? 1 : 0;
74
+ setEmptyFilterCount(emptyFilterCount);
75
+ };
76
+ const filters = filteredColumns.length > 0 && filteredColumns.filter(column => {
77
+ var _column$columnDef$met;
78
+ const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
79
+ const value = column.getFilterValue().value;
80
+ const comparator = column.getFilterValue().comparator;
81
+ if (Array.isArray(value)) {
82
+ if (value.length > 0 && value.find(item => item !== undefined)) {
83
+ return true;
84
+ }
85
+ } else if (value) {
86
+ return true;
87
+ } else if ([Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty].includes(comparator)) {
88
+ if (!controlType) {
89
+ return true;
90
+ }
91
+ }
92
+ return false;
93
+ });
94
+ const filtersApplied = filters && filters.length;
54
95
  return /*#__PURE__*/React__default.createElement(Button, {
55
96
  "aria-label": texts.table2.filters.tooltip,
56
- appearance: columnFilters.length ? 'primary' : 'default',
97
+ appearance: filtersApplied ? 'primary' : 'default',
57
98
  className: cn({
58
- '!wcag-blue-100': columnFilters.length
99
+ '!wcag-blue-100': filtersApplied
59
100
  }),
60
101
  disabled: shouldDisableTableActions,
61
- popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
102
+ popover: popoverProps => /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
103
+ onChange: handleOpenChange
104
+ }), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
62
105
  className: "flex w-[40rem] flex-col gap-4"
106
+ }, /*#__PURE__*/React__default.createElement("div", {
107
+ className: "flex h-8"
63
108
  }, /*#__PURE__*/React__default.createElement("div", {
64
109
  className: "flex w-full items-center gap-2"
65
110
  }, /*#__PURE__*/React__default.createElement("h4", {
66
111
  className: "mb-0 inline-flex"
67
- }, "Filter"), /*#__PURE__*/React__default.createElement("p", {
112
+ }, texts.table2.filters.button), /*#__PURE__*/React__default.createElement("p", {
68
113
  className: "text-grey-700 mb-0 mr-auto mt-px inline-flex"
69
- }, texts.table2.filters.total.replace('[CURRENT]', String(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', String(length)))), /*#__PURE__*/React__default.createElement("div", {
114
+ }, texts.table2.filters.total.replace('[CURRENT]', String(table.getFilteredRowModel().rows.length)).replace('[TOTAL]', String(length)))), columnFilters.length || emptyFilterCount > 1 ? /*#__PURE__*/React__default.createElement(Button, {
115
+ onClick: handleReset
116
+ }, texts.table2.filters.buttons.clearFilters) : null), /*#__PURE__*/React__default.createElement("div", {
70
117
  className: "flex flex-col gap-2"
71
118
  }, filteredColumns.map((column, index) => /*#__PURE__*/React__default.createElement(ColumnFilter, {
72
119
  key: `${column.id}_${index}`,
73
120
  allColumns: allColumns,
74
121
  index: index,
75
122
  column: column,
76
- table: table
77
- }))), /*#__PURE__*/React__default.createElement(Group, {
78
- className: "justify-between"
123
+ table: table,
124
+ onRemove: handleRemove
125
+ })), [...Array(emptyFilterCount)].map((_, index) => /*#__PURE__*/React__default.createElement(EmptyFilter, {
126
+ key: `emptyFilter_${index}`,
127
+ index: index,
128
+ allColumns: allColumns,
129
+ table: table,
130
+ onChange: value => handleEmptyFilterChange(value),
131
+ emptyFilterCount: emptyFilterCount,
132
+ filteredColumns: filteredColumns,
133
+ onRemove: handleRemoveEmptyFilter
134
+ })), /*#__PURE__*/React__default.createElement("div", {
135
+ className: "justify-start"
79
136
  }, /*#__PURE__*/React__default.createElement(Button, {
80
137
  appearance: "discrete",
81
138
  onClick: handleAdd
82
- }, "+ ", texts.table2.filters.buttons.addFilter), columnFilters.length ? /*#__PURE__*/React__default.createElement(Button, {
83
- onClick: handleReset
84
- }, texts.table2.filters.buttons.clearFilters) : null)))),
139
+ }, "+ ", texts.table2.filters.buttons.addNewFilter)))))),
85
140
  ref: ref,
86
141
  tooltip: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table2.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
87
142
  className: "ml-2",
@@ -92,8 +147,8 @@ const FiltersButton = ({
92
147
  }
93
148
  }))
94
149
  }, /*#__PURE__*/React__default.createElement(Icon, {
95
- name: columnFilters.length ? 'filter-solid' : 'filter'
96
- }), texts.table2.filters.button, " ", columnFilters.length ? `(${columnFilters.length})` : '');
150
+ name: filtersApplied ? 'filter-solid' : 'filter'
151
+ }), texts.table2.filters.button, " ", filtersApplied ? `(${filtersApplied})` : '');
97
152
  };
98
153
 
99
154
  export { FiltersButton };
@@ -1 +1 @@
1
- {"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { Group } from '../../../Group/Group';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../Provider/Localization';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const handleAdd = () => {\n const firstFilterableColumn = allColumns.find(c => c.getCanFilter() && !columnFilters.find(f => f.id === c.id));\n\n if (firstFilterableColumn) {\n firstFilterableColumn.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n };\n\n const handleReset = () => {\n table.resetColumnFilters();\n };\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n return (\n <Button\n aria-label={texts.table2.filters.tooltip}\n appearance={columnFilters.length ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': columnFilters.length,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">Filter</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table2.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(length))}\n </p>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n />\n ))}\n </div>\n <Group className=\"justify-between\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + {texts.table2.filters.buttons.addFilter}\n </Button>\n {columnFilters.length ? (\n <Button onClick={handleReset}>{texts.table2.filters.buttons.clearFilters}</Button>\n ) : null}\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table2.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={columnFilters.length ? 'filter-solid' : 'filter'} />\n {texts.table2.filters.button} {columnFilters.length ? `(${columnFilters.length})` : ''}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","handleAdd","firstFilterableColumn","getCanFilter","f","setFilterValue","comparator","undefined","value","handleReset","resetColumnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","Button","table2","filters","tooltip","appearance","className","cn","disabled","popover","popoverProps","Popover","Content","total","replace","String","getFilteredRowModel","rows","map","index","ColumnFilter","Group","onClick","buttons","addFilter","clearFilters","Shortcut","keys","Icon","name","button"],"mappings":"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"}
1
+ {"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter, Table2FilterComparator } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { EmptyFilter } from './components/EmptyFilter';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Select2Value } from '../../../Select2/types';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort((a, b) => (a.columnDef?.header as string).localeCompare(b.columnDef?.header as string));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const [emptyFilterCount, setEmptyFilterCount] = React.useState(1);\n\n const handleAdd = () => setEmptyFilterCount(emptyFilterCount + 1);\n\n const handleReset = () => {\n table.resetColumnFilters();\n setEmptyFilterCount(1);\n };\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n const handleEmptyFilterChange = (columnId: Select2Value) => {\n // create an actual filter on that column that the user selected\n const column = allColumns.find(c => c.getCanFilter() && c.id === columnId);\n\n if (column) {\n column.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n\n // hide the empty filter row because we now have a real filter\n setEmptyFilterCount(emptyFilterCount - 1);\n };\n\n const handleRemove = () => {\n if (filteredColumns.length === 1 && emptyFilterCount === 0) {\n setEmptyFilterCount(1);\n }\n };\n\n const handleRemoveEmptyFilter = () => {\n setEmptyFilterCount(emptyFilterCount - 1);\n };\n\n const handleOpenChange = () => {\n const emptyFilterCount = filteredColumns.length === 0 ? 1 : 0;\n setEmptyFilterCount(emptyFilterCount);\n };\n\n const filters =\n filteredColumns.length > 0 &&\n filteredColumns.filter(column => {\n const controlType = column.columnDef.meta?.control;\n const value = (column.getFilterValue() as Table2Filter).value;\n const comparator = (column.getFilterValue() as Table2Filter).comparator;\n\n if (Array.isArray(value)) {\n if (value.length > 0 && value.find(item => item !== undefined)) {\n return true;\n }\n } else if (value) {\n return true;\n } else if ([Table2FilterComparator.IsEmpty, Table2FilterComparator.IsNotEmpty].includes(comparator as number)) {\n if (!controlType) {\n return true;\n }\n }\n return false;\n });\n const filtersApplied = filters && filters.length;\n\n return (\n <Button\n aria-label={texts.table2.filters.tooltip}\n appearance={filtersApplied ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': filtersApplied,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps} onChange={handleOpenChange}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table2.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table2.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(length))}\n </p>\n </div>\n {columnFilters.length || emptyFilterCount > 1 ? (\n <Button onClick={handleReset}>{texts.table2.filters.buttons.clearFilters}</Button>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n onRemove={handleRemove}\n />\n ))}\n {[...Array(emptyFilterCount)].map((_, index) => (\n <EmptyFilter\n key={`emptyFilter_${index}`}\n index={index}\n allColumns={allColumns}\n table={table}\n onChange={value => handleEmptyFilterChange(value)}\n emptyFilterCount={emptyFilterCount}\n filteredColumns={filteredColumns}\n onRemove={handleRemoveEmptyFilter}\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + {texts.table2.filters.buttons.addNewFilter}\n </Button>\n </div>\n </div>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table2.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={filtersApplied ? 'filter-solid' : 'filter'} />\n {texts.table2.filters.button} {filtersApplied ? `(${filtersApplied})` : ''}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","a","b","columnDef","header","localeCompare","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","emptyFilterCount","setEmptyFilterCount","useState","handleAdd","handleReset","resetColumnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","handleEmptyFilterChange","columnId","getCanFilter","setFilterValue","comparator","undefined","value","handleRemove","handleRemoveEmptyFilter","handleOpenChange","filters","controlType","control","getFilterValue","Array","isArray","item","Table2FilterComparator","IsEmpty","IsNotEmpty","includes","filtersApplied","Button","table2","tooltip","appearance","className","cn","disabled","popover","popoverProps","Popover","onChange","Content","button","total","replace","String","getFilteredRowModel","rows","onClick","buttons","clearFilters","map","index","ColumnFilter","onRemove","_","EmptyFilter","addNewFilter","Shortcut","keys","Icon","name"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import { IconButton } from '../../../../IconButton/IconButton.js';
3
+ import { useLocalization } from '../../../../Provider/Localization.js';
3
4
  import { Input } from '../../../../Input/Input.js';
4
5
  import { Datepicker } from '../../../../Datepicker/Datepicker.js';
5
6
  import { Switch } from '../../../../Switch/Switch.js';
@@ -9,18 +10,22 @@ import { Comparator } from './Comparator.js';
9
10
  import { InferredControl } from './InferredControl.js';
10
11
 
11
12
  const ColumnFilter = props => {
12
- var _column$columnDef$hea, _column$columnDef$met, _control;
13
+ var _column$columnDef$hea, _column$columnDef$met;
13
14
  const {
14
15
  allColumns,
15
16
  column,
16
17
  index,
17
- table
18
+ table,
19
+ onRemove
18
20
  } = props;
19
21
  const {
20
22
  comparator,
21
23
  value
22
24
  } = column.getFilterValue();
23
25
  const ariaLabel = String((_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : '');
26
+ const {
27
+ texts
28
+ } = useLocalization();
24
29
  const ref = React__default.useRef(null);
25
30
  let control;
26
31
  const controlType = (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.control;
@@ -65,13 +70,16 @@ const ColumnFilter = props => {
65
70
  }))
66
71
  });
67
72
  }
68
- const handleRemove = () => column.setFilterValue(undefined);
73
+ const handleRemove = () => {
74
+ column.setFilterValue(undefined);
75
+ onRemove === null || onRemove === void 0 ? void 0 : onRemove();
76
+ };
69
77
  const comparators = guessComparatorsBasedOnControl(control, controlType);
70
78
  return /*#__PURE__*/React__default.createElement("div", {
71
- className: "mb-2 flex gap-2"
79
+ className: "flex gap-2"
72
80
  }, /*#__PURE__*/React__default.createElement("div", {
73
81
  className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
74
- }, index === 0 ? 'Where' : 'And'), /*#__PURE__*/React__default.createElement(Column, {
82
+ }, index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and), /*#__PURE__*/React__default.createElement(Column, {
75
83
  className: "!w-32 flex-shrink-0",
76
84
  allColumns: allColumns,
77
85
  column: column,
@@ -84,7 +92,7 @@ const ColumnFilter = props => {
84
92
  validComparators: comparators
85
93
  }), comparator !== undefined ? /*#__PURE__*/React__default.createElement("div", {
86
94
  className: "flex flex-grow items-center"
87
- }, (_control = control) !== null && _control !== void 0 ? _control : /*#__PURE__*/React__default.createElement(InferredControl, {
95
+ }, /*#__PURE__*/React__default.createElement(InferredControl, {
88
96
  column: column,
89
97
  comparator: comparator,
90
98
  value: value
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control;\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => column.setFilterValue(undefined);\n const comparators = guessComparatorsBasedOnControl(control, controlType);\n\n return (\n <div className=\"mb-2 flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {index === 0 ? 'Where' : 'And'}\n </div>\n <Column className=\"!w-32 flex-shrink-0\" allColumns={allColumns} column={column} index={index} table={table} />\n <Comparator className=\"!w-32 flex-shrink-0\" column={column} comparator={comparator} validComparators={comparators} />\n {comparator !== undefined ? (\n <div className=\"flex flex-grow items-center\">\n {control ?? <InferredControl column={column} comparator={comparator} value={value} />}\n </div>\n ) : null}\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n};\n\nconst guessComparatorsBasedOnControl = (instance: JSX.Element, control?: Table2ColumnControlRenderer) => {\n if (React.isValidElement(instance)) {\n const { props, type } = instance as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];\n }\n\n return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];\n }\n }\n\n switch (control) {\n case 'datepicker':\n return [\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n\n case 'switch':\n return [Table2FilterComparator.IsEqualTo];\n\n default:\n return [\n Table2FilterComparator.Contains,\n Table2FilterComparator.DoesNotContain,\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsEmpty,\n Table2FilterComparator.IsNotEmpty,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n }\n};\n"],"names":["ColumnFilter","props","allColumns","column","index","table","comparator","value","getFilterValue","ariaLabel","String","columnDef","header","ref","React","useRef","control","controlType","meta","onBlur","Promise","resolve","onFocus","setValue","setFilterValue","currentValue","disabled","readOnly","Input","onChange","event","target","Datepicker","detail","Switch","checked","Boolean","handleRemove","undefined","comparators","guessComparatorsBasedOnControl","className","Column","Comparator","validComparators","InferredControl","IconButton","appearance","icon","onClick","instance","isValidElement","type","displayName","multiple","Table2FilterComparator","IsOneOf","IsNoneOf","IsAllOf","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsBetween","Contains","DoesNotContain","IsEmpty","IsNotEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\nimport { useLocalization } from '../../../../Provider/Localization';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n onRemove?: () => void;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table, onRemove } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const { texts } = useLocalization();\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control;\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => {\n column.setFilterValue(undefined);\n onRemove?.();\n };\n const comparators = guessComparatorsBasedOnControl(control, controlType);\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {index === 0 ? texts.table2.filters.conditions.where : texts.table2.filters.conditions.and}\n </div>\n <Column className=\"!w-32 flex-shrink-0\" allColumns={allColumns} column={column} index={index} table={table} />\n <Comparator className=\"!w-32 flex-shrink-0\" column={column} comparator={comparator} validComparators={comparators} />\n {comparator !== undefined ? (\n <div className=\"flex flex-grow items-center\">\n <InferredControl column={column} comparator={comparator} value={value} />\n </div>\n ) : null}\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n};\n\nconst guessComparatorsBasedOnControl = (instance: JSX.Element, control?: Table2ColumnControlRenderer) => {\n if (React.isValidElement(instance)) {\n const { props, type } = instance as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];\n }\n\n return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];\n }\n }\n\n switch (control) {\n case 'datepicker':\n return [\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n\n case 'switch':\n return [Table2FilterComparator.IsEqualTo];\n\n default:\n return [\n Table2FilterComparator.Contains,\n Table2FilterComparator.DoesNotContain,\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsEmpty,\n Table2FilterComparator.IsNotEmpty,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n }\n};\n"],"names":["ColumnFilter","props","allColumns","column","index","table","onRemove","comparator","value","getFilterValue","ariaLabel","String","columnDef","header","texts","useLocalization","ref","React","useRef","control","controlType","meta","onBlur","Promise","resolve","onFocus","setValue","setFilterValue","currentValue","disabled","readOnly","Input","onChange","event","target","Datepicker","detail","Switch","checked","Boolean","handleRemove","undefined","comparators","guessComparatorsBasedOnControl","className","table2","filters","conditions","where","and","Column","Comparator","validComparators","InferredControl","IconButton","appearance","icon","onClick","instance","isValidElement","type","displayName","multiple","Table2FilterComparator","IsOneOf","IsNoneOf","IsAllOf","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsBetween","Contains","DoesNotContain","IsEmpty","IsNotEmpty"],"mappings":"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"}