@economic/taco 2.3.0 → 2.4.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.
- package/dist/components/Header/components/Agreement/types.d.ts +1 -1
- package/dist/components/Menu/Context.d.ts +2 -0
- package/dist/components/Menu/components/Item.d.ts +3 -2
- package/dist/components/Provider/Localization.d.ts +12 -0
- package/dist/components/Provider/Provider.d.ts +6 -1
- package/dist/components/Table2/types.d.ts +1 -1
- package/dist/components/Table3/Table3.d.ts +1 -1
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +1 -2
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.d.ts +4 -4
- package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterValue.d.ts +1 -1
- package/dist/components/Table3/hooks/features/useColumnFreezing.d.ts +2 -1
- package/dist/components/Table3/hooks/features/useSettings.d.ts +2 -0
- package/dist/components/Table3/hooks/listeners/useSettingsStateListener.d.ts +2 -2
- package/dist/components/Table3/hooks/useTable.d.ts +2 -1
- package/dist/components/Table3/types.d.ts +24 -12
- package/dist/esm/packages/taco/src/components/Menu/Context.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/Menu.js +1 -0
- package/dist/esm/packages/taco/src/components/Menu/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Content.js +32 -2
- package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js +13 -1
- package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Provider/Provider.js +11 -4
- package/dist/esm/packages/taco/src/components/Provider/Provider.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +12 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
- package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +4 -19
- package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +8 -2
- package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +4 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +2 -24
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +68 -17
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js +31 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterValue.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +1 -5
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +18 -25
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js +5 -0
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/hooks/useParentStylesheets.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js +6 -2
- package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Toolbar.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +20 -16
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +18 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js.map +1 -0
- package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js +2 -4
- package/dist/esm/packages/taco/src/components/Table3/hooks/useConvertChildrenToColumns.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +18 -12
- package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/types.js +7 -5
- package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js +24 -6
- package/dist/esm/packages/taco/src/components/Table3/util/filtering.js.map +1 -1
- package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +34 -0
- package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -0
- package/dist/esm/packages/taco/src/hooks/useTacoSettings.js +9 -0
- package/dist/esm/packages/taco/src/hooks/useTacoSettings.js.map +1 -0
- package/dist/esm/packages/taco/src/index.js +1 -1
- package/dist/hooks/useLocalStorage.d.ts +1 -0
- package/dist/hooks/useTacoSettings.d.ts +1 -0
- package/dist/taco.cjs.development.js +358 -178
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +2 -2
- package/types.json +11325 -10524
- package/dist/components/Table3/components/toolbar/Filter/filters/components/Comparator.d.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/header/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../Menu/Menu';\nimport { isInternalColumn } from '../../../util/columns';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3ColumnHeaderMenu, TableStrategy } from '../../../types';\nimport { GotoPopover } from './Goto';\n\nexport function isGotoAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>) {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return !!(tableMeta.rowGoto.isEnabled && header.column.getCanSort() && header.column.getIsSorted());\n}\n\nexport function isMenuAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>): boolean {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n !!header.column.columnDef.meta?.menu ||\n !!tableMeta.columnFreezing.isEnabled ||\n (!!table.options.enableHiding && !!header.column.getCanHide()) ||\n isGotoAvailable(table, header)\n );\n}\n\nfunction getInitialFrozenIndex<TType = unknown>(table: RTable<TType>) {\n const tableMeta = table.options.meta as TableMeta<TType>;\n let index = 0;\n\n if (tableMeta.rowDrag.isEnabled) {\n index++;\n }\n\n if (table.options.enableRowSelection) {\n index++;\n }\n\n if (table.options.enableExpanding) {\n index++;\n }\n\n return index;\n}\n\nexport type MenuProps<TType = unknown> = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFreeze: boolean;\n canHide: boolean;\n index: number;\n menu?: Table3ColumnHeaderMenu;\n onGoto?: (query: string) => Promise<number>;\n onHide: (event: unknown) => void;\n scrollToIndex: TableStrategy['scrollToIndex'];\n table: RTable<TType>;\n};\n\nexport function Menu<TType = unknown>(props: MenuProps<TType>) {\n const { canFreeze, canHide, index, menu, onGoto: handleGoto, onHide: handleHide, scrollToIndex, table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n tableMeta.currentRow.setCurrentRowIndex(index);\n scrollToIndex(index + 2, { align: 'center' });\n } catch {\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const className = cn(\n '-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] !w-6 !min-w-[theme(spacing.6)] flex-shrink-0 justify-end',\n {\n '!flex': !!popoverElement,\n },\n props.className\n );\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (handleGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')}>\n {texts.table3.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"unreconciled\" onClick={handleClick}>\n {texts.table3.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n if (canFreeze) {\n const handleClick = () => {\n tableMeta.columnFreezing.setFrozenColumnIndex(index);\n };\n\n const frozenIndex = index - getInitialFrozenIndex(table);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={handleClick}>\n {frozenIndex === 0\n ? texts.table3.columns.menu.freezeFirstColumn\n : texts.table3.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(frozenIndex + 1))}\n </MenuPrimitive.Item>\n );\n\n if (tableMeta.columnFreezing.frozenColumnIndex !== undefined) {\n const handleClick = () => {\n tableMeta.columnFreezing.setFrozenColumnIndex(undefined);\n };\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={handleClick}>\n {texts.table3.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n }\n\n if (menu) {\n const customMenu = menu({ trigger: undefined });\n const customItems = React.Children.toArray(customMenu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [menu, index, canFreeze, canHide, handleGoto, tableMeta.columnFreezing.frozenColumnIndex]);\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["isGotoAvailable","table","header","isInternalColumn","id","tableMeta","options","meta","rowGoto","isEnabled","column","getCanSort","getIsSorted","isMenuAvailable","columnDef","menu","columnFreezing","enableHiding","getCanHide","getInitialFrozenIndex","index","rowDrag","enableRowSelection","enableExpanding","Menu","props","canFreeze","canHide","onGoto","handleGoto","onHide","handleHide","scrollToIndex","texts","useLocalization","popover","setPopover","React","useState","undefined","popoverElement","handleClosePopover","goto","query","currentRow","setCurrentRowIndex","align","GotoPopover","open","onChange","className","cn","memoedMenuItems","useMemo","menuItems","push","MenuPrimitive","Item","icon","onClick","table3","columns","gotoRow","handleClick","event","setTimeout","hideColumn","setFrozenColumnIndex","frozenIndex","freezeFirstColumn","freezeUptoColumn","replace","String","frozenColumnIndex","unfreezeColumns","customMenu","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/header/Menu.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Header as RTHeader, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Menu as MenuPrimitive } from '../../../../Menu/Menu';\nimport { isInternalColumn } from '../../../util/columns';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3ColumnHeaderMenu, TableStrategy } from '../../../types';\nimport { GotoPopover } from './Goto';\n\nexport function isGotoAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>) {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return !!(tableMeta.rowGoto.isEnabled && header.column.getCanSort() && header.column.getIsSorted());\n}\n\nexport function isMenuAvailable<TType = unknown>(table: RTable<TType>, header: RTHeader<TType, unknown>): boolean {\n if (isInternalColumn(header.id)) {\n return false;\n }\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n\n return (\n !!header.column.columnDef.meta?.menu ||\n !!tableMeta.columnFreezing.isEnabled ||\n (!!table.options.enableHiding && !!header.column.getCanHide()) ||\n isGotoAvailable(table, header)\n );\n}\n\nexport type MenuProps<TType = unknown> = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n canFreeze: boolean;\n canHide: boolean;\n index: number;\n menu?: Table3ColumnHeaderMenu;\n onGoto?: (query: string) => Promise<number>;\n onHide: (event: unknown) => void;\n scrollToIndex: TableStrategy['scrollToIndex'];\n table: RTable<TType>;\n};\n\nexport function Menu<TType = unknown>(props: MenuProps<TType>) {\n const { canFreeze, canHide, index, menu, onGoto: handleGoto, onHide: handleHide, scrollToIndex, table } = props;\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { texts } = useLocalization();\n const [popover, setPopover] = React.useState<string | undefined>(undefined);\n\n let popoverElement;\n\n if (popover) {\n const handleClosePopover = () => setPopover(undefined);\n\n switch (popover) {\n case 'goto': {\n if (handleGoto) {\n const goto = async (query: string) => {\n try {\n const index = await handleGoto(query);\n tableMeta.currentRow.setCurrentRowIndex(index);\n scrollToIndex(index + 2, { align: 'center' });\n } catch {\n //\n } finally {\n handleClosePopover();\n }\n };\n popoverElement = props => <GotoPopover {...props} open onChange={handleClosePopover} onGoto={goto} />;\n }\n }\n }\n }\n\n const className = cn(\n '-my-0.5 -mr-1 -ml-0.5 !h-6 !min-h-[theme(spacing.6)] !w-6 !min-w-[theme(spacing.6)] flex-shrink-0 justify-end',\n {\n '!flex': !!popoverElement,\n },\n props.className\n );\n\n const memoedMenuItems = React.useMemo(() => {\n const menuItems: JSX.Element[] = [];\n\n if (handleGoto) {\n menuItems.push(\n <MenuPrimitive.Item icon=\"move\" onClick={() => setPopover('goto')} shortcut=\"g\">\n {texts.table3.columns.menu.gotoRow}...\n </MenuPrimitive.Item>\n );\n }\n\n if (canHide) {\n // we do this in the next tick, otherwise the menu closes and react throws a \"state update on unmounted component\" error\n const handleClick = event => setTimeout(() => handleHide(event), 1);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"unreconciled\" onClick={handleClick}>\n {texts.table3.columns.menu.hideColumn}\n </MenuPrimitive.Item>\n );\n }\n\n if (canFreeze) {\n const frozenIndex = index - tableMeta.columnFreezing.frozenInternalColumnCount;\n const handleClick = () => tableMeta.columnFreezing.setFrozenColumnIndex(frozenIndex);\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-freeze\" onClick={handleClick}>\n {frozenIndex === 0\n ? texts.table3.columns.menu.freezeFirstColumn\n : texts.table3.columns.menu.freezeUptoColumn.replace('[TOTAL]', String(frozenIndex + 1))}\n </MenuPrimitive.Item>\n );\n\n if (tableMeta.columnFreezing.frozenColumnIndex !== undefined) {\n const handleClick = () => {\n tableMeta.columnFreezing.setFrozenColumnIndex(undefined);\n };\n\n menuItems.push(\n <MenuPrimitive.Item icon=\"column-unfreeze\" onClick={handleClick}>\n {texts.table3.columns.menu.unfreezeColumns}\n </MenuPrimitive.Item>\n );\n }\n }\n\n if (menu) {\n const customMenu = menu({ trigger: undefined });\n const customItems = React.Children.toArray(customMenu.props.children.props.children) as JSX.Element[];\n\n if (customItems.length) {\n if (menuItems.length) {\n menuItems.push(<MenuPrimitive.Separator />);\n }\n\n menuItems.push(...customItems);\n }\n }\n\n return menuItems.map((item, key) => React.cloneElement(item, { key }));\n }, [menu, index, canFreeze, canHide, handleGoto, tableMeta.columnFreezing.frozenColumnIndex]);\n\n return (\n <IconButton\n className={className}\n icon=\"more\"\n menu={\n popoverElement\n ? undefined\n : menuProps => (\n <MenuPrimitive {...menuProps}>\n <MenuPrimitive.Content>{memoedMenuItems}</MenuPrimitive.Content>\n </MenuPrimitive>\n )\n }\n popover={popoverElement}\n onClickCapture={event => event.preventDefault()}\n />\n );\n}\n"],"names":["isGotoAvailable","table","header","isInternalColumn","id","tableMeta","options","meta","rowGoto","isEnabled","column","getCanSort","getIsSorted","isMenuAvailable","columnDef","menu","columnFreezing","enableHiding","getCanHide","Menu","props","canFreeze","canHide","index","onGoto","handleGoto","onHide","handleHide","scrollToIndex","texts","useLocalization","popover","setPopover","React","useState","undefined","popoverElement","handleClosePopover","goto","query","currentRow","setCurrentRowIndex","align","GotoPopover","open","onChange","className","cn","memoedMenuItems","useMemo","menuItems","push","MenuPrimitive","Item","icon","onClick","shortcut","table3","columns","gotoRow","handleClick","event","setTimeout","hideColumn","frozenIndex","frozenInternalColumnCount","setFrozenColumnIndex","freezeFirstColumn","freezeUptoColumn","replace","String","frozenColumnIndex","unfreezeColumns","customMenu","trigger","customItems","Children","toArray","children","length","Separator","map","item","key","cloneElement","IconButton","menuProps","Content","onClickCapture","preventDefault"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js
CHANGED
|
@@ -3,6 +3,7 @@ import cn from 'classnames';
|
|
|
3
3
|
import { Tooltip } from '../../../../Tooltip/Tooltip.js';
|
|
4
4
|
import { useLocalization } from '../../../../Provider/Localization.js';
|
|
5
5
|
import { Checkbox } from '../../../../Checkbox/Checkbox.js';
|
|
6
|
+
import { Shortcut } from '../../../../Shortcut/Shortcut.js';
|
|
6
7
|
import { getRadioClassnames } from '../../../../RadioGroup/util.js';
|
|
7
8
|
import { Header as Header$1 } from '../header/Header.js';
|
|
8
9
|
import { RowContext } from '../../rows/RowContext.js';
|
|
@@ -61,7 +62,12 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
|
|
|
61
62
|
}
|
|
62
63
|
tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
|
|
63
64
|
};
|
|
64
|
-
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement(
|
|
65
|
+
return /*#__PURE__*/React__default.createElement(DisplayCell, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
|
|
66
|
+
title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
|
|
67
|
+
className: "ml-2",
|
|
68
|
+
keys: "Space"
|
|
69
|
+
}))
|
|
70
|
+
}, /*#__PURE__*/React__default.createElement(Checkbox, {
|
|
65
71
|
"aria-label": title,
|
|
66
72
|
className: "!mt-0",
|
|
67
73
|
checked: isSelected,
|
|
@@ -69,7 +75,7 @@ const Cell = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
|
|
|
69
75
|
// this is necessary to remove console spam from eslint
|
|
70
76
|
onChange: () => false,
|
|
71
77
|
tabIndex: isCurrentRow ? 0 : -1
|
|
72
|
-
}));
|
|
78
|
+
})));
|
|
73
79
|
} else {
|
|
74
80
|
const className = cn('!mt-0', getRadioClassnames());
|
|
75
81
|
const handleClick = event => {
|
package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3RowDragHandler } from '../../../types';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n onRowDrag?: Table3RowDragHandler<TType>\n): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: '!pt-[var(--table3-row-padding)] !justify-end !p-0 !pr-0.5',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !justify-end !p-0 !pr-0.5',\n },\n // options\n enableResizing: false,\n size: onRowDrag ? 22 : 32,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","onRowDrag","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Selection.js","sources":["../../../../../../../../../../src/components/Table3/components/columns/internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport { HeaderContext, CellContext, DisplayColumnDef, TableMeta } from '@tanstack/react-table';\nimport cn from 'classnames';\nimport { Checkbox } from '../../../../Checkbox/Checkbox';\nimport { Header as ColumnHeader } from '../header/Header';\nimport { DisplayCell } from '../cell/DisplayCell';\nimport { Tooltip } from '../../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Table3RowDragHandler } from '../../../types';\nimport { RowContext } from '../../rows/RowContext';\nimport { Footer } from '../footer/Footer';\nimport { getRadioClassnames } from '../../../../RadioGroup/util';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nexport const COLUMN_ID = '__select';\n\nfunction Header<TType = unknown>(context: HeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n\n if (context.table.options.enableMultiRowSelection) {\n const isAllRowsSelected = context.table.getIsAllRowsSelected();\n const isSomeRowsSelected = context.table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;\n\n return (\n <ColumnHeader {...context}>\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !mt-0\"\n key={String(`${isAllRowsSelected}_${isSomeRowsSelected}`)}\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected}\n onChange={context.table.toggleAllRowsSelected}\n tabIndex={-1}\n />\n </Tooltip>\n </ColumnHeader>\n );\n } else {\n return <ColumnHeader {...context}></ColumnHeader>;\n }\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nconst Cell = React.memo(\n function MemoedCell<TType = unknown>(context: CellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { rowIndex } = React.useContext(RowContext);\n const tableMeta = context.table.options.meta as TableMeta<TType>;\n\n const isCurrentRow = tableMeta.currentRow.currentRowIndex === rowIndex;\n const isSelected = context.row.getIsSelected();\n const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;\n\n if (context.table.options.enableMultiRowSelection) {\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n\n if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(\n tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0,\n rowIndex\n );\n\n context.table\n .getRowModel()\n .rows.slice(fromIndex, toIndex + 1)\n .forEach(row => row.toggleSelected(true));\n } else {\n context.row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <Tooltip\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n tabIndex={isCurrentRow ? 0 : -1}\n />\n </Tooltip>\n </DisplayCell>\n );\n } else {\n const className = cn('!mt-0', getRadioClassnames());\n\n const handleClick = (event: React.MouseEvent): void => {\n event.stopPropagation();\n context.row.toggleSelected();\n tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;\n };\n\n return (\n <DisplayCell {...context}>\n <button\n className={className}\n aria-checked={isSelected}\n onClick={handleClick}\n role=\"radio\"\n tabIndex={-1}\n type=\"button\">\n {isSelected ? <span className=\"h-2 w-2 rounded-full bg-white\" /> : null}\n </button>\n </DisplayCell>\n );\n }\n },\n function arePropsEqual(oldProps: CellContext<unknown, unknown>, newProps: CellContext<unknown, unknown>) {\n const oldTableMeta = oldProps.table.options.meta as TableMeta<unknown>;\n const newTableMeta = newProps.table.options.meta as TableMeta<unknown>;\n\n // we memo because we don't want the row re-rendering and removing focus from the checkbox\n // we can't default to the standard comparison because we need currentRow off the table meta\n // and we don't really care about re-rendering in any other scenario\n return (\n newTableMeta.currentRow.currentRowIndex === oldTableMeta.currentRow.currentRowIndex &&\n newProps.row.getIsSelected() !== oldProps.row.getIsSelected()\n );\n }\n) as <TType = unknown>(context: CellContext<TType, unknown>) => JSX.Element;\n\nexport function createRowSelectionColumn<TType = unknown>(\n onRowDrag?: Table3RowDragHandler<TType>\n): DisplayColumnDef<TType, unknown> {\n return {\n id: COLUMN_ID,\n header: Header,\n cell: Cell,\n footer: Footer,\n meta: {\n align: 'center',\n className: '!pt-[var(--table3-row-padding)] !justify-end !p-0 !pr-0.5',\n enableOrdering: false,\n enableSearch: false,\n enableTruncate: false,\n header: '',\n headerClassName: 'items-center !justify-end !p-0 !pr-0.5',\n },\n // options\n enableResizing: false,\n size: onRowDrag ? 22 : 32,\n };\n}\n"],"names":["COLUMN_ID","Header","context","texts","useLocalization","table","options","enableMultiRowSelection","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","table3","columns","select","deselectAll","selectAll","React","ColumnHeader","Tooltip","Checkbox","className","key","String","checked","indeterminate","onChange","toggleAllRowsSelected","tabIndex","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","memo","MemoedCell","rowIndex","useContext","RowContext","tableMeta","meta","isCurrentRow","currentRow","currentRowIndex","isSelected","row","getIsSelected","deselect","handleClick","event","stopPropagation","shiftKey","rowSelection","lastSelectedRowIndex","current","getRowModel","rows","slice","forEach","toggleSelected","DisplayCell","Shortcut","keys","onClick","cn","getRadioClassnames","role","type","arePropsEqual","oldProps","newProps","oldTableMeta","newTableMeta","createRowSelectionColumn","onRowDrag","id","header","cell","footer","Footer","align","enableOrdering","enableSearch","enableTruncate","headerClassName","enableResizing","size"],"mappings":"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"}
|
package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js
CHANGED
|
@@ -9,8 +9,8 @@ import { Group } from '../../../../../Group/Group.js';
|
|
|
9
9
|
import { Shortcut } from '../../../../../Shortcut/Shortcut.js';
|
|
10
10
|
import { isInternalColumn } from '../../../../util/columns.js';
|
|
11
11
|
import { Table3FilterComparator } from '../../../../types.js';
|
|
12
|
-
import { Filter } from './components/Filter.js';
|
|
13
12
|
import { Placeholder } from './components/Placeholder.js';
|
|
13
|
+
import { Filter } from './components/Filter.js';
|
|
14
14
|
|
|
15
15
|
function sortByHeader(a, b) {
|
|
16
16
|
var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
|
|
@@ -74,7 +74,9 @@ function Filters(props) {
|
|
|
74
74
|
//
|
|
75
75
|
const handleApply = () => {
|
|
76
76
|
table.setColumnFilters(filters.filter(f => {
|
|
77
|
-
|
|
77
|
+
var _allColumns$find$colu;
|
|
78
|
+
const controlRenderer = (_allColumns$find$colu = allColumns.find(c => c.id === f.id).columnDef.meta) === null || _allColumns$find$colu === void 0 ? void 0 : _allColumns$find$colu.control;
|
|
79
|
+
if (f.value.comparator === Table3FilterComparator.IsEmpty || f.value.comparator === Table3FilterComparator.IsNotEmpty || controlRenderer === 'switch') {
|
|
78
80
|
return true;
|
|
79
81
|
}
|
|
80
82
|
return !!f.value.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/Filters.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn } from '@tanstack/react-table';\nimport { Button } from '../../../../../Button/Button';\nimport { Icon } from '../../../../../Icon/Icon';\nimport { Popover } from '../../../../../Popover/Popover';\nimport { Table3FilterValue, Table3FilterComparator, Table3Filter } from '../../../../types';\nimport { Shortcut } from '../../../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../../../Provider/Localization';\nimport { isInternalColumn } from '../../../../util/columns';\nimport { Placeholder } from './components/Placeholder';\nimport { Filter } from './components/Filter';\nimport { Group } from '../../../../../Group/Group';\n\nfunction sortByHeader<TType = unknown>(a: RTColumn<TType>, b: RTColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport type FiltersProps<TType = unknown> = {\n total: number;\n table: RTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters;\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n // state, since we \"apply\" filters\n const [filters, setFilters] = React.useState<Table3Filter[]>(table.getState().columnFilters as Table3Filter[]);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string, filter: { id: string; value: Table3FilterValue }) => {\n setFilters(currentFilters => {\n const nextFilters = [...currentFilters];\n const index = nextFilters.findIndex(f => f.id === currentId);\n nextFilters[index] = filter;\n return nextFilters;\n });\n };\n\n const handleRemoveFilter = (columnId: string) => {\n if (filters.length === 1 && placeholderCount === 0) {\n setPlaceholderCount(count => count + 1);\n }\n\n setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));\n };\n\n // placeholders\n const handleCreateFilterFromPlaceholder = (columnId: string) => {\n setFilters(currentFilters => [\n ...currentFilters,\n {\n id: columnId,\n value: {\n comparator: Table3FilterComparator.Contains,\n value: undefined,\n },\n },\n ]);\n handleRemovePlaceholder();\n };\n\n const handleCreatePlaceholder = () => {\n setPlaceholderCount(count => count + 1);\n };\n\n const handleRemovePlaceholder = () => {\n setPlaceholderCount(count => count - 1);\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(\n filters.filter(f => {\n if (\n f.value.comparator === Table3FilterComparator.IsEmpty ||\n f.value.comparator === Table3FilterComparator.IsNotEmpty\n ) {\n return true;\n }\n\n return !!f.value.value;\n })\n );\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n return (\n <Button\n aria-label={texts.table3.filters.tooltip}\n className={cn({\n '!wcag-blue-100': appliedFilters.length,\n })}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table3.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table3.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(total))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filter={filter}\n filters={filters}\n position={index}\n onChange={handleChangeFilter}\n onRemove={handleRemoveFilter}\n />\n ))}\n {[...Array(placeholderCount)].map((_, index) => (\n <Placeholder\n key={`placeholder_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filters={filters}\n position={filters.length + index}\n onCreate={handleCreateFilterFromPlaceholder as any}\n onRemove={\n placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined\n }\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleCreatePlaceholder}>\n + {texts.table3.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Group className=\"ml-auto\">\n <Popover.Close>\n <Button>Cancel</Button>\n </Popover.Close>\n <Button onClick={handleClear}>Clear</Button>\n <Button appearance=\"primary\" onClick={handleApply}>\n Apply\n </Button>\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {texts.table3.filters.button} {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","columnDef","meta","header","localeCompare","Filters","props","total","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","filters","setFilters","useState","placeholderCount","setPlaceholderCount","handleChangeFilter","currentId","currentFilters","nextFilters","index","findIndex","f","handleRemoveFilter","columnId","length","count","handleCreateFilterFromPlaceholder","value","comparator","Table3FilterComparator","Contains","undefined","handleRemovePlaceholder","handleCreatePlaceholder","handleApply","setColumnFilters","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","Button","table3","tooltip","className","cn","popover","popoverProps","Popover","Content","button","replace","String","getFilteredRowModel","rows","map","Filter","position","onChange","onRemove","Array","_","Placeholder","onCreate","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","Icon","name"],"mappings":";;;;;;;;;;;;;;AAeA,SAASA,YAAY,CAAkBC,CAAkB,EAAEC,CAAkB;;EACzE,4BAAQD,CAAC,CAACE,SAAS,CAACC,IAAI,+EAAhB,kBAAkBC,MAAiB,oFAAnC,sBAAqCC,aAAa,2DAAlD,wEAAqDJ,CAAC,CAACC,SAAS,CAACC,IAAI,sDAAhB,kBAAkBC,MAAgB,CAAC;AACpG;SAOgBE,OAAO,CAAkBC,KAA0B;EAC/D,MAAM;IAAEC,KAAK;IAAEC;GAAO,GAAGF,KAAK;EAC9B,MAAM;IAAEG;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAoB,IAAI,CAAC;EACjD,MAAMC,UAAU,GAAGN,KAAK,CACnBO,iBAAiB,EAAE,CACnBC,MAAM,CAACC,MAAM,IAAI,CAACC,gBAAgB,CAACD,MAAM,CAACE,EAAE,CAAC,CAAC,CAC9CC,IAAI,CAACtB,YAAY,CAAC;EACvB,MAAMuB,cAAc,GAAGb,KAAK,CAACc,QAAQ,EAAE,CAACC,aAAa;EAErDC,gBAAgB,CAAC;IAAEC,GAAG,EAAE,GAAG;IAAEvB,IAAI,EAAE,IAAI;IAAEwB,KAAK,EAAE;GAAM,EAAGC,KAAoB;;IACzEA,KAAK,CAACC,cAAc,EAAE;IACtB,gBAAAjB,GAAG,CAACkB,OAAO,iDAAX,aAAaC,KAAK,EAAE;GACvB,CAAC;;EAGF,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGpB,cAAK,CAACqB,QAAQ,CAAiBzB,KAAK,CAACc,QAAQ,EAAE,CAACC,aAA+B,CAAC;EAC9G,MAAM,CAACW,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGvB,cAAK,CAACqB,QAAQ,CAAC,CAAC,CAAC;;EAGjE,MAAMG,kBAAkB,GAAG,CAACC,SAAiB,EAAErB,MAAgD;IAC3FgB,UAAU,CAACM,cAAc;MACrB,MAAMC,WAAW,GAAG,CAAC,GAAGD,cAAc,CAAC;MACvC,MAAME,KAAK,GAAGD,WAAW,CAACE,SAAS,CAACC,CAAC,IAAIA,CAAC,CAACvB,EAAE,KAAKkB,SAAS,CAAC;MAC5DE,WAAW,CAACC,KAAK,CAAC,GAAGxB,MAAM;MAC3B,OAAOuB,WAAW;KACrB,CAAC;GACL;EAED,MAAMI,kBAAkB,GAAIC,QAAgB;IACxC,IAAIb,OAAO,CAACc,MAAM,KAAK,CAAC,IAAIX,gBAAgB,KAAK,CAAC,EAAE;MAChDC,mBAAmB,CAACW,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;;IAG3Cd,UAAU,CAACM,cAAc,IAAIA,cAAc,CAACtB,MAAM,CAAC0B,CAAC,IAAIA,CAAC,CAACvB,EAAE,KAAKyB,QAAQ,CAAC,CAAC;GAC9E;;EAGD,MAAMG,iCAAiC,GAAIH,QAAgB;IACvDZ,UAAU,CAACM,cAAc,IAAI,CACzB,GAAGA,cAAc,EACjB;MACInB,EAAE,EAAEyB,QAAQ;MACZI,KAAK,EAAE;QACHC,UAAU,EAAEC,sBAAsB,CAACC,QAAQ;QAC3CH,KAAK,EAAEI;;KAEd,CACJ,CAAC;IACFC,uBAAuB,EAAE;GAC5B;EAED,MAAMC,uBAAuB,GAAG;IAC5BnB,mBAAmB,CAACW,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;GAC1C;EAED,MAAMO,uBAAuB,GAAG;IAC5BlB,mBAAmB,CAACW,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;GAC1C;;EAGD,MAAMS,WAAW,GAAG;IAChB/C,KAAK,CAACgD,gBAAgB,CAClBzB,OAAO,CAACf,MAAM,CAAC0B,CAAC;MACZ,IACIA,CAAC,CAACM,KAAK,CAACC,UAAU,KAAKC,sBAAsB,CAACO,OAAO,IACrDf,CAAC,CAACM,KAAK,CAACC,UAAU,KAAKC,sBAAsB,CAACQ,UAAU,EAC1D;QACE,OAAO,IAAI;;MAGf,OAAO,CAAC,CAAChB,CAAC,CAACM,KAAK,CAACA,KAAK;KACzB,CAAC,CACL;GACJ;EAED,MAAMW,WAAW,GAAG;IAChBnD,KAAK,CAACoD,kBAAkB,EAAE;IAC1B5B,UAAU,CAAC,EAAE,CAAC;IACdG,mBAAmB,CAAC,CAAC,CAAC;GACzB;EAED,oBACIvB,6BAACiD,MAAM;kBACSpD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,OAAO;IACxCC,SAAS,EAAEC,EAAE,CAAC;MACV,gBAAgB,EAAE5C,cAAc,CAACwB;KACpC,CAAC;IACFqB,OAAO,EAAEC,YAAY,iBACjBvD,6BAACwD,OAAO,oBAAKD,YAAY,gBACrBvD,6BAACwD,OAAO,CAACC,OAAO,qBACZzD;MAAKoD,SAAS,EAAC;oBACXpD;MAAKoD,SAAS,EAAC;oBACXpD;MAAKoD,SAAS,EAAC;oBACXpD;MAAIoD,SAAS,EAAC;OAAoBvD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACuC,MAAM,CAAM,eACnE1D;MAAGoD,SAAS,EAAC;OACRvD,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACxB,KAAK,CACtBgE,OAAO,CAAC,WAAW,EAAEC,MAAM,CAAChE,KAAK,CAACiE,mBAAmB,EAAE,CAACC,IAAI,CAAC7B,MAAM,CAAC,CAAC,CACrE0B,OAAO,CAAC,SAAS,EAAEC,MAAM,CAACjE,KAAK,CAAC,CAAC,CACtC,CACF,CACJ,eACNK;MAAKoD,SAAS,EAAC;OACVjC,OAAO,CAAC4C,GAAG,CAAC,CAAC3D,MAAM,EAAEwB,KAAK,kBACvB5B,6BAACgE,MAAM;MACHnD,GAAG,YAAYe,OAAO;MACtB1B,UAAU,EAAEA,UAA0C;MACtDE,MAAM,EAAEA,MAAM;MACde,OAAO,EAAEA,OAAO;MAChB8C,QAAQ,EAAErC,KAAK;MACfsC,QAAQ,EAAE1C,kBAAkB;MAC5B2C,QAAQ,EAAEpC;MAEjB,CAAC,EACD,CAAC,GAAGqC,KAAK,CAAC9C,gBAAgB,CAAC,CAAC,CAACyC,GAAG,CAAC,CAACM,CAAC,EAAEzC,KAAK,kBACvC5B,6BAACsE,WAAW;MACRzD,GAAG,iBAAiBe,OAAO;MAC3B1B,UAAU,EAAEA,UAA0C;MACtDiB,OAAO,EAAEA,OAAO;MAChB8C,QAAQ,EAAE9C,OAAO,CAACc,MAAM,GAAGL,KAAK;MAChC2C,QAAQ,EAAEpC,iCAAwC;MAClDgC,QAAQ,EACJ7C,gBAAgB,GAAG,CAAC,IAAIH,OAAO,CAACc,MAAM,GAAG,CAAC,GAAGQ,uBAAuB,GAAGD;MAGlF,CAAC,eACFxC;MAAKoD,SAAS,EAAC;oBACXpD,6BAACiD,MAAM;MAACuB,UAAU,EAAC,UAAU;MAACC,OAAO,EAAE/B;aAChC7C,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACuD,OAAO,CAACC,SAAS,CACpC,CACP,CACJ,eACN3E,6BAAC4E,KAAK;MAACxB,SAAS,EAAC;oBACbpD,6BAACwD,OAAO,CAACqB,KAAK,qBACV7E,6BAACiD,MAAM,iBAAgB,CACX,eAChBjD,6BAACiD,MAAM;MAACwB,OAAO,EAAE1B;eAA2B,eAC5C/C,6BAACiD,MAAM;MAACuB,UAAU,EAAC,SAAS;MAACC,OAAO,EAAE9B;eAE7B,CACL,CACN,CACQ,CAEzB;IACD5C,GAAG,EAAEA,GAAG;IACRoD,OAAO,eACHnD,4DACKH,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACgC,OAAO,eAC7BnD,6BAAC8E,QAAQ;MAAC1B,SAAS,EAAC,MAAM;MAAC2B,IAAI,EAAE;QAAElE,GAAG,EAAE,GAAG;QAAEvB,IAAI,EAAE,IAAI;QAAEwB,KAAK,EAAE;;MAAU;kBAGlFd,6BAACgF,IAAI;IAACC,IAAI,EAAExE,cAAc,CAACwB,MAAM,GAAG,cAAc,GAAG;IAAY,EAChEpC,KAAK,CAACqD,MAAM,CAAC/B,OAAO,CAACuC,MAAM,OAAGjD,cAAc,CAACwB,MAAM,OAAOxB,cAAc,CAACwB,SAAS,GAAG,EAAE,CACnF;AAEjB;;;;"}
|
|
1
|
+
{"version":3,"file":"Filters.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/Filters.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTable, Column as RTColumn } from '@tanstack/react-table';\nimport { Button } from '../../../../../Button/Button';\nimport { Icon } from '../../../../../Icon/Icon';\nimport { Popover } from '../../../../../Popover/Popover';\nimport { Table3FilterValue, Table3FilterComparator, Table3Filter } from '../../../../types';\nimport { Shortcut } from '../../../../../Shortcut/Shortcut';\nimport { useGlobalKeyDown } from '../../../../../../hooks/useGlobalKeyDown';\nimport { useLocalization } from '../../../../../Provider/Localization';\nimport { isInternalColumn } from '../../../../util/columns';\nimport { Placeholder } from './components/Placeholder';\nimport { Filter } from './components/Filter';\nimport { Group } from '../../../../../Group/Group';\n\nfunction sortByHeader<TType = unknown>(a: RTColumn<TType>, b: RTColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport type FiltersProps<TType = unknown> = {\n total: number;\n table: RTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters;\n\n useGlobalKeyDown({ key: 'f', meta: true, shift: true }, (event: KeyboardEvent) => {\n event.preventDefault();\n ref.current?.click();\n });\n\n // state, since we \"apply\" filters\n const [filters, setFilters] = React.useState<Table3Filter[]>(table.getState().columnFilters as Table3Filter[]);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string, filter: { id: string; value: Table3FilterValue }) => {\n setFilters(currentFilters => {\n const nextFilters = [...currentFilters];\n const index = nextFilters.findIndex(f => f.id === currentId);\n nextFilters[index] = filter;\n return nextFilters;\n });\n };\n\n const handleRemoveFilter = (columnId: string) => {\n if (filters.length === 1 && placeholderCount === 0) {\n setPlaceholderCount(count => count + 1);\n }\n\n setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));\n };\n\n // placeholders\n const handleCreateFilterFromPlaceholder = (columnId: string) => {\n setFilters(currentFilters => [\n ...currentFilters,\n {\n id: columnId,\n value: {\n comparator: Table3FilterComparator.Contains,\n value: undefined,\n },\n },\n ]);\n handleRemovePlaceholder();\n };\n\n const handleCreatePlaceholder = () => {\n setPlaceholderCount(count => count + 1);\n };\n\n const handleRemovePlaceholder = () => {\n setPlaceholderCount(count => count - 1);\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(\n filters.filter(f => {\n const controlRenderer = (allColumns.find(c => c.id === f.id) as RTColumn<TType, unknown>).columnDef.meta?.control;\n if (\n f.value.comparator === Table3FilterComparator.IsEmpty ||\n f.value.comparator === Table3FilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n return !!f.value.value;\n })\n );\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n return (\n <Button\n aria-label={texts.table3.filters.tooltip}\n className={cn({\n '!wcag-blue-100': appliedFilters.length,\n })}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table3.filters.button}</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n {texts.table3.filters.total\n .replace('[CURRENT]', String(table.getFilteredRowModel().rows.length))\n .replace('[TOTAL]', String(total))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filter={filter}\n filters={filters}\n position={index}\n onChange={handleChangeFilter}\n onRemove={handleRemoveFilter}\n />\n ))}\n {[...Array(placeholderCount)].map((_, index) => (\n <Placeholder\n key={`placeholder_${index}`}\n allColumns={allColumns as RTColumn<unknown, unknown>[]}\n filters={filters}\n position={filters.length + index}\n onCreate={handleCreateFilterFromPlaceholder as any}\n onRemove={\n placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined\n }\n />\n ))}\n <div className=\"justify-start\">\n <Button appearance=\"discrete\" onClick={handleCreatePlaceholder}>\n + {texts.table3.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Group className=\"ml-auto\">\n <Popover.Close>\n <Button>Cancel</Button>\n </Popover.Close>\n <Button onClick={handleClear}>Clear</Button>\n <Button appearance=\"primary\" onClick={handleApply}>\n Apply\n </Button>\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n }>\n <Icon name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {texts.table3.filters.button} {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","columnDef","meta","header","localeCompare","Filters","props","total","table","texts","useLocalization","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","useGlobalKeyDown","key","shift","event","preventDefault","current","click","filters","setFilters","useState","placeholderCount","setPlaceholderCount","handleChangeFilter","currentId","currentFilters","nextFilters","index","findIndex","f","handleRemoveFilter","columnId","length","count","handleCreateFilterFromPlaceholder","value","comparator","Table3FilterComparator","Contains","undefined","handleRemovePlaceholder","handleCreatePlaceholder","handleApply","setColumnFilters","controlRenderer","find","c","control","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","Button","table3","tooltip","className","cn","popover","popoverProps","Popover","Content","button","replace","String","getFilteredRowModel","rows","map","Filter","position","onChange","onRemove","Array","_","Placeholder","onCreate","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","Icon","name"],"mappings":"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"}
|
|
@@ -65,8 +65,8 @@ function Filter(props) {
|
|
|
65
65
|
onChange: handleChangeColumn,
|
|
66
66
|
value: id
|
|
67
67
|
}), /*#__PURE__*/React__default.createElement(FilterComparator, {
|
|
68
|
+
column: column,
|
|
68
69
|
onChange: handleChangeComparator,
|
|
69
|
-
validComparators: guessComparatorsBasedOnControl(),
|
|
70
70
|
value: comparator
|
|
71
71
|
}), /*#__PURE__*/React__default.createElement(FilterValue, {
|
|
72
72
|
column: column,
|
|
@@ -80,28 +80,6 @@ function Filter(props) {
|
|
|
80
80
|
onClick: handleRemove
|
|
81
81
|
}));
|
|
82
82
|
}
|
|
83
|
-
function guessComparatorsBasedOnControl(instance, control) {
|
|
84
|
-
if ( /*#__PURE__*/React__default.isValidElement(instance)) {
|
|
85
|
-
const {
|
|
86
|
-
props,
|
|
87
|
-
type
|
|
88
|
-
} = instance;
|
|
89
|
-
if (type.displayName === 'Select2') {
|
|
90
|
-
if (props.multiple) {
|
|
91
|
-
return [Table3FilterComparator.IsOneOf, Table3FilterComparator.IsNoneOf, Table3FilterComparator.IsAllOf];
|
|
92
|
-
}
|
|
93
|
-
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
switch (control) {
|
|
97
|
-
case 'datepicker':
|
|
98
|
-
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween];
|
|
99
|
-
case 'switch':
|
|
100
|
-
return [Table3FilterComparator.IsEqualTo];
|
|
101
|
-
default:
|
|
102
|
-
return [Table3FilterComparator.Contains, Table3FilterComparator.DoesNotContain, Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween];
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
83
|
|
|
106
|
-
export { Filter
|
|
84
|
+
export { Filter };
|
|
107
85
|
//# sourceMappingURL=Filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filter.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/Filter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnFiltersState } from '@tanstack/react-table';\nimport { IconButton } from '../../../../../../IconButton/IconButton';\nimport {
|
|
1
|
+
{"version":3,"file":"Filter.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/Filter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnFiltersState } from '@tanstack/react-table';\nimport { IconButton } from '../../../../../../IconButton/IconButton';\nimport { Table3Filter, Table3FilterComparator } from '../../../../../types';\nimport { useLocalization } from '../../../../../../Provider/Localization';\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { FilterValue } from './FilterValue';\n\nexport type FilterProps<TType = unknown> = {\n allColumns: RTColumn<TType, unknown>[];\n filter: Table3Filter;\n filters: ColumnFiltersState;\n position: number;\n onChange: (id: string, value: Table3Filter) => void;\n onRemove: (columnId: string) => void;\n};\n\nexport function Filter<TType = unknown>(props: FilterProps<TType>) {\n const { allColumns, filter, filters, onChange: handleChange, onRemove, position } = props;\n const { texts } = useLocalization();\n const column = allColumns.find(c => c.id === filter.id) as RTColumn<TType, unknown>;\n\n const {\n id,\n value: { comparator, value },\n } = filter;\n\n const handleChangeColumn = (columnId: string) => {\n handleChange(id, { id: columnId, value: filter.value });\n };\n\n const handleChangeComparator = (comparator: Table3FilterComparator) => {\n let nextValue = filter.value.value;\n\n if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {\n nextValue = undefined;\n }\n handleChange(id, { id, value: { comparator, value: nextValue } });\n };\n\n const handleChangeValue = (value: any) => {\n handleChange(id, { id, value: { ...filter.value, value } });\n };\n\n const handleRemove = () => onRemove(id);\n\n return (\n <div className=\"flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns} filters={filters} onChange={handleChangeColumn as any} value={id} />\n <FilterComparator column={column} onChange={handleChangeComparator as any} value={comparator} />\n <FilterValue column={column} comparator={comparator} onChange={handleChangeValue} value={value} />\n <IconButton appearance=\"discrete\" className=\"ml-auto\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n}\n"],"names":["Filter","props","allColumns","filter","filters","onChange","handleChange","onRemove","position","texts","useLocalization","column","find","c","id","value","comparator","handleChangeColumn","columnId","handleChangeComparator","nextValue","Table3FilterComparator","IsEmpty","IsNotEmpty","undefined","handleChangeValue","handleRemove","React","className","table3","conditions","and","where","FilterColumn","FilterComparator","FilterValue","IconButton","appearance","icon","onClick"],"mappings":";;;;;;;;SAkBgBA,MAAM,CAAkBC,KAAyB;EAC7D,MAAM;IAAEC,UAAU;IAAEC,MAAM;IAAEC,OAAO;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,QAAQ;IAAEC;GAAU,GAAGP,KAAK;EACzF,MAAM;IAAEQ;GAAO,GAAGC,eAAe,EAAE;EACnC,MAAMC,MAAM,GAAGT,UAAU,CAACU,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,KAAKX,MAAM,CAACW,EAAE,CAA6B;EAEnF,MAAM;IACFA,EAAE;IACFC,KAAK,EAAE;MAAEC,UAAU;MAAED;;GACxB,GAAGZ,MAAM;EAEV,MAAMc,kBAAkB,GAAIC,QAAgB;IACxCZ,YAAY,CAACQ,EAAE,EAAE;MAAEA,EAAE,EAAEI,QAAQ;MAAEH,KAAK,EAAEZ,MAAM,CAACY;KAAO,CAAC;GAC1D;EAED,MAAMI,sBAAsB,GAAIH,UAAkC;IAC9D,IAAII,SAAS,GAAGjB,MAAM,CAACY,KAAK,CAACA,KAAK;IAElC,IAAIC,UAAU,KAAKK,sBAAsB,CAACC,OAAO,IAAIN,UAAU,KAAKK,sBAAsB,CAACE,UAAU,EAAE;MACnGH,SAAS,GAAGI,SAAS;;IAEzBlB,YAAY,CAACQ,EAAE,EAAE;MAAEA,EAAE;MAAEC,KAAK,EAAE;QAAEC,UAAU;QAAED,KAAK,EAAEK;;KAAa,CAAC;GACpE;EAED,MAAMK,iBAAiB,GAAIV,KAAU;IACjCT,YAAY,CAACQ,EAAE,EAAE;MAAEA,EAAE;MAAEC,KAAK,EAAE;QAAE,GAAGZ,MAAM,CAACY,KAAK;QAAEA;;KAAS,CAAC;GAC9D;EAED,MAAMW,YAAY,GAAG,MAAMnB,QAAQ,CAACO,EAAE,CAAC;EAEvC,oBACIa;IAAKC,SAAS,EAAC;kBACXD;IAAKC,SAAS,EAAC;KACVpB,QAAQ,GAAG,CAAC,GAAGC,KAAK,CAACoB,MAAM,CAACzB,OAAO,CAAC0B,UAAU,CAACC,GAAG,GAAGtB,KAAK,CAACoB,MAAM,CAACzB,OAAO,CAAC0B,UAAU,CAACE,KAAK,CACzF,eACNL,6BAACM,YAAY;IAAC/B,UAAU,EAAEA,UAAU;IAAEE,OAAO,EAAEA,OAAO;IAAEC,QAAQ,EAAEY,kBAAyB;IAAEF,KAAK,EAAED;IAAM,eAC1Ga,6BAACO,gBAAgB;IAACvB,MAAM,EAAEA,MAAM;IAAEN,QAAQ,EAAEc,sBAA6B;IAAEJ,KAAK,EAAEC;IAAc,eAChGW,6BAACQ,WAAW;IAACxB,MAAM,EAAEA,MAAM;IAAEK,UAAU,EAAEA,UAAU;IAAEX,QAAQ,EAAEoB,iBAAiB;IAAEV,KAAK,EAAEA;IAAS,eAClGY,6BAACS,UAAU;IAACC,UAAU,EAAC,UAAU;IAACT,SAAS,EAAC,SAAS;IAACU,IAAI,EAAC,OAAO;IAACC,OAAO,EAAEb;IAAgB,CAC1F;AAEd;;;;"}
|
|
@@ -5,29 +5,74 @@ import { Table3FilterComparator } from '../../../../../types.js';
|
|
|
5
5
|
|
|
6
6
|
function FilterComparator(props) {
|
|
7
7
|
const {
|
|
8
|
+
column,
|
|
8
9
|
onChange: handleChange,
|
|
9
10
|
value,
|
|
10
|
-
validComparators,
|
|
11
11
|
...attributes
|
|
12
12
|
} = props;
|
|
13
13
|
const {
|
|
14
14
|
texts
|
|
15
15
|
} = useLocalization();
|
|
16
|
+
const validComparators = guessComparatorsBasedOnControl(column);
|
|
16
17
|
React__default.useEffect(() => {
|
|
17
|
-
if (value === undefined) {
|
|
18
|
+
if (value === undefined || !validComparators.includes(value)) {
|
|
18
19
|
handleChange === null || handleChange === void 0 ? void 0 : handleChange(validComparators[0]);
|
|
19
20
|
}
|
|
20
|
-
}, []);
|
|
21
|
+
}, [validComparators]);
|
|
21
22
|
return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
|
|
22
23
|
className: "!w-32 flex-shrink-0",
|
|
24
|
+
disabled: !column,
|
|
23
25
|
onChange: handleChange,
|
|
24
26
|
value: value
|
|
25
|
-
}), validComparators.map(
|
|
26
|
-
key:
|
|
27
|
-
value:
|
|
28
|
-
}, getComparatorText(
|
|
27
|
+
}), validComparators.map(comparator => /*#__PURE__*/React__default.createElement(Select2.Option, {
|
|
28
|
+
key: comparator,
|
|
29
|
+
value: comparator
|
|
30
|
+
}, getComparatorText(comparator, texts, column))));
|
|
29
31
|
}
|
|
30
|
-
|
|
32
|
+
function guessComparatorsBasedOnControl(column) {
|
|
33
|
+
var _column$columnDef$met;
|
|
34
|
+
const columnMeta = (_column$columnDef$met = column === null || column === void 0 ? void 0 : column.columnDef.meta) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : {};
|
|
35
|
+
if (Array.isArray(columnMeta.filters)) {
|
|
36
|
+
return columnMeta.filters;
|
|
37
|
+
}
|
|
38
|
+
if (typeof columnMeta.control === 'function') {
|
|
39
|
+
const renderedControl = columnMeta.control({
|
|
40
|
+
onBlur: () => undefined,
|
|
41
|
+
onFocus: () => undefined,
|
|
42
|
+
setValue: () => undefined,
|
|
43
|
+
value: undefined,
|
|
44
|
+
disabled: false,
|
|
45
|
+
readOnly: false,
|
|
46
|
+
ref: undefined
|
|
47
|
+
});
|
|
48
|
+
if ( /*#__PURE__*/React__default.isValidElement(renderedControl)) {
|
|
49
|
+
const {
|
|
50
|
+
props,
|
|
51
|
+
type
|
|
52
|
+
} = renderedControl;
|
|
53
|
+
if (type.displayName === 'Select2') {
|
|
54
|
+
if (props.multiple) {
|
|
55
|
+
return [Table3FilterComparator.HasAnyOf, Table3FilterComparator.HasAllOf, Table3FilterComparator.IsEqualTo, Table3FilterComparator.HasNoneOf, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
56
|
+
}
|
|
57
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// @ts-expect-error -- we ignore it because it conflicts with Table2 also overridding ColumnMeta
|
|
62
|
+
if (columnMeta.dataType === 'number') {
|
|
63
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsBetween, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
64
|
+
}
|
|
65
|
+
if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {
|
|
66
|
+
return [Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsBetween, Table3FilterComparator.IsLessThan, Table3FilterComparator.IsGreaterThan, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty, Table3FilterComparator.IsLessThanOrEqualTo, Table3FilterComparator.IsGreaterThanOrEqualTo];
|
|
67
|
+
}
|
|
68
|
+
if (columnMeta.control === 'switch') {
|
|
69
|
+
return [Table3FilterComparator.IsEqualTo];
|
|
70
|
+
}
|
|
71
|
+
return [Table3FilterComparator.Contains, Table3FilterComparator.DoesNotContain, Table3FilterComparator.IsEqualTo, Table3FilterComparator.IsNotEqualTo, Table3FilterComparator.IsEmpty, Table3FilterComparator.IsNotEmpty];
|
|
72
|
+
}
|
|
73
|
+
function getComparatorText(comparator, texts, column) {
|
|
74
|
+
var _column$columnDef, _column$columnDef$met2;
|
|
75
|
+
const isDate = (column === null || column === void 0 ? void 0 : (_column$columnDef = column.columnDef) === null || _column$columnDef === void 0 ? void 0 : (_column$columnDef$met2 = _column$columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control) === 'datepicker';
|
|
31
76
|
switch (comparator) {
|
|
32
77
|
case Table3FilterComparator.Contains:
|
|
33
78
|
return texts.table3.filters.comparators.contains;
|
|
@@ -38,23 +83,29 @@ const getComparatorText = (comparator, texts) => {
|
|
|
38
83
|
case Table3FilterComparator.IsNotEqualTo:
|
|
39
84
|
return texts.table3.filters.comparators.isNotEqualTo;
|
|
40
85
|
case Table3FilterComparator.IsGreaterThan:
|
|
41
|
-
return texts.table3.filters.comparators.isGreaterThan;
|
|
86
|
+
return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;
|
|
42
87
|
case Table3FilterComparator.IsLessThan:
|
|
43
|
-
return texts.table3.filters.comparators.isLessThan;
|
|
88
|
+
return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;
|
|
44
89
|
case Table3FilterComparator.IsBetween:
|
|
45
90
|
return texts.table3.filters.comparators.isBetween;
|
|
46
|
-
case Table3FilterComparator.IsOneOf:
|
|
47
|
-
return texts.table3.filters.comparators.isOneOf;
|
|
48
|
-
case Table3FilterComparator.IsNoneOf:
|
|
49
|
-
return texts.table3.filters.comparators.isNoneOf;
|
|
50
|
-
case Table3FilterComparator.IsAllOf:
|
|
51
|
-
return texts.table3.filters.comparators.isAllOf;
|
|
52
91
|
case Table3FilterComparator.IsEmpty:
|
|
53
92
|
return texts.table3.filters.comparators.isEmpty;
|
|
54
93
|
case Table3FilterComparator.IsNotEmpty:
|
|
55
94
|
return texts.table3.filters.comparators.isNotEmpty;
|
|
95
|
+
case Table3FilterComparator.IsLessThanOrEqualTo:
|
|
96
|
+
return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;
|
|
97
|
+
case Table3FilterComparator.IsGreaterThanOrEqualTo:
|
|
98
|
+
return isDate ? texts.table3.filters.comparators.isOnOrAfter : texts.table3.filters.comparators.isGreaterThanOrEqualTo;
|
|
99
|
+
case Table3FilterComparator.HasAnyOf:
|
|
100
|
+
return texts.table3.filters.comparators.hasAnyOf;
|
|
101
|
+
case Table3FilterComparator.HasAllOf:
|
|
102
|
+
return texts.table3.filters.comparators.hasAllOf;
|
|
103
|
+
case Table3FilterComparator.HasNoneOf:
|
|
104
|
+
return texts.table3.filters.comparators.hasNoneOf;
|
|
105
|
+
default:
|
|
106
|
+
return '';
|
|
56
107
|
}
|
|
57
|
-
}
|
|
108
|
+
}
|
|
58
109
|
|
|
59
110
|
export { FilterComparator };
|
|
60
111
|
//# sourceMappingURL=FilterComparator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps = Omit<Select2Props, 'children'> & {\n validComparators: Table3FilterComparator[];\n};\n\nexport function FilterComparator(props: FilterComparatorProps) {\n const { onChange: handleChange, value, validComparators, ...attributes } = props;\n const { texts } = useLocalization();\n\n React.useEffect(() => {\n if (value === undefined) {\n handleChange?.(validComparators[0]);\n }\n }, []);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" onChange={handleChange} value={value}>\n {validComparators.map(comp => (\n <Select2.Option key={comp} value={comp}>\n {getComparatorText(comp, texts)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nconst getComparatorText = (comparator: Table3FilterComparator, texts: LocalizationTexts) => {\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsOneOf:\n return texts.table3.filters.comparators.isOneOf;\n\n case Table3FilterComparator.IsNoneOf:\n return texts.table3.filters.comparators.isNoneOf;\n\n case Table3FilterComparator.IsAllOf:\n return texts.table3.filters.comparators.isAllOf;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n }\n};\n"],"names":["FilterComparator","props","onChange","handleChange","value","validComparators","attributes","texts","useLocalization","React","useEffect","undefined","Select2","className","map","comp","Option","key","getComparatorText","comparator","Table3FilterComparator","Contains","table3","filters","comparators","contains","DoesNotContain","doesNotContain","IsEqualTo","isEqualTo","IsNotEqualTo","isNotEqualTo","IsGreaterThan","isGreaterThan","IsLessThan","isLessThan","IsBetween","isBetween","IsOneOf","isOneOf","IsNoneOf","isNoneOf","IsAllOf","isAllOf","IsEmpty","isEmpty","IsNotEmpty","isNotEmpty"],"mappings":";;;;;SASgBA,gBAAgB,CAACC,KAA4B;EACzD,MAAM;IAAEC,QAAQ,EAAEC,YAAY;IAAEC,KAAK;IAAEC,gBAAgB;IAAE,GAAGC;GAAY,GAAGL,KAAK;EAChF,MAAM;IAAEM;GAAO,GAAGC,eAAe,EAAE;EAEnCC,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIN,KAAK,KAAKO,SAAS,EAAE;MACrBR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGE,gBAAgB,CAAC,CAAC,CAAC,CAAC;;GAE1C,EAAE,EAAE,CAAC;EAEN,oBACII,6BAACG,OAAO,oBAAKN,UAAU;IAAEO,SAAS,EAAC,qBAAqB;IAACX,QAAQ,EAAEC,YAAY;IAAEC,KAAK,EAAEA;MACnFC,gBAAgB,CAACS,GAAG,CAACC,IAAI,iBACtBN,6BAACG,OAAO,CAACI,MAAM;IAACC,GAAG,EAAEF,IAAI;IAAEX,KAAK,EAAEW;KAC7BG,iBAAiB,CAACH,IAAI,EAAER,KAAK,CAAC,CAEtC,CAAC,CACI;AAElB;AAEA,MAAMW,iBAAiB,GAAG,CAACC,UAAkC,EAAEZ,KAAwB;EACnF,QAAQY,UAAU;IACd,KAAKC,sBAAsB,CAACC,QAAQ;MAChC,OAAOd,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACC,QAAQ;IAEpD,KAAKL,sBAAsB,CAACM,cAAc;MACtC,OAAOnB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACG,cAAc;IAE1D,KAAKP,sBAAsB,CAACQ,SAAS;MACjC,OAAOrB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACK,SAAS;IAErD,KAAKT,sBAAsB,CAACU,YAAY;MACpC,OAAOvB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACO,YAAY;IAExD,KAAKX,sBAAsB,CAACY,aAAa;MACrC,OAAOzB,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACS,aAAa;IAEzD,KAAKb,sBAAsB,CAACc,UAAU;MAClC,OAAO3B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACW,UAAU;IAEtD,KAAKf,sBAAsB,CAACgB,SAAS;MACjC,OAAO7B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACa,SAAS;IAErD,KAAKjB,sBAAsB,CAACkB,OAAO;MAC/B,OAAO/B,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACe,OAAO;IAEnD,KAAKnB,sBAAsB,CAACoB,QAAQ;MAChC,OAAOjC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACiB,QAAQ;IAEpD,KAAKrB,sBAAsB,CAACsB,OAAO;MAC/B,OAAOnC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACmB,OAAO;IAEnD,KAAKvB,sBAAsB,CAACwB,OAAO;MAC/B,OAAOrC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACqB,OAAO;IAEnD,KAAKzB,sBAAsB,CAAC0B,UAAU;MAClC,OAAOvC,KAAK,CAACe,MAAM,CAACC,OAAO,CAACC,WAAW,CAACuB,UAAU;;AAE9D,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"FilterComparator.js","sources":["../../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, ColumnMeta } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../../../Select2/Select2';\nimport { Table3FilterComparator } from '../../../../../types';\nimport { LocalizationTexts, useLocalization } from '../../../../../../Provider/Localization';\n\nexport type FilterComparatorProps<TType = unknown> = Omit<Select2Props, 'children'> & {\n column?: RTColumn<TType, unknown>;\n};\n\nexport function FilterComparator<TType = unknown>(props: FilterComparatorProps<TType>) {\n const { column, onChange: handleChange, value, ...attributes } = props;\n const { texts } = useLocalization();\n\n const validComparators = guessComparatorsBasedOnControl(column);\n\n React.useEffect(() => {\n if (value === undefined || !validComparators.includes(value as number)) {\n handleChange?.(validComparators[0]);\n }\n }, [validComparators]);\n\n return (\n <Select2 {...attributes} className=\"!w-32 flex-shrink-0\" disabled={!column} onChange={handleChange} value={value}>\n {validComparators.map(comparator => (\n <Select2.Option key={comparator} value={comparator}>\n {getComparatorText(comparator, texts, column)}\n </Select2.Option>\n ))}\n </Select2>\n );\n}\n\nfunction guessComparatorsBasedOnControl<TType = unknown>(column?: RTColumn<TType, unknown>) {\n const columnMeta = (column?.columnDef.meta ?? {}) as ColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n Table3FilterComparator.HasAnyOf,\n Table3FilterComparator.HasAllOf,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.HasNoneOf,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n // @ts-expect-error -- we ignore it because it conflicts with Table2 also overridding ColumnMeta\n if (columnMeta.dataType === 'number') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n }\n\n if (columnMeta.control === 'datepicker' || columnMeta.dataType === 'datetime') {\n return [\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsBetween,\n Table3FilterComparator.IsLessThan,\n Table3FilterComparator.IsGreaterThan,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n Table3FilterComparator.IsLessThanOrEqualTo,\n Table3FilterComparator.IsGreaterThanOrEqualTo,\n ];\n }\n\n if (columnMeta.control === 'switch') {\n return [Table3FilterComparator.IsEqualTo];\n }\n\n return [\n Table3FilterComparator.Contains,\n Table3FilterComparator.DoesNotContain,\n Table3FilterComparator.IsEqualTo,\n Table3FilterComparator.IsNotEqualTo,\n Table3FilterComparator.IsEmpty,\n Table3FilterComparator.IsNotEmpty,\n ];\n}\n\nfunction getComparatorText<TType = unknown>(\n comparator: Table3FilterComparator,\n texts: LocalizationTexts,\n column?: RTColumn<TType, unknown>\n) {\n const isDate = column?.columnDef?.meta?.control === 'datepicker';\n\n switch (comparator) {\n case Table3FilterComparator.Contains:\n return texts.table3.filters.comparators.contains;\n\n case Table3FilterComparator.DoesNotContain:\n return texts.table3.filters.comparators.doesNotContain;\n\n case Table3FilterComparator.IsEqualTo:\n return texts.table3.filters.comparators.isEqualTo;\n\n case Table3FilterComparator.IsNotEqualTo:\n return texts.table3.filters.comparators.isNotEqualTo;\n\n case Table3FilterComparator.IsGreaterThan:\n return isDate ? texts.table3.filters.comparators.isAfter : texts.table3.filters.comparators.isGreaterThan;\n\n case Table3FilterComparator.IsLessThan:\n return isDate ? texts.table3.filters.comparators.isBefore : texts.table3.filters.comparators.isLessThan;\n\n case Table3FilterComparator.IsBetween:\n return texts.table3.filters.comparators.isBetween;\n\n case Table3FilterComparator.IsEmpty:\n return texts.table3.filters.comparators.isEmpty;\n\n case Table3FilterComparator.IsNotEmpty:\n return texts.table3.filters.comparators.isNotEmpty;\n\n case Table3FilterComparator.IsLessThanOrEqualTo:\n return isDate ? texts.table3.filters.comparators.isOnOrBefore : texts.table3.filters.comparators.isLessThanOrEqualTo;\n\n case Table3FilterComparator.IsGreaterThanOrEqualTo:\n return isDate\n ? texts.table3.filters.comparators.isOnOrAfter\n : texts.table3.filters.comparators.isGreaterThanOrEqualTo;\n\n case Table3FilterComparator.HasAnyOf:\n return texts.table3.filters.comparators.hasAnyOf;\n\n case Table3FilterComparator.HasAllOf:\n return texts.table3.filters.comparators.hasAllOf;\n\n case Table3FilterComparator.HasNoneOf:\n return texts.table3.filters.comparators.hasNoneOf;\n\n default:\n return '';\n }\n}\n"],"names":["FilterComparator","props","column","onChange","handleChange","value","attributes","texts","useLocalization","validComparators","guessComparatorsBasedOnControl","React","useEffect","undefined","includes","Select2","className","disabled","map","comparator","Option","key","getComparatorText","columnMeta","columnDef","meta","Array","isArray","filters","control","renderedControl","onBlur","onFocus","setValue","readOnly","ref","isValidElement","type","displayName","multiple","Table3FilterComparator","HasAnyOf","HasAllOf","IsEqualTo","HasNoneOf","IsEmpty","IsNotEmpty","IsNotEqualTo","dataType","IsGreaterThan","IsLessThan","IsBetween","IsLessThanOrEqualTo","IsGreaterThanOrEqualTo","Contains","DoesNotContain","isDate","table3","comparators","contains","doesNotContain","isEqualTo","isNotEqualTo","isAfter","isGreaterThan","isBefore","isLessThan","isBetween","isEmpty","isNotEmpty","isOnOrBefore","isLessThanOrEqualTo","isOnOrAfter","isGreaterThanOrEqualTo","hasAnyOf","hasAllOf","hasNoneOf"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
1
|
+
import React__default, { useEffect } from 'react';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { useLocalization } from '../../../../../../Provider/Localization.js';
|
|
2
4
|
import { Input } from '../../../../../../Input/Input.js';
|
|
3
5
|
import { Datepicker } from '../../../../../../Datepicker/Datepicker.js';
|
|
4
6
|
import { Switch } from '../../../../../../Switch/Switch.js';
|
|
7
|
+
import { getInputAppearanceClassnames } from '../../../../columns/styles.js';
|
|
5
8
|
import { Table3FilterComparator } from '../../../../../types.js';
|
|
6
9
|
|
|
7
10
|
function FilterValue(props) {
|
|
@@ -11,6 +14,9 @@ function FilterValue(props) {
|
|
|
11
14
|
onChange: handleChange,
|
|
12
15
|
value
|
|
13
16
|
} = props;
|
|
17
|
+
const {
|
|
18
|
+
texts
|
|
19
|
+
} = useLocalization();
|
|
14
20
|
if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {
|
|
15
21
|
return null;
|
|
16
22
|
}
|
|
@@ -18,6 +24,14 @@ function FilterValue(props) {
|
|
|
18
24
|
var _column$columnDef$met;
|
|
19
25
|
const fromValue = Array.isArray(value) ? value[0] : undefined;
|
|
20
26
|
const toValue = Array.isArray(value) ? value[1] : undefined;
|
|
27
|
+
if (column === undefined) {
|
|
28
|
+
return /*#__PURE__*/React__default.createElement(Input, {
|
|
29
|
+
"aria-label": texts.table3.filters.emptyFilter.value,
|
|
30
|
+
className: "flex-grow",
|
|
31
|
+
disabled: true,
|
|
32
|
+
value: texts.table3.filters.emptyFilter.value
|
|
33
|
+
});
|
|
34
|
+
}
|
|
21
35
|
if (((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime') {
|
|
22
36
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
23
37
|
className: "flex flex-grow items-center gap-2"
|
|
@@ -46,6 +60,7 @@ function FilterValue(props) {
|
|
|
46
60
|
}));
|
|
47
61
|
}
|
|
48
62
|
return /*#__PURE__*/React__default.createElement(Control, {
|
|
63
|
+
comparator: comparator,
|
|
49
64
|
column: column,
|
|
50
65
|
onChange: handleChange,
|
|
51
66
|
value: value
|
|
@@ -55,12 +70,18 @@ function Control(props) {
|
|
|
55
70
|
var _column$columnDef$met2, _column$columnDef$met3;
|
|
56
71
|
const {
|
|
57
72
|
column,
|
|
73
|
+
comparator,
|
|
58
74
|
onChange,
|
|
59
75
|
value,
|
|
60
76
|
...attributes
|
|
61
77
|
} = props;
|
|
62
78
|
const controlRenderer = (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control;
|
|
63
79
|
const dataType = (_column$columnDef$met3 = column.columnDef.meta) === null || _column$columnDef$met3 === void 0 ? void 0 : _column$columnDef$met3.dataType;
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
if (controlRenderer === 'switch') {
|
|
82
|
+
onChange(false);
|
|
83
|
+
}
|
|
84
|
+
}, []);
|
|
64
85
|
if (typeof controlRenderer === 'function') {
|
|
65
86
|
return controlRenderer({
|
|
66
87
|
...attributes,
|
|
@@ -72,11 +93,19 @@ function Control(props) {
|
|
|
72
93
|
onChange: event => onChange(event.detail),
|
|
73
94
|
value: value
|
|
74
95
|
}));
|
|
75
|
-
} else if (controlRenderer === 'switch'
|
|
96
|
+
} else if (controlRenderer === 'switch') {
|
|
76
97
|
return /*#__PURE__*/React__default.createElement(Switch, Object.assign({}, attributes, {
|
|
98
|
+
className: "m-1.5",
|
|
77
99
|
checked: Boolean(value),
|
|
78
100
|
onChange: onChange
|
|
79
101
|
}));
|
|
102
|
+
} else if ((controlRenderer === 'input' || controlRenderer === undefined) && dataType === 'number') {
|
|
103
|
+
return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
|
|
104
|
+
className: cn(getInputAppearanceClassnames(), 'flex-grow'),
|
|
105
|
+
type: "number",
|
|
106
|
+
onChange: event => onChange(event.target.valueAsNumber),
|
|
107
|
+
value: String(value !== null && value !== void 0 ? value : '')
|
|
108
|
+
}));
|
|
80
109
|
}
|
|
81
110
|
return /*#__PURE__*/React__default.createElement(Input, Object.assign({}, attributes, {
|
|
82
111
|
className: "flex-grow",
|