@economic/taco 2.17.2 → 2.18.0

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 (29) hide show
  1. package/dist/components/Select2/components/Search.d.ts +5 -1
  2. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterValue.d.ts +1 -1
  3. package/dist/components/Table3/types.d.ts +1 -1
  4. package/dist/esm/packages/taco/src/components/Select2/Select2.js +21 -7
  5. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  6. package/dist/esm/packages/taco/src/components/Select2/components/Search.js +2 -1
  7. package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js +1 -1
  9. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +11 -1
  11. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +0 -2
  13. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +5 -2
  15. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +1 -1
  17. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -1
  18. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  19. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +4 -0
  20. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
  21. package/dist/esm/packages/taco/src/utils/dom.js +13 -1
  22. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  23. package/dist/taco.cjs.development.js +56 -15
  24. package/dist/taco.cjs.development.js.map +1 -1
  25. package/dist/taco.cjs.production.min.js +1 -1
  26. package/dist/taco.cjs.production.min.js.map +1 -1
  27. package/dist/utils/dom.d.ts +1 -0
  28. package/package.json +2 -2
  29. package/types.json +5347 -5123
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Switch } from '../../../Switch/Switch';\nimport { globalFilterFn } from '../../util/filtering';\nimport { SearchInput2 } from '../../../SearchInput2/SearchInput2';\nimport { useDebouncedEffect } from '../../../../hooks/useDebouncedEffect';\nimport { getCellValueAsString } from '../../util/columns';\nimport { lastCellIndex } from '../rows/Row';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: RTable<TType>;\n};\n\nenum LoadingState {\n Incomplete,\n Loading,\n Completed,\n}\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const [query, setQuery] = React.useState(tableMeta.search.query);\n const [loading, setLoading] = React.useState<LoadingState>(LoadingState.Incomplete);\n const [rowIdToNavigate, setRowIdToNavigate] = React.useState<string | null>(null);\n\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n\n // update the indexes if the row length changes (e.g. when filtering)\n React.useEffect(() => {\n const firstRowIndex = resetHighlightedColumnIndexes(tableMeta.search.isHighlightingEnabled, ref.current?.value, table);\n\n if (firstRowIndex) {\n scrollTo(firstRowIndex);\n }\n }, [\n tableMeta.search.query,\n tableMeta.search.excludeUnmatchedResults,\n table.getRowModel().rows.length,\n JSON.stringify(table.getState().sorting),\n JSON.stringify(table.getState().columnVisibility),\n loading,\n ]);\n\n // Reseting internal search state if search.query is changed from the outside.\n React.useEffect(() => {\n if (tableMeta.search.query !== query) {\n setQuery(tableMeta.search.query);\n }\n }, [tableMeta.search.query]);\n\n // update the table search and filtering on a debounce\n useDebouncedEffect(() => {\n tableMeta.search.setQuery(query);\n\n if (tableMeta.search.excludeUnmatchedResults) {\n if (query?.length) {\n table.setGlobalFilter(query);\n } else {\n table.resetGlobalFilter();\n }\n }\n }, [query]);\n\n const handleFocus = async () => {\n // While Search input is focused, we'll switch into searching mode\n tableMeta.search.setIsSearching(true);\n // load all data if that is possible\n if (tableMeta.server.loadAll && loading === LoadingState.Incomplete) {\n setLoading(LoadingState.Loading);\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAll(table.getState().sorting, table.getState().columnFilters, undefined);\n setLoading(LoadingState.Completed);\n }\n };\n\n const handleBlur = () => {\n // As soon as search input loose a focus, we'll turn of searching mode.\n tableMeta.search.setIsSearching(false);\n };\n\n const handleChange = (query: any) => {\n setQuery(String(query ?? ''));\n };\n\n const handleClear = () => {\n const [rowIndex = null, cellIndex = null] =\n tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex || 0];\n const rows = table.getRowModel().rows;\n\n tableMeta.search.setQuery('');\n\n // Need to save row id and cell index, to be able to find the row in the table with updated indexes, after global filter will be reset.\n lastCellIndex.value = String(cellIndex);\n\n if (rowIndex !== null) {\n const rowId = rows[rowIndex]?.id || null;\n setRowIdToNavigate(rowId);\n }\n };\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n handleClear();\n event.preventDefault();\n }\n };\n\n const { globalFilter } = table.getState();\n\n React.useEffect(() => {\n // need to wait when table global filter will be reset and rows will be re-rendered\n if (rowIdToNavigate !== null && !globalFilter) {\n const rows = table.getRowModel().rows;\n const rowIndex = rows.findIndex(row => row.id === rowIdToNavigate);\n tableMeta.search.setIsSearching(false);\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollTo(rowIndex);\n setRowIdToNavigate(null);\n }\n }, [rowIdToNavigate, globalFilter]);\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.toggleExcludeUnmatchedResults(enabled);\n\n if (enabled) {\n if (ref.current?.value) {\n table.setGlobalFilter(ref.current?.value);\n } else {\n table.resetGlobalFilter();\n }\n } else {\n table.resetGlobalFilter();\n }\n\n requestAnimationFrame(() => ref.current?.focus());\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table3.search.excludeUnmatchedResults}\n checked={tableMeta.search.excludeUnmatchedResults}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes ? tableMeta.search.highlightedColumnIndexes.length : null}\n loading={loading === LoadingState.Loading}\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClear={handleClear}\n placeholder={texts.table3.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n value={query}\n />\n </>\n );\n}\n\nfunction resetHighlightedColumnIndexes<TType = unknown>(enabled: boolean, value: string | undefined, table: RTable<TType>) {\n const tableMeta = table.options.meta as TableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (enabled && value) {\n const rowIndexes: number[] = [];\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n if (column.getIsVisible() && column.columnDef.meta?.enableSearch) {\n const cellValue = getCellValueAsString(row.original?.[column.id], column.columnDef.meta?.dataType);\n\n if (cellValue !== undefined && globalFilterFn(cellValue, value)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch (e) {\n //\n }\n });\n\n if (indexes.length) {\n rowIndexes.push(rowIndex);\n }\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0][0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["LoadingState","Search","props","scrollToIndex","table","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","setQuery","useState","search","loading","setLoading","Incomplete","rowIdToNavigate","setRowIdToNavigate","scrollTo","rowIndex","align","useEffect","firstRowIndex","resetHighlightedColumnIndexes","isHighlightingEnabled","_ref$current","current","value","excludeUnmatchedResults","getRowModel","rows","length","JSON","stringify","getState","sorting","columnVisibility","useDebouncedEffect","setGlobalFilter","resetGlobalFilter","handleFocus","setIsSearching","_temp","server","loadAll","Loading","Promise","resolve","columnFilters","undefined","then","Completed","e","reject","handleBlur","handleChange","String","handleClear","cellIndex","highlightedColumnIndexes","currentHighlightColumnIndex","lastCellIndex","_rows$rowIndex","rowId","id","handleKeyDown","event","key","preventDefault","globalFilter","findIndex","row","rowActive","setRowActiveIndex","handleToggleExcludeUnmatchedResults","enabled","toggleExcludeUnmatchedResults","_ref$current2","_ref$current3","requestAnimationFrame","_ref$current4","focus","handleNextResult","nextIndex","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","table3","checked","onChange","SearchInput2","findCurrent","findTotal","onClickFindPrevious","onClickFindNext","onFocus","onBlur","onKeyDown","onClear","placeholder","settingsContent","shortcut","shift","indexes","columns","getVisibleLeafColumns","forEach","column","columnIndex","_column$columnDef$met","getIsVisible","columnDef","enableSearch","_row$original","_column$columnDef$met2","cellValue","getCellValueAsString","original","dataType","globalFilterFn","push","setHighlightedColumnIndexes"],"mappings":"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"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Switch } from '../../../Switch/Switch';\nimport { globalFilterFn } from '../../util/filtering';\nimport { SearchInput2 } from '../../../SearchInput2/SearchInput2';\nimport { useDebouncedEffect } from '../../../../hooks/useDebouncedEffect';\nimport { getCellValueAsString } from '../../util/columns';\nimport { lastCellIndex } from '../rows/Row';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: RTable<TType>;\n};\n\nenum LoadingState {\n Incomplete,\n Loading,\n Completed,\n}\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const [query, setQuery] = React.useState(tableMeta.search.query);\n const [loading, setLoading] = React.useState<LoadingState>(LoadingState.Incomplete);\n const [rowIdToNavigate, setRowIdToNavigate] = React.useState<string | null>(null);\n\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n\n // update the indexes if the row length changes (e.g. when filtering)\n React.useEffect(() => {\n const firstRowIndex = resetHighlightedColumnIndexes(tableMeta.search.isHighlightingEnabled, ref.current?.value, table);\n\n if (firstRowIndex) {\n scrollTo(firstRowIndex);\n }\n }, [\n tableMeta.search.query,\n tableMeta.search.excludeUnmatchedResults,\n table.getRowModel().rows.length,\n JSON.stringify(table.getState().sorting),\n JSON.stringify(table.getState().columnVisibility),\n loading,\n ]);\n\n // Reseting internal search state if search.query is changed from the outside.\n React.useEffect(() => {\n if (tableMeta.search.query !== query) {\n setQuery(tableMeta.search.query);\n }\n }, [tableMeta.search.query]);\n\n // update the table search and filtering on a debounce\n useDebouncedEffect(() => {\n tableMeta.search.setQuery(query);\n\n if (tableMeta.search.excludeUnmatchedResults) {\n if (query?.length) {\n table.setGlobalFilter(query);\n } else {\n table.resetGlobalFilter();\n }\n }\n }, [query]);\n\n const handleFocus = async () => {\n // While Search input is focused, we'll switch into searching mode\n tableMeta.search.setIsSearching(true);\n // load all data if that is possible\n if (tableMeta.server.loadAll && loading === LoadingState.Incomplete) {\n setLoading(LoadingState.Loading);\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAll(table.getState().sorting, table.getState().columnFilters, undefined);\n setLoading(LoadingState.Completed);\n }\n };\n\n const handleBlur = () => {\n // As soon as search input loose a focus, we'll turn of searching mode.\n tableMeta.search.setIsSearching(false);\n };\n\n const handleChange = (query: any) => {\n setQuery(String(query ?? ''));\n };\n\n const handleClear = () => {\n const highlightedColumnIndex = tableMeta.search.currentHighlightColumnIndex ?? 0;\n const highlightedCell = tableMeta.search.highlightedColumnIndexes[highlightedColumnIndex] ?? [];\n const [rowIndex = null, columnIndex = null] = highlightedCell;\n const rows = table.getRowModel().rows;\n\n tableMeta.search.setQuery('');\n\n // Need to save row id and cell index, to be able to find the row in the table with updated indexes, after global filter will be reset.\n lastCellIndex.value = String(columnIndex);\n\n if (rowIndex !== null) {\n const rowId = rows[rowIndex]?.id || null;\n setRowIdToNavigate(rowId);\n }\n };\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n handleClear();\n event.preventDefault();\n }\n };\n\n const { globalFilter } = table.getState();\n\n React.useEffect(() => {\n // need to wait when table global filter will be reset and rows will be re-rendered\n if (rowIdToNavigate !== null && !globalFilter) {\n const rows = table.getRowModel().rows;\n const rowIndex = rows.findIndex(row => row.id === rowIdToNavigate);\n tableMeta.search.setIsSearching(false);\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollTo(rowIndex);\n setRowIdToNavigate(null);\n }\n }, [rowIdToNavigate, globalFilter]);\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.toggleExcludeUnmatchedResults(enabled);\n\n if (enabled) {\n if (ref.current?.value) {\n table.setGlobalFilter(ref.current?.value);\n } else {\n table.resetGlobalFilter();\n }\n } else {\n table.resetGlobalFilter();\n }\n\n requestAnimationFrame(() => ref.current?.focus());\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table3.search.excludeUnmatchedResults}\n checked={tableMeta.search.excludeUnmatchedResults}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes ? tableMeta.search.highlightedColumnIndexes.length : null}\n loading={loading === LoadingState.Loading}\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClear={handleClear}\n placeholder={texts.table3.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n value={query}\n />\n </>\n );\n}\n\nfunction resetHighlightedColumnIndexes<TType = unknown>(enabled: boolean, value: string | undefined, table: RTable<TType>) {\n const tableMeta = table.options.meta as TableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (enabled && value) {\n const rowIndexes: number[] = [];\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n if (column.getIsVisible() && column.columnDef.meta?.enableSearch) {\n const cellValue = getCellValueAsString(row.original?.[column.id], column.columnDef.meta?.dataType);\n\n if (cellValue !== undefined && globalFilterFn(cellValue, value)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch (e) {\n //\n }\n });\n\n if (indexes.length) {\n rowIndexes.push(rowIndex);\n }\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0][0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":["LoadingState","Search","props","scrollToIndex","table","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","setQuery","useState","search","loading","setLoading","Incomplete","rowIdToNavigate","setRowIdToNavigate","scrollTo","rowIndex","align","useEffect","firstRowIndex","resetHighlightedColumnIndexes","isHighlightingEnabled","_ref$current","current","value","excludeUnmatchedResults","getRowModel","rows","length","JSON","stringify","getState","sorting","columnVisibility","useDebouncedEffect","setGlobalFilter","resetGlobalFilter","handleFocus","setIsSearching","_temp","server","loadAll","Loading","Promise","resolve","columnFilters","undefined","then","Completed","e","reject","handleBlur","handleChange","String","handleClear","highlightedColumnIndex","_tableMeta$search$cur","currentHighlightColumnIndex","highlightedCell","_tableMeta$search$hig","highlightedColumnIndexes","columnIndex","lastCellIndex","_rows$rowIndex","rowId","id","handleKeyDown","event","key","preventDefault","globalFilter","findIndex","row","rowActive","setRowActiveIndex","handleToggleExcludeUnmatchedResults","enabled","toggleExcludeUnmatchedResults","_ref$current2","_ref$current3","requestAnimationFrame","_ref$current4","focus","handleNextResult","nextIndex","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","table3","checked","onChange","SearchInput2","findCurrent","findTotal","onClickFindPrevious","onClickFindNext","onFocus","onBlur","onKeyDown","onClear","placeholder","settingsContent","shortcut","shift","indexes","columns","getVisibleLeafColumns","forEach","column","_column$columnDef$met","getIsVisible","columnDef","enableSearch","_row$original","_column$columnDef$met2","cellValue","getCellValueAsString","original","dataType","globalFilterFn","push","setHighlightedColumnIndexes"],"mappings":"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"}
@@ -21,7 +21,7 @@ function Toolbar(props) {
21
21
  }
