@economic/taco 1.19.1 → 1.21.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 (183) hide show
  1. package/dist/components/AlertDialog/components/Content.d.ts +1 -1
  2. package/dist/components/Calendar/Calendar.d.ts +1 -1
  3. package/dist/components/Calendar/Calendar.stories.d.ts +1 -1
  4. package/dist/components/Datepicker/Datepicker.d.ts +1 -1
  5. package/dist/components/Datepicker/Datepicker.stories.d.ts +1 -1
  6. package/dist/components/Dialog/components/Content.d.ts +1 -1
  7. package/dist/components/Dialog/components/Drawer.d.ts +1 -1
  8. package/dist/components/IconButton/IconButton.d.ts +2 -2
  9. package/dist/components/Input/Input.d.ts +1 -1
  10. package/dist/components/Listbox/Listbox.d.ts +2 -2
  11. package/dist/components/Listbox/Listbox.stories.d.ts +1 -1
  12. package/dist/components/Listbox/ScrollableList.d.ts +1 -1
  13. package/dist/components/Menu/components/Checkbox.d.ts +1 -1
  14. package/dist/components/Menu/components/Content.d.ts +1 -1
  15. package/dist/components/Menu/components/Item.d.ts +1 -1
  16. package/dist/components/Menu/components/Link.d.ts +1 -1
  17. package/dist/components/Menu/components/Trigger.d.ts +1 -1
  18. package/dist/components/Provider/Localization.d.ts +26 -0
  19. package/dist/components/SearchInput/SearchInput.d.ts +1 -1
  20. package/dist/components/SearchInput/SearchInput.stories.d.ts +1 -1
  21. package/dist/components/Select/Select.d.ts +1 -1
  22. package/dist/components/Select/Select.stories.d.ts +1 -1
  23. package/dist/components/Select2/components/Option.d.ts +1 -1
  24. package/dist/components/Select2/components/Search.d.ts +1 -1
  25. package/dist/components/Select2/components/Trigger.d.ts +1 -1
  26. package/dist/components/Shortcut/Shortcut.d.ts +5 -0
  27. package/dist/components/Table2/Table2.d.ts +33 -0
  28. package/dist/components/Table2/Table2.stories.d.ts +50 -0
  29. package/dist/components/Table2/components/BatchActionsMenu.d.ts +10 -0
  30. package/dist/components/Table2/components/ColumnSettingsButton.d.ts +7 -0
  31. package/dist/components/Table2/components/EditModeButton.d.ts +7 -0
  32. package/dist/components/Table2/components/RowDensityButton.d.ts +7 -0
  33. package/dist/components/Table2/components/Search.d.ts +3 -0
  34. package/dist/components/Table2/components/ShortcutsGuideButton.d.ts +7 -0
  35. package/dist/components/Table2/components/column/Base.d.ts +12 -0
  36. package/dist/components/Table2/components/column/Cell.d.ts +15 -0
  37. package/dist/components/Table2/components/column/Footer.d.ts +9 -0
  38. package/dist/components/Table2/components/column/Header.d.ts +11 -0
  39. package/dist/components/Table2/components/column/Indicator.d.ts +16 -0
  40. package/dist/components/Table2/components/column/ValidationError.d.ts +5 -0
  41. package/dist/components/Table2/components/column/utils.d.ts +2 -0
  42. package/dist/components/Table2/components/filters/FiltersButton.d.ts +7 -0
  43. package/dist/components/Table2/components/filters/components/Column.d.ts +11 -0
  44. package/dist/components/Table2/components/filters/components/ColumnFilter.d.ts +9 -0
  45. package/dist/components/Table2/components/filters/components/Comparator.d.ts +11 -0
  46. package/dist/components/Table2/components/filters/components/InferredControl.d.ts +10 -0
  47. package/dist/components/Table2/components/row/Context.d.ts +16 -0
  48. package/dist/components/Table2/components/row/ExpandedRow.d.ts +6 -0
  49. package/dist/components/Table2/components/row/Row.d.ts +7 -0
  50. package/dist/components/Table2/hooks/listeners/useActiveCellStateListener.d.ts +3 -0
  51. package/dist/components/Table2/hooks/listeners/useActiveRowStateListener.d.ts +3 -0
  52. package/dist/components/Table2/hooks/listeners/useColumnOffsetStateListener.d.ts +4 -0
  53. package/dist/components/Table2/hooks/listeners/useRowSelectionListener.d.ts +3 -0
  54. package/dist/components/Table2/hooks/listeners/useSettingsStateListener.d.ts +3 -0
  55. package/dist/components/Table2/hooks/useActiveCell.d.ts +26 -0
  56. package/dist/components/Table2/hooks/useActiveRow.d.ts +10 -0
  57. package/dist/components/Table2/hooks/useColumnDefinitions.d.ts +36 -0
  58. package/dist/components/Table2/hooks/useEditMode.d.ts +28 -0
  59. package/dist/components/Table2/hooks/useGridTemplate.d.ts +2 -0
  60. package/dist/components/Table2/hooks/useSeparatedChildren.d.ts +1 -0
  61. package/dist/components/Table2/hooks/useTable.d.ts +41 -0
  62. package/dist/components/Table2/hooks/useVirtualiser.d.ts +23 -0
  63. package/dist/components/Table2/types.d.ts +139 -0
  64. package/dist/components/Table2/utilities/cell.d.ts +13 -0
  65. package/dist/components/Table2/utilities/columns.d.ts +13 -0
  66. package/dist/components/Table2/utilities/filterFn.d.ts +3 -0
  67. package/dist/components/Tag/Tag.d.ts +1 -1
  68. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  69. package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
  70. package/dist/esm/index.css +1 -1
  71. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +14 -1
  72. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
  73. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +13 -5
  74. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  75. package/dist/esm/packages/taco/src/components/Provider/Localization.js +23 -0
  76. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  77. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +18 -0
  78. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -0
  79. package/dist/esm/packages/taco/src/components/Table2/Table2.js +374 -0
  80. package/dist/esm/packages/taco/src/components/Table2/Table2.js.map +1 -0
  81. package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js +83 -0
  82. package/dist/esm/packages/taco/src/components/Table2/components/BatchActionsMenu.js.map +1 -0
  83. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js +238 -0
  84. package/dist/esm/packages/taco/src/components/Table2/components/ColumnSettingsButton.js.map +1 -0
  85. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js +58 -0
  86. package/dist/esm/packages/taco/src/components/Table2/components/EditModeButton.js.map +1 -0
  87. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js +31 -0
  88. package/dist/esm/packages/taco/src/components/Table2/components/RowDensityButton.js.map +1 -0
  89. package/dist/esm/packages/taco/src/components/Table2/components/Search.js +55 -0
  90. package/dist/esm/packages/taco/src/components/Table2/components/Search.js.map +1 -0
  91. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js +94 -0
  92. package/dist/esm/packages/taco/src/components/Table2/components/ShortcutsGuideButton.js.map +1 -0
  93. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js +32 -0
  94. package/dist/esm/packages/taco/src/components/Table2/components/column/Base.js.map +1 -0
  95. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js +516 -0
  96. package/dist/esm/packages/taco/src/components/Table2/components/column/Cell.js.map +1 -0
  97. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js +27 -0
  98. package/dist/esm/packages/taco/src/components/Table2/components/column/Footer.js.map +1 -0
  99. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js +159 -0
  100. package/dist/esm/packages/taco/src/components/Table2/components/column/Header.js.map +1 -0
  101. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js +78 -0
  102. package/dist/esm/packages/taco/src/components/Table2/components/column/Indicator.js.map +1 -0
  103. package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js +30 -0
  104. package/dist/esm/packages/taco/src/components/Table2/components/column/ValidationError.js.map +1 -0
  105. package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js +38 -0
  106. package/dist/esm/packages/taco/src/components/Table2/components/column/utils.js.map +1 -0
  107. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js +89 -0
  108. package/dist/esm/packages/taco/src/components/Table2/components/filters/FiltersButton.js.map +1 -0
  109. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js +31 -0
  110. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Column.js.map +1 -0
  111. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js +121 -0
  112. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/ColumnFilter.js.map +1 -0
  113. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js +60 -0
  114. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/Comparator.js.map +1 -0
  115. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js +96 -0
  116. package/dist/esm/packages/taco/src/components/Table2/components/filters/components/InferredControl.js.map +1 -0
  117. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js +26 -0
  118. package/dist/esm/packages/taco/src/components/Table2/components/row/Context.js.map +1 -0
  119. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js +33 -0
  120. package/dist/esm/packages/taco/src/components/Table2/components/row/ExpandedRow.js.map +1 -0
  121. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js +58 -0
  122. package/dist/esm/packages/taco/src/components/Table2/components/row/Row.js.map +1 -0
  123. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js +19 -0
  124. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useActiveRowStateListener.js.map +1 -0
  125. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js +44 -0
  126. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useColumnOffsetStateListener.js.map +1 -0
  127. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js +17 -0
  128. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useRowSelectionListener.js.map +1 -0
  129. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js +25 -0
  130. package/dist/esm/packages/taco/src/components/Table2/hooks/listeners/useSettingsStateListener.js.map +1 -0
  131. package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js +33 -0
  132. package/dist/esm/packages/taco/src/components/Table2/hooks/useActiveRow.js.map +1 -0
  133. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js +109 -0
  134. package/dist/esm/packages/taco/src/components/Table2/hooks/useColumnDefinitions.js.map +1 -0
  135. package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js +112 -0
  136. package/dist/esm/packages/taco/src/components/Table2/hooks/useEditMode.js.map +1 -0
  137. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js +36 -0
  138. package/dist/esm/packages/taco/src/components/Table2/hooks/useGridTemplate.js.map +1 -0
  139. package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js +21 -0
  140. package/dist/esm/packages/taco/src/components/Table2/hooks/useSeparatedChildren.js.map +1 -0
  141. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js +202 -0
  142. package/dist/esm/packages/taco/src/components/Table2/hooks/useTable.js.map +1 -0
  143. package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js +49 -0
  144. package/dist/esm/packages/taco/src/components/Table2/hooks/useVirtualiser.js.map +1 -0
  145. package/dist/esm/packages/taco/src/components/Table2/types.js +16 -0
  146. package/dist/esm/packages/taco/src/components/Table2/types.js.map +1 -0
  147. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js +41 -0
  148. package/dist/esm/packages/taco/src/components/Table2/utilities/cell.js.map +1 -0
  149. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js +311 -0
  150. package/dist/esm/packages/taco/src/components/Table2/utilities/columns.js.map +1 -0
  151. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js +96 -0
  152. package/dist/esm/packages/taco/src/components/Table2/utilities/filterFn.js.map +1 -0
  153. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +16 -0
  154. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js.map +1 -0
  155. package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js +13 -0
  156. package/dist/esm/packages/taco/src/hooks/useGlobalKeyboardShortcut.js.map +1 -0
  157. package/dist/esm/packages/taco/src/index.js +4 -2
  158. package/dist/esm/packages/taco/src/index.js.map +1 -1
  159. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +59 -0
  160. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -0
  161. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +47 -0
  162. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -0
  163. package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js +28 -0
  164. package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js.map +1 -0
  165. package/dist/esm/packages/taco/src/utils/date.js +4 -1
  166. package/dist/esm/packages/taco/src/utils/date.js.map +1 -1
  167. package/dist/esm/packages/taco/src/utils/dom.js +2 -1
  168. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  169. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +20 -0
  170. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -0
  171. package/dist/hooks/useGlobalKeyboardShortcut.d.ts +1 -0
  172. package/dist/index.css +1 -1
  173. package/dist/index.d.ts +2 -0
  174. package/dist/primitives/Sortable/Sortable.d.ts +2 -2
  175. package/dist/taco.cjs.development.js +3489 -90
  176. package/dist/taco.cjs.development.js.map +1 -1
  177. package/dist/taco.cjs.production.min.js +1 -1
  178. package/dist/taco.cjs.production.min.js.map +1 -1
  179. package/dist/utils/date.d.ts +1 -0
  180. package/dist/utils/hooks/useTruncated.d.ts +3 -0
  181. package/package.json +4 -2
  182. package/tailwind.config.js +11 -1
  183. package/types.json +1368 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersButton.js","sources":["../../../../../../../../../src/components/Table2/components/filters/FiltersButton.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport { Table as RTTable, Column as RTColumn, TableMeta } from '@tanstack/react-table';\nimport { Button } from '../../../Button/Button';\nimport { Icon } from '../../../Icon/Icon';\nimport { Popover } from '../../../Popover/Popover';\nimport { Table2Filter } from '../../types';\nimport { isInternalColumn } from '../../utilities/columns';\nimport { ColumnFilter } from './components/ColumnFilter';\nimport { Group } from '../../../Group/Group';\nimport { Shortcut } from '../../../Shortcut/Shortcut';\nimport { useGlobalKeyboardShortcut } from '../../../../hooks/useGlobalKeyboardShortcut';\n\nexport type FiltersButtonProps = {\n length: number;\n table: RTTable<any>;\n};\n\nexport const FiltersButton = ({ length, table }: FiltersButtonProps) => {\n const ref = React.useRef<HTMLButtonElement>(null);\n const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id));\n const { shouldDisableTableActions } = table.options.meta as TableMeta<any>;\n\n const columnFilters = table.getState().columnFilters;\n\n const filteredColumns = columnFilters.reduce((columns: RTColumn<any, any>[], columnFilter) => {\n const column = allColumns.find(c => c.id === columnFilter.id);\n\n if (column) {\n return [...columns, column];\n }\n\n return columns;\n }, []);\n\n const handleAdd = () => {\n const firstFilterableColumn = allColumns.find(c => c.getCanFilter() && !columnFilters.find(f => f.id === c.id));\n\n if (firstFilterableColumn) {\n firstFilterableColumn.setFilterValue({\n comparator: undefined,\n value: undefined,\n } as Table2Filter);\n }\n };\n\n const handleReset = () => {\n table.resetColumnFilters();\n };\n\n useGlobalKeyboardShortcut((event: KeyboardEvent) => {\n if (event.key === 'f' && (event.ctrlKey || event.metaKey) && event.shiftKey) {\n event.preventDefault();\n ref.current?.click();\n }\n });\n\n return (\n <Button\n appearance={columnFilters.length ? 'primary' : 'default'}\n className={cn({\n '!wcag-blue-100': columnFilters.length,\n })}\n disabled={shouldDisableTableActions}\n popover={popoverProps => (\n <Popover {...popoverProps}>\n <Popover.Content>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">Filter</h4>\n <p className=\"text-grey-700 mb-0 mr-auto mt-px inline-flex\">\n Viewing {table.getFilteredRowModel().rows.length} of {length}\n </p>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filteredColumns.map((column, index) => (\n <ColumnFilter\n key={`${column.id}_${index}`}\n allColumns={allColumns}\n index={index}\n column={column}\n table={table}\n />\n ))}\n </div>\n <Group className=\"justify-between\">\n <Button appearance=\"discrete\" onClick={handleAdd}>\n + Add filter\n </Button>\n {columnFilters.length ? <Button onClick={handleReset}>Clear all filters</Button> : null}\n </Group>\n </div>\n </Popover.Content>\n </Popover>\n )}\n ref={ref}\n tooltip={\n <>\n {columnFilters.length ? 'Change filters' : 'Apply filters'}\n <Shortcut className=\"ml-2\" keys={['Ctrl', 'Shift', 'F']} />\n </>\n }>\n <Icon name={columnFilters.length ? 'filter-solid' : 'filter'} />\n {columnFilters.length ? `Filters (${columnFilters.length})` : 'Filters'}\n </Button>\n );\n};\n"],"names":["FiltersButton","length","table","ref","React","useRef","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","shouldDisableTableActions","options","meta","columnFilters","getState","filteredColumns","reduce","columns","columnFilter","find","c","handleAdd","firstFilterableColumn","getCanFilter","f","setFilterValue","comparator","undefined","value","handleReset","resetColumnFilters","useGlobalKeyboardShortcut","event","key","ctrlKey","metaKey","shiftKey","preventDefault","current","click","Button","appearance","className","cn","disabled","popover","popoverProps","Popover","Content","getFilteredRowModel","rows","map","index","ColumnFilter","Group","onClick","tooltip","Shortcut","keys","Icon","name"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import React__default from 'react';
2
+ import { Select2 } from '../../../../Select2/Select2.js';
3
+
4
+ const Column = ({
5
+ allColumns,
6
+ column,
7
+ index,
8
+ table,
9
+ ...props
10
+ }) => {
11
+ const handleChange = id => {
12
+ table.setColumnFilters(currentColumnFilters => {
13
+ const nextColumnFilters = [...currentColumnFilters];
14
+ nextColumnFilters[index].id = id;
15
+ nextColumnFilters[index].value = {};
16
+ return nextColumnFilters;
17
+ });
18
+ };
19
+ return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, props, {
20
+ autoFocus: true,
21
+ onChange: handleChange,
22
+ value: column.id
23
+ }), allColumns.map(c => /*#__PURE__*/React__default.createElement(Select2.Option, {
24
+ key: c.id,
25
+ disabled: !c.getCanFilter() || c.id !== column.id && !!table.getState().columnFilters.find(f => f.id === c.id),
26
+ value: c.id
27
+ }, String(c.columnDef.header))));
28
+ };
29
+
30
+ export { Column };
31
+ //# sourceMappingURL=Column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Column.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/Column.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../Select2/Select2';\nimport { Table2Filter } from '../../../types';\n\ntype ColumnProps = Omit<Select2Props, 'children'> & {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n};\n\nexport const Column = ({ allColumns, column, index, table, ...props }: ColumnProps) => {\n const handleChange = id => {\n table.setColumnFilters(currentColumnFilters => {\n const nextColumnFilters = [...currentColumnFilters];\n nextColumnFilters[index].id = id;\n (nextColumnFilters[index] as Table2Filter).value = {};\n return nextColumnFilters;\n });\n };\n\n return (\n <Select2 {...props} autoFocus onChange={handleChange} value={column.id}>\n {allColumns.map(c => (\n <Select2.Option\n key={c.id}\n disabled={\n !c.getCanFilter() || (c.id !== column.id && !!table.getState().columnFilters.find(f => f.id === c.id))\n }\n value={c.id}>\n {String(c.columnDef.header)}\n </Select2.Option>\n ))}\n </Select2>\n );\n};\n"],"names":["Column","allColumns","column","index","table","props","handleChange","id","setColumnFilters","currentColumnFilters","nextColumnFilters","value","React","Select2","autoFocus","onChange","map","c","Option","key","disabled","getCanFilter","getState","columnFilters","find","f","String","columnDef","header"],"mappings":";;;MAYaA,MAAM,GAAG,CAAC;EAAEC,UAAU;EAAEC,MAAM;EAAEC,KAAK;EAAEC,KAAK;EAAE,GAAGC;CAAoB;EAC9E,MAAMC,YAAY,GAAGC,EAAE;IACnBH,KAAK,CAACI,gBAAgB,CAACC,oBAAoB;MACvC,MAAMC,iBAAiB,GAAG,CAAC,GAAGD,oBAAoB,CAAC;MACnDC,iBAAiB,CAACP,KAAK,CAAC,CAACI,EAAE,GAAGA,EAAE;MAC/BG,iBAAiB,CAACP,KAAK,CAAkB,CAACQ,KAAK,GAAG,EAAE;MACrD,OAAOD,iBAAiB;KAC3B,CAAC;GACL;EAED,oBACIE,6BAACC,OAAO,oBAAKR,KAAK;IAAES,SAAS;IAACC,QAAQ,EAAET,YAAY;IAAEK,KAAK,EAAET,MAAM,CAACK;MAC/DN,UAAU,CAACe,GAAG,CAACC,CAAC,iBACbL,6BAACC,OAAO,CAACK,MAAM;IACXC,GAAG,EAAEF,CAAC,CAACV,EAAE;IACTa,QAAQ,EACJ,CAACH,CAAC,CAACI,YAAY,EAAE,IAAKJ,CAAC,CAACV,EAAE,KAAKL,MAAM,CAACK,EAAE,IAAI,CAAC,CAACH,KAAK,CAACkB,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAClB,EAAE,KAAKU,CAAC,CAACV,EAAE,CAAE;IAE1GI,KAAK,EAAEM,CAAC,CAACV;KACRmB,MAAM,CAACT,CAAC,CAACU,SAAS,CAACC,MAAM,CAAC,CAElC,CAAC,CACI;AAElB;;;;"}
@@ -0,0 +1,121 @@
1
+ import React__default from 'react';
2
+ import { IconButton } from '../../../../IconButton/IconButton.js';
3
+ import { Input } from '../../../../Input/Input.js';
4
+ import { Datepicker } from '../../../../Datepicker/Datepicker.js';
5
+ import { Switch } from '../../../../Switch/Switch.js';
6
+ import { Table2FilterComparator } from '../../../types.js';
7
+ import { Column } from './Column.js';
8
+ import { Comparator } from './Comparator.js';
9
+ import { InferredControl } from './InferredControl.js';
10
+
11
+ const ColumnFilter = props => {
12
+ var _column$columnDef$hea, _column$columnDef$met, _column$columnDef$met2, _control;
13
+ const {
14
+ allColumns,
15
+ column,
16
+ index,
17
+ table
18
+ } = props;
19
+ const {
20
+ comparator,
21
+ value
22
+ } = column.getFilterValue();
23
+ const ariaLabel = String((_column$columnDef$hea = column.columnDef.header) !== null && _column$columnDef$hea !== void 0 ? _column$columnDef$hea : '');
24
+ const ref = React__default.useRef(null);
25
+ let control;
26
+ const controlType = (_column$columnDef$met = (_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.control) !== null && _column$columnDef$met !== void 0 ? _column$columnDef$met : 'input';
27
+ if (typeof controlType === 'function') {
28
+ control = controlType({
29
+ onBlur: () => Promise.resolve(),
30
+ onFocus: () => Promise.resolve(),
31
+ ref,
32
+ setValue: value => column.setFilterValue(currentValue => ({
33
+ ...currentValue,
34
+ value
35
+ })),
36
+ value,
37
+ disabled: false,
38
+ readOnly: false
39
+ });
40
+ } else if (controlType === 'input') {
41
+ control = /*#__PURE__*/React__default.createElement(Input, {
42
+ "aria-label": ariaLabel,
43
+ onChange: event => column.setFilterValue(currentValue => ({
44
+ ...currentValue,
45
+ value: event.target.value
46
+ })),
47
+ value: String(value !== null && value !== void 0 ? value : '')
48
+ });
49
+ } else if (controlType === 'datepicker') {
50
+ control = /*#__PURE__*/React__default.createElement(Datepicker, {
51
+ "aria-label": ariaLabel,
52
+ onChange: event => column.setFilterValue(currentValue => ({
53
+ ...currentValue,
54
+ value: event.detail
55
+ })),
56
+ value: value
57
+ });
58
+ } else if (controlType === 'switch') {
59
+ control = /*#__PURE__*/React__default.createElement(Switch, {
60
+ "aria-label": ariaLabel,
61
+ checked: Boolean(value),
62
+ onChange: checked => column.setFilterValue(currentValue => ({
63
+ ...currentValue,
64
+ value: checked
65
+ }))
66
+ });
67
+ }
68
+ const handleRemove = () => column.setFilterValue(undefined);
69
+ const comparators = guessComparatorsBasedOnControl(controlType, control);
70
+ return /*#__PURE__*/React__default.createElement("div", {
71
+ className: "mb-2 flex gap-2"
72
+ }, /*#__PURE__*/React__default.createElement("div", {
73
+ className: "flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
74
+ }, index === 0 ? 'Where' : 'And'), /*#__PURE__*/React__default.createElement(Column, {
75
+ className: "!w-32 flex-shrink-0",
76
+ allColumns: allColumns,
77
+ column: column,
78
+ index: index,
79
+ table: table
80
+ }), /*#__PURE__*/React__default.createElement(Comparator, {
81
+ className: "!w-32 flex-shrink-0",
82
+ column: column,
83
+ comparator: comparator,
84
+ validComparators: comparators
85
+ }), comparator !== undefined ? /*#__PURE__*/React__default.createElement("div", {
86
+ className: "flex flex-grow items-center"
87
+ }, (_control = control) !== null && _control !== void 0 ? _control : /*#__PURE__*/React__default.createElement(InferredControl, {
88
+ column: column,
89
+ comparator: comparator,
90
+ value: value
91
+ })) : null, /*#__PURE__*/React__default.createElement(IconButton, {
92
+ appearance: "discrete",
93
+ icon: "close",
94
+ onClick: handleRemove
95
+ }));
96
+ };
97
+ const guessComparatorsBasedOnControl = (control, instance) => {
98
+ if ( /*#__PURE__*/React__default.isValidElement(instance)) {
99
+ const {
100
+ props,
101
+ type
102
+ } = instance;
103
+ if (type.displayName === 'Select2') {
104
+ if (props.multiple) {
105
+ return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];
106
+ }
107
+ return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];
108
+ }
109
+ }
110
+ switch (control) {
111
+ case 'datepicker':
112
+ return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo, Table2FilterComparator.IsGreaterThan, Table2FilterComparator.IsLessThan, Table2FilterComparator.IsBetween];
113
+ case 'switch':
114
+ return [Table2FilterComparator.IsEqualTo];
115
+ default:
116
+ return [Table2FilterComparator.Contains, Table2FilterComparator.DoesNotContain, Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo, Table2FilterComparator.IsGreaterThan, Table2FilterComparator.IsLessThan, Table2FilterComparator.IsBetween];
117
+ }
118
+ };
119
+
120
+ export { ColumnFilter };
121
+ //# sourceMappingURL=ColumnFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnFilter.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/ColumnFilter.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn, Table as RTTable } from '@tanstack/react-table';\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { Input } from '../../../../Input/Input';\nimport { Table2ColumnControlRenderer, Table2Filter, Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\nimport { Column } from './Column';\nimport { Comparator } from './Comparator';\nimport { InferredControl } from './InferredControl';\n\nexport type ColumnFilterProps = {\n allColumns: RTColumn<any, any>[];\n column: RTColumn<any, any>;\n index: number;\n table: RTTable<any>;\n};\n\nexport const ColumnFilter = (props: ColumnFilterProps) => {\n const { allColumns, column, index, table } = props;\n const { comparator, value } = column.getFilterValue() as Table2Filter;\n const ariaLabel = String(column.columnDef.header ?? '');\n const ref = React.useRef(null);\n\n let control;\n const controlType = column.columnDef.meta?.control ?? 'input';\n\n if (typeof controlType === 'function') {\n control = controlType({\n onBlur: () => Promise.resolve(),\n onFocus: () => Promise.resolve(),\n ref,\n setValue: value => column.setFilterValue(currentValue => ({ ...currentValue, value })),\n value,\n disabled: false,\n readOnly: false,\n });\n } else if (controlType === 'input') {\n control = (\n <Input\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: event.target.value }))}\n value={String(value ?? '')}\n />\n );\n } else if (controlType === 'datepicker') {\n control = (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event => column.setFilterValue(currentValue => ({ ...currentValue, value: (event as any).detail }))}\n value={value as Date}\n />\n );\n } else if (controlType === 'switch') {\n control = (\n <Switch\n aria-label={ariaLabel}\n checked={Boolean(value)}\n onChange={checked => column.setFilterValue(currentValue => ({ ...currentValue, value: checked }))}\n />\n );\n }\n\n const handleRemove = () => column.setFilterValue(undefined);\n const comparators = guessComparatorsBasedOnControl(controlType, control);\n\n return (\n <div className=\"mb-2 flex gap-2\">\n <div className=\"flex w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {index === 0 ? 'Where' : 'And'}\n </div>\n <Column className=\"!w-32 flex-shrink-0\" allColumns={allColumns} column={column} index={index} table={table} />\n <Comparator className=\"!w-32 flex-shrink-0\" column={column} comparator={comparator} validComparators={comparators} />\n {comparator !== undefined ? (\n <div className=\"flex flex-grow items-center\">\n {control ?? <InferredControl column={column} comparator={comparator} value={value} />}\n </div>\n ) : null}\n <IconButton appearance=\"discrete\" icon=\"close\" onClick={handleRemove} />\n </div>\n );\n};\n\nconst guessComparatorsBasedOnControl = (control: Table2ColumnControlRenderer, instance: JSX.Element) => {\n if (React.isValidElement(instance)) {\n const { props, type } = instance as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [Table2FilterComparator.IsOneOf, Table2FilterComparator.IsNoneOf, Table2FilterComparator.IsAllOf];\n }\n\n return [Table2FilterComparator.IsEqualTo, Table2FilterComparator.IsNotEqualTo];\n }\n }\n\n switch (control) {\n case 'datepicker':\n return [\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n\n case 'switch':\n return [Table2FilterComparator.IsEqualTo];\n\n default:\n return [\n Table2FilterComparator.Contains,\n Table2FilterComparator.DoesNotContain,\n Table2FilterComparator.IsEqualTo,\n Table2FilterComparator.IsNotEqualTo,\n Table2FilterComparator.IsGreaterThan,\n Table2FilterComparator.IsLessThan,\n Table2FilterComparator.IsBetween,\n ];\n }\n};\n"],"names":["ColumnFilter","props","allColumns","column","index","table","comparator","value","getFilterValue","ariaLabel","String","columnDef","header","ref","React","useRef","control","controlType","meta","onBlur","Promise","resolve","onFocus","setValue","setFilterValue","currentValue","disabled","readOnly","Input","onChange","event","target","Datepicker","detail","Switch","checked","Boolean","handleRemove","undefined","comparators","guessComparatorsBasedOnControl","className","Column","Comparator","validComparators","InferredControl","IconButton","appearance","icon","onClick","instance","isValidElement","type","displayName","multiple","Table2FilterComparator","IsOneOf","IsNoneOf","IsAllOf","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsBetween","Contains","DoesNotContain"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import React__default from 'react';
2
+ import { Select2 } from '../../../../Select2/Select2.js';
3
+ import { Table2FilterComparator } from '../../../types.js';
4
+
5
+ const Comparator = ({
6
+ column,
7
+ comparator,
8
+ validComparators,
9
+ ...props
10
+ }) => {
11
+ const handleChange = comparator => {
12
+ column.setFilterValue(currentFilterValue => ({
13
+ comparator,
14
+ value: comparator === Table2FilterComparator.IsBetween ? [] : currentFilterValue.value
15
+ }));
16
+ };
17
+ React__default.useEffect(() => {
18
+ if (comparator === undefined) {
19
+ const initialComparator = validComparators[0];
20
+ column.setFilterValue(currentFilterValue => ({
21
+ comparator: initialComparator,
22
+ value: initialComparator === Table2FilterComparator.IsBetween && !Array.isArray(currentFilterValue.value) ? [] : currentFilterValue.value
23
+ }));
24
+ }
25
+ }, []);
26
+ return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, props, {
27
+ onChange: handleChange,
28
+ value: comparator
29
+ }), validComparators.map(comp => /*#__PURE__*/React__default.createElement(Select2.Option, {
30
+ key: comp,
31
+ value: comp
32
+ }, getComparatorText(comp))));
33
+ };
34
+ const getComparatorText = comparator => {
35
+ switch (comparator) {
36
+ case Table2FilterComparator.Contains:
37
+ return 'Contains';
38
+ case Table2FilterComparator.DoesNotContain:
39
+ return 'Does not contain';
40
+ case Table2FilterComparator.IsEqualTo:
41
+ return 'Is';
42
+ case Table2FilterComparator.IsNotEqualTo:
43
+ return 'Is not';
44
+ case Table2FilterComparator.IsGreaterThan:
45
+ return 'Is greater than';
46
+ case Table2FilterComparator.IsLessThan:
47
+ return 'Is less than';
48
+ case Table2FilterComparator.IsBetween:
49
+ return 'Is between';
50
+ case Table2FilterComparator.IsOneOf:
51
+ return 'Is one of';
52
+ case Table2FilterComparator.IsNoneOf:
53
+ return 'Is none of';
54
+ case Table2FilterComparator.IsAllOf:
55
+ return 'Is all of';
56
+ }
57
+ };
58
+
59
+ export { Comparator };
60
+ //# sourceMappingURL=Comparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Comparator.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/Comparator.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Select2, Select2Props } from '../../../../Select2/Select2';\nimport { Table2FilterComparator } from '../../../types';\n\ntype ComparatorProps = Omit<Select2Props, 'children'> & {\n column: RTColumn<any, any>;\n comparator?: Table2FilterComparator;\n validComparators: Table2FilterComparator[];\n};\n\nexport const Comparator = ({ column, comparator, validComparators, ...props }: ComparatorProps) => {\n const handleChange = comparator => {\n column.setFilterValue(currentFilterValue => ({\n comparator,\n value: comparator === Table2FilterComparator.IsBetween ? [] : currentFilterValue.value,\n }));\n };\n\n React.useEffect(() => {\n if (comparator === undefined) {\n const initialComparator = validComparators[0];\n column.setFilterValue(currentFilterValue => ({\n comparator: initialComparator,\n value:\n initialComparator === Table2FilterComparator.IsBetween && !Array.isArray(currentFilterValue.value)\n ? []\n : currentFilterValue.value,\n }));\n }\n }, []);\n\n return (\n <Select2 {...props} onChange={handleChange} value={comparator}>\n {validComparators.map(comp => (\n <Select2.Option key={comp} value={comp}>\n {getComparatorText(comp)}\n </Select2.Option>\n ))}\n </Select2>\n );\n};\n\nconst getComparatorText = (comparator: Table2FilterComparator) => {\n switch (comparator) {\n case Table2FilterComparator.Contains:\n return 'Contains';\n case Table2FilterComparator.DoesNotContain:\n return 'Does not contain';\n case Table2FilterComparator.IsEqualTo:\n return 'Is';\n case Table2FilterComparator.IsNotEqualTo:\n return 'Is not';\n case Table2FilterComparator.IsGreaterThan:\n return 'Is greater than';\n case Table2FilterComparator.IsLessThan:\n return 'Is less than';\n case Table2FilterComparator.IsBetween:\n return 'Is between';\n case Table2FilterComparator.IsOneOf:\n return 'Is one of';\n case Table2FilterComparator.IsNoneOf:\n return 'Is none of';\n case Table2FilterComparator.IsAllOf:\n return 'Is all of';\n }\n};\n"],"names":["Comparator","column","comparator","validComparators","props","handleChange","setFilterValue","currentFilterValue","value","Table2FilterComparator","IsBetween","React","useEffect","undefined","initialComparator","Array","isArray","Select2","onChange","map","comp","Option","key","getComparatorText","Contains","DoesNotContain","IsEqualTo","IsNotEqualTo","IsGreaterThan","IsLessThan","IsOneOf","IsNoneOf","IsAllOf"],"mappings":";;;;MAWaA,UAAU,GAAG,CAAC;EAAEC,MAAM;EAAEC,UAAU;EAAEC,gBAAgB;EAAE,GAAGC;CAAwB;EAC1F,MAAMC,YAAY,GAAGH,UAAU;IAC3BD,MAAM,CAACK,cAAc,CAACC,kBAAkB,KAAK;MACzCL,UAAU;MACVM,KAAK,EAAEN,UAAU,KAAKO,sBAAsB,CAACC,SAAS,GAAG,EAAE,GAAGH,kBAAkB,CAACC;KACpF,CAAC,CAAC;GACN;EAEDG,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIV,UAAU,KAAKW,SAAS,EAAE;MAC1B,MAAMC,iBAAiB,GAAGX,gBAAgB,CAAC,CAAC,CAAC;MAC7CF,MAAM,CAACK,cAAc,CAACC,kBAAkB,KAAK;QACzCL,UAAU,EAAEY,iBAAiB;QAC7BN,KAAK,EACDM,iBAAiB,KAAKL,sBAAsB,CAACC,SAAS,IAAI,CAACK,KAAK,CAACC,OAAO,CAACT,kBAAkB,CAACC,KAAK,CAAC,GAC5F,EAAE,GACFD,kBAAkB,CAACC;OAChC,CAAC,CAAC;;GAEV,EAAE,EAAE,CAAC;EAEN,oBACIG,6BAACM,OAAO,oBAAKb,KAAK;IAAEc,QAAQ,EAAEb,YAAY;IAAEG,KAAK,EAAEN;MAC9CC,gBAAgB,CAACgB,GAAG,CAACC,IAAI,iBACtBT,6BAACM,OAAO,CAACI,MAAM;IAACC,GAAG,EAAEF,IAAI;IAAEZ,KAAK,EAAEY;KAC7BG,iBAAiB,CAACH,IAAI,CAAC,CAE/B,CAAC,CACI;AAElB;AAEA,MAAMG,iBAAiB,GAAIrB,UAAkC;EACzD,QAAQA,UAAU;IACd,KAAKO,sBAAsB,CAACe,QAAQ;MAChC,OAAO,UAAU;IACrB,KAAKf,sBAAsB,CAACgB,cAAc;MACtC,OAAO,kBAAkB;IAC7B,KAAKhB,sBAAsB,CAACiB,SAAS;MACjC,OAAO,IAAI;IACf,KAAKjB,sBAAsB,CAACkB,YAAY;MACpC,OAAO,QAAQ;IACnB,KAAKlB,sBAAsB,CAACmB,aAAa;MACrC,OAAO,iBAAiB;IAC5B,KAAKnB,sBAAsB,CAACoB,UAAU;MAClC,OAAO,cAAc;IACzB,KAAKpB,sBAAsB,CAACC,SAAS;MACjC,OAAO,YAAY;IACvB,KAAKD,sBAAsB,CAACqB,OAAO;MAC/B,OAAO,WAAW;IACtB,KAAKrB,sBAAsB,CAACsB,QAAQ;MAChC,OAAO,YAAY;IACvB,KAAKtB,sBAAsB,CAACuB,OAAO;MAC/B,OAAO,WAAW;;AAE9B,CAAC;;;;"}
@@ -0,0 +1,96 @@
1
+ import React__default from 'react';
2
+ import { Input } from '../../../../Input/Input.js';
3
+ import { Datepicker } from '../../../../Datepicker/Datepicker.js';
4
+ import { Switch } from '../../../../Switch/Switch.js';
5
+ import { Table2FilterComparator } from '../../../types.js';
6
+
7
+ const InferredControl = ({
8
+ column,
9
+ comparator,
10
+ value
11
+ }) => {
12
+ var _column$columnDef$met2, _column$columnDef$met3;
13
+ const ariaLabel = column.columnDef.header;
14
+ if (comparator === Table2FilterComparator.IsBetween) {
15
+ var _column$columnDef$met;
16
+ const fromValue = Array.isArray(value) ? value[0] : undefined;
17
+ const toValue = Array.isArray(value) ? value[1] : undefined;
18
+ if (((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType) === 'datetime') {
19
+ return /*#__PURE__*/React__default.createElement("div", {
20
+ className: "flex flex-grow items-center gap-2"
21
+ }, /*#__PURE__*/React__default.createElement(Datepicker, {
22
+ "aria-label": ariaLabel,
23
+ onChange: event => column.setFilterValue(currentValue => ({
24
+ ...currentValue,
25
+ value: [event.detail, toValue]
26
+ })),
27
+ value: fromValue
28
+ }), /*#__PURE__*/React__default.createElement(Datepicker, {
29
+ "aria-label": ariaLabel,
30
+ onChange: event => column.setFilterValue(currentValue => ({
31
+ ...currentValue,
32
+ value: [fromValue, event.detail]
33
+ })),
34
+ value: toValue
35
+ }));
36
+ }
37
+ return /*#__PURE__*/React__default.createElement("div", {
38
+ className: "flex flex-grow items-center gap-2"
39
+ }, /*#__PURE__*/React__default.createElement(Input, {
40
+ "aria-label": ariaLabel,
41
+ className: "flex-grow",
42
+ placeholder: "from",
43
+ onChange: event => {
44
+ const value = parseInt(event.target.value);
45
+ column.setFilterValue(currentValue => ({
46
+ ...currentValue,
47
+ value: [isNaN(value) ? undefined : value, toValue]
48
+ }));
49
+ },
50
+ value: fromValue !== null && fromValue !== void 0 ? fromValue : ''
51
+ }), /*#__PURE__*/React__default.createElement(Input, {
52
+ className: "flex-grow",
53
+ placeholder: "to",
54
+ onChange: event => {
55
+ const value = parseInt(event.target.value);
56
+ column.setFilterValue(currentValue => ({
57
+ ...currentValue,
58
+ value: [fromValue, isNaN(value) ? undefined : value]
59
+ }));
60
+ },
61
+ value: toValue !== null && toValue !== void 0 ? toValue : ''
62
+ }));
63
+ }
64
+ if (((_column$columnDef$met2 = column.columnDef.meta) === null || _column$columnDef$met2 === void 0 ? void 0 : _column$columnDef$met2.dataType) === 'datetime') {
65
+ return /*#__PURE__*/React__default.createElement(Datepicker, {
66
+ "aria-label": ariaLabel,
67
+ onChange: event => column.setFilterValue(currentValue => ({
68
+ ...currentValue,
69
+ value: event.detail
70
+ })),
71
+ value: value
72
+ });
73
+ } else if (((_column$columnDef$met3 = column.columnDef.meta) === null || _column$columnDef$met3 === void 0 ? void 0 : _column$columnDef$met3.dataType) === 'boolean') {
74
+ return /*#__PURE__*/React__default.createElement(Switch, {
75
+ "aria-label": ariaLabel,
76
+ onChange: checked => column.setFilterValue(currentValue => ({
77
+ ...currentValue,
78
+ value: checked
79
+ })),
80
+ checked: value
81
+ });
82
+ }
83
+ return /*#__PURE__*/React__default.createElement(Input, {
84
+ "aria-label": ariaLabel,
85
+ className: "flex-grow",
86
+ onChange: event => column.setFilterValue(currentValue => ({
87
+ ...currentValue,
88
+ value: event.target.value
89
+ })),
90
+ required: true,
91
+ value: value !== null && value !== void 0 ? value : ''
92
+ });
93
+ };
94
+
95
+ export { InferredControl };
96
+ //# sourceMappingURL=InferredControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InferredControl.js","sources":["../../../../../../../../../../src/components/Table2/components/filters/components/InferredControl.tsx"],"sourcesContent":["import React from 'react';\nimport { Column as RTColumn } from '@tanstack/react-table';\nimport { Input } from '../../../../Input/Input';\nimport { Table2FilterComparator } from '../../../types';\nimport { Datepicker } from '../../../../Datepicker/Datepicker';\nimport { Switch } from '../../../../Switch/Switch';\n\ntype InferredControlProps = {\n column: RTColumn<any, any>;\n comparator: Table2FilterComparator;\n value: any | any[];\n};\n\nexport const InferredControl = ({ column, comparator, value }: InferredControlProps) => {\n const ariaLabel = column.columnDef.header as string | undefined;\n\n if (comparator === Table2FilterComparator.IsBetween) {\n const fromValue = Array.isArray(value) ? value[0] : undefined;\n const toValue = Array.isArray(value) ? value[1] : undefined;\n\n if (column.columnDef.meta?.dataType === 'datetime') {\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Datepicker\n aria-label={ariaLabel}\n onChange={event =>\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: [(event as any).detail, toValue],\n }))\n }\n value={fromValue}\n />\n <Datepicker\n aria-label={ariaLabel}\n onChange={event =>\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: [fromValue, (event as any).detail],\n }))\n }\n value={toValue}\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-grow items-center gap-2\">\n <Input\n aria-label={ariaLabel}\n className=\"flex-grow\"\n placeholder=\"from\"\n onChange={event => {\n const value = parseInt(event.target.value);\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: [isNaN(value) ? undefined : value, toValue],\n }));\n }}\n value={fromValue ?? ''}\n />\n <Input\n className=\"flex-grow\"\n placeholder=\"to\"\n onChange={event => {\n const value = parseInt(event.target.value);\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: [fromValue, isNaN(value) ? undefined : value],\n }));\n }}\n value={toValue ?? ''}\n />\n </div>\n );\n }\n\n if (column.columnDef.meta?.dataType === 'datetime') {\n return (\n <Datepicker\n aria-label={ariaLabel}\n onChange={event =>\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: (event as any).detail,\n }))\n }\n value={value}\n />\n );\n } else if (column.columnDef.meta?.dataType === 'boolean') {\n return (\n <Switch\n aria-label={ariaLabel}\n onChange={checked =>\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: checked,\n }))\n }\n checked={value}\n />\n );\n }\n\n return (\n <Input\n aria-label={ariaLabel}\n className=\"flex-grow\"\n onChange={event =>\n column.setFilterValue(currentValue => ({\n ...currentValue,\n value: event.target.value,\n }))\n }\n required\n value={value ?? ''}\n />\n );\n};\n"],"names":["InferredControl","column","comparator","value","ariaLabel","columnDef","header","Table2FilterComparator","IsBetween","fromValue","Array","isArray","undefined","toValue","meta","dataType","React","className","Datepicker","onChange","event","setFilterValue","currentValue","detail","Input","placeholder","parseInt","target","isNaN","Switch","checked","required"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import React__default from 'react';
2
+
3
+ const RowContext = /*#__PURE__*/React__default.createContext({
4
+ validationErrors: null,
5
+ setValidationErrors: () => undefined,
6
+ rowMoveReason: {},
7
+ setRowMoveReason: () => undefined
8
+ });
9
+ const useRowContext = () => {
10
+ const context = React__default.useContext(RowContext);
11
+ if (context === undefined) {
12
+ throw new Error('useRowContext must be used within a RowProvider');
13
+ }
14
+ return context;
15
+ };
16
+ const RowProvider = ({
17
+ children,
18
+ ...providerProps
19
+ }) => {
20
+ return /*#__PURE__*/React__default.createElement(RowContext.Provider, {
21
+ value: providerProps
22
+ }, children);
23
+ };
24
+
25
+ export { RowProvider, useRowContext };
26
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sources":["../../../../../../../../../src/components/Table2/components/row/Context.tsx"],"sourcesContent":["import React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\nimport { IndicatorReason } from '../column/Indicator';\n\ntype RowContext = {\n validationErrors: SaveHandlerErrorResponse;\n setValidationErrors: React.Dispatch<React.SetStateAction<SaveHandlerErrorResponse>>;\n rowMoveReason: Record<string, IndicatorReason | null>;\n setRowMoveReason: React.Dispatch<React.SetStateAction<Record<string, IndicatorReason | null>>>;\n};\n\nconst RowContext = React.createContext<RowContext>({\n validationErrors: null,\n setValidationErrors: () => undefined,\n rowMoveReason: {},\n setRowMoveReason: () => undefined,\n});\n\nexport const useRowContext = () => {\n const context = React.useContext(RowContext);\n\n if (context === undefined) {\n throw new Error('useRowContext must be used within a RowProvider');\n }\n\n return context;\n};\n\ntype RowProviderProps = RowContext & { children: React.ReactNode };\n\nexport const RowProvider = ({ children, ...providerProps }: RowProviderProps) => {\n return <RowContext.Provider value={providerProps}>{children}</RowContext.Provider>;\n};\n"],"names":["RowContext","React","createContext","validationErrors","setValidationErrors","undefined","rowMoveReason","setRowMoveReason","useRowContext","context","useContext","Error","RowProvider","children","providerProps","Provider","value"],"mappings":";;AAWA,MAAMA,UAAU,gBAAGC,cAAK,CAACC,aAAa,CAAa;EAC/CC,gBAAgB,EAAE,IAAI;EACtBC,mBAAmB,EAAE,MAAMC,SAAS;EACpCC,aAAa,EAAE,EAAE;EACjBC,gBAAgB,EAAE,MAAMF;CAC3B,CAAC;MAEWG,aAAa,GAAG;EACzB,MAAMC,OAAO,GAAGR,cAAK,CAACS,UAAU,CAACV,UAAU,CAAC;EAE5C,IAAIS,OAAO,KAAKJ,SAAS,EAAE;IACvB,MAAM,IAAIM,KAAK,CAAC,iDAAiD,CAAC;;EAGtE,OAAOF,OAAO;AAClB;MAIaG,WAAW,GAAG,CAAC;EAAEC,QAAQ;EAAE,GAAGC;CAAiC;EACxE,oBAAOb,6BAACD,UAAU,CAACe,QAAQ;IAACC,KAAK,EAAEF;KAAgBD,QAAQ,CAAuB;AACtF;;;;"}
@@ -0,0 +1,33 @@
1
+ import React__default from 'react';
2
+
3
+ const ExpandedRow = ({
4
+ index,
5
+ setSize,
6
+ ...props
7
+ }) => {
8
+ const ref = React__default.useRef(null);
9
+ React__default.useEffect(() => {
10
+ if (ref.current) {
11
+ var _ref$current;
12
+ const height = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect().height;
13
+ setSize(sizes => {
14
+ if (height !== sizes[index]) {
15
+ var _ref$current2;
16
+ return {
17
+ ...sizes,
18
+ [index]: (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.getBoundingClientRect().height
19
+ };
20
+ }
21
+ return sizes;
22
+ });
23
+ }
24
+ }, []);
25
+ return /*#__PURE__*/React__default.createElement("div", Object.assign({
26
+ className: "border-grey-300 bg-grey-50 col-span-full border-b p-4"
27
+ }, props, {
28
+ ref: ref
29
+ }));
30
+ };
31
+
32
+ export { ExpandedRow };
33
+ //# sourceMappingURL=ExpandedRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpandedRow.js","sources":["../../../../../../../../../src/components/Table2/components/row/ExpandedRow.tsx"],"sourcesContent":["import React from 'react';\n\nexport const ExpandedRow = ({ index, setSize, ...props }) => {\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ref.current) {\n const height = ref.current?.getBoundingClientRect().height;\n\n setSize(sizes => {\n if (height !== sizes[index]) {\n return { ...sizes, [index]: ref.current?.getBoundingClientRect().height };\n }\n\n return sizes;\n });\n }\n }, []);\n\n return <div className=\"border-grey-300 bg-grey-50 col-span-full border-b p-4\" {...props} ref={ref} />;\n};\n"],"names":["ExpandedRow","index","setSize","props","ref","React","useRef","useEffect","current","height","getBoundingClientRect","sizes","className"],"mappings":";;MAEaA,WAAW,GAAG,CAAC;EAAEC,KAAK;EAAEC,OAAO;EAAE,GAAGC;CAAO;EACpD,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAiB,IAAI,CAAC;EAE9CD,cAAK,CAACE,SAAS,CAAC;IACZ,IAAIH,GAAG,CAACI,OAAO,EAAE;MAAA;MACb,MAAMC,MAAM,mBAAGL,GAAG,CAACI,OAAO,iDAAX,aAAaE,qBAAqB,EAAE,CAACD,MAAM;MAE1DP,OAAO,CAACS,KAAK;QACT,IAAIF,MAAM,KAAKE,KAAK,CAACV,KAAK,CAAC,EAAE;UAAA;UACzB,OAAO;YAAE,GAAGU,KAAK;YAAE,CAACV,KAAK,oBAAGG,GAAG,CAACI,OAAO,kDAAX,cAAaE,qBAAqB,EAAE,CAACD;WAAQ;;QAG7E,OAAOE,KAAK;OACf,CAAC;;GAET,EAAE,EAAE,CAAC;EAEN,oBAAON;IAAKO,SAAS,EAAC;KAA4DT,KAAK;IAAEC,GAAG,EAAEA;KAAO;AACzG;;;;"}
@@ -0,0 +1,58 @@
1
+ import React__default from 'react';
2
+ import { RowProvider } from './Context.js';
3
+
4
+ const HOVER_THRESHOLD_MS = 50;
5
+ const Row = ({
6
+ row,
7
+ rowIndex,
8
+ table,
9
+ ...props
10
+ }) => {
11
+ const meta = table.options.meta;
12
+ const isActiveRow = meta.activeRowIndex === rowIndex;
13
+ const isDragging = meta.dragging[row.id];
14
+ const [validationErrors, setValidationErrors] = React__default.useState(null);
15
+ const [rowMoveReason, setRowMoveReason] = React__default.useState({});
16
+ // This effect aims to focus the first focussable cell when edit mode is turned on.
17
+ React__default.useEffect(() => {
18
+ var _meta$tableRef$curren;
19
+ const isFocusInsideTable = (_meta$tableRef$curren = meta.tableRef.current) === null || _meta$tableRef$curren === void 0 ? void 0 : _meta$tableRef$curren.contains(document.activeElement);
20
+ // If the foucs is outside the table i.e., table action popups, search etc., then don't focus the first cell.
21
+ if (meta.editMode.isEditing && isActiveRow && isFocusInsideTable) {
22
+ meta.editMode.moveToFirstColumn(meta.focussableColumnIndexes);
23
+ }
24
+ // We are intentionally not adding activeRow to the depency variable so that everytime active row is changed,
25
+ // first focussable cell is not focussed.
26
+ }, [meta.editMode.isEditing, meta.focussableColumnIndexes]);
27
+ const handleSetValidationErrors = errors => {
28
+ if (errors !== null) {
29
+ meta.setShouldDisableTableActions(true);
30
+ }
31
+ setValidationErrors(errors);
32
+ };
33
+ const hoverTimerRef = React__default.useRef();
34
+ const handleEnter = () => {
35
+ hoverTimerRef.current = setTimeout(() => meta.setHoveredRowIndex(rowIndex), HOVER_THRESHOLD_MS);
36
+ };
37
+ const handleLeave = () => {
38
+ clearTimeout(hoverTimerRef.current);
39
+ hoverTimerRef.current = undefined;
40
+ meta.setHoveredRowIndex(undefined);
41
+ };
42
+ return /*#__PURE__*/React__default.createElement(RowProvider, {
43
+ validationErrors: validationErrors,
44
+ setValidationErrors: handleSetValidationErrors,
45
+ rowMoveReason: rowMoveReason,
46
+ setRowMoveReason: setRowMoveReason
47
+ }, /*#__PURE__*/React__default.createElement("div", Object.assign({}, props, {
48
+ role: "row",
49
+ draggable: true,
50
+ "aria-current": isActiveRow ? 'true' : undefined,
51
+ "aria-grabbed": isDragging ? 'true' : undefined,
52
+ onMouseEnter: handleEnter,
53
+ onMouseLeave: handleLeave
54
+ })));
55
+ };
56
+
57
+ export { Row };
58
+ //# sourceMappingURL=Row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table2/components/row/Row.tsx"],"sourcesContent":["import { TableMeta } from '@tanstack/react-table';\nimport React from 'react';\nimport { SaveHandlerErrorResponse } from '../../types';\nimport { IndicatorReason } from '../column/Indicator';\nimport { RowProvider } from './Context';\n\nconst HOVER_THRESHOLD_MS = 50;\n\nexport const Row = ({ row, rowIndex, table, ...props }) => {\n const meta = table.options.meta as TableMeta<any>;\n const isActiveRow = meta.activeRowIndex === rowIndex;\n const isDragging = meta.dragging[row.id];\n\n const [validationErrors, setValidationErrors] = React.useState<SaveHandlerErrorResponse | null>(null);\n const [rowMoveReason, setRowMoveReason] = React.useState<Record<string, IndicatorReason | null>>({});\n\n // This effect aims to focus the first focussable cell when edit mode is turned on.\n React.useEffect(() => {\n const isFocusInsideTable = meta.tableRef.current?.contains(document.activeElement);\n\n // If the foucs is outside the table i.e., table action popups, search etc., then don't focus the first cell.\n if (meta.editMode.isEditing && isActiveRow && isFocusInsideTable) {\n meta.editMode.moveToFirstColumn(meta.focussableColumnIndexes);\n }\n // We are intentionally not adding activeRow to the depency variable so that everytime active row is changed,\n // first focussable cell is not focussed.\n }, [meta.editMode.isEditing, meta.focussableColumnIndexes]);\n\n const handleSetValidationErrors = (errors: React.SetStateAction<SaveHandlerErrorResponse>) => {\n if (errors !== null) {\n meta.setShouldDisableTableActions(true);\n }\n\n setValidationErrors(errors);\n };\n\n const hoverTimerRef = React.useRef<ReturnType<typeof setTimeout>>();\n\n const handleEnter = () => {\n hoverTimerRef.current = setTimeout(() => meta.setHoveredRowIndex(rowIndex), HOVER_THRESHOLD_MS);\n };\n const handleLeave = () => {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = undefined;\n meta.setHoveredRowIndex(undefined);\n };\n\n return (\n <RowProvider\n validationErrors={validationErrors}\n setValidationErrors={handleSetValidationErrors}\n rowMoveReason={rowMoveReason}\n setRowMoveReason={setRowMoveReason}>\n <div\n {...props}\n role=\"row\"\n draggable\n aria-current={isActiveRow ? 'true' : undefined}\n aria-grabbed={isDragging ? 'true' : undefined}\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n />\n </RowProvider>\n );\n};\n"],"names":["HOVER_THRESHOLD_MS","Row","row","rowIndex","table","props","meta","options","isActiveRow","activeRowIndex","isDragging","dragging","id","validationErrors","setValidationErrors","React","useState","rowMoveReason","setRowMoveReason","useEffect","isFocusInsideTable","tableRef","current","contains","document","activeElement","editMode","isEditing","moveToFirstColumn","focussableColumnIndexes","handleSetValidationErrors","errors","setShouldDisableTableActions","hoverTimerRef","useRef","handleEnter","setTimeout","setHoveredRowIndex","handleLeave","clearTimeout","undefined","RowProvider","role","draggable","onMouseEnter","onMouseLeave"],"mappings":";;;AAMA,MAAMA,kBAAkB,GAAG,EAAE;MAEhBC,GAAG,GAAG,CAAC;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,KAAK;EAAE,GAAGC;CAAO;EAClD,MAAMC,IAAI,GAAGF,KAAK,CAACG,OAAO,CAACD,IAAsB;EACjD,MAAME,WAAW,GAAGF,IAAI,CAACG,cAAc,KAAKN,QAAQ;EACpD,MAAMO,UAAU,GAAGJ,IAAI,CAACK,QAAQ,CAACT,GAAG,CAACU,EAAE,CAAC;EAExC,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAkC,IAAI,CAAC;EACrG,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGH,cAAK,CAACC,QAAQ,CAAyC,EAAE,CAAC;;EAGpGD,cAAK,CAACI,SAAS,CAAC;;IACZ,MAAMC,kBAAkB,4BAAGd,IAAI,CAACe,QAAQ,CAACC,OAAO,0DAArB,sBAAuBC,QAAQ,CAACC,QAAQ,CAACC,aAAa,CAAC;;IAGlF,IAAInB,IAAI,CAACoB,QAAQ,CAACC,SAAS,IAAInB,WAAW,IAAIY,kBAAkB,EAAE;MAC9Dd,IAAI,CAACoB,QAAQ,CAACE,iBAAiB,CAACtB,IAAI,CAACuB,uBAAuB,CAAC;;;;GAIpE,EAAE,CAACvB,IAAI,CAACoB,QAAQ,CAACC,SAAS,EAAErB,IAAI,CAACuB,uBAAuB,CAAC,CAAC;EAE3D,MAAMC,yBAAyB,GAAIC,MAAsD;IACrF,IAAIA,MAAM,KAAK,IAAI,EAAE;MACjBzB,IAAI,CAAC0B,4BAA4B,CAAC,IAAI,CAAC;;IAG3ClB,mBAAmB,CAACiB,MAAM,CAAC;GAC9B;EAED,MAAME,aAAa,GAAGlB,cAAK,CAACmB,MAAM,EAAiC;EAEnE,MAAMC,WAAW,GAAG;IAChBF,aAAa,CAACX,OAAO,GAAGc,UAAU,CAAC,MAAM9B,IAAI,CAAC+B,kBAAkB,CAAClC,QAAQ,CAAC,EAAEH,kBAAkB,CAAC;GAClG;EACD,MAAMsC,WAAW,GAAG;IAChBC,YAAY,CAACN,aAAa,CAACX,OAAO,CAAC;IACnCW,aAAa,CAACX,OAAO,GAAGkB,SAAS;IACjClC,IAAI,CAAC+B,kBAAkB,CAACG,SAAS,CAAC;GACrC;EAED,oBACIzB,6BAAC0B,WAAW;IACR5B,gBAAgB,EAAEA,gBAAgB;IAClCC,mBAAmB,EAAEgB,yBAAyB;IAC9Cb,aAAa,EAAEA,aAAa;IAC5BC,gBAAgB,EAAEA;kBAClBH,sDACQV,KAAK;IACTqC,IAAI,EAAC,KAAK;IACVC,SAAS;oBACKnC,WAAW,GAAG,MAAM,GAAGgC,SAAS;oBAChC9B,UAAU,GAAG,MAAM,GAAG8B,SAAS;IAC7CI,YAAY,EAAET,WAAW;IACzBU,YAAY,EAAEP;KAChB,CACQ;AAEtB;;;;"}
@@ -0,0 +1,19 @@
1
+ import React__default from 'react';
2
+
3
+ const useActiveRowStateListener = (table, rows, activeRowIndex) => {
4
+ const meta = table.options.meta;
5
+ React__default.useEffect(() => {
6
+ if (meta.editMode.isEditing && meta.shouldPauseSortingAndFiltering) {
7
+ meta.setShouldPauseSortingAndFiltering(false);
8
+ }
9
+ }, [activeRowIndex.activeRowIndex]);
10
+ // if a filter would exclude the active row, reset it to 0
11
+ React__default.useEffect(() => {
12
+ if (activeRowIndex.activeRowIndex > rows.length - 1) {
13
+ meta.setActiveRowIndex(rows.length ? rows.length - 1 : 0);
14
+ }
15
+ }, [table.getState().columnFilters, rows.length]);
16
+ };
17
+
18
+ export { useActiveRowStateListener };
19
+ //# sourceMappingURL=useActiveRowStateListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveRowStateListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useActiveRowStateListener.ts"],"sourcesContent":["import React from 'react';\nimport { Row as RTRow, Table as RTTable, TableMeta } from '@tanstack/react-table';\nimport { useActiveRow } from '../useActiveRow';\n\nexport const useActiveRowStateListener = <TType = any>(\n table: RTTable<any>,\n rows: RTRow<any>[],\n activeRowIndex: useActiveRow<TType>\n) => {\n const meta = table.options.meta as TableMeta<any>;\n\n React.useEffect(() => {\n if (meta.editMode.isEditing && meta.shouldPauseSortingAndFiltering) {\n meta.setShouldPauseSortingAndFiltering(false);\n }\n }, [activeRowIndex.activeRowIndex]);\n\n // if a filter would exclude the active row, reset it to 0\n React.useEffect(() => {\n if (activeRowIndex.activeRowIndex > rows.length - 1) {\n meta.setActiveRowIndex(rows.length ? rows.length - 1 : 0);\n }\n }, [table.getState().columnFilters, rows.length]);\n};\n"],"names":["useActiveRowStateListener","table","rows","activeRowIndex","meta","options","React","useEffect","editMode","isEditing","shouldPauseSortingAndFiltering","setShouldPauseSortingAndFiltering","length","setActiveRowIndex","getState","columnFilters"],"mappings":";;MAIaA,yBAAyB,GAAG,CACrCC,KAAmB,EACnBC,IAAkB,EAClBC,cAAmC;EAEnC,MAAMC,IAAI,GAAGH,KAAK,CAACI,OAAO,CAACD,IAAsB;EAEjDE,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIH,IAAI,CAACI,QAAQ,CAACC,SAAS,IAAIL,IAAI,CAACM,8BAA8B,EAAE;MAChEN,IAAI,CAACO,iCAAiC,CAAC,KAAK,CAAC;;GAEpD,EAAE,CAACR,cAAc,CAACA,cAAc,CAAC,CAAC;;EAGnCG,cAAK,CAACC,SAAS,CAAC;IACZ,IAAIJ,cAAc,CAACA,cAAc,GAAGD,IAAI,CAACU,MAAM,GAAG,CAAC,EAAE;MACjDR,IAAI,CAACS,iBAAiB,CAACX,IAAI,CAACU,MAAM,GAAGV,IAAI,CAACU,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;;GAEhE,EAAE,CAACX,KAAK,CAACa,QAAQ,EAAE,CAACC,aAAa,EAAEb,IAAI,CAACU,MAAM,CAAC,CAAC;AACrD;;;;"}
@@ -0,0 +1,44 @@
1
+ import React__default from 'react';
2
+
3
+ const isResizingPinnedColumn = (columnId, table) => {
4
+ var _table$getState$colum, _table$getState$colum2;
5
+ return !!columnId && ((_table$getState$colum = table.getState().columnPinning.left) === null || _table$getState$colum === void 0 ? void 0 : _table$getState$colum.includes((_table$getState$colum2 = table.getState().columnSizingInfo) === null || _table$getState$colum2 === void 0 ? void 0 : _table$getState$colum2.isResizingColumn));
6
+ };
7
+ const getOffsetsFromSize = (pinning, visibility, sizing) => {
8
+ const pinned = pinning.left.filter(c => visibility[c] !== false);
9
+ const offsets = {};
10
+ let leftOffset = 0;
11
+ for (const k of pinned) {
12
+ if (!Number.isInteger(sizing[k])) {
13
+ break;
14
+ }
15
+ offsets[k] = leftOffset;
16
+ leftOffset += sizing[k];
17
+ }
18
+ return offsets;
19
+ };
20
+ // pinned columns have position sticky, and because we support more than one of them
21
+ // we must set a 'left' css value. this hook listens to changes on state that will
22
+ // affect the left offset (resize, visibility, pinning) and updates offsets based on width
23
+ const useColumnOffsetStateListener = (table, setColumnOffsets) => {
24
+ const {
25
+ columnPinning,
26
+ columnSizing,
27
+ columnSizingInfo,
28
+ columnVisibility
29
+ } = table.getState();
30
+ React__default.useEffect(() => {
31
+ if (isResizingPinnedColumn(columnSizingInfo.isResizingColumn, table)) {
32
+ setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
33
+ }
34
+ }, [columnSizingInfo]);
35
+ React__default.useEffect(() => {
36
+ setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
37
+ }, [columnVisibility]);
38
+ React__default.useEffect(() => {
39
+ setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));
40
+ }, [columnPinning.left]);
41
+ };
42
+
43
+ export { getOffsetsFromSize, useColumnOffsetStateListener };
44
+ //# sourceMappingURL=useColumnOffsetStateListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnOffsetStateListener.js","sources":["../../../../../../../../../src/components/Table2/hooks/listeners/useColumnOffsetStateListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as RTTable, ColumnSizingState, ColumnPinningState, VisibilityState, OnChangeFn } from '@tanstack/react-table';\nimport { ColumnOffsetState } from '../../types';\n\nconst isResizingPinnedColumn = (columnId: string | false, table: RTTable<any>) =>\n !!columnId && table.getState().columnPinning.left?.includes(table.getState().columnSizingInfo?.isResizingColumn as string);\n\nexport const getOffsetsFromSize = (pinning: ColumnPinningState, visibility: VisibilityState, sizing: ColumnSizingState) => {\n const pinned = (pinning.left as string[]).filter(c => visibility[c] !== false);\n\n const offsets = {};\n let leftOffset = 0;\n\n for (const k of pinned) {\n if (!Number.isInteger(sizing[k])) {\n break;\n }\n\n offsets[k] = leftOffset;\n leftOffset += sizing[k];\n }\n\n return offsets;\n};\n\n// pinned columns have position sticky, and because we support more than one of them\n// we must set a 'left' css value. this hook listens to changes on state that will\n// affect the left offset (resize, visibility, pinning) and updates offsets based on width\nexport const useColumnOffsetStateListener = (table: RTTable<any>, setColumnOffsets: OnChangeFn<ColumnOffsetState>) => {\n const { columnPinning, columnSizing, columnSizingInfo, columnVisibility } = table.getState();\n\n React.useEffect(() => {\n if (isResizingPinnedColumn(columnSizingInfo.isResizingColumn, table)) {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }\n }, [columnSizingInfo]);\n\n React.useEffect(() => {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }, [columnVisibility]);\n\n React.useEffect(() => {\n setColumnOffsets(getOffsetsFromSize(columnPinning, columnVisibility, columnSizing));\n }, [columnPinning.left]);\n};\n"],"names":["isResizingPinnedColumn","columnId","table","getState","columnPinning","left","includes","columnSizingInfo","isResizingColumn","getOffsetsFromSize","pinning","visibility","sizing","pinned","filter","c","offsets","leftOffset","k","Number","isInteger","useColumnOffsetStateListener","setColumnOffsets","columnSizing","columnVisibility","React","useEffect"],"mappings":";;AAIA,MAAMA,sBAAsB,GAAG,CAACC,QAAwB,EAAEC,KAAmB;EAAA;EAAA,OACzE,CAAC,CAACD,QAAQ,8BAAIC,KAAK,CAACC,QAAQ,EAAE,CAACC,aAAa,CAACC,IAAI,0DAAnC,sBAAqCC,QAAQ,2BAACJ,KAAK,CAACC,QAAQ,EAAE,CAACI,gBAAgB,2DAAjC,uBAAmCC,gBAA0B,CAAC;AAAA;MAEjHC,kBAAkB,GAAG,CAACC,OAA2B,EAAEC,UAA2B,EAAEC,MAAyB;EAClH,MAAMC,MAAM,GAAIH,OAAO,CAACL,IAAiB,CAACS,MAAM,CAACC,CAAC,IAAIJ,UAAU,CAACI,CAAC,CAAC,KAAK,KAAK,CAAC;EAE9E,MAAMC,OAAO,GAAG,EAAE;EAClB,IAAIC,UAAU,GAAG,CAAC;EAElB,KAAK,MAAMC,CAAC,IAAIL,MAAM,EAAE;IACpB,IAAI,CAACM,MAAM,CAACC,SAAS,CAACR,MAAM,CAACM,CAAC,CAAC,CAAC,EAAE;MAC9B;;IAGJF,OAAO,CAACE,CAAC,CAAC,GAAGD,UAAU;IACvBA,UAAU,IAAIL,MAAM,CAACM,CAAC,CAAC;;EAG3B,OAAOF,OAAO;AAClB;AAEA;AACA;AACA;MACaK,4BAA4B,GAAG,CAACnB,KAAmB,EAAEoB,gBAA+C;EAC7G,MAAM;IAAElB,aAAa;IAAEmB,YAAY;IAAEhB,gBAAgB;IAAEiB;GAAkB,GAAGtB,KAAK,CAACC,QAAQ,EAAE;EAE5FsB,cAAK,CAACC,SAAS,CAAC;IACZ,IAAI1B,sBAAsB,CAACO,gBAAgB,CAACC,gBAAgB,EAAEN,KAAK,CAAC,EAAE;MAClEoB,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;;GAE1F,EAAE,CAAChB,gBAAgB,CAAC,CAAC;EAEtBkB,cAAK,CAACC,SAAS,CAAC;IACZJ,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;GACtF,EAAE,CAACC,gBAAgB,CAAC,CAAC;EAEtBC,cAAK,CAACC,SAAS,CAAC;IACZJ,gBAAgB,CAACb,kBAAkB,CAACL,aAAa,EAAEoB,gBAAgB,EAAED,YAAY,CAAC,CAAC;GACtF,EAAE,CAACnB,aAAa,CAACC,IAAI,CAAC,CAAC;AAC5B;;;;"}