@economic/taco 1.21.1 → 1.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/components/Provider/Localization.d.ts +70 -7
  2. package/dist/components/Table2/Table2.d.ts +74 -9
  3. package/dist/components/Table2/Table2.stories.d.ts +0 -1
  4. package/dist/components/Table2/components/EditModeButton.d.ts +1 -0
  5. package/dist/components/Table2/components/filters/components/InferredControl.d.ts +1 -1
  6. package/dist/components/Table2/types.d.ts +7 -4
  7. package/dist/components/Table2/utilities/columns.d.ts +5 -4
  8. package/dist/esm/packages/taco/src/components/Provider/Localization.js +70 -7
  9. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +1 -0
  11. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Select2/Select2.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table2/Table2.js +17 -6
  15. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +24 -22
  17. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +23 -4
  19. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +1 -1
  20. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +6 -2
  21. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +1 -1
  22. package/dist/esm/packages/taco/src/components/Table2/components/Search.js +5 -0
  23. package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js +14 -16
  25. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +14 -6
  27. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +6 -2
  29. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +10 -12
  31. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +10 -5
  33. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -1
  34. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +5 -5
  35. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -1
  36. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js +20 -12
  37. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js +3 -0
  39. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +4 -3
  41. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +8 -4
  43. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +1 -5
  45. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Table2/types.js +2 -0
  47. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +1 -1
  49. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +31 -37
  51. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js +4 -0
  53. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +1 -1
  54. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js +2 -1
  55. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js.map +1 -1
  56. package/dist/taco.cjs.development.js +274 -151
  57. package/dist/taco.cjs.development.js.map +1 -1
  58. package/dist/taco.cjs.production.min.js +1 -1
  59. package/dist/taco.cjs.production.min.js.map +1 -1
  60. package/package.json +2 -2
  61. package/types.json +316 -9
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n disabled?: boolean;\n readOnly?: boolean;\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 className?: string;\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n defaultPinned?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnPinning?: ColumnPinningState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: (React.ReactElement<Table2ColumnProps<TType>> | boolean | null)[];\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnPinning?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: (row: TType) => JSX.Element;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAeYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;AACX,CAAC,EAXWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table2/types.ts"],"sourcesContent":["import React from 'react';\nimport {\n ColumnFiltersState,\n ColumnOrderState,\n ColumnPinningState,\n ColumnSizingState,\n OnChangeFn,\n Row,\n SortingState,\n VisibilityState,\n} from '@tanstack/react-table';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { IconName } from '../Icon/Icon';\nimport { MenuProps } from '../Menu/Menu';\n\nexport enum Table2FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsOneOf,\n IsNoneOf,\n IsAllOf,\n IsEmpty,\n IsNotEmpty,\n}\n\nexport type Table2Filter<TType = any> = {\n comparator?: Table2FilterComparator;\n value: TType | TType[];\n};\n\nexport type ColumnOffsetState = Record<string, number | undefined>;\nexport type RowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type CellAlignment = 'left' | 'center' | 'right';\n\nexport type SortDirection = 'asc' | 'desc';\nexport type ColumnDataType = 'auto' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\n\nexport type Table2ToolbarProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport type Table2ColumnHeaderRenderer<TType = any> = (value: any, row: TType) => JSX.Element | string | null;\nexport type Table2ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\nexport type Table2ColumnFooterRenderer = (values: any[]) => JSX.Element | string | null;\n\nexport type Table2ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur: (newValue?: any) => Promise<void>;\n onFocus: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n // This is a temporary fix to enable up/down arrow key shortcuts on input in quick mode. For some reason,\n // the preventDefault is true on Taco Input, so the keyboard shortcuts doesn't work. By adding this\n // data attribute we make sure the event is coming from a control component, and then we can make sure\n // keyboard shortcut works as expected.\n 'data-inline-editing-component'?: 'true';\n};\nexport type Table2ColumnControlRenderer<TType = any> =\n | ((props: Table2ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch';\n\nexport type Table2ColumnProps<TType = any> = {\n accessor: string;\n align?: CellAlignment;\n className?: string | ((row: Row<TType>) => string);\n control?: Table2ColumnControlRenderer<TType>;\n dataType?: ColumnDataType;\n defaultActiveColumnIndex?: number;\n defaultActiveRowIndex?: number;\n defaultHidden?: boolean;\n defaultPinned?: boolean;\n disableFiltering?: boolean;\n disableHiding?: boolean;\n disableReordering?: boolean;\n disableResizing?: boolean;\n disableSorting?: boolean;\n disableTruncation?: boolean;\n defaultWidth?: number;\n header: string;\n headerClassName?: string;\n footer?: Table2ColumnFooterRenderer;\n renderer?: Table2ColumnHeaderRenderer<TType>;\n menu?: Table2ColumnHeaderMenu;\n minWidth?: number;\n sort?: SortDirection;\n tooltip?: string;\n};\n\nexport type Table2ActionProps<TType> = {\n dialog?: (rows: TType[], resetSelectedRows: () => void) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((rows: TType[]) => boolean);\n icon: IconName | ((rows: TType[]) => IconName);\n onClick?: (rows: TType[], resetSelectedRows: () => void) => void;\n text: string | ((rows: TType[]) => string);\n visible?: boolean | ((rows: TType[]) => boolean);\n};\n\nexport type Table2RowActionProps<TType> = {\n ariaLabel: string | ((row: TType) => string);\n dialog?: (row: TType) => (props: Partial<DialogProps>) => JSX.Element;\n disabled?: boolean | ((row: TType) => boolean);\n icon: IconName | ((row: TType) => IconName);\n onClick?: (row: TType) => void;\n text: string | ((row: TType) => string);\n visible?: boolean | ((row: TType) => boolean);\n};\n\nexport type Table2Settings = {\n columnFilters?: ColumnFiltersState;\n columnOrder?: ColumnOrderState;\n columnPinning?: ColumnPinningState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n globalFilter?: string;\n rowDensity?: RowDensity;\n sorting?: SortingState;\n};\n\nexport type RowClickHandler<TType = any> = (row: TType) => void;\nexport type RowDragHandler<TType = any> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type RowSelectionHandler<TType = any> = (rows: TType[]) => void;\nexport type SortHandler = OnChangeFn<SortingState>;\nexport type SettingsHandler = OnChangeFn<Table2Settings>;\nexport type SaveHandlerErrorResponse = Record<string, string | undefined | null> | null;\nexport type SaveHandler<TType = any> = (row: TType, accessor: string) => Promise<SaveHandlerErrorResponse | void>;\n\nexport type DataColumnIndexes = {\n dataColumnStartOffset: number;\n dataColumnEndOffset: number;\n};\n\nexport type Table2Props<TType = any> = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {\n actionsForRow?: Table2RowActionProps<TType>[];\n children: (React.ReactElement<Table2ColumnProps<TType>> | boolean | null)[];\n className?: string;\n data: TType[];\n defaultActiveRowIndex?: number;\n disableColumnFiltering?: boolean;\n disableColumnHiding?: boolean;\n disableColumnPinning?: boolean;\n disableColumnReordering?: boolean;\n disableColumnResizing?: boolean;\n disableRowDensity?: boolean;\n disableRowExpansion?: boolean;\n disableRowSelection?: boolean;\n disableMultipleRowSelection?: boolean;\n disableSearch?: boolean;\n disableSorting?: boolean;\n emptyState?: () => JSX.Element;\n expandedRowRenderer?: (row: TType) => JSX.Element;\n length?: number;\n loadMore?: () => Promise<void>;\n manualColumnFiltering?: boolean;\n manualSearch?: boolean;\n manualSorting?: boolean;\n onChangeSettings?: SettingsHandler;\n onRowClick?: RowClickHandler<TType>;\n onRowDrag?: RowDragHandler<TType>;\n onRowSelect?: RowSelectionHandler<TType>;\n onSave?: SaveHandler<TType>;\n settings?: Table2Settings;\n _experimentalActionsForTable?: Table2ActionProps<TType>[];\n _experimentalActionsForTableSummary?: (rows: TType[]) => JSX.Element | string;\n};\n"],"names":["Table2FilterComparator"],"mappings":"IAeYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,2EAAQ;EACRA,yEAAO;EACPA,0EAAO;EACPA,gFAAU;AACd,CAAC,EAbWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
@@ -14,7 +14,7 @@ const getDensityPadding = (density, editing = false) => {
14
14
  }
15
15
  };
16
16
  const getCellSizingClasses = (density = 'normal', editing = false) => {
17
- return cn('flex items-center', getDensityPadding(density, editing), editing ? 'px-[7px]' : 'px-4');
17
+ return cn('min-h-0 flex items-start', getDensityPadding(density, editing), editing ? 'px-[7px]' : 'px-4');
18
18
  };