22
22
  const tableMeta = table.options.meta;
23
23
  return /*#__PURE__*/React__default.createElement("div", {
24
- className: "mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2",
24
+ className: "mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 empty:hidden",
25
25
  "data-taco": "table3-toolbar"
26
26
  }, left, /*#__PURE__*/React__default.createElement(Group, {
27
27
  className: "ml-auto flex-shrink-0 print:hidden"
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Toolbar.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { Search } from './Search';\nimport { Group } from '../../../Group/Group';\nimport { FiltersButton } from './Filter/filters/Filters';\nimport { EditButton } from './EditButton';\nimport { PrintButton } from './PrintButton/PrintButton';\nimport { Table3CustomSettingRenderer, Table3Props } from '../../types';\nimport { SettingsButton } from './Settings';\n\nexport type ToolbarProps<TType = unknown> = {\n customSettings?: Table3CustomSettingRenderer[];\n left?: JSX.Element;\n right?: JSX.Element;\n scrollToIndex: any;\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n total: number;\n};\nexport function Toolbar<TType = unknown>(props: ToolbarProps<TType>) {\n const { customSettings, left, right, scrollToIndex, table, tableProps, total } = props;\n\n if (!isToolbarVisible(props)) {\n return null;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n <div className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2\" data-taco=\"table3-toolbar\">\n {left}\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {tableMeta.editing.isEnabled ? <EditButton table={table} /> : null}\n {table.options.enableColumnFilters ? <FiltersButton table={table} total={total} /> : null}\n {right}\n {tableMeta.printing.isEnabled ? <PrintButton table={table} tableProps={tableProps} /> : null}\n {isSettingsVisible(props) ? <SettingsButton table={table} customSettings={customSettings} /> : null}\n {tableMeta.search.isEnabled ? <Search scrollToIndex={scrollToIndex} table={table} /> : null}\n </Group>\n </div>\n );\n}\n\nfunction isSettingsVisible<TType = unknown>(props: ToolbarProps<TType>) {\n const { table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return tableMeta.fontSize.isEnabled || tableMeta.rowHeight.isEnabled || tableMeta.columnOrdering.isEnabled;\n}\n\nfunction isToolbarVisible<TType = unknown>(props: ToolbarProps<TType>) {\n const { left, right, table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const enableSettingsButton = table.options.enableHiding || tableMeta.columnOrdering.isEnabled;\n const hasInternalToolbar =\n enableSettingsButton ||\n tableMeta.editing.isEnabled ||\n tableMeta.printing.isEnabled ||\n table.options.enableColumnFilters ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n tableMeta.search.isEnabled;\n\n return hasInternalToolbar || !!left || !!right;\n}\n"],"names":["Toolbar","props","customSettings","left","right","scrollToIndex","table","tableProps","total","isToolbarVisible","tableMeta","options","meta","React","className","Group","editing","isEnabled","EditButton","enableColumnFilters","FiltersButton","printing","PrintButton","isSettingsVisible","SettingsButton","search","Search","fontSize","rowHeight","columnOrdering","enableSettingsButton","enableHiding","hasInternalToolbar"],"mappings":";;;;;;;;SAmBgBA,OAAOA,CAAkBC,KAA0B;EAC/D,MAAM;IAAEC,cAAc;IAAEC,IAAI;IAAEC,KAAK;IAAEC,aAAa;IAAEC,KAAK;IAAEC,UAAU;IAAEC;GAAO,GAAGP,KAAK;EAEtF,IAAI,CAACQ,gBAAgB,CAACR,KAAK,CAAC,EAAE;IAC1B,OAAO,IAAI;;EAGf,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,oBACIC;IAAKC,SAAS,EAAC,mDAAmD;iBAAW;KACxEX,IAAI,eACLU,6BAACE,KAAK;IAACD,SAAS,EAAC;KACZJ,SAAS,CAACM,OAAO,CAACC,SAAS,gBAAGJ,6BAACK,UAAU;IAACZ,KAAK,EAAEA;IAAS,GAAG,IAAI,EACjEA,KAAK,CAACK,OAAO,CAACQ,mBAAmB,gBAAGN,6BAACO,aAAa;IAACd,KAAK,EAAEA,KAAK;IAAEE,KAAK,EAAEA;IAAS,GAAG,IAAI,EACxFJ,KAAK,EACLM,SAAS,CAACW,QAAQ,CAACJ,SAAS,gBAAGJ,6BAACS,WAAW;IAAChB,KAAK,EAAEA,KAAK;IAAEC,UAAU,EAAEA;IAAc,GAAG,IAAI,EAC3FgB,iBAAiB,CAACtB,KAAK,CAAC,gBAAGY,6BAACW,cAAc;IAAClB,KAAK,EAAEA,KAAK;IAAEJ,cAAc,EAAEA;IAAkB,GAAG,IAAI,EAClGQ,SAAS,CAACe,MAAM,CAACR,SAAS,gBAAGJ,6BAACa,MAAM;IAACrB,aAAa,EAAEA,aAAa;IAAEC,KAAK,EAAEA;IAAS,GAAG,IAAI,CACvF,CACN;AAEd;AAEA,SAASiB,iBAAiBA,CAAkBtB,KAA0B;EAClE,MAAM;IAAEK;GAAO,GAAGL,KAAK;EACvB,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,OAAOF,SAAS,CAACiB,QAAQ,CAACV,SAAS,IAAIP,SAAS,CAACkB,SAAS,CAACX,SAAS,IAAIP,SAAS,CAACmB,cAAc,CAACZ,SAAS;AAC9G;AAEA,SAASR,gBAAgBA,CAAkBR,KAA0B;EACjE,MAAM;IAAEE,IAAI;IAAEC,KAAK;IAAEE;GAAO,GAAGL,KAAK;EACpC,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,MAAMkB,oBAAoB,GAAGxB,KAAK,CAACK,OAAO,CAACoB,YAAY,IAAIrB,SAAS,CAACmB,cAAc,CAACZ,SAAS;EAC7F,MAAMe,kBAAkB,GACpBF,oBAAoB,IACpBpB,SAAS,CAACM,OAAO,CAACC,SAAS,IAC3BP,SAAS,CAACW,QAAQ,CAACJ,SAAS,IAC5BX,KAAK,CAACK,OAAO,CAACQ,mBAAmB,IACjCT,SAAS,CAACiB,QAAQ,CAACV,SAAS,IAC5BP,SAAS,CAACkB,SAAS,CAACX,SAAS,IAC7BP,SAAS,CAACe,MAAM,CAACR,SAAS;EAE9B,OAAOe,kBAAkB,IAAI,CAAC,CAAC7B,IAAI,IAAI,CAAC,CAACC,KAAK;AAClD;;;;"}
1
+ {"version":3,"file":"Toolbar.js","sources":["../../../../../../../../../src/components/Table3/components/toolbar/Toolbar.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { Search } from './Search';\nimport { Group } from '../../../Group/Group';\nimport { FiltersButton } from './Filter/filters/Filters';\nimport { EditButton } from './EditButton';\nimport { PrintButton } from './PrintButton/PrintButton';\nimport { Table3CustomSettingRenderer, Table3Props } from '../../types';\nimport { SettingsButton } from './Settings';\n\nexport type ToolbarProps<TType = unknown> = {\n customSettings?: Table3CustomSettingRenderer[];\n left?: JSX.Element;\n right?: JSX.Element;\n scrollToIndex: any;\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n total: number;\n};\nexport function Toolbar<TType = unknown>(props: ToolbarProps<TType>) {\n const { customSettings, left, right, scrollToIndex, table, tableProps, total } = props;\n\n if (!isToolbarVisible(props)) {\n return null;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n <div className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 empty:hidden\" data-taco=\"table3-toolbar\">\n {left}\n <Group className=\"ml-auto flex-shrink-0 print:hidden\">\n {tableMeta.editing.isEnabled ? <EditButton table={table} /> : null}\n {table.options.enableColumnFilters ? <FiltersButton table={table} total={total} /> : null}\n {right}\n {tableMeta.printing.isEnabled ? <PrintButton table={table} tableProps={tableProps} /> : null}\n {isSettingsVisible(props) ? <SettingsButton table={table} customSettings={customSettings} /> : null}\n {tableMeta.search.isEnabled ? <Search scrollToIndex={scrollToIndex} table={table} /> : null}\n </Group>\n </div>\n );\n}\n\nfunction isSettingsVisible<TType = unknown>(props: ToolbarProps<TType>) {\n const { table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return tableMeta.fontSize.isEnabled || tableMeta.rowHeight.isEnabled || tableMeta.columnOrdering.isEnabled;\n}\n\nfunction isToolbarVisible<TType = unknown>(props: ToolbarProps<TType>) {\n const { left, right, table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n const enableSettingsButton = table.options.enableHiding || tableMeta.columnOrdering.isEnabled;\n const hasInternalToolbar =\n enableSettingsButton ||\n tableMeta.editing.isEnabled ||\n tableMeta.printing.isEnabled ||\n table.options.enableColumnFilters ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n tableMeta.search.isEnabled;\n\n return hasInternalToolbar || !!left || !!right;\n}\n"],"names":["Toolbar","props","customSettings","left","right","scrollToIndex","table","tableProps","total","isToolbarVisible","tableMeta","options","meta","React","className","Group","editing","isEnabled","EditButton","enableColumnFilters","FiltersButton","printing","PrintButton","isSettingsVisible","SettingsButton","search","Search","fontSize","rowHeight","columnOrdering","enableSettingsButton","enableHiding","hasInternalToolbar"],"mappings":";;;;;;;;SAmBgBA,OAAOA,CAAkBC,KAA0B;EAC/D,MAAM;IAAEC,cAAc;IAAEC,IAAI;IAAEC,KAAK;IAAEC,aAAa;IAAEC,KAAK;IAAEC,UAAU;IAAEC;GAAO,GAAGP,KAAK;EAEtF,IAAI,CAACQ,gBAAgB,CAACR,KAAK,CAAC,EAAE;IAC1B,OAAO,IAAI;;EAGf,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,oBACIC;IAAKC,SAAS,EAAC,gEAAgE;iBAAW;KACrFX,IAAI,eACLU,6BAACE,KAAK;IAACD,SAAS,EAAC;KACZJ,SAAS,CAACM,OAAO,CAACC,SAAS,gBAAGJ,6BAACK,UAAU;IAACZ,KAAK,EAAEA;IAAS,GAAG,IAAI,EACjEA,KAAK,CAACK,OAAO,CAACQ,mBAAmB,gBAAGN,6BAACO,aAAa;IAACd,KAAK,EAAEA,KAAK;IAAEE,KAAK,EAAEA;IAAS,GAAG,IAAI,EACxFJ,KAAK,EACLM,SAAS,CAACW,QAAQ,CAACJ,SAAS,gBAAGJ,6BAACS,WAAW;IAAChB,KAAK,EAAEA,KAAK;IAAEC,UAAU,EAAEA;IAAc,GAAG,IAAI,EAC3FgB,iBAAiB,CAACtB,KAAK,CAAC,gBAAGY,6BAACW,cAAc;IAAClB,KAAK,EAAEA,KAAK;IAAEJ,cAAc,EAAEA;IAAkB,GAAG,IAAI,EAClGQ,SAAS,CAACe,MAAM,CAACR,SAAS,gBAAGJ,6BAACa,MAAM;IAACrB,aAAa,EAAEA,aAAa;IAAEC,KAAK,EAAEA;IAAS,GAAG,IAAI,CACvF,CACN;AAEd;AAEA,SAASiB,iBAAiBA,CAAkBtB,KAA0B;EAClE,MAAM;IAAEK;GAAO,GAAGL,KAAK;EACvB,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,OAAOF,SAAS,CAACiB,QAAQ,CAACV,SAAS,IAAIP,SAAS,CAACkB,SAAS,CAACX,SAAS,IAAIP,SAAS,CAACmB,cAAc,CAACZ,SAAS;AAC9G;AAEA,SAASR,gBAAgBA,CAAkBR,KAA0B;EACjE,MAAM;IAAEE,IAAI;IAAEC,KAAK;IAAEE;GAAO,GAAGL,KAAK;EACpC,MAAMS,SAAS,GAAGJ,KAAK,CAACK,OAAO,CAACC,IAAwB;EAExD,MAAMkB,oBAAoB,GAAGxB,KAAK,CAACK,OAAO,CAACoB,YAAY,IAAIrB,SAAS,CAACmB,cAAc,CAACZ,SAAS;EAC7F,MAAMe,kBAAkB,GACpBF,oBAAoB,IACpBpB,SAAS,CAACM,OAAO,CAACC,SAAS,IAC3BP,SAAS,CAACW,QAAQ,CAACJ,SAAS,IAC5BX,KAAK,CAACK,OAAO,CAACQ,mBAAmB,IACjCT,SAAS,CAACiB,QAAQ,CAACV,SAAS,IAC5BP,SAAS,CAACkB,SAAS,CAACX,SAAS,IAC7BP,SAAS,CAACe,MAAM,CAACR,SAAS;EAE9B,OAAOe,kBAAkB,IAAI,CAAC,CAAC7B,IAAI,IAAI,CAAC,CAACC,KAAK;AAClD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table3/types.ts"],"sourcesContent":["import { ColumnOrderState, ColumnSizingState, SortingState, VisibilityState, BuiltInSortingFn } from '@tanstack/react-table';\nimport { MenuProps } from '../Menu/Menu';\nimport { MenuItemProps } from '../Menu/components/Item';\nimport {\n TableColumnFilter,\n TableColumnSort,\n TableFilterHandler,\n TableFontSize,\n TableRef,\n TableRowClickHandler,\n TableRowGotoHandler,\n TableRowHeight,\n TableRowSelectHandler,\n TableServerLoadAllHandler,\n TableServerLoadPageHandler,\n TableSortHandler,\n} from '../../primitives/Table/types';\nimport { ValueOf } from '../../types';\n\nexport type Table3SortDirection = 'asc' | 'desc';\nexport type Table3SortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | BuiltInSortingFn\n | 'auto';\n\n// columns\nexport type Table3ColumnRenderer<TValue = unknown, TType = unknown> = (\n value: TValue,\n row: TType\n) => JSX.Element | string | number | null;\nexport type Table3ColumnFooterRenderer<TValue = unknown> = (values: TValue[]) => JSX.Element | string | number | null;\nexport type Table3ColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type Table3ColumnAlignment = 'left' | 'center' | 'right';\nexport type Table3ColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type Table3ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\n\nexport type Table3ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type Table3ColumnControlRenderer<TType = unknown> =\n | ((props: Table3ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\n\nexport type Table3ColumnProps<TType = unknown> = ValueOf<{\n [K in keyof TType]: {\n accessor: K;\n } & {\n align?: Table3ColumnAlignment;\n className?: Table3ColumnClassNameHandler<TType>;\n control?: Table3ColumnControlRenderer<TType>;\n dataType?: Table3ColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: number | 'grow';\n enableFiltering?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: Table3FilterComparator[];\n footer?: Table3ColumnFooterRenderer;\n header: string;\n headerClassName?: string;\n menu?: Table3ColumnHeaderMenu;\n minWidth?: number;\n renderer?: Table3ColumnRenderer<TType[K], TType>;\n sort?: Table3SortDirection;\n sortFn?: Table3SortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type Table3GroupProps = {\n id: string;\n header: string;\n colSpan?: number;\n children: (JSX.Element | boolean | null | undefined)[];\n};\n\n// rows\nexport type DeprecatedRowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type Table3RowHeight = TableRowHeight;\nexport type Table3FontSize = TableFontSize;\nexport type Table3RowClickHandler<TType = unknown> = TableRowClickHandler<TType>;\nexport type Table3RowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type Table3RowDropHandler<TType = any> = (event: React.DragEvent, row: TType) => void;\nexport type Table3RowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type Table3RowSelectionHandler<TType = unknown> = TableRowSelectHandler<TType>;\nexport type Table3RowActionRenderer<TType = unknown> = (row: TType) => JSX.Element | null;\n\n// table\nexport type Table3Preset = 'display' | 'editable';\nexport type Table3Settings = {\n columnFreezingIndex?: number;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: Table3FontSize;\n rowHeight?: Table3RowHeight;\n showWarningWhenPrintingLargeDataset?: boolean;\n sorting?: SortingState;\n};\nexport type Table3SettingsHandler = (settings: Table3Settings) => void | Promise<void>;\n\nexport enum Table3FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\n\nexport type Table3FilterValue = {\n comparator: Table3FilterComparator;\n value: any;\n};\n\nexport type Table3Filter = { id: string | null; value: Table3FilterValue };\n\nexport type ColumnFilter = TableColumnFilter;\nexport type Table3FilterHandler = TableFilterHandler;\nexport type Table3LoadPageHandler = TableServerLoadPageHandler;\nexport type Table3LoadAllHandler = TableServerLoadAllHandler;\nexport type Table3RowGotoHandler = TableRowGotoHandler;\nexport type Table3ColumnSort = TableColumnSort;\nexport type Table3SortHandler = TableSortHandler;\nexport type RowErrors = Record<string, string>;\nexport type Table3CellValidationHandler<TType = unknown> = (\n cellValue: any,\n cellId: string,\n row: TType\n) => Promise<RowErrors | undefined | void>;\nexport type Table3RowValidationHandler<TType = unknown> = (row: TType) => Promise<RowErrors | undefined | void>;\nexport type TableStrategy = {\n renderBody: () => JSX.Element | JSX.Element[] | null;\n scrollToIndex: (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\n};\nexport type Table3ShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type Table3ShortcutHandlerObject<TType = unknown> = {\n handler: Table3ShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\nexport type Table3Shortcuts<TType = unknown> = Record<\n string,\n Table3ShortcutHandlerFn<TType> | Table3ShortcutHandlerObject<TType>\n>;\nexport type Table3SaveHandler<TType = unknown> = (data: TType) => Promise<void>;\n\nexport type Table3Options = {\n enableColumnFreezing: boolean;\n enableColumnHiding: boolean;\n enableColumnOrdering: boolean;\n enableColumnResizing: boolean;\n enableFontSize: boolean;\n enableFooter: boolean;\n enablePrinting: boolean;\n enableRowDrag: boolean;\n enableRowDrop: boolean;\n enableRowExpansion: boolean;\n enableRowGoto: boolean;\n enableRowHeight: boolean;\n enableRowSelection: boolean;\n enableRowSelectionSingle: boolean;\n enableEditing: boolean;\n enableFiltering: boolean;\n enableSearch: boolean;\n enableSorting: boolean;\n};\n\nexport type Table3CustomSettingRenderer = (props: Table3Settings) => React.ReactElement<MenuItemProps> | null;\n\nexport type Table3CommonProps<TType = unknown> = Partial<Table3Options> & {\n actionsForRow?: Table3RowActionRenderer<TType>[];\n actionsForRowLength?: number;\n autoFocus?: boolean;\n children: (JSX.Element | boolean | null | undefined)[];\n customSettings?: Table3CustomSettingRenderer[];\n data: TType[];\n defaultColumnFreezingIndex?: number;\n defaultCurrentRowIndex?: number;\n defaultSettings?: Table3Settings;\n emptyState?: () => JSX.Element | null;\n expandedRowRenderer?: Table3RowExpansionRenderer<TType>;\n id: string;\n onChangeSettings?: Table3SettingsHandler;\n onRowClick?: Table3RowClickHandler<TType>;\n onRowDrag?: Table3RowDragHandler<TType>;\n onRowDrop?: Table3RowDropHandler<TType>;\n onRowGoto?: Table3RowGotoHandler;\n onRowSelect?: Table3RowSelectionHandler<TType>;\n onFilter?: Table3FilterHandler;\n onSave?: Table3SaveHandler<TType>;\n onSort?: Table3SortHandler;\n onCellValidate?: Table3CellValidationHandler<TType>;\n onRowValidate?: Table3RowValidationHandler<TType>;\n preset?: Table3Preset;\n shortcuts?: Table3Shortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n rowIdentifier?: string;\n};\n\ninterface Table3ClientProps<TType = unknown> extends Table3CommonProps<TType> {\n length?: never;\n loadPage?: never;\n loadAll?: never;\n pageSize?: never;\n}\n\ninterface Table3ServerProps<TType = unknown> extends Table3CommonProps<TType> {\n length: number | undefined;\n loadPage: Table3LoadPageHandler;\n loadAll: Table3LoadAllHandler;\n pageSize?: number;\n}\n\nexport type Table3Props<TType = unknown> = Table3ClientProps<TType> | Table3ServerProps<TType>;\n\nexport type Table3Ref = TableRef & {\n instance: {\n toggleEditing: (enabled: boolean | undefined) => void;\n };\n};\n\nexport type Table3Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n editing: {\n actions: {\n tooltip: string;\n save: string;\n clear: string;\n exit: string;\n };\n buttons: {\n edit: {\n tooltip: string;\n };\n };\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n saving: {\n progress: string;\n complete: string;\n };\n clearChangesConfirmationDialog: {\n title: string;\n description: string;\n cancel: string;\n confirm: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n validation: {\n index: string;\n alert: {\n unsavedEntries: (count?: number) => string;\n incompleteAndHavntBeenSaved: (count?: number) => string;\n };\n resetFiltersDialog: {\n title: string;\n description: string;\n cancel: string;\n confirm: string;\n };\n };\n};\n"],"names":["Table3FilterComparator"],"mappings":"IA0HYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,+EAAU;EACVA,iGAAmB;EACnBA,wGAAsB;EACtBA,4EAAQ;EACRA,4EAAQ;EACRA,8EAAS;AACb,CAAC,EAfWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../../../src/components/Table3/types.ts"],"sourcesContent":["import { ColumnOrderState, ColumnSizingState, SortingState, VisibilityState, BuiltInSortingFn } from '@tanstack/react-table';\nimport { MenuProps } from '../Menu/Menu';\nimport { MenuItemProps } from '../Menu/components/Item';\nimport {\n TableColumnFilter,\n TableColumnSort,\n TableFilterHandler,\n TableFontSize,\n TableRef,\n TableRowClickHandler,\n TableRowGotoHandler,\n TableRowHeight,\n TableRowSelectHandler,\n TableServerLoadAllHandler,\n TableServerLoadPageHandler,\n TableSortHandler,\n} from '../../primitives/Table/types';\nimport { ValueOf } from '../../types';\n\nexport type Table3SortDirection = 'asc' | 'desc';\nexport type Table3SortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | BuiltInSortingFn\n | 'auto';\n\n// columns\nexport type Table3ColumnRenderer<TValue = unknown, TType = unknown> = (\n value: TValue,\n row: TType\n) => JSX.Element | string | number | null;\nexport type Table3ColumnFooterRenderer<TValue = unknown> = (values: TValue[]) => JSX.Element | string | number | null;\nexport type Table3ColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type Table3ColumnAlignment = 'left' | 'center' | 'right';\nexport type Table3ColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type Table3ColumnHeaderMenu = (props: Partial<MenuProps>) => JSX.Element;\n\nexport type Table3ColumnControlProps = {\n className?: string;\n disabled?: boolean;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type Table3ColumnControlRenderer<TType = unknown> =\n | ((props: Table3ColumnControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\n\nexport type Table3ColumnProps<TType = unknown> = ValueOf<{\n [K in keyof TType]: {\n accessor: K;\n } & {\n align?: Table3ColumnAlignment;\n className?: Table3ColumnClassNameHandler<TType>;\n control?: Table3ColumnControlRenderer<TType>;\n dataType?: Table3ColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: number | 'grow';\n enableFiltering?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: Table3FilterComparator[];\n footer?: Table3ColumnFooterRenderer;\n header: string;\n headerClassName?: string;\n menu?: Table3ColumnHeaderMenu;\n minWidth?: number;\n renderer?: Table3ColumnRenderer<TType[K], TType>;\n sort?: Table3SortDirection;\n sortFn?: Table3SortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type Table3GroupProps = {\n id: string;\n header: string;\n colSpan?: number;\n children: (JSX.Element | boolean | null | undefined)[];\n};\n\n// rows\nexport type DeprecatedRowDensity = 'compact' | 'normal' | 'comfortable' | 'spacious';\nexport type Table3RowHeight = TableRowHeight;\nexport type Table3FontSize = TableFontSize;\nexport type Table3RowClickHandler<TType = unknown> = TableRowClickHandler<TType>;\nexport type Table3RowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type Table3RowDropHandler<TType = any> = (event: React.DragEvent, row: TType) => void;\nexport type Table3RowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type Table3RowSelectionHandler<TType = unknown> = TableRowSelectHandler<TType>;\nexport type Table3RowActionRenderer<TType = unknown> = (row: TType) => JSX.Element | null;\n\n// table\nexport type Table3Preset = 'display' | 'editable';\nexport type Table3Settings = {\n columnFreezingIndex?: number;\n columnOrder?: ColumnOrderState;\n columnSizing?: ColumnSizingState;\n columnVisibility?: VisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: Table3FontSize;\n rowHeight?: Table3RowHeight;\n showWarningWhenPrintingLargeDataset?: boolean;\n sorting?: SortingState;\n};\nexport type Table3SettingsHandler = (settings: Table3Settings) => void | Promise<void>;\n\nexport enum Table3FilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\n\nexport type Table3FilterValue = {\n comparator: Table3FilterComparator | null;\n value: any;\n};\n\nexport type Table3Filter = { id: string | null; value: Table3FilterValue };\n\nexport type ColumnFilter = TableColumnFilter;\nexport type Table3FilterHandler = TableFilterHandler;\nexport type Table3LoadPageHandler = TableServerLoadPageHandler;\nexport type Table3LoadAllHandler = TableServerLoadAllHandler;\nexport type Table3RowGotoHandler = TableRowGotoHandler;\nexport type Table3ColumnSort = TableColumnSort;\nexport type Table3SortHandler = TableSortHandler;\nexport type RowErrors = Record<string, string>;\nexport type Table3CellValidationHandler<TType = unknown> = (\n cellValue: any,\n cellId: string,\n row: TType\n) => Promise<RowErrors | undefined | void>;\nexport type Table3RowValidationHandler<TType = unknown> = (row: TType) => Promise<RowErrors | undefined | void>;\nexport type TableStrategy = {\n renderBody: () => JSX.Element | JSX.Element[] | null;\n scrollToIndex: (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\n};\nexport type Table3ShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type Table3ShortcutHandlerObject<TType = unknown> = {\n handler: Table3ShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\nexport type Table3Shortcuts<TType = unknown> = Record<\n string,\n Table3ShortcutHandlerFn<TType> | Table3ShortcutHandlerObject<TType>\n>;\nexport type Table3SaveHandler<TType = unknown> = (data: TType) => Promise<void>;\n\nexport type Table3Options = {\n enableColumnFreezing: boolean;\n enableColumnHiding: boolean;\n enableColumnOrdering: boolean;\n enableColumnResizing: boolean;\n enableFontSize: boolean;\n enableFooter: boolean;\n enablePrinting: boolean;\n enableRowDrag: boolean;\n enableRowDrop: boolean;\n enableRowExpansion: boolean;\n enableRowGoto: boolean;\n enableRowHeight: boolean;\n enableRowSelection: boolean;\n enableRowSelectionSingle: boolean;\n enableEditing: boolean;\n enableFiltering: boolean;\n enableSearch: boolean;\n enableSorting: boolean;\n};\n\nexport type Table3CustomSettingRenderer = (props: Table3Settings) => React.ReactElement<MenuItemProps> | null;\n\nexport type Table3CommonProps<TType = unknown> = Partial<Table3Options> & {\n actionsForRow?: Table3RowActionRenderer<TType>[];\n actionsForRowLength?: number;\n autoFocus?: boolean;\n children: (JSX.Element | boolean | null | undefined)[];\n customSettings?: Table3CustomSettingRenderer[];\n data: TType[];\n defaultColumnFreezingIndex?: number;\n defaultCurrentRowIndex?: number;\n defaultSettings?: Table3Settings;\n emptyState?: () => JSX.Element | null;\n expandedRowRenderer?: Table3RowExpansionRenderer<TType>;\n id: string;\n onChangeSettings?: Table3SettingsHandler;\n onRowClick?: Table3RowClickHandler<TType>;\n onRowDrag?: Table3RowDragHandler<TType>;\n onRowDrop?: Table3RowDropHandler<TType>;\n onRowGoto?: Table3RowGotoHandler;\n onRowSelect?: Table3RowSelectionHandler<TType>;\n onFilter?: Table3FilterHandler;\n onSave?: Table3SaveHandler<TType>;\n onSort?: Table3SortHandler;\n onCellValidate?: Table3CellValidationHandler<TType>;\n onRowValidate?: Table3RowValidationHandler<TType>;\n preset?: Table3Preset;\n shortcuts?: Table3Shortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n rowIdentifier?: string;\n};\n\ninterface Table3ClientProps<TType = unknown> extends Table3CommonProps<TType> {\n length?: never;\n loadPage?: never;\n loadAll?: never;\n pageSize?: never;\n}\n\ninterface Table3ServerProps<TType = unknown> extends Table3CommonProps<TType> {\n length: number | undefined;\n loadPage: Table3LoadPageHandler;\n loadAll: Table3LoadAllHandler;\n pageSize?: number;\n}\n\nexport type Table3Props<TType = unknown> = Table3ClientProps<TType> | Table3ServerProps<TType>;\n\nexport type Table3Ref = TableRef & {\n instance: {\n toggleEditing: (enabled: boolean | undefined) => void;\n };\n};\n\nexport type Table3Texts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n editing: {\n actions: {\n tooltip: string;\n save: string;\n clear: string;\n exit: string;\n };\n buttons: {\n edit: {\n tooltip: string;\n };\n };\n rowIndicator: {\n rowWillMove: string;\n rowWillBeHidden: string;\n rowWillMoveReasonSearch: string;\n rowWillMoveReasonFilter: string;\n rowWillMoveReasonSorting: string;\n };\n saving: {\n progress: string;\n complete: string;\n };\n clearChangesConfirmationDialog: {\n title: string;\n description: string;\n cancel: string;\n confirm: string;\n };\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n validation: {\n index: string;\n alert: {\n unsavedEntries: (count?: number) => string;\n incompleteAndHavntBeenSaved: (count?: number) => string;\n };\n resetFiltersDialog: {\n title: string;\n description: string;\n cancel: string;\n confirm: string;\n };\n };\n};\n"],"names":["Table3FilterComparator"],"mappings":"IA0HYA;AAAZ,WAAYA,sBAAsB;EAC9BA,2EAAQ;EACRA,uFAAc;EACdA,6EAAS;EACTA,mFAAY;EACZA,qFAAa;EACbA,+EAAU;EACVA,6EAAS;EACTA,yEAAO;EACPA,+EAAU;EACVA,iGAAmB;EACnBA,wGAAsB;EACtBA,4EAAQ;EACRA,4EAAQ;EACRA,8EAAS;AACb,CAAC,EAfWA,sBAAsB,KAAtBA,sBAAsB;;;;"}
@@ -36,6 +36,10 @@ const Option = /*#__PURE__*/React__default.forwardRef(function Listbox2Option(pr
36
36
  if (disabled || listboxDisabled || listboxReadOnly) {
37
37
  event.stopPropagation();
38
38
  return;
39
+ }
40
+ // UX requirement: if tab key is pressed and the current option is selected then keydown event is ignored
41
+ else if (event.key === 'Tab' && selected) {
42
+ return;
39
43
  } else if (isAriaSelectionKey(event)) {
40
44
  setValue(value);
41
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","sources":["../../../../../../../../src/primitives/Listbox2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport { useId } from '../../../hooks/useId';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Listbox2OptionValue } from '../types';\nimport { useListbox2Context } from './Context';\n\nexport type Listbox2OptionProps = React.HTMLAttributes<HTMLDivElement> & {\n disabled?: boolean;\n value: Listbox2OptionValue;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Listbox2OptionProps>(function Listbox2Option(props, ref) {\n const { disabled, id: nativeId, title, value, ...otherProps } = props;\n const { disabled: listboxDisabled, readOnly: listboxReadOnly, setValue, value: currentValue } = useListbox2Context();\n // The id name cannot start with a number, otherwise unit tests will fail when trying to querry element with such id.\n // That's why adding prefix.\n const id = 'option-' + useId(nativeId);\n const selected = Array.isArray(currentValue) ? currentValue.includes(value) : currentValue === value;\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled || listboxDisabled || listboxReadOnly) {\n event.stopPropagation();\n return;\n } else {\n setValue(value);\n }\n\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled || listboxDisabled || listboxReadOnly) {\n event.stopPropagation();\n return;\n } else if (isAriaSelectionKey(event)) {\n setValue(value);\n }\n\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n };\n\n return (\n <div\n {...otherProps}\n aria-disabled={listboxDisabled || disabled ? 'true' : undefined}\n aria-selected={selected ? 'true' : undefined}\n id={id}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"option\"\n />\n );\n});\n"],"names":["Option","React","forwardRef","Listbox2Option","props","ref","disabled","id","nativeId","title","value","otherProps","listboxDisabled","readOnly","listboxReadOnly","setValue","currentValue","useListbox2Context","useId","selected","Array","isArray","includes","handleClick","event","stopPropagation","onClick","handleKeyDown","isAriaSelectionKey","onKeyDown","undefined","role"],"mappings":";;;;;MAWaA,MAAM,gBAAGC,cAAK,CAACC,UAAU,CAAsC,SAASC,cAAcA,CAACC,KAAK,EAAEC,GAAG;EAC1G,MAAM;IAAEC,QAAQ;IAAEC,EAAE,EAAEC,QAAQ;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGP,KAAK;EACrE,MAAM;IAAEE,QAAQ,EAAEM,eAAe;IAAEC,QAAQ,EAAEC,eAAe;IAAEC,QAAQ;IAAEL,KAAK,EAAEM;GAAc,GAAGC,kBAAkB,EAAE;;;EAGpH,MAAMV,EAAE,GAAG,SAAS,GAAGW,KAAK,CAACV,QAAQ,CAAC;EACtC,MAAMW,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACL,YAAY,CAAC,GAAGA,YAAY,CAACM,QAAQ,CAACZ,KAAK,CAAC,GAAGM,YAAY,KAAKN,KAAK;EAEpG,MAAMa,WAAW,GAAIC,KAAuC;IACxD,IAAIlB,QAAQ,IAAIM,eAAe,IAAIE,eAAe,EAAE;MAChDU,KAAK,CAACC,eAAe,EAAE;MACvB;KACH,MAAM;MACHV,QAAQ,CAACL,KAAK,CAAC;;IAGnB,IAAI,OAAON,KAAK,CAACsB,OAAO,KAAK,UAAU,EAAE;MACrCtB,KAAK,CAACsB,OAAO,CAACF,KAAK,CAAC;;GAE3B;EAED,MAAMG,aAAa,GAAIH,KAA0C;IAC7D,IAAIlB,QAAQ,IAAIM,eAAe,IAAIE,eAAe,EAAE;MAChDU,KAAK,CAACC,eAAe,EAAE;MACvB;KACH,MAAM,IAAIG,kBAAkB,CAACJ,KAAK,CAAC,EAAE;MAClCT,QAAQ,CAACL,KAAK,CAAC;;IAGnB,IAAI,OAAON,KAAK,CAACyB,SAAS,KAAK,UAAU,EAAE;MACvCzB,KAAK,CAACyB,SAAS,CAACL,KAAK,CAAC;;GAE7B;EAED,oBACIvB,sDACQU,UAAU;qBACCC,eAAe,IAAIN,QAAQ,GAAG,MAAM,GAAGwB,SAAS;qBAChDX,QAAQ,GAAG,MAAM,GAAGW,SAAS;IAC5CvB,EAAE,EAAEA,EAAE;IACNmB,OAAO,EAAEH,WAAW;IACpBM,SAAS,EAAEF,aAAa;IACxBtB,GAAG,EAAEA,GAAG;IACR0B,IAAI,EAAC;KACP;AAEV,CAAC;;;;"}
1
+ {"version":3,"file":"Option.js","sources":["../../../../../../../../src/primitives/Listbox2/components/Option.tsx"],"sourcesContent":["import React from 'react';\nimport { useId } from '../../../hooks/useId';\nimport { isAriaSelectionKey } from '../../../utils/aria';\nimport { Listbox2OptionValue } from '../types';\nimport { useListbox2Context } from './Context';\n\nexport type Listbox2OptionProps = React.HTMLAttributes<HTMLDivElement> & {\n disabled?: boolean;\n value: Listbox2OptionValue;\n};\n\nexport const Option = React.forwardRef<HTMLDivElement, Listbox2OptionProps>(function Listbox2Option(props, ref) {\n const { disabled, id: nativeId, title, value, ...otherProps } = props;\n const { disabled: listboxDisabled, readOnly: listboxReadOnly, setValue, value: currentValue } = useListbox2Context();\n // The id name cannot start with a number, otherwise unit tests will fail when trying to querry element with such id.\n // That's why adding prefix.\n const id = 'option-' + useId(nativeId);\n const selected = Array.isArray(currentValue) ? currentValue.includes(value) : currentValue === value;\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled || listboxDisabled || listboxReadOnly) {\n event.stopPropagation();\n return;\n } else {\n setValue(value);\n }\n\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled || listboxDisabled || listboxReadOnly) {\n event.stopPropagation();\n return;\n }\n // UX requirement: if tab key is pressed and the current option is selected then keydown event is ignored\n else if (event.key === 'Tab' && selected) {\n return;\n } else if (isAriaSelectionKey(event)) {\n setValue(value);\n }\n\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n };\n\n return (\n <div\n {...otherProps}\n aria-disabled={listboxDisabled || disabled ? 'true' : undefined}\n aria-selected={selected ? 'true' : undefined}\n id={id}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={ref}\n role=\"option\"\n />\n );\n});\n"],"names":["Option","React","forwardRef","Listbox2Option","props","ref","disabled","id","nativeId","title","value","otherProps","listboxDisabled","readOnly","listboxReadOnly","setValue","currentValue","useListbox2Context","useId","selected","Array","isArray","includes","handleClick","event","stopPropagation","onClick","handleKeyDown","key","isAriaSelectionKey","onKeyDown","undefined","role"],"mappings":";;;;;MAWaA,MAAM,gBAAGC,cAAK,CAACC,UAAU,CAAsC,SAASC,cAAcA,CAACC,KAAK,EAAEC,GAAG;EAC1G,MAAM;IAAEC,QAAQ;IAAEC,EAAE,EAAEC,QAAQ;IAAEC,KAAK;IAAEC,KAAK;IAAE,GAAGC;GAAY,GAAGP,KAAK;EACrE,MAAM;IAAEE,QAAQ,EAAEM,eAAe;IAAEC,QAAQ,EAAEC,eAAe;IAAEC,QAAQ;IAAEL,KAAK,EAAEM;GAAc,GAAGC,kBAAkB,EAAE;;;EAGpH,MAAMV,EAAE,GAAG,SAAS,GAAGW,KAAK,CAACV,QAAQ,CAAC;EACtC,MAAMW,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACL,YAAY,CAAC,GAAGA,YAAY,CAACM,QAAQ,CAACZ,KAAK,CAAC,GAAGM,YAAY,KAAKN,KAAK;EAEpG,MAAMa,WAAW,GAAIC,KAAuC;IACxD,IAAIlB,QAAQ,IAAIM,eAAe,IAAIE,eAAe,EAAE;MAChDU,KAAK,CAACC,eAAe,EAAE;MACvB;KACH,MAAM;MACHV,QAAQ,CAACL,KAAK,CAAC;;IAGnB,IAAI,OAAON,KAAK,CAACsB,OAAO,KAAK,UAAU,EAAE;MACrCtB,KAAK,CAACsB,OAAO,CAACF,KAAK,CAAC;;GAE3B;EAED,MAAMG,aAAa,GAAIH,KAA0C;IAC7D,IAAIlB,QAAQ,IAAIM,eAAe,IAAIE,eAAe,EAAE;MAChDU,KAAK,CAACC,eAAe,EAAE;MACvB;;;SAGC,IAAID,KAAK,CAACI,GAAG,KAAK,KAAK,IAAIT,QAAQ,EAAE;MACtC;KACH,MAAM,IAAIU,kBAAkB,CAACL,KAAK,CAAC,EAAE;MAClCT,QAAQ,CAACL,KAAK,CAAC;;IAGnB,IAAI,OAAON,KAAK,CAAC0B,SAAS,KAAK,UAAU,EAAE;MACvC1B,KAAK,CAAC0B,SAAS,CAACN,KAAK,CAAC;;GAE7B;EAED,oBACIvB,sDACQU,UAAU;qBACCC,eAAe,IAAIN,QAAQ,GAAG,MAAM,GAAGyB,SAAS;qBAChDZ,QAAQ,GAAG,MAAM,GAAGY,SAAS;IAC5CxB,EAAE,EAAEA,EAAE;IACNmB,OAAO,EAAEH,WAAW;IACpBO,SAAS,EAAEH,aAAa;IACxBtB,GAAG,EAAEA,GAAG;IACR2B,IAAI,EAAC;KACP;AAEV,CAAC;;;;"}
@@ -13,6 +13,18 @@ const getIndexOfFirstChildOverflowingParent = (element, overscan = 0) => {
13
13
  }
14
14
  return boundaryChildIndex;
15
15
  };
16
+ const getNextFocussableElement = currentElement => {
17
+ if (!currentElement) {
18
+ return null;
19
+ }
20
+ const focussableElements = [...document.querySelectorAll('button:not([disabled]), [href]:not(link):not(script), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled]), details:not([disabled]), summary:not(:disabled)')];
21
+ const currentElementIndex = focussableElements.indexOf(currentElement);
22
+ // If the currentElement is not in the focussable elements list or it is the last element
23
+ if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {
24
+ return null;
25
+ }
26
+ return focussableElements[currentElementIndex + 1];
27
+ };
16
28
 
17
- export { getIndexOfFirstChildOverflowingParent };
29
+ export { getIndexOfFirstChildOverflowingParent, getNextFocussableElement };
18
30
  //# sourceMappingURL=dom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["export const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n"],"names":["getIndexOfFirstChildOverflowingParent","element","overscan","index","boundaryChildIndex","clientRect","getBoundingClientRect","child","Array","from","children","right","left","width"],"mappings":"MAGaA,qCAAqC,GAAGA,CAACC,OAAoB,EAAEC,QAAQ,GAAG,CAAC;EACpF,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,kBAAkB,GAAkB,IAAI;EAC5C,MAAMC,UAAU,GAAGJ,OAAO,CAACK,qBAAqB,EAAE;EAElD,KAAK,MAAMC,KAAK,IAAIC,KAAK,CAACC,IAAI,CAACR,OAAO,CAACS,QAAQ,CAAC,EAAE;IAC9C,MAAMC,KAAK,GAAGJ,KAAK,CAACD,qBAAqB,EAAE,CAACK,KAAK,GAAGN,UAAU,CAACO,IAAI;IACnE,MAAMC,KAAK,GAAGR,UAAU,CAACQ,KAAK,GAAGX,QAAQ;IAEzC,IAAIS,KAAK,GAAGE,KAAK,EAAE;MACfT,kBAAkB,GAAGD,KAAK;MAC1B;;IAEJA,KAAK,EAAE;;EAGX,OAAOC,kBAAkB;AAC7B;;;;"}
1
+ {"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["export const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null) => {\n if (!currentElement) {\n return null;\n }\n\n const focussableElements = [\n ...document.querySelectorAll<HTMLElement>(\n 'button:not([disabled]), [href]:not(link):not(script), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), details:not([disabled]), summary:not(:disabled)'\n ),\n ];\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n // If the currentElement is not in the focussable elements list or it is the last element\n if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {\n return null;\n }\n\n return focussableElements[currentElementIndex + 1];\n};\n"],"names":["getIndexOfFirstChildOverflowingParent","element","overscan","index","boundaryChildIndex","clientRect","getBoundingClientRect","child","Array","from","children","right","left","width","getNextFocussableElement","currentElement","focussableElements","document","querySelectorAll","currentElementIndex","indexOf","length"],"mappings":"MAGaA,qCAAqC,GAAGA,CAACC,OAAoB,EAAEC,QAAQ,GAAG,CAAC;EACpF,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,kBAAkB,GAAkB,IAAI;EAC5C,MAAMC,UAAU,GAAGJ,OAAO,CAACK,qBAAqB,EAAE;EAElD,KAAK,MAAMC,KAAK,IAAIC,KAAK,CAACC,IAAI,CAACR,OAAO,CAACS,QAAQ,CAAC,EAAE;IAC9C,MAAMC,KAAK,GAAGJ,KAAK,CAACD,qBAAqB,EAAE,CAACK,KAAK,GAAGN,UAAU,CAACO,IAAI;IACnE,MAAMC,KAAK,GAAGR,UAAU,CAACQ,KAAK,GAAGX,QAAQ;IAEzC,IAAIS,KAAK,GAAGE,KAAK,EAAE;MACfT,kBAAkB,GAAGD,KAAK;MAC1B;;IAEJA,KAAK,EAAE;;EAGX,OAAOC,kBAAkB;AAC7B;MAEaU,wBAAwB,GAAIC,cAAkC;EACvE,IAAI,CAACA,cAAc,EAAE;IACjB,OAAO,IAAI;;EAGf,MAAMC,kBAAkB,GAAG,CACvB,GAAGC,QAAQ,CAACC,gBAAgB,CACxB,iOAAiO,CACpO,CACJ;EACD,MAAMC,mBAAmB,GAAGH,kBAAkB,CAACI,OAAO,CAACL,cAAc,CAAC;;EAGtE,IAAII,mBAAmB,KAAK,CAAC,CAAC,IAAIA,mBAAmB,KAAKH,kBAAkB,CAACK,MAAM,GAAG,CAAC,EAAE;IACrF,OAAO,IAAI;;EAGf,OAAOL,kBAAkB,CAACG,mBAAmB,GAAG,CAAC,CAAC;AACtD;;;;"}
@@ -9594,6 +9594,10 @@ const Option = /*#__PURE__*/React__default.forwardRef(function Listbox2Option(pr
9594
9594
  if (disabled || listboxDisabled || listboxReadOnly) {
9595
9595
  event.stopPropagation();
9596
9596
  return;
9597
+ }
9598
+ // UX requirement: if tab key is pressed and the current option is selected then keydown event is ignored
9599
+ else if (event.key === 'Tab' && selected) {
9600
+ return;
9597
9601
  } else if (isAriaSelectionKey(event)) {
9598
9602
  setValue(value);
9599
9603
  }
@@ -10032,6 +10036,18 @@ const getIndexOfFirstChildOverflowingParent = (element, overscan = 0) => {
10032
10036
  }
10033
10037
  return boundaryChildIndex;
10034
10038
  };
10039
+ const getNextFocussableElement = currentElement => {
10040
+ if (!currentElement) {
10041
+ return null;
10042
+ }
10043
+ const focussableElements = [...document.querySelectorAll('button:not([disabled]), [href]:not(link):not(script), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]):not([disabled]), details:not([disabled]), summary:not(:disabled)')];
10044
+ const currentElementIndex = focussableElements.indexOf(currentElement);
10045
+ // If the currentElement is not in the focussable elements list or it is the last element
10046
+ if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {
10047
+ return null;
10048
+ }
10049
+ return focussableElements[currentElementIndex + 1];
10050
+ };
10035
10051
 
10036
10052
  const Trigger$7 = /*#__PURE__*/React__default.forwardRef(function Select2Trigger(props, ref) {
10037
10053
  const {
@@ -10360,6 +10376,7 @@ const BubbleSelect = props => {
10360
10376
 
10361
10377
  const Search$1 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(props, ref) {
10362
10378
  const {
10379
+ onTabKeyPress,
10363
10380
  ...otherProps
10364
10381
  } = props;
10365
10382
  const {
@@ -10384,7 +10401,7 @@ const Search$1 = /*#__PURE__*/React__default.forwardRef(function ListboxSearch(p
10384
10401
  // Select2 should close dropdown and receive focus, when user press Tab while searching (UX requirement to support better keyboard navigation)
10385
10402
  if (event.key === 'Tab') {
10386
10403
  setOpen(false);
10387
- return;
10404
+ onTabKeyPress();
10388
10405
  }
10389
10406
  if (isAriaSelectionKey(event) || event.key === 'ArrowDown' || event.key === 'ArrowUp') {
10390
10407
  var _listboxRef$current;
@@ -10624,6 +10641,7 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
10624
10641
  // align the listbox min width with the width of the input - it should never be smaller
10625
10642
  const dimensions = useBoundingClientRectListener(internalRef);
10626
10643
  // state
10644
+ const [tabTriggeredClose, setTabTriggeredClose] = React__default.useState(false);
10627
10645
  const [open, setOpen] = React__default.useState(false);
10628
10646
  const [value, _setValue] = reactUseControllableState.useControllableState({
10629
10647
  // uncontrolled
@@ -10706,6 +10724,22 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
10706
10724
  setShouldPauseHoverState(true);
10707
10725
  }
10708
10726
  };
10727
+ const handleCloseAutoFocus = event => {
10728
+ event.preventDefault();
10729
+ event.stopPropagation();
10730
+ if (tabTriggeredClose) {
10731
+ const nextFocussableElement = getNextFocussableElement(internalRef.current);
10732
+ if (nextFocussableElement) {
10733
+ // UX requirement: move focus to the next focussable element when tab key is pressed to select the value
10734
+ nextFocussableElement.focus();
10735
+ // Reset the tabTriggeredClose state
10736
+ setTabTriggeredClose(false);
10737
+ }
10738
+ } else {
10739
+ var _internalRef$current;
10740
+ (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.focus();
10741
+ }
10742
+ };
10709
10743
  const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
10710
10744
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
10711
10745
  value: context
@@ -10734,15 +10768,10 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
10734
10768
  asChild: true,
10735
10769
  align: "start",
10736
10770
  onOpenAutoFocus: () => {
10737
- var _internalRef$current;
10738
- (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.focus();
10739
- },
10740
- onCloseAutoFocus: event => {
10741
10771
  var _internalRef$current2;
10742
- event.preventDefault();
10743
- event.stopPropagation();
10744
10772
  (_internalRef$current2 = internalRef.current) === null || _internalRef$current2 === void 0 ? void 0 : _internalRef$current2.focus();
10745
10773
  },
10774
+ onCloseAutoFocus: handleCloseAutoFocus,
10746
10775
  sideOffset: 4,
10747
10776
  tabIndex: -1
10748
10777
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -10752,7 +10781,8 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
10752
10781
  }
10753
10782
  }, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(Search$1, {
10754
10783
  placeholder: onCreate ? texts.select2.searchOrCreate : texts.select2.search,
10755
- ref: searchRef
10784
+ ref: searchRef,
10785
+ onTabKeyPress: () => setTabTriggeredClose(true)
10756
10786
  })) : null, flattenedChildren.length <= 0 ? ( /*#__PURE__*/React__default.createElement("div", {
10757
10787
  className: "text-grey-700 -mt-0.5 flex h-8 items-center px-2",
10758
10788
  role: "presentation"
@@ -16731,11 +16761,14 @@ function Search$2(props) {
16731
16761
  setQuery(String(query !== null && query !== void 0 ? query : ''));
16732
16762
  };
16733
16763
  const handleClear = () => {
16734
- const [rowIndex = null, cellIndex = null] = tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex || 0];
16764
+ var _tableMeta$search$cur, _tableMeta$search$hig;
16765
+ const highlightedColumnIndex = (_tableMeta$search$cur = tableMeta.search.currentHighlightColumnIndex) !== null && _tableMeta$search$cur !== void 0 ? _tableMeta$search$cur : 0;
16766
+ const highlightedCell = (_tableMeta$search$hig = tableMeta.search.highlightedColumnIndexes[highlightedColumnIndex]) !== null && _tableMeta$search$hig !== void 0 ? _tableMeta$search$hig : [];
16767
+ const [rowIndex = null, columnIndex = null] = highlightedCell;
16735
16768
  const rows = table.getRowModel().rows;
16736
16769
  tableMeta.search.setQuery('');
16737
16770
  // Need to save row id and cell index, to be able to find the row in the table with updated indexes, after global filter will be reset.
16738
- lastCellIndex.value = String(cellIndex);
16771
+ lastCellIndex.value = String(columnIndex);
16739
16772
  if (rowIndex !== null) {
16740
16773
  var _rows$rowIndex;
16741
16774
  const rowId = ((_rows$rowIndex = rows[rowIndex]) === null || _rows$rowIndex === void 0 ? void 0 : _rows$rowIndex.id) || null;
@@ -17092,7 +17125,6 @@ function FilterValue(props) {
17092
17125
  }));
17093
17126
  }
17094
17127
  return /*#__PURE__*/React__default.createElement(Control, {
17095
- comparator: comparator,
17096
17128
  column: column,
17097
17129
  onChange: handleChange,
17098
17130
  value: value
@@ -17102,7 +17134,6 @@ function Control(props) {
17102
17134
  var _column$columnDef$met2, _column$columnDef$met3;
17103
17135
  const {
17104
17136
  column,
17105
- comparator,
17106
17137
  onChange,
17107
17138
  value,
17108
17139
  ...attributes
@@ -17169,9 +17200,19 @@ function Filter$1(props) {
17169
17200
  }
17170
17201
  } = filter;
17171
17202
  const handleChangeColumn = columnId => {
17203
+ var _columnPrev$columnDef, _columnNext$columnDef;
17204
+ const columnPrev = allColumns.find(column => column.id === id);
17205
+ const columnNext = allColumns.find(column => column.id === columnId);
17206
+ // UX requirement: if old column data type is the same as next column data type,
17207
+ // then we applying the same filter value for the next column,
17208
+ // but when data types are different, we're reseting comparator ans value for the next column
17209
+ const value = (columnPrev === null || columnPrev === void 0 ? void 0 : (_columnPrev$columnDef = columnPrev.columnDef.meta) === null || _columnPrev$columnDef === void 0 ? void 0 : _columnPrev$columnDef.dataType) === (columnNext === null || columnNext === void 0 ? void 0 : (_columnNext$columnDef = columnNext.columnDef.meta) === null || _columnNext$columnDef === void 0 ? void 0 : _columnNext$columnDef.dataType) ? filter.value : {
17210
+ comparator: null,
17211
+ value: null
17212
+ };
17172
17213
  handleChange(id, {
17173
17214
  id: columnId,
17174
- value: filter.value
17215
+ value
17175
17216
  });
17176
17217
  };
17177
17218
  const handleChangeComparator = comparator => {
@@ -18209,7 +18250,7 @@ function Toolbar(props) {
18209
18250
  }
18210
18251
  const tableMeta = table.options.meta;
18211
18252
  return /*#__PURE__*/React__default.createElement("div", {
18212
- className: "mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2",
18253
+ className: "mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 empty:hidden",
18213
18254
  "data-taco": "table3-toolbar"
18214
18255
  }, left, /*#__PURE__*/React__default.createElement(Group, {
18215
18256
  className: "ml-auto flex-shrink-0 print:hidden"
@@ -18473,7 +18514,7 @@ function ErrorAlert(props) {
18473
18514
  // Getting the row from core rows (ignoring search and filtering)
18474
18515
  const getCoreRow = React__default.useCallback(rowId => coreRows.find(coreRow => coreRow.id === rowId), [coreRows]);
18475
18516
  return /*#__PURE__*/React__default.createElement("div", {
18476
- className: "mb-4"
18517
+ className: "mb-4 empty:hidden"
18477
18518
  }, errorsRowIds.length ? ( /*#__PURE__*/React__default.createElement(Alert, {
18478
18519
  state: "error",
18479
18520
  className: "mb-1"