19
19
  const getCellAlignmentClasses = (alignment = 'left') => ({
20
20
  'justify-start text-left': alignment === 'left',
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sources":["../../../../../../../../src/components/Table2/utilities/cell.ts"],"sourcesContent":["import cn from 'classnames';\nimport { Column } from '@tanstack/react-table';\nimport { CellAlignment, RowDensity } from '../types';\nimport { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION } from './columns';\n\nconst getDensityPadding = (density: RowDensity, editing = false) => {\n switch (density) {\n case 'compact':\n return editing ? 'py-0' : 'py-1.5';\n case 'comfortable':\n return editing ? 'py-2' : 'py-3.5';\n case 'spacious':\n return editing ? 'py-3' : 'py-5';\n default:\n return editing ? 'py-1' : 'py-2.5';\n }\n};\n\nexport const getCellSizingClasses = (density: RowDensity = 'normal', editing = false) => {\n return cn('flex items-center', getDensityPadding(density, editing), editing ? 'px-[7px]' : 'px-4');\n};\n\nexport const getCellAlignmentClasses = (alignment: CellAlignment = 'left') => ({\n 'justify-start text-left': alignment === 'left',\n 'justify-end text-right': alignment === 'right',\n 'justify-center text-center': alignment === 'center',\n});\n\nexport const getPinnedShadowClasses = (column: Column<any, any>, columnPinning: string[], isHorizontallyOffset: boolean) => {\n const pinned = !!column.getIsPinned();\n\n // react-table has column.getPinnedIndex() but it does not exclude hidden columns, so the number is wrong\n const pinnedIndex = columnPinning.indexOf(column.id);\n const isLastPinned = pinned && pinnedIndex === columnPinning.length - 1;\n const hidePinnedShadow =\n !isHorizontallyOffset && (column.id === COLUMN_ID_FOR_EXPANSION || column.id === COLUMN_ID_FOR_SELECTION);\n\n return {\n 'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]': isLastPinned && isHorizontallyOffset,\n 'shadow-[1px_0px_0px_theme(colors.grey.300)]': isLastPinned && !isHorizontallyOffset && !hidePinnedShadow,\n };\n};\n\nexport const isKeyboardFocusableElement = (element: Element) => {\n const focussableNodeNames = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS'];\n\n return (\n focussableNodeNames.includes(element.nodeName) &&\n !element.hasAttribute('disabled') &&\n !element.hasAttribute('readonly') &&\n !element.getAttribute('aria-hidden')\n );\n};\n"],"names":["getDensityPadding","density","editing","getCellSizingClasses","cn","getCellAlignmentClasses","alignment","getPinnedShadowClasses","column","columnPinning","isHorizontallyOffset","pinned","getIsPinned","pinnedIndex","indexOf","id","isLastPinned","length","hidePinnedShadow","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_SELECTION","isKeyboardFocusableElement","element","focussableNodeNames","includes","nodeName","hasAttribute","getAttribute"],"mappings":";;;AAKA,MAAMA,iBAAiB,GAAG,CAACC,OAAmB,EAAEC,OAAO,GAAG,KAAK;EAC3D,QAAQD,OAAO;IACX,KAAK,SAAS;MACV,OAAOC,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,aAAa;MACd,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,UAAU;MACX,OAAOA,OAAO,GAAG,MAAM,GAAG,MAAM;IACpC;MACI,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;;AAE9C,CAAC;MAEYC,oBAAoB,GAAG,CAACF,UAAsB,QAAQ,EAAEC,OAAO,GAAG,KAAK;EAChF,OAAOE,EAAE,CAAC,mBAAmB,EAAEJ,iBAAiB,CAACC,OAAO,EAAEC,OAAO,CAAC,EAAEA,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AACtG;MAEaG,uBAAuB,GAAG,CAACC,YAA2B,MAAM,MAAM;EAC3E,yBAAyB,EAAEA,SAAS,KAAK,MAAM;EAC/C,wBAAwB,EAAEA,SAAS,KAAK,OAAO;EAC/C,4BAA4B,EAAEA,SAAS,KAAK;CAC/C;MAEYC,sBAAsB,GAAG,CAACC,MAAwB,EAAEC,aAAuB,EAAEC,oBAA6B;EACnH,MAAMC,MAAM,GAAG,CAAC,CAACH,MAAM,CAACI,WAAW,EAAE;;EAGrC,MAAMC,WAAW,GAAGJ,aAAa,CAACK,OAAO,CAACN,MAAM,CAACO,EAAE,CAAC;EACpD,MAAMC,YAAY,GAAGL,MAAM,IAAIE,WAAW,KAAKJ,aAAa,CAACQ,MAAM,GAAG,CAAC;EACvE,MAAMC,gBAAgB,GAClB,CAACR,oBAAoB,KAAKF,MAAM,CAACO,EAAE,KAAKI,uBAAuB,IAAIX,MAAM,CAACO,EAAE,KAAKK,uBAAuB,CAAC;EAE7G,OAAO;IACH,uEAAuE,EAAEJ,YAAY,IAAIN,oBAAoB;IAC7G,6CAA6C,EAAEM,YAAY,IAAI,CAACN,oBAAoB,IAAI,CAACQ;GAC5F;AACL;MAEaG,0BAA0B,GAAIC,OAAgB;EACvD,MAAMC,mBAAmB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;EAErF,OACIA,mBAAmB,CAACC,QAAQ,CAACF,OAAO,CAACG,QAAQ,CAAC,IAC9C,CAACH,OAAO,CAACI,YAAY,CAAC,UAAU,CAAC,IACjC,CAACJ,OAAO,CAACI,YAAY,CAAC,UAAU,CAAC,IACjC,CAACJ,OAAO,CAACK,YAAY,CAAC,aAAa,CAAC;AAE5C;;;;"}
1
+ {"version":3,"file":"cell.js","sources":["../../../../../../../../src/components/Table2/utilities/cell.ts"],"sourcesContent":["import cn from 'classnames';\nimport { Column } from '@tanstack/react-table';\nimport { CellAlignment, RowDensity } from '../types';\nimport { COLUMN_ID_FOR_EXPANSION, COLUMN_ID_FOR_SELECTION } from './columns';\n\nconst getDensityPadding = (density: RowDensity, editing = false) => {\n switch (density) {\n case 'compact':\n return editing ? 'py-0' : 'py-1.5';\n case 'comfortable':\n return editing ? 'py-2' : 'py-3.5';\n case 'spacious':\n return editing ? 'py-3' : 'py-5';\n default:\n return editing ? 'py-1' : 'py-2.5';\n }\n};\n\nexport const getCellSizingClasses = (density: RowDensity = 'normal', editing = false) => {\n return cn('min-h-0 flex items-start', getDensityPadding(density, editing), editing ? 'px-[7px]' : 'px-4');\n};\n\nexport const getCellAlignmentClasses = (alignment: CellAlignment = 'left') => ({\n 'justify-start text-left': alignment === 'left',\n 'justify-end text-right': alignment === 'right',\n 'justify-center text-center': alignment === 'center',\n});\n\nexport const getPinnedShadowClasses = (column: Column<any, any>, columnPinning: string[], isHorizontallyOffset: boolean) => {\n const pinned = !!column.getIsPinned();\n\n // react-table has column.getPinnedIndex() but it does not exclude hidden columns, so the number is wrong\n const pinnedIndex = columnPinning.indexOf(column.id);\n const isLastPinned = pinned && pinnedIndex === columnPinning.length - 1;\n const hidePinnedShadow =\n !isHorizontallyOffset && (column.id === COLUMN_ID_FOR_EXPANSION || column.id === COLUMN_ID_FOR_SELECTION);\n\n return {\n 'shadow-[6px_0px_6px_rgb(0_0_0/8%),1px_0px_0px_theme(colors.grey.300)]': isLastPinned && isHorizontallyOffset,\n 'shadow-[1px_0px_0px_theme(colors.grey.300)]': isLastPinned && !isHorizontallyOffset && !hidePinnedShadow,\n };\n};\n\nexport const isKeyboardFocusableElement = (element: Element) => {\n const focussableNodeNames = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS'];\n\n return (\n focussableNodeNames.includes(element.nodeName) &&\n !element.hasAttribute('disabled') &&\n !element.hasAttribute('readonly') &&\n !element.getAttribute('aria-hidden')\n );\n};\n"],"names":["getDensityPadding","density","editing","getCellSizingClasses","cn","getCellAlignmentClasses","alignment","getPinnedShadowClasses","column","columnPinning","isHorizontallyOffset","pinned","getIsPinned","pinnedIndex","indexOf","id","isLastPinned","length","hidePinnedShadow","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_SELECTION","isKeyboardFocusableElement","element","focussableNodeNames","includes","nodeName","hasAttribute","getAttribute"],"mappings":";;;AAKA,MAAMA,iBAAiB,GAAG,CAACC,OAAmB,EAAEC,OAAO,GAAG,KAAK;EAC3D,QAAQD,OAAO;IACX,KAAK,SAAS;MACV,OAAOC,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,aAAa;MACd,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;IACtC,KAAK,UAAU;MACX,OAAOA,OAAO,GAAG,MAAM,GAAG,MAAM;IACpC;MACI,OAAOA,OAAO,GAAG,MAAM,GAAG,QAAQ;;AAE9C,CAAC;MAEYC,oBAAoB,GAAG,CAACF,UAAsB,QAAQ,EAAEC,OAAO,GAAG,KAAK;EAChF,OAAOE,EAAE,CAAC,0BAA0B,EAAEJ,iBAAiB,CAACC,OAAO,EAAEC,OAAO,CAAC,EAAEA,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAC7G;MAEaG,uBAAuB,GAAG,CAACC,YAA2B,MAAM,MAAM;EAC3E,yBAAyB,EAAEA,SAAS,KAAK,MAAM;EAC/C,wBAAwB,EAAEA,SAAS,KAAK,OAAO;EAC/C,4BAA4B,EAAEA,SAAS,KAAK;CAC/C;MAEYC,sBAAsB,GAAG,CAACC,MAAwB,EAAEC,aAAuB,EAAEC,oBAA6B;EACnH,MAAMC,MAAM,GAAG,CAAC,CAACH,MAAM,CAACI,WAAW,EAAE;;EAGrC,MAAMC,WAAW,GAAGJ,aAAa,CAACK,OAAO,CAACN,MAAM,CAACO,EAAE,CAAC;EACpD,MAAMC,YAAY,GAAGL,MAAM,IAAIE,WAAW,KAAKJ,aAAa,CAACQ,MAAM,GAAG,CAAC;EACvE,MAAMC,gBAAgB,GAClB,CAACR,oBAAoB,KAAKF,MAAM,CAACO,EAAE,KAAKI,uBAAuB,IAAIX,MAAM,CAACO,EAAE,KAAKK,uBAAuB,CAAC;EAE7G,OAAO;IACH,uEAAuE,EAAEJ,YAAY,IAAIN,oBAAoB;IAC7G,6CAA6C,EAAEM,YAAY,IAAI,CAACN,oBAAoB,IAAI,CAACQ;GAC5F;AACL;MAEaG,0BAA0B,GAAIC,OAAgB;EACvD,MAAMC,mBAAmB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;EAErF,OACIA,mBAAmB,CAACC,QAAQ,CAACF,OAAO,CAACG,QAAQ,CAAC,IAC9C,CAACH,OAAO,CAACI,YAAY,CAAC,UAAU,CAAC,IACjC,CAACJ,OAAO,CAACI,YAAY,CAAC,UAAU,CAAC,IACjC,CAACJ,OAAO,CAACK,YAAY,CAAC,aAAa,CAAC;AAE5C;;;;"}
@@ -18,7 +18,7 @@ const toggleBetween = (fromRowIndex, toRowIndex) => {
18
18
  const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;
19
19
  return [fromIndex, toIndex];
20
20
  };
21
- function createRowDraggableColumn(onRowDrag) {
21
+ function createRowDraggableColumn(onRowDrag, texts) {
22
22
  return {
23
23
  id: COLUMN_ID_FOR_DRAGGABLE,
24
24
  cell: ({
@@ -57,7 +57,7 @@ function createRowDraggableColumn(onRowDrag) {
57
57
  onDragStart: onDragStart,
58
58
  onDragEnd: onDragEnd
59
59
  }, /*#__PURE__*/React__default.createElement(Icon, {
60
- "aria-label": "Drag row",
60
+ "aria-label": texts.table2.columns.drag.tooltip,
61
61
  name: "drag",
62
62
  className: "text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white"
63
63
  }));
@@ -73,19 +73,19 @@ function createRowDraggableColumn(onRowDrag) {
73
73
  size: 10
74
74
  };
75
75
  }
76
- function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowIndex, onRowDrag, tableRef) {
76
+ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowIndex, onRowDrag, tableRef, texts) {
77
77
  let header;
78
78
  let cell;
79
79
  if (enableMultipleRowSelection) {
80
80
  header = ({
81
81
  table
82
82
  }) => /*#__PURE__*/React__default.createElement(Tooltip, {
83
- title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? 'Deselect all' : 'Select all', /*#__PURE__*/React__default.createElement(Shortcut, {
83
+ title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? texts.table2.columns.select.deselectAll : texts.table2.columns.select.selectAll, /*#__PURE__*/React__default.createElement(Shortcut, {
84
84
  className: "ml-2",
85
85
  keys: ['Ctrl', 'A']
86
86
  }))
87
87
  }, /*#__PURE__*/React__default.createElement(Checkbox, {
88
- "aria-label": table.getIsAllPageRowsSelected() ? 'Deselect all rows' : 'Select all rows',
88
+ "aria-label": table.getIsAllPageRowsSelected() ? texts.table2.columns.select.deselectAll : texts.table2.columns.select.selectAll,
89
89
  className: "hover:border-blue !mt-0",
90
90
  checked: table.getIsAllPageRowsSelected(),
91
91
  indeterminate: table.getIsSomePageRowsSelected(),
@@ -115,12 +115,12 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
115
115
  (_tableRef$current2 = tableRef.current) === null || _tableRef$current2 === void 0 ? void 0 : _tableRef$current2.focus();
116
116
  };
117
117
  return /*#__PURE__*/React__default.createElement(Tooltip, {
118
- title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getIsAllPageRowsSelected() ? 'Deselect' : 'Select', /*#__PURE__*/React__default.createElement(Shortcut, {
118
+ title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, row.getIsSelected() ? texts.table2.columns.select.select : texts.table2.columns.select.deselect, /*#__PURE__*/React__default.createElement(Shortcut, {
119
119
  className: "ml-2",
120
120
  keys: ['Space']
121
121
  }))
122
122
  }, /*#__PURE__*/React__default.createElement(Checkbox, {
123
- "aria-label": row.getIsSelected() ? 'Deselect row' : 'Select row',
123
+ "aria-label": row.getIsSelected() ? texts.table2.columns.select.select : texts.table2.columns.select.deselect,
124
124
  className: "hover:border-blue !mt-[0.45rem]",
125
125
  checked: row.getIsSelected(),
126
126
  onClick: handleClick,
@@ -170,15 +170,15 @@ function createRowSelectionColumn(enableMultipleRowSelection, lastSelectedRowInd
170
170
  size: 46
171
171
  };
172
172
  }
173
- function createRowExpansionColumn() {
173
+ function createRowExpansionColumn(texts) {
174
174
  return {
175
175
  id: COLUMN_ID_FOR_EXPANSION,
176
176
  header: ({
177
177
  table
178
178
  }) => /*#__PURE__*/React__default.createElement(Tooltip, {
179
- title: table.getIsSomeRowsExpanded() ? 'Collapse all' : 'Expand all'
179
+ title: table.getIsSomeRowsExpanded() ? texts.table2.columns.expansion.collapseAll : texts.table2.columns.expansion.expandAll
180
180
  }, /*#__PURE__*/React__default.createElement(IconButton, {
181
- title: table.getIsSomeRowsExpanded() ? 'Collapse all rows' : 'Expand all rows',
181
+ title: table.getIsSomeRowsExpanded() ? texts.table2.columns.expansion.collapseAll : texts.table2.columns.expansion.expandAll,
182
182
  appearance: "discrete",
183
183
  className: "-mb-2 -mt-1.5",
184
184
  icon: table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double',
@@ -191,12 +191,12 @@ function createRowExpansionColumn() {
191
191
  cell: ({
192
192
  row
193
193
  }) => /*#__PURE__*/React__default.createElement(Tooltip, {
194
- title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, row.getIsExpanded() ? 'Collapse' : 'Expand', /*#__PURE__*/React__default.createElement(Shortcut, {
194
+ title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, row.getIsExpanded() ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand, /*#__PURE__*/React__default.createElement(Shortcut, {
195
195
  className: "ml-2",
196
196
  keys: ['Ctrl', row.getIsExpanded() ? '←' : '→']
197
197
  }))
198
198
  }, /*#__PURE__*/React__default.createElement(IconButton, {
199
- title: row.getIsExpanded() ? 'Collapse row' : 'Expand row',
199
+ title: row.getIsExpanded() ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand,
200
200
  appearance: "discrete",
201
201
  icon: row.getIsExpanded() ? 'chevron-down' : 'chevron-right',
202
202
  onClick: event => {
@@ -220,30 +220,19 @@ const getActionPropertyValue = (property, row) => typeof property === 'function'
220
220
  function RowActionCell({
221
221
  row,
222
222
  actions,
223
- moreActions
223
+ moreActions,
224
+ table,
225
+ texts
224
226
  }) {
225
227
  const isVisible = action => typeof action.visible !== 'undefined' ? typeof action.visible === 'function' ? action.visible(row.original) : action.visible : true;
226
228
  const visibleActions = actions.filter(isVisible);
227
229
  const visibleMoreActions = moreActions.filter(isVisible);
228
- const rowActionCellWidth = React__default.useMemo(() => {
229
- const totalButtons = visibleActions.length + (visibleMoreActions.length ? 1 : 0);
230
- // this is necessary because row actions is has this mount hover delay, which makes the
231
- // size calculation in the header get set before rendering - meaning the size doesn't include the buttons
232
- // when we cache icons this can go
233
- const paddingSize = 8;
234
- const buttonSize = 32;
235
- return paddingSize + totalButtons * buttonSize;
236
- }, [visibleActions.length, visibleMoreActions.length]);
237
- // Instead of relying on row.index to figure out whether the row is being hovered or is active. We should rely on a
238
- // CSS fix. The reason behind this is that row data or index is the initial data or index that is passed to the
239
- // table on the first render, the indexes of row changes when sorting or filtering is applied.
240
230
  // If the row is not the active row or the hovered row then actions are hidden.
241
231
  const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';
232
+ // only actions in the active row should be tabbable
233
+ const tabIndex = table.options.meta.activeRowIndex === row.index ? 0 : -1;
242
234
  return /*#__PURE__*/React__default.createElement("span", {
243
- className: "-mb-2 -mt-1.5 flex justify-end text-right",
244
- style: {
245
- width: rowActionCellWidth
246
- }
235
+ className: "-mb-2 -mt-1.5 flex justify-end text-right"
247
236
  }, visibleActions.map((action, i) => /*#__PURE__*/React__default.createElement(IconButton, {
248
237
  key: i,
249
238
  className: actionClassName,
@@ -258,15 +247,17 @@ function RowActionCell({
258
247
  action.onClick(row.original);
259
248
  }
260
249
  },
250
+ tabIndex: tabIndex,
261
251
  tooltip: getActionPropertyValue(action.text, row.original)
262
252
  })), visibleMoreActions.length ? /*#__PURE__*/React__default.createElement(IconButton, {
263
253
  className: actionClassName,
264
- "aria-label": "View other actions",
254
+ "aria-label": texts.table2.columns.actions.tooltip,
265
255
  appearance: "discrete",
266
256
  icon: "more",
267
257
  onClick: event => {
268
258
  event.preventDefault();
269
259
  },
260
+ tabIndex: tabIndex,
270
261
  menu: menuProps => /*#__PURE__*/React__default.createElement(Menu, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu.Content, null, visibleMoreActions.map((action, i) => /*#__PURE__*/React__default.createElement(Menu.Item, {
271
262
  key: i,
272
263
  dialog: action.dialog ? action.dialog(row.original) : undefined,
@@ -278,25 +269,28 @@ function RowActionCell({
278
269
  }
279
270
  }
280
271
  }, getActionPropertyValue(action.text, row.original))))),
281
- tooltip: "Other actions..."
272
+ tooltip: texts.table2.columns.actions.tooltip
282
273
  }) : null);
283
274
  }
284
- function createRowActionsColumn(rowActions) {
285
- const actions = rowActions.slice(0, 3);
286
- const moreActions = rowActions.slice(3);
275
+ function createRowActionsColumn(rowActions, texts) {
276
+ const actions = rowActions.length === 4 ? rowActions : rowActions.slice(0, 3);
277
+ const moreActions = rowActions.slice(rowActions.length === 4 ? 4 : 3);
287
278
  return {
288
279
  id: COLUMN_ID_FOR_ACTIONS,
289
280
  cell: ({
290
- row
281
+ row,
282
+ table
291
283
  }) => /*#__PURE__*/React__default.createElement(RowActionCell, {
292
284
  row: row,
293
285
  actions: actions,
294
- moreActions: moreActions
286
+ moreActions: moreActions,
287
+ texts: texts,
288
+ table: table
295
289
  }),
296
290
  meta: {
297
291
  align: 'right',
298
292
  className: row => cn('items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 bg-transparent !px-1', {
299
- 'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)] group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]': !row.getIsSelected(),
293
+ 'group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.200)]': !row.getIsSelected(),
300
294
  'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected()
301
295
  }),
302
296
  disableTruncation: true,
@@ -1 +1 @@
1
- {"version":3,"file":"columns.js","sources":["../../../../../../../../src/components/Table2/utilities/columns.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { CellContext, DisplayColumnDef, Row, TableMeta } from '@tanstack/react-table';\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { RowDragHandler, Table2RowActionProps } from '../types';\nimport { Menu } from '../../Menu/Menu';\nimport { Icon } from '../../Icon/Icon';\n\nexport const COLUMN_ID_FOR_DRAGGABLE = '__draggable';\nexport const COLUMN_ID_FOR_SELECTION = '__select';\nexport const COLUMN_ID_FOR_EXPANSION = '__expansion';\nexport const COLUMN_ID_FOR_ACTIONS = '__actions';\n\nexport const isInternalColumn = (id: string) =>\n id === COLUMN_ID_FOR_SELECTION ||\n id === COLUMN_ID_FOR_EXPANSION ||\n id === COLUMN_ID_FOR_ACTIONS ||\n id === COLUMN_ID_FOR_DRAGGABLE;\n\nexport const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls\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\nexport function createRowDraggableColumn<TType = any>(onRowDrag: RowDragHandler<TType>): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_DRAGGABLE,\n cell: ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n const onDragStart = (event: React.DragEvent): void => {\n const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n\n meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {}));\n\n const data = rows.map(row => row.original);\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 onRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n meta.setDragging({});\n };\n\n return (\n <div draggable onDragStart={onDragStart} onDragEnd={onDragEnd}>\n <Icon\n aria-label=\"Drag row\"\n name=\"drag\"\n className=\"text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white\"\n />\n </div>\n );\n },\n meta: {\n align: 'center',\n className: 'items-center !px-0',\n disableTruncation: true,\n headerClassName: 'items-center !px-0',\n },\n // sizing\n enableResizing: false,\n size: 10,\n };\n}\n\nexport function createRowSelectionColumn<TType = any>(\n enableMultipleRowSelection: boolean,\n lastSelectedRowIndex: React.MutableRefObject<number | undefined>,\n onRowDrag: RowDragHandler<TType> | undefined,\n tableRef: React.RefObject<HTMLDivElement>\n): DisplayColumnDef<TType, any> {\n let header;\n let cell;\n\n if (enableMultipleRowSelection) {\n header = ({ table }) => (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected() ? 'Deselect all' : 'Select all'}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'A']} />\n </>\n }>\n <Checkbox\n aria-label={table.getIsAllPageRowsSelected() ? 'Deselect all rows' : 'Select all rows'}\n className=\"hover:border-blue !mt-0\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={checked => table.toggleAllPageRowsSelected(checked)}\n onClick={() => {\n tableRef.current?.focus();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n );\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedRowIndex?.current || 0, row.index);\n\n table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n row.toggleSelected();\n }\n\n lastSelectedRowIndex.current = row.index;\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected() ? 'Deselect' : 'Select'}\n <Shortcut className=\"ml-2\" keys={['Space']} />\n </>\n }>\n <Checkbox\n aria-label={row.getIsSelected() ? 'Deselect row' : 'Select row'}\n className=\"hover:border-blue !mt-[0.45rem]\"\n checked={row.getIsSelected()}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={-1}\n />\n </Tooltip>\n );\n };\n } else {\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const className =\n 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n row.toggleSelected();\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <button\n className={className}\n aria-checked={row.getIsSelected()}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {row.getIsSelected() ? <span className=\"h-2.5 w-2.5 rounded-full bg-white\" /> : null}\n </button>\n );\n };\n }\n\n return {\n id: COLUMN_ID_FOR_SELECTION,\n header,\n cell,\n meta: {\n align: 'center',\n className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n disableTruncation: true,\n headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n },\n // sizing\n enableResizing: false,\n size: 46,\n };\n}\n\nexport function createRowExpansionColumn<TType = any>(): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_EXPANSION,\n header: ({ table }) => (\n <Tooltip title={table.getIsSomeRowsExpanded() ? 'Collapse all' : 'Expand all'}>\n <IconButton\n title={table.getIsSomeRowsExpanded() ? 'Collapse all rows' : 'Expand all rows'}\n appearance=\"discrete\"\n className=\"-mb-2 -mt-1.5\"\n icon={table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={event => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n cell: ({ row }: CellContext<TType, any>) => (\n <Tooltip\n title={\n <>\n {row.getIsExpanded() ? 'Collapse' : 'Expand'}\n <Shortcut className=\"ml-2\" keys={['Ctrl', row.getIsExpanded() ? '←' : '→']} />\n </>\n }>\n <IconButton\n title={row.getIsExpanded() ? 'Collapse row' : 'Expand row'}\n appearance=\"discrete\"\n icon={row.getIsExpanded() ? 'chevron-down' : 'chevron-right'}\n onClick={event => {\n event.stopPropagation();\n row.toggleExpanded();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n meta: {\n align: 'center',\n className: 'items-center !p-0',\n disableTruncation: true,\n headerClassName: 'items-center hover:!bg-white !p-0',\n },\n // sizing\n enableResizing: false,\n size: 36,\n };\n}\n\nconst getActionPropertyValue = (property, row) => (typeof property === 'function' ? property(row) : property);\n\nfunction RowActionCell<TType = {}>({ row, actions, moreActions }) {\n const isVisible = (action: Table2RowActionProps<TType>) =>\n typeof action.visible !== 'undefined'\n ? typeof action.visible === 'function'\n ? action.visible(row.original)\n : action.visible\n : true;\n\n const visibleActions = actions.filter(isVisible);\n const visibleMoreActions = moreActions.filter(isVisible);\n\n const rowActionCellWidth = React.useMemo(() => {\n const totalButtons = visibleActions.length + (visibleMoreActions.length ? 1 : 0);\n // this is necessary because row actions is has this mount hover delay, which makes the\n // size calculation in the header get set before rendering - meaning the size doesn't include the buttons\n // when we cache icons this can go\n const paddingSize = 8;\n const buttonSize = 32;\n\n return paddingSize + totalButtons * buttonSize;\n }, [visibleActions.length, visibleMoreActions.length]);\n\n // Instead of relying on row.index to figure out whether the row is being hovered or is active. We should rely on a\n // CSS fix. The reason behind this is that row data or index is the initial data or index that is passed to the\n // table on the first render, the indexes of row changes when sorting or filtering is applied.\n\n // If the row is not the active row or the hovered row then actions are hidden.\n const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';\n\n return (\n <span className=\"-mb-2 -mt-1.5 flex justify-end text-right\" style={{ width: rowActionCellWidth }}>\n {visibleActions.map((action, i) => (\n <IconButton\n key={i}\n className={actionClassName}\n aria-label={getActionPropertyValue(action.ariaLabel, row.original)}\n appearance=\"discrete\"\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={event => {\n event.stopPropagation();\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}\n tooltip={getActionPropertyValue(action.text, row.original)}\n />\n ))}\n {visibleMoreActions.length ? (\n <IconButton\n className={actionClassName}\n aria-label=\"View other actions\"\n appearance=\"discrete\"\n icon=\"more\"\n onClick={event => {\n event.preventDefault();\n }}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content>\n {visibleMoreActions.map((action, i) => (\n <Menu.Item\n key={i}\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={() => {\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}>\n {getActionPropertyValue(action.text, row.original)}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu>\n )}\n tooltip=\"Other actions...\"\n />\n ) : null}\n </span>\n );\n}\n\nexport function createRowActionsColumn<TType = any>(rowActions): DisplayColumnDef<TType, any> {\n const actions: Table2RowActionProps<TType>[] = rowActions.slice(0, 3);\n const moreActions: Table2RowActionProps<TType>[] = rowActions.slice(3);\n\n return {\n id: COLUMN_ID_FOR_ACTIONS,\n cell: ({ row }) => <RowActionCell<TType> row={row} actions={actions} moreActions={moreActions} />,\n meta: {\n align: 'right',\n className: (row: Row<any>) =>\n cn(\n 'items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 bg-transparent !px-1',\n {\n 'group-hover/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)] group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.100)]':\n !row.getIsSelected(),\n 'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected(),\n }\n ),\n disableTruncation: true,\n headerClassName: 'hover:!bg-white !px-1',\n },\n // sizing\n enableResizing: false,\n };\n}\n"],"names":["COLUMN_ID_FOR_DRAGGABLE","COLUMN_ID_FOR_SELECTION","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_ACTIONS","isInternalColumn","id","MIN_COLUMN_SIZE","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","createRowDraggableColumn","onRowDrag","cell","row","table","meta","options","GHOST_ELEMENT_ID","onDragStart","event","rows","getIsSelected","getSelectedRowModel","setDragging","reduce","dragging","rowBeingDragged","data","map","original","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","onDragEnd","getElementById","remove","React","draggable","Icon","name","align","disableTruncation","headerClassName","enableResizing","size","createRowSelectionColumn","enableMultipleRowSelection","lastSelectedRowIndex","tableRef","header","Tooltip","title","getIsAllPageRowsSelected","Shortcut","keys","Checkbox","checked","indeterminate","getIsSomePageRowsSelected","onChange","toggleAllPageRowsSelected","onClick","current","focus","tabIndex","handleClick","stopPropagation","shiftKey","index","getRowModel","slice","forEach","toggleSelected","setActiveRowIndex","role","type","createRowExpansionColumn","getIsSomeRowsExpanded","IconButton","appearance","icon","toggleAllRowsExpanded","getIsExpanded","toggleExpanded","getActionPropertyValue","property","RowActionCell","actions","moreActions","isVisible","action","visible","visibleActions","filter","visibleMoreActions","rowActionCellWidth","useMemo","totalButtons","length","paddingSize","buttonSize","actionClassName","style","width","i","key","ariaLabel","dialog","undefined","disabled","tooltip","preventDefault","menu","menuProps","Menu","Content","Item","createRowActionsColumn","rowActions","cn"],"mappings":"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"}
1
+ {"version":3,"file":"columns.js","sources":["../../../../../../../../src/components/Table2/utilities/columns.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { CellContext, DisplayColumnDef, Row, TableMeta } from '@tanstack/react-table';\nimport { Checkbox } from '../../Checkbox/Checkbox';\nimport { IconButton } from '../../IconButton/IconButton';\nimport { Shortcut } from '../../Shortcut/Shortcut';\nimport { Tooltip } from '../../Tooltip/Tooltip';\nimport { RowDragHandler, Table2RowActionProps } from '../types';\nimport { Menu } from '../../Menu/Menu';\nimport { Icon } from '../../Icon/Icon';\nimport { LocalizationTexts } from '../../Provider/Localization';\n\nexport const COLUMN_ID_FOR_DRAGGABLE = '__draggable';\nexport const COLUMN_ID_FOR_SELECTION = '__select';\nexport const COLUMN_ID_FOR_EXPANSION = '__expansion';\nexport const COLUMN_ID_FOR_ACTIONS = '__actions';\n\nexport const isInternalColumn = (id: string) =>\n id === COLUMN_ID_FOR_SELECTION ||\n id === COLUMN_ID_FOR_EXPANSION ||\n id === COLUMN_ID_FOR_ACTIONS ||\n id === COLUMN_ID_FOR_DRAGGABLE;\n\nexport const MIN_COLUMN_SIZE = 80; // accounts for padding and sort controls\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\nexport function createRowDraggableColumn<TType = any>(\n onRowDrag: RowDragHandler<TType>,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_DRAGGABLE,\n cell: ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n const onDragStart = (event: React.DragEvent): void => {\n const rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n\n meta.setDragging(rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {}));\n\n const data = rows.map(row => row.original);\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 onRowDrag(data, showPlaceholder, setDataTransfer);\n };\n\n const onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n meta.setDragging({});\n };\n\n return (\n <div draggable onDragStart={onDragStart} onDragEnd={onDragEnd}>\n <Icon\n aria-label={texts.table2.columns.drag.tooltip}\n name=\"drag\"\n className=\"text-grey-darkest invisible w-[20px] cursor-grab active:cursor-grabbing group-hover/row:visible group-[[aria-grabbed]]/row:text-white\"\n />\n </div>\n );\n },\n meta: {\n align: 'center',\n className: 'items-center !px-0',\n disableTruncation: true,\n headerClassName: 'items-center !px-0',\n },\n // sizing\n enableResizing: false,\n size: 10,\n };\n}\n\nexport function createRowSelectionColumn<TType = any>(\n enableMultipleRowSelection: boolean,\n lastSelectedRowIndex: React.MutableRefObject<number | undefined>,\n onRowDrag: RowDragHandler<TType> | undefined,\n tableRef: React.RefObject<HTMLDivElement>,\n texts: LocalizationTexts\n): DisplayColumnDef<TType, any> {\n let header;\n let cell;\n\n if (enableMultipleRowSelection) {\n header = ({ table }) => (\n <Tooltip\n title={\n <>\n {table.getIsAllPageRowsSelected()\n ? texts.table2.columns.select.deselectAll\n : texts.table2.columns.select.selectAll}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'A']} />\n </>\n }>\n <Checkbox\n aria-label={\n table.getIsAllPageRowsSelected()\n ? texts.table2.columns.select.deselectAll\n : texts.table2.columns.select.selectAll\n }\n className=\"hover:border-blue !mt-0\"\n checked={table.getIsAllPageRowsSelected()}\n indeterminate={table.getIsSomePageRowsSelected()}\n onChange={checked => table.toggleAllPageRowsSelected(checked)}\n onClick={() => {\n tableRef.current?.focus();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n );\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(lastSelectedRowIndex?.current || 0, row.index);\n\n table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n row.toggleSelected();\n }\n\n lastSelectedRowIndex.current = row.index;\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <Tooltip\n title={\n <>\n {row.getIsSelected() ? texts.table2.columns.select.select : texts.table2.columns.select.deselect}\n <Shortcut className=\"ml-2\" keys={['Space']} />\n </>\n }>\n <Checkbox\n aria-label={\n row.getIsSelected() ? texts.table2.columns.select.select : texts.table2.columns.select.deselect\n }\n className=\"hover:border-blue !mt-[0.45rem]\"\n checked={row.getIsSelected()}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={-1}\n />\n </Tooltip>\n );\n };\n } else {\n cell = ({ row, table }) => {\n const meta = table.options.meta as TableMeta<any>;\n const className =\n 'border-grey-300 focus:yt-focus flex h-5 w-5 mt-[0.45rem] flex-shrink-0 items-center justify-center self-start rounded-full border-2 bg-white hover:border-[5px] aria-checked:border-blue-500 aria-checked:bg-blue-500 hover:aria-checked:border-blue-300';\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n row.toggleSelected();\n meta.setActiveRowIndex(row.index);\n tableRef.current?.focus();\n };\n\n return (\n <button\n className={className}\n aria-checked={row.getIsSelected()}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {row.getIsSelected() ? <span className=\"h-2.5 w-2.5 rounded-full bg-white\" /> : null}\n </button>\n );\n };\n }\n\n return {\n id: COLUMN_ID_FOR_SELECTION,\n header,\n cell,\n meta: {\n align: 'center',\n className: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n disableTruncation: true,\n headerClassName: onRowDrag ? '!pl-0 !pr-3' : '!px-3',\n },\n // sizing\n enableResizing: false,\n size: 46,\n };\n}\n\nexport function createRowExpansionColumn<TType = any>(texts: LocalizationTexts): DisplayColumnDef<TType, any> {\n return {\n id: COLUMN_ID_FOR_EXPANSION,\n header: ({ table }) => (\n <Tooltip\n title={\n table.getIsSomeRowsExpanded()\n ? texts.table2.columns.expansion.collapseAll\n : texts.table2.columns.expansion.expandAll\n }>\n <IconButton\n title={\n table.getIsSomeRowsExpanded()\n ? texts.table2.columns.expansion.collapseAll\n : texts.table2.columns.expansion.expandAll\n }\n appearance=\"discrete\"\n className=\"-mb-2 -mt-1.5\"\n icon={table.getIsSomeRowsExpanded() ? 'chevron-down-double' : 'chevron-right-double'}\n onClick={event => {\n event.stopPropagation();\n table.toggleAllRowsExpanded(table.getIsSomeRowsExpanded() ? false : true);\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n cell: ({ row }: CellContext<TType, any>) => (\n <Tooltip\n title={\n <>\n {row.getIsExpanded() ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand}\n <Shortcut className=\"ml-2\" keys={['Ctrl', row.getIsExpanded() ? '←' : '→']} />\n </>\n }>\n <IconButton\n title={row.getIsExpanded() ? texts.table2.columns.expansion.collapse : texts.table2.columns.expansion.expand}\n appearance=\"discrete\"\n icon={row.getIsExpanded() ? 'chevron-down' : 'chevron-right'}\n onClick={event => {\n event.stopPropagation();\n row.toggleExpanded();\n }}\n tabIndex={-1}\n />\n </Tooltip>\n ),\n meta: {\n align: 'center',\n className: 'items-center !p-0',\n disableTruncation: true,\n headerClassName: 'items-center hover:!bg-white !p-0',\n },\n // sizing\n enableResizing: false,\n size: 36,\n };\n}\n\nconst getActionPropertyValue = (property, row) => (typeof property === 'function' ? property(row) : property);\n\nfunction RowActionCell<TType = {}>({ row, actions, moreActions, table, texts }) {\n const isVisible = (action: Table2RowActionProps<TType>) =>\n typeof action.visible !== 'undefined'\n ? typeof action.visible === 'function'\n ? action.visible(row.original)\n : action.visible\n : true;\n\n const visibleActions = actions.filter(isVisible);\n const visibleMoreActions = moreActions.filter(isVisible);\n\n // If the row is not the active row or the hovered row then actions are hidden.\n const actionClassName = 'group-hover/row:flex group-[[aria-current]]/row:flex hidden';\n\n // only actions in the active row should be tabbable\n const tabIndex = table.options.meta.activeRowIndex === row.index ? 0 : -1;\n\n return (\n <span className=\"-mb-2 -mt-1.5 flex justify-end text-right\">\n {visibleActions.map((action, i) => (\n <IconButton\n key={i}\n className={actionClassName}\n aria-label={getActionPropertyValue(action.ariaLabel, row.original)}\n appearance=\"discrete\"\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={event => {\n event.stopPropagation();\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}\n tabIndex={tabIndex}\n tooltip={getActionPropertyValue(action.text, row.original)}\n />\n ))}\n {visibleMoreActions.length ? (\n <IconButton\n className={actionClassName}\n aria-label={texts.table2.columns.actions.tooltip}\n appearance=\"discrete\"\n icon=\"more\"\n onClick={event => {\n event.preventDefault();\n }}\n tabIndex={tabIndex}\n menu={menuProps => (\n <Menu {...menuProps}>\n <Menu.Content>\n {visibleMoreActions.map((action, i) => (\n <Menu.Item\n key={i}\n dialog={action.dialog ? action.dialog(row.original) : undefined}\n disabled={getActionPropertyValue(action.disabled, row.original)}\n icon={getActionPropertyValue(action.icon, row.original)}\n onClick={() => {\n if (action.onClick) {\n action.onClick(row.original);\n }\n }}>\n {getActionPropertyValue(action.text, row.original)}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu>\n )}\n tooltip={texts.table2.columns.actions.tooltip}\n />\n ) : null}\n </span>\n );\n}\n\nexport function createRowActionsColumn<TType = any>(rowActions, texts: LocalizationTexts): DisplayColumnDef<TType, any> {\n const actions: Table2RowActionProps<TType>[] = rowActions.length === 4 ? rowActions : rowActions.slice(0, 3);\n const moreActions: Table2RowActionProps<TType>[] = rowActions.slice(rowActions.length === 4 ? 4 : 3);\n\n return {\n id: COLUMN_ID_FOR_ACTIONS,\n cell: ({ row, table }) => (\n <RowActionCell<TType> row={row} actions={actions} moreActions={moreActions} texts={texts} table={table} />\n ),\n meta: {\n align: 'right',\n className: (row: Row<any>) =>\n cn(\n 'items-center print:opacity-0 group-[[aria-current]]/row:sticky group-hover/row:sticky right-0 bg-transparent !px-1',\n {\n 'group-[[aria-current]]/row:!shadow-[-6px_0px_6px_theme(colors.grey.200)]': !row.getIsSelected(),\n 'shadow-[-6px_0px_6px_theme(colors.blue.100)]': row.getIsSelected(),\n }\n ),\n disableTruncation: true,\n headerClassName: 'hover:!bg-white !px-1',\n },\n // sizing\n enableResizing: false,\n };\n}\n"],"names":["COLUMN_ID_FOR_DRAGGABLE","COLUMN_ID_FOR_SELECTION","COLUMN_ID_FOR_EXPANSION","COLUMN_ID_FOR_ACTIONS","isInternalColumn","id","MIN_COLUMN_SIZE","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","createRowDraggableColumn","onRowDrag","texts","cell","row","table","meta","options","GHOST_ELEMENT_ID","onDragStart","event","rows","getIsSelected","getSelectedRowModel","setDragging","reduce","dragging","rowBeingDragged","data","map","original","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","onDragEnd","getElementById","remove","React","draggable","Icon","table2","columns","drag","tooltip","name","align","disableTruncation","headerClassName","enableResizing","size","createRowSelectionColumn","enableMultipleRowSelection","lastSelectedRowIndex","tableRef","header","Tooltip","title","getIsAllPageRowsSelected","select","deselectAll","selectAll","Shortcut","keys","Checkbox","checked","indeterminate","getIsSomePageRowsSelected","onChange","toggleAllPageRowsSelected","onClick","current","focus","tabIndex","handleClick","stopPropagation","shiftKey","index","getRowModel","slice","forEach","toggleSelected","setActiveRowIndex","deselect","role","type","createRowExpansionColumn","getIsSomeRowsExpanded","expansion","collapseAll","expandAll","IconButton","appearance","icon","toggleAllRowsExpanded","getIsExpanded","collapse","expand","toggleExpanded","getActionPropertyValue","property","RowActionCell","actions","moreActions","isVisible","action","visible","visibleActions","filter","visibleMoreActions","actionClassName","activeRowIndex","i","key","ariaLabel","dialog","undefined","disabled","length","preventDefault","menu","menuProps","Menu","Content","Item","createRowActionsColumn","rowActions","cn"],"mappings":"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"}
@@ -11,6 +11,10 @@ const globalFilterFn = (value, query) => isWeakContains(value, query);
11
11
  // before we filter - that's why this custom filter function exists
12
12
  const columnFilterFn = (value, filter) => {
13
13
  try {
14
+ if (filter.comparator === Table2FilterComparator.IsEmpty || filter.comparator === Table2FilterComparator.IsNotEmpty) {
15
+ const isEmpty = value === undefined || value === null || value === '';
16
+ return filter.comparator === Table2FilterComparator.IsEmpty ? isEmpty : !isEmpty;
17
+ }
14
18
  if (filter.value === undefined || filter.value === null || filter.value === '') {
15
19
  return true;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filterFn.js","sources":["../../../../../../../../src/components/Table2/utilities/filterFn.ts"],"sourcesContent":["import { isDate, isAfter as isAfterDate, isBefore as isBeforeDate } from 'date-fns';\nimport { Table2Filter, Table2FilterComparator } from '../types';\nimport { isWeakEqual as isWeakEqualDate } from '../../../utils/date';\n\nconst toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nconst isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nconst isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\nexport const globalFilterFn = (value: string, query: string) => isWeakContains(value, query);\n\n// the filter type is only settable on the column definition, which would re-render all columns\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport const columnFilterFn = (value: any, filter: Table2Filter) => {\n try {\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case Table2FilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case Table2FilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case Table2FilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case Table2FilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case Table2FilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case Table2FilterComparator.IsOneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) : false;\n\n case Table2FilterComparator.IsNoneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;\n\n case Table2FilterComparator.IsAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n};\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","globalFilterFn","query","columnFilterFn","filter","undefined","comparator","Table2FilterComparator","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsBetween","fromValue","toValue","IsOneOf","Array","isArray","IsNoneOf","IsAllOf","v","length","e","console","error"],"mappings":";;;;AAIA,MAAMA,WAAW,GAAIC,KAAsB,IAAKC,MAAM,CAACD,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAC,CAACE,iBAAiB,EAAE;AACvF,MAAMC,cAAc,GAAG,CAACC,IAAqB,EAAEC,KAAsB,KAAKN,WAAW,CAACK,IAAI,CAAC,CAACE,QAAQ,CAACP,WAAW,CAACM,KAAK,CAAC,CAAC;AACxH,MAAME,WAAW,GAAG,CAACH,IAAqB,EAAEC,KAAsB,KAAKN,WAAW,CAACK,IAAI,CAAC,KAAKL,WAAW,CAACM,KAAK,CAAC;MAElGG,cAAc,GAAG,CAACR,KAAa,EAAES,KAAa,KAAKN,cAAc,CAACH,KAAK,EAAES,KAAK;AAE3F;AACA;AACA;MACaC,cAAc,GAAG,CAACV,KAAU,EAAEW,MAAoB;EAC3D,IAAI;IACA,IAAIA,MAAM,CAACX,KAAK,KAAKY,SAAS,IAAID,MAAM,CAACX,KAAK,KAAK,IAAI,IAAIW,MAAM,CAACX,KAAK,KAAK,EAAE,EAAE;MAC5E,OAAO,IAAI;;IAGf,QAAQW,MAAM,CAACE,UAAU;MACrB,KAAKC,sBAAsB,CAACC,QAAQ;QAChC,OAAOZ,cAAc,CAACH,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;MAE9C,KAAKc,sBAAsB,CAACE,cAAc;QACtC,OAAO,CAACb,cAAc,CAACH,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;MAE/C,KAAKc,sBAAsB,CAACG,SAAS;QAAE;UACnC,IAAIC,MAAM,CAAClB,KAAK,CAAC,EAAE;YACf,OAAOkB,MAAM,CAACP,MAAM,CAACX,KAAK,CAAC,IAAImB,aAAe,CAACnB,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;WACtE,MAAM,IAAI,OAAOW,MAAM,CAACX,KAAK,KAAK,SAAS,EAAE;YAC1C,OAAOA,KAAK,KAAKW,MAAM,CAACX,KAAK;;UAGjC,OAAOO,WAAW,CAACP,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;;MAG3C,KAAKc,sBAAsB,CAACM,YAAY;QAAE;UACtC,IAAIF,MAAM,CAAClB,KAAK,CAAC,EAAE;YACf,OAAOkB,MAAM,CAACP,MAAM,CAACX,KAAK,CAAC,IAAImB,aAAe,CAACnB,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC,KAAK,KAAK;WAChF,MAAM,IAAI,OAAOW,MAAM,CAACX,KAAK,KAAK,SAAS,EAAE;YAC1C,OAAOA,KAAK,KAAKW,MAAM,CAACX,KAAK;;UAGjC,OAAO,CAACO,WAAW,CAACP,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;;MAG5C,KAAKc,sBAAsB,CAACO,aAAa;QAAE;UACvC,IAAIH,MAAM,CAAClB,KAAK,CAAC,EAAE;YACf,OAAOkB,MAAM,CAACP,MAAM,CAACX,KAAK,CAAC,IAAIsB,OAAW,CAACtB,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;WAClE,MAAM;YACH,MAAMuB,aAAa,GAAGC,QAAQ,CAACxB,KAAK,CAAC;YACrC,OAAO,CAACyB,KAAK,CAACF,aAAa,CAAC,IAAIZ,MAAM,CAACX,KAAK,KAAKY,SAAS,IAAIW,aAAa,GAAGZ,MAAM,CAACX,KAAK;;;MAIlG,KAAKc,sBAAsB,CAACY,UAAU;QAAE;UACpC,IAAIR,MAAM,CAAClB,KAAK,CAAC,EAAE;YACf,OAAOkB,MAAM,CAACP,MAAM,CAACX,KAAK,CAAC,IAAI2B,QAAY,CAAC3B,KAAK,EAAEW,MAAM,CAACX,KAAK,CAAC;WACnE,MAAM;YACH,MAAMuB,aAAa,GAAGC,QAAQ,CAACxB,KAAK,CAAC;YACrC,OAAO,CAACyB,KAAK,CAACF,aAAa,CAAC,IAAIZ,MAAM,CAACX,KAAK,KAAKY,SAAS,IAAIW,aAAa,GAAGZ,MAAM,CAACX,KAAK;;;MAIlG,KAAKc,sBAAsB,CAACc,SAAS;QAAE;UACnC,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGnB,MAAM,CAACX,KAAK;UAEzC,IAAIkB,MAAM,CAAClB,KAAK,CAAC,EAAE;YACf,IAAIkB,MAAM,CAACW,SAAS,CAAC,IAAIF,QAAY,CAAC3B,KAAK,EAAE6B,SAAS,CAAC,EAAE;cACrD,OAAO,KAAK;aACf,MAAM,IAAIX,MAAM,CAACY,OAAO,CAAC,IAAIR,OAAW,CAACtB,KAAK,EAAE8B,OAAO,CAAC,EAAE;cACvD,OAAO,KAAK;;YAGhB,OAAO,IAAI;WACd,MAAM;YACH,MAAMP,aAAa,GAAGC,QAAQ,CAACxB,KAAK,CAAC;YAErC,IAAIyB,KAAK,CAACF,aAAa,CAAC,EAAE;cACtB,OAAO,KAAK;;YAGhB,IAAIM,SAAS,KAAKjB,SAAS,IAAIW,aAAa,GAAGM,SAAS,EAAE;cACtD,OAAO,KAAK;aACf,MAAM,IAAIC,OAAO,KAAKlB,SAAS,IAAIW,aAAa,GAAGO,OAAO,EAAE;cACzD,OAAO,KAAK;;YAGhB,OAAO,IAAI;;;MAInB,KAAKhB,sBAAsB,CAACiB,OAAO;QAC/B,OAAOC,KAAK,CAACC,OAAO,CAACtB,MAAM,CAACX,KAAK,CAAC,GAAGW,MAAM,CAACX,KAAK,CAACM,QAAQ,CAACN,KAAK,CAAC,GAAG,KAAK;MAE7E,KAAKc,sBAAsB,CAACoB,QAAQ;QAChC,OAAOF,KAAK,CAACC,OAAO,CAACtB,MAAM,CAACX,KAAK,CAAC,GAAGW,MAAM,CAACX,KAAK,CAACM,QAAQ,CAACN,KAAK,CAAC,KAAK,KAAK,GAAG,KAAK;MAEvF,KAAKc,sBAAsB,CAACqB,OAAO;QAC/B,OAAOH,KAAK,CAACC,OAAO,CAACtB,MAAM,CAACX,KAAK,CAAC,IAAIgC,KAAK,CAACC,OAAO,CAACjC,KAAK,CAAC,GACpDW,MAAM,CAACX,KAAK,CAACW,MAAM,CAACyB,CAAC,IAAIpC,KAAK,CAACM,QAAQ,CAAC8B,CAAC,CAAC,CAAC,CAACC,MAAM,KAAK1B,MAAM,CAACX,KAAK,CAACqC,MAAM,GAC1E,KAAK;;IAGnB,OAAO,KAAK;GACf,CAAC,OAAOC,CAAC,EAAE;IACRC,OAAO,CAACC,KAAK,CAACF,CAAC,CAAC;IAChB,OAAO,IAAI;;AAEnB;;;;"}
1
+ {"version":3,"file":"filterFn.js","sources":["../../../../../../../../src/components/Table2/utilities/filterFn.ts"],"sourcesContent":["import { isDate, isAfter as isAfterDate, isBefore as isBeforeDate } from 'date-fns';\nimport { Table2Filter, Table2FilterComparator } from '../types';\nimport { isWeakEqual as isWeakEqualDate } from '../../../utils/date';\n\nconst toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nconst isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nconst isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\nexport const globalFilterFn = (value: string, query: string) => isWeakContains(value, query);\n\n// the filter type is only settable on the column definition, which would re-render all columns\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport const columnFilterFn = (value: any, filter: Table2Filter) => {\n try {\n if (filter.comparator === Table2FilterComparator.IsEmpty || filter.comparator === Table2FilterComparator.IsNotEmpty) {\n const isEmpty = value === undefined || value === null || value === '';\n return filter.comparator === Table2FilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case Table2FilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case Table2FilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case Table2FilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case Table2FilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case Table2FilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case Table2FilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case Table2FilterComparator.IsOneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) : false;\n\n case Table2FilterComparator.IsNoneOf:\n return Array.isArray(filter.value) ? filter.value.includes(value) === false : false;\n\n case Table2FilterComparator.IsAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n};\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","globalFilterFn","query","columnFilterFn","filter","comparator","Table2FilterComparator","IsEmpty","IsNotEmpty","isEmpty","undefined","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsBetween","fromValue","toValue","IsOneOf","Array","isArray","IsNoneOf","IsAllOf","v","length","e","console","error"],"mappings":"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"}
@@ -80,9 +80,10 @@ const Root = /*#__PURE__*/React__default.forwardRef(function CollectionRoot(prop
80
80
  const options = getOptionsFromCollection(event.currentTarget, querySelector);
81
81
  if (options) {
82
82
  if (isAriaDirectionKey(event)) {
83
+ event.preventDefault();
84
+ event.stopPropagation();
83
85
  const nextActiveIndex = getNextEnabledItem(event, options, activeIndex);
84
86
  if (nextActiveIndex !== undefined && nextActiveIndex !== activeIndex) {
85
- event.preventDefault();
86
87
  setActiveOption(nextActiveIndex, event.currentTarget, options.item(nextActiveIndex));
87
88
  }
88
89
  } else if (activeIndex !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"Root.js","sources":["../../../../../../../../src/primitives/Collection/components/Root.tsx"],"sourcesContent":["import React from 'react';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { isAriaDirectionKey } from '../../../utils/aria';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\n\n/* This component provides a keyboard navigable collection primitive for use in lists\n * It is unlikely you need to edit this component\n */\n\nexport type CollectionProps = React.HTMLAttributes<HTMLDivElement> & {\n querySelector: string;\n};\n\nexport type CollectionRef = HTMLDivElement & {\n setActiveIndex: (option: HTMLDivElement) => void;\n};\n\nconst getOptionsFromCollection = (collection: HTMLDivElement, selector: string): NodeListOf<Element> =>\n collection.querySelectorAll(selector);\n\n// we use javascript to set attributes (rather than cloning children and adding them)\n// so that we can support nesting (e.g. groups) - child elements that aren't options.\n// without doing this we would have to unwrap and flatten all groups\nexport const Root = React.forwardRef<CollectionRef, CollectionProps>(function CollectionRoot(props, ref) {\n const { querySelector, tabIndex = 0, ...otherProps } = props;\n const internalRef = useMergedRef<CollectionRef>(ref);\n const [activeIndex, setActiveIndex] = React.useState<number | undefined>();\n const lastLengthRef = React.useRef(0);\n\n const setActiveOption = (index: number, collection: HTMLDivElement, option: Element) => {\n collection.querySelector(`[aria-current]`)?.removeAttribute('aria-current');\n option.setAttribute('aria-current', 'true');\n option.scrollIntoView({ block: 'nearest' });\n setActiveIndex(index);\n };\n\n const setActiveIndexByElement = React.useCallback(\n (option: HTMLDivElement) => {\n if (internalRef.current) {\n if (option.matches(querySelector)) {\n const options = getOptionsFromCollection(internalRef.current, querySelector);\n const nextActiveIndex = Array.from(options).indexOf(option);\n\n if (nextActiveIndex > -1) {\n setActiveOption(nextActiveIndex, internalRef.current, option);\n }\n }\n }\n },\n [internalRef.current, querySelector]\n );\n\n React.useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setActiveIndex = setActiveIndexByElement;\n }\n }, [internalRef.current]);\n\n React.useEffect(() => {\n if (internalRef.current) {\n const options = getOptionsFromCollection(internalRef.current, querySelector);\n\n if (options.length && options.length !== lastLengthRef.current) {\n const selected = internalRef.current.querySelectorAll(`[aria-selected]`);\n\n if (selected.length === 1) {\n if (options) {\n const firstSelected = selected.item(0);\n const selectedIndex = Array.from(options).indexOf(firstSelected);\n\n if (selectedIndex > -1) {\n setActiveOption(selectedIndex, internalRef.current, firstSelected);\n }\n }\n } else {\n // multiple selected or none selected should go to 0\n setActiveOption(0, internalRef.current, options.item(0));\n }\n }\n\n lastLengthRef.current = options.length;\n }\n }, [props.children]);\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n const option = event.target as HTMLElement;\n\n if (option.matches(querySelector)) {\n const options = getOptionsFromCollection(event.currentTarget, querySelector);\n const nextActiveIndex = Array.from(options).indexOf(option);\n\n if (nextActiveIndex > -1) {\n setActiveOption(nextActiveIndex, event.currentTarget, option);\n }\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n // this stops the event dispatched to the option rebounding back and starting an infinite loop\n if (event.target !== event.currentTarget) {\n return;\n }\n\n const options = getOptionsFromCollection(event.currentTarget, querySelector);\n\n if (options) {\n if (isAriaDirectionKey(event)) {\n const nextActiveIndex = getNextEnabledItem(event, options, activeIndex);\n\n if (nextActiveIndex !== undefined && nextActiveIndex !== activeIndex) {\n event.preventDefault();\n setActiveOption(nextActiveIndex, event.currentTarget, options.item(nextActiveIndex));\n }\n } else if (activeIndex !== undefined) {\n // forward events onto the underlying option - this lets consumers place onKeyDown handlers on their own components\n options\n .item(activeIndex)\n .dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n }\n };\n\n return <div {...otherProps} onClick={handleClick} onKeyDown={handleKeyDown} ref={internalRef} tabIndex={tabIndex} />;\n});\n\nexport const getNextIndexFromKeycode = (\n event: React.KeyboardEvent,\n length: number,\n activeIndex: number | undefined\n): number | undefined => {\n switch (event.key) {\n case 'ArrowUp':\n return activeIndex === undefined ? length - 1 : activeIndex > 0 ? activeIndex - 1 : activeIndex;\n\n case 'ArrowDown':\n return activeIndex === undefined ? 0 : activeIndex < length - 1 ? activeIndex + 1 : activeIndex;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport const getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n options: NodeListOf<Element>,\n activeIndex: number | undefined,\n recurse = true\n): number | undefined => {\n const nextIndex = getNextIndexFromKeycode(event, options.length, activeIndex);\n\n if (nextIndex !== undefined) {\n if (nextIndex === activeIndex) {\n return activeIndex;\n } else if (options.item(nextIndex) && isSkippableItem(options.item(nextIndex))) {\n // check in the other direction if the first or last item is disabled,\n // but prevent infinite loops if all elements are disabled by disabling recursion\n if (recurse) {\n if (nextIndex === 0) {\n return getNextEnabledItem(\n new KeyboardEvent(event.type, { ...(event as any), key: 'ArrowDown' }) as any,\n options,\n nextIndex,\n false\n );\n } else if (nextIndex === options.length - 1) {\n return getNextEnabledItem(\n new KeyboardEvent(event.type, { ...(event as any), key: 'ArrowUp' }) as any,\n options,\n nextIndex,\n false\n );\n }\n }\n\n return getNextEnabledItem(event, options, nextIndex, recurse);\n }\n }\n\n return nextIndex;\n};\n\nconst isSkippableItem = (element: Element) => {\n return (\n element.getAttribute('role') === 'presentation' ||\n !!element.hasAttribute('disabled') ||\n !!element.getAttribute('aria-disabled') ||\n !!element.getAttribute('aria-hidden')\n );\n};\n"],"names":["getOptionsFromCollection","collection","selector","querySelectorAll","Root","React","forwardRef","CollectionRoot","props","ref","querySelector","tabIndex","otherProps","internalRef","useMergedRef","activeIndex","setActiveIndex","useState","lastLengthRef","useRef","setActiveOption","index","option","removeAttribute","setAttribute","scrollIntoView","block","setActiveIndexByElement","useCallback","current","matches","options","nextActiveIndex","Array","from","indexOf","useEffect","length","selected","firstSelected","item","selectedIndex","children","handleClick","event","target","currentTarget","handleKeyDown","isAriaDirectionKey","getNextEnabledItem","undefined","preventDefault","dispatchEvent","createCustomKeyboardEvent","onClick","onKeyDown","getNextIndexFromKeycode","key","recurse","nextIndex","isSkippableItem","KeyboardEvent","type","element","getAttribute","hasAttribute"],"mappings":"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"}
1
+ {"version":3,"file":"Root.js","sources":["../../../../../../../../src/primitives/Collection/components/Root.tsx"],"sourcesContent":["import React from 'react';\nimport { useMergedRef } from '../../../hooks/useMergedRef';\nimport { isAriaDirectionKey } from '../../../utils/aria';\nimport { createCustomKeyboardEvent } from '../../../utils/input';\n\n/* This component provides a keyboard navigable collection primitive for use in lists\n * It is unlikely you need to edit this component\n */\n\nexport type CollectionProps = React.HTMLAttributes<HTMLDivElement> & {\n querySelector: string;\n};\n\nexport type CollectionRef = HTMLDivElement & {\n setActiveIndex: (option: HTMLDivElement) => void;\n};\n\nconst getOptionsFromCollection = (collection: HTMLDivElement, selector: string): NodeListOf<Element> =>\n collection.querySelectorAll(selector);\n\n// we use javascript to set attributes (rather than cloning children and adding them)\n// so that we can support nesting (e.g. groups) - child elements that aren't options.\n// without doing this we would have to unwrap and flatten all groups\nexport const Root = React.forwardRef<CollectionRef, CollectionProps>(function CollectionRoot(props, ref) {\n const { querySelector, tabIndex = 0, ...otherProps } = props;\n const internalRef = useMergedRef<CollectionRef>(ref);\n const [activeIndex, setActiveIndex] = React.useState<number | undefined>();\n const lastLengthRef = React.useRef(0);\n\n const setActiveOption = (index: number, collection: HTMLDivElement, option: Element) => {\n collection.querySelector(`[aria-current]`)?.removeAttribute('aria-current');\n option.setAttribute('aria-current', 'true');\n option.scrollIntoView({ block: 'nearest' });\n setActiveIndex(index);\n };\n\n const setActiveIndexByElement = React.useCallback(\n (option: HTMLDivElement) => {\n if (internalRef.current) {\n if (option.matches(querySelector)) {\n const options = getOptionsFromCollection(internalRef.current, querySelector);\n const nextActiveIndex = Array.from(options).indexOf(option);\n\n if (nextActiveIndex > -1) {\n setActiveOption(nextActiveIndex, internalRef.current, option);\n }\n }\n }\n },\n [internalRef.current, querySelector]\n );\n\n React.useEffect(() => {\n if (internalRef.current) {\n internalRef.current.setActiveIndex = setActiveIndexByElement;\n }\n }, [internalRef.current]);\n\n React.useEffect(() => {\n if (internalRef.current) {\n const options = getOptionsFromCollection(internalRef.current, querySelector);\n\n if (options.length && options.length !== lastLengthRef.current) {\n const selected = internalRef.current.querySelectorAll(`[aria-selected]`);\n\n if (selected.length === 1) {\n if (options) {\n const firstSelected = selected.item(0);\n const selectedIndex = Array.from(options).indexOf(firstSelected);\n\n if (selectedIndex > -1) {\n setActiveOption(selectedIndex, internalRef.current, firstSelected);\n }\n }\n } else {\n // multiple selected or none selected should go to 0\n setActiveOption(0, internalRef.current, options.item(0));\n }\n }\n\n lastLengthRef.current = options.length;\n }\n }, [props.children]);\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n const option = event.target as HTMLElement;\n\n if (option.matches(querySelector)) {\n const options = getOptionsFromCollection(event.currentTarget, querySelector);\n const nextActiveIndex = Array.from(options).indexOf(option);\n\n if (nextActiveIndex > -1) {\n setActiveOption(nextActiveIndex, event.currentTarget, option);\n }\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n // this stops the event dispatched to the option rebounding back and starting an infinite loop\n if (event.target !== event.currentTarget) {\n return;\n }\n\n const options = getOptionsFromCollection(event.currentTarget, querySelector);\n\n if (options) {\n if (isAriaDirectionKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n const nextActiveIndex = getNextEnabledItem(event, options, activeIndex);\n\n if (nextActiveIndex !== undefined && nextActiveIndex !== activeIndex) {\n setActiveOption(nextActiveIndex, event.currentTarget, options.item(nextActiveIndex));\n }\n } else if (activeIndex !== undefined) {\n // forward events onto the underlying option - this lets consumers place onKeyDown handlers on their own components\n options\n .item(activeIndex)\n .dispatchEvent(createCustomKeyboardEvent(event as React.KeyboardEvent<HTMLInputElement>));\n }\n }\n };\n\n return <div {...otherProps} onClick={handleClick} onKeyDown={handleKeyDown} ref={internalRef} tabIndex={tabIndex} />;\n});\n\nexport const getNextIndexFromKeycode = (\n event: React.KeyboardEvent,\n length: number,\n activeIndex: number | undefined\n): number | undefined => {\n switch (event.key) {\n case 'ArrowUp':\n return activeIndex === undefined ? length - 1 : activeIndex > 0 ? activeIndex - 1 : activeIndex;\n\n case 'ArrowDown':\n return activeIndex === undefined ? 0 : activeIndex < length - 1 ? activeIndex + 1 : activeIndex;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport const getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n options: NodeListOf<Element>,\n activeIndex: number | undefined,\n recurse = true\n): number | undefined => {\n const nextIndex = getNextIndexFromKeycode(event, options.length, activeIndex);\n\n if (nextIndex !== undefined) {\n if (nextIndex === activeIndex) {\n return activeIndex;\n } else if (options.item(nextIndex) && isSkippableItem(options.item(nextIndex))) {\n // check in the other direction if the first or last item is disabled,\n // but prevent infinite loops if all elements are disabled by disabling recursion\n if (recurse) {\n if (nextIndex === 0) {\n return getNextEnabledItem(\n new KeyboardEvent(event.type, { ...(event as any), key: 'ArrowDown' }) as any,\n options,\n nextIndex,\n false\n );\n } else if (nextIndex === options.length - 1) {\n return getNextEnabledItem(\n new KeyboardEvent(event.type, { ...(event as any), key: 'ArrowUp' }) as any,\n options,\n nextIndex,\n false\n );\n }\n }\n\n return getNextEnabledItem(event, options, nextIndex, recurse);\n }\n }\n\n return nextIndex;\n};\n\nconst isSkippableItem = (element: Element) => {\n return (\n element.getAttribute('role') === 'presentation' ||\n !!element.hasAttribute('disabled') ||\n !!element.getAttribute('aria-disabled') ||\n !!element.getAttribute('aria-hidden')\n );\n};\n"],"names":["getOptionsFromCollection","collection","selector","querySelectorAll","Root","React","forwardRef","CollectionRoot","props","ref","querySelector","tabIndex","otherProps","internalRef","useMergedRef","activeIndex","setActiveIndex","useState","lastLengthRef","useRef","setActiveOption","index","option","removeAttribute","setAttribute","scrollIntoView","block","setActiveIndexByElement","useCallback","current","matches","options","nextActiveIndex","Array","from","indexOf","useEffect","length","selected","firstSelected","item","selectedIndex","children","handleClick","event","target","currentTarget","handleKeyDown","isAriaDirectionKey","preventDefault","stopPropagation","getNextEnabledItem","undefined","dispatchEvent","createCustomKeyboardEvent","onClick","onKeyDown","getNextIndexFromKeycode","key","recurse","nextIndex","isSkippableItem","KeyboardEvent","type","element","getAttribute","hasAttribute"],"mappings":"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"}