@economic/taco 2.21.3 → 2.22.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. package/dist/components/Report/Report.d.ts +21 -0
  2. package/dist/components/Report/components/Cell/Cell.d.ts +0 -1
  3. package/dist/components/Report/components/Cell/DisplayCell.d.ts +1 -1
  4. package/dist/components/Report/components/Cell/util.d.ts +1 -1
  5. package/dist/components/Report/components/Row/DisplayRow.d.ts +2 -9
  6. package/dist/components/Report/components/Toolbar/components/Filters/components/Placeholder.d.ts +5 -5
  7. package/dist/components/Report/listeners/useTableRowActiveListener.d.ts +3 -0
  8. package/dist/components/Report/styles/util.d.ts +2 -2
  9. package/dist/components/Report/types.d.ts +1 -3
  10. package/dist/components/Report/useReport.d.ts +2 -7
  11. package/dist/components/Table3/types.d.ts +1 -1
  12. package/dist/esm/index.css +501 -9
  13. package/dist/esm/packages/taco/src/components/Card/Card.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Group/Group.js +1 -1
  16. package/dist/esm/packages/taco/src/components/Group/Group.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Input/Input.js +37 -7
  18. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Input/util.js +3 -1
  20. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Report/Report.js +70 -0
  22. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -0
  23. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js +61 -0
  24. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js.map +1 -0
  25. package/dist/esm/packages/taco/src/components/Report/components/Body/util.js +22 -0
  26. package/dist/esm/packages/taco/src/components/Report/components/Body/util.js.map +1 -0
  27. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js +32 -0
  28. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js.map +1 -0
  29. package/dist/esm/packages/taco/src/components/Report/components/Cell/DisplayCell.js +23 -0
  30. package/dist/esm/packages/taco/src/components/Report/components/Cell/DisplayCell.js.map +1 -0
  31. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js +58 -0
  32. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js.map +1 -0
  33. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js +69 -0
  34. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js.map +1 -0
  35. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js +34 -0
  36. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js.map +1 -0
  37. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js +39 -0
  38. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js.map +1 -0
  39. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js +194 -0
  40. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js.map +1 -0
  41. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Goto.js +28 -0
  42. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Goto.js.map +1 -0
  43. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js +150 -0
  44. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js.map +1 -0
  45. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Resizer.js +60 -0
  46. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Resizer.js.map +1 -0
  47. package/dist/esm/packages/taco/src/components/Report/components/Header/components/SortIndicator.js +41 -0
  48. package/dist/esm/packages/taco/src/components/Report/components/Header/components/SortIndicator.js.map +1 -0
  49. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js +24 -0
  50. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js.map +1 -0
  51. package/dist/esm/packages/taco/src/components/Report/components/Internal/Actions.js +90 -0
  52. package/dist/esm/packages/taco/src/components/Report/components/Internal/Actions.js.map +1 -0
  53. package/dist/esm/packages/taco/src/components/Report/components/Internal/Expansion.js +59 -0
  54. package/dist/esm/packages/taco/src/components/Report/components/Internal/Expansion.js.map +1 -0
  55. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js +118 -0
  56. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js.map +1 -0
  57. package/dist/esm/packages/taco/src/components/Report/components/Row/DisplayRow.js +102 -0
  58. package/dist/esm/packages/taco/src/components/Report/components/Row/DisplayRow.js.map +1 -0
  59. package/dist/esm/packages/taco/src/components/Report/components/Row/Row.js +24 -0
  60. package/dist/esm/packages/taco/src/components/Report/components/Row/Row.js.map +1 -0
  61. package/dist/esm/packages/taco/src/components/Report/components/Row/RowContext.js +10 -0
  62. package/dist/esm/packages/taco/src/components/Report/components/Row/RowContext.js.map +1 -0
  63. package/dist/esm/packages/taco/src/components/Report/components/Row/SkeletonRow.js +62 -0
  64. package/dist/esm/packages/taco/src/components/Report/components/Row/SkeletonRow.js.map +1 -0
  65. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/Toolbar.js +63 -0
  66. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/Toolbar.js.map +1 -0
  67. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js +50 -0
  68. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js.map +1 -0
  69. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js +136 -0
  70. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -0
  71. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js +95 -0
  72. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js.map +1 -0
  73. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js +49 -0
  74. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -0
  75. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterComparator.js +110 -0
  76. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -0
  77. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js +118 -0
  78. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -0
  79. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js +41 -0
  80. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js.map +1 -0
  81. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js +7 -0
  82. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js.map +1 -0
  83. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js +123 -0
  84. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js.map +1 -0
  85. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/PrintDialog.js +88 -0
  86. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/PrintDialog.js.map +1 -0
  87. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Search/Search.js +95 -0
  88. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Search/Search.js.map +1 -0
  89. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js +105 -0
  90. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -0
  91. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js +103 -0
  92. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js.map +1 -0
  93. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js +24 -0
  94. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js.map +1 -0
  95. package/dist/esm/packages/taco/src/components/Report/styles/useColumnPinningStylesheet.js +44 -0
  96. package/dist/esm/packages/taco/src/components/Report/styles/useColumnPinningStylesheet.js.map +1 -0
  97. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js +54 -0
  98. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js.map +1 -0
  99. package/dist/esm/packages/taco/src/components/Report/styles/useStylesheet.js +20 -0
  100. package/dist/esm/packages/taco/src/components/Report/styles/useStylesheet.js.map +1 -0
  101. package/dist/esm/packages/taco/src/components/Report/styles/util.js +61 -0
  102. package/dist/esm/packages/taco/src/components/Report/styles/util.js.map +1 -0
  103. package/dist/esm/packages/taco/src/components/Report/useReport.js +51 -0
  104. package/dist/esm/packages/taco/src/components/Report/useReport.js.map +1 -0
  105. package/dist/esm/packages/taco/src/components/Report/util/rows.js +10 -0
  106. package/dist/esm/packages/taco/src/components/Report/util/rows.js.map +1 -0
  107. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js +39 -0
  108. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js.map +1 -0
  109. package/dist/esm/packages/taco/src/components/Report/util/useTableRenderer.js +162 -0
  110. package/dist/esm/packages/taco/src/components/Report/util/useTableRenderer.js.map +1 -0
  111. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js +3 -2
  112. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  113. package/dist/esm/packages/taco/src/components/Select2/Select2.js +2 -2
  114. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +1 -1
  115. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +1 -1
  116. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +1 -1
  117. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +6 -7
  118. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  119. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  120. package/dist/esm/packages/taco/src/components/Table3/Table3.js +7 -2
  121. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js +6 -6
  123. package/dist/esm/packages/taco/src/components/Table3/components/alert/ErrorAlert.js.map +1 -1
  124. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js +7 -1
  125. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/Cell.js.map +1 -1
  126. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js +2 -0
  127. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/DisplayCell.js.map +1 -1
  128. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js +6 -1
  129. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingCell.js.map +1 -1
  130. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js +1 -0
  131. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/EditingControl.js.map +1 -1
  132. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js +3 -1
  133. package/dist/esm/packages/taco/src/components/Table3/components/columns/cell/controls/TextareaControl.js.map +1 -1
  134. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js +1 -0
  135. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js.map +1 -1
  136. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js +9 -1
  137. package/dist/esm/packages/taco/src/components/Table3/components/columns/header/Menu.js.map +1 -1
  138. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js +1 -0
  139. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Actions.js.map +1 -1
  140. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js +2 -0
  141. package/dist/esm/packages/taco/src/components/Table3/components/rows/Row.js.map +1 -1
  142. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +3 -3
  143. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +4 -8
  144. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  145. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +1 -0
  146. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  147. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +19 -14
  148. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  149. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +6 -5
  150. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js.map +1 -1
  151. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js +18 -1
  152. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Search.js.map +1 -1
  153. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js +8 -14
  154. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useColumnFreezing.js.map +1 -1
  155. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useEditing.js +1 -1
  156. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +1 -1
  157. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +5 -1
  158. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  159. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +15 -15
  160. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  161. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js +20 -0
  162. package/dist/esm/packages/taco/src/components/Table3/hooks/useTablePreset.js.map +1 -1
  163. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  164. package/dist/esm/packages/taco/src/components/Table3/util/columns.js +2 -0
  165. package/dist/esm/packages/taco/src/components/Table3/util/columns.js.map +1 -1
  166. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js +1 -1
  167. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js.map +1 -1
  168. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +1 -1
  169. package/dist/esm/packages/taco/src/index.js +7 -6
  170. package/dist/esm/packages/taco/src/index.js.map +1 -1
  171. package/dist/esm/packages/taco/src/primitives/Button.js +2 -1
  172. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  173. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  174. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnFreezing.js +21 -0
  175. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnFreezing.js.map +1 -0
  176. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFooter.js +8 -0
  177. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFooter.js.map +1 -0
  178. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js +16 -0
  179. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js.map +1 -0
  180. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRef.js +17 -0
  181. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRef.js.map +1 -0
  182. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActions.js +11 -0
  183. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActions.js.map +1 -0
  184. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowExpansion.js +9 -0
  185. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowExpansion.js.map +1 -0
  186. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGroups.js +9 -0
  187. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGroups.js.map +1 -0
  188. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSearch.js +38 -0
  189. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSearch.js.map +1 -0
  190. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js +28 -0
  191. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js.map +1 -0
  192. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowHeightListener.js +14 -0
  193. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowHeightListener.js.map +1 -0
  194. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSearchListener.js +15 -0
  195. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSearchListener.js.map +1 -0
  196. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js +26 -0
  197. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js.map +1 -0
  198. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js +117 -0
  199. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js.map +1 -0
  200. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js +30 -3
  201. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js.map +1 -1
  202. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/filtering.js +131 -0
  203. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/filtering.js.map +1 -0
  204. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/presets.js +131 -0
  205. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/presets.js.map +1 -0
  206. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/search.js +43 -0
  207. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/search.js.map +1 -0
  208. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js +22 -0
  209. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js.map +1 -0
  210. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/setup.js +270 -0
  211. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/setup.js.map +1 -0
  212. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/sorting.js +18 -0
  213. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/sorting.js.map +1 -0
  214. package/dist/esm/packages/taco/src/utils/dom.js +5 -1
  215. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  216. package/dist/esm/packages/taco/src/utils/keyboard.js +3 -5
  217. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  218. package/dist/index.css +501 -9
  219. package/dist/index.d.ts +1 -0
  220. package/dist/primitives/Table/types.d.ts +2 -2
  221. package/dist/primitives/Table/useTable/features/useTablePrinting.d.ts +1 -1
  222. package/dist/primitives/Table/useTable/util/settings.d.ts +1 -1
  223. package/dist/primitives/Table/useTable/util/sorting.d.ts +1 -1
  224. package/dist/taco.cjs.development.js +6381 -2732
  225. package/dist/taco.cjs.development.js.map +1 -1
  226. package/dist/taco.cjs.production.min.js +1 -1
  227. package/dist/taco.cjs.production.min.js.map +1 -1
  228. package/dist/utils/dom.d.ts +1 -0
  229. package/dist/utils/keyboard.d.ts +0 -1
  230. package/package.json +2 -2
  231. package/types.json +6050 -4979
  232. package/dist/components/Report/features/useReportExport.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table3/components/rows/Row.tsx"],"sourcesContent":["import React from 'react';\nimport { Row as RTRow, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport { RowContext, useRowContext } from './RowContext';\nimport { useDropTarget } from '../../../../utils/hooks/useDropTarget';\nimport { Table3RowClickHandler, Table3RowDropHandler } from '../../types';\nimport { useFocusManager } from '@react-aria/focus';\nimport { LastCellIndex, focusableSelector, getColumnIndex } from '../../util/editing';\n\nconst FOCUS_MANAGER_OPTIONS = {\n tabbable: true,\n // Filter out all focusable elelemnts which are not in current row\n accept: (element: Element) => !!element.closest('[role=\"row\"][data-current=\"true\"]'),\n};\n\ntype RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {\n index: number;\n isLastRow: boolean;\n measureRef: (el: HTMLElement | null) => void;\n onClick?: Table3RowClickHandler<TType>;\n onDrop?: Table3RowDropHandler<TType>;\n row: RTRow<TType>;\n table: RTable<TType>;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<TType>;\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === props.index;\n const isDraggingRow = tableMeta.rowDrag.dragging[props.row.id];\n const isFirstRow = props.index === 0;\n // we use non-css hovered state to determine whether to render actions or not, for performance\n const [isHovered, setIsHovered] = React.useState(false);\n\n // tab behaviour is consistent across normal mode and edit mode, handle it here\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped()) {\n return;\n }\n\n if (event.key === 'Tab') {\n tableMeta.rowActive.setHoverStatePaused(true);\n let focusedElement: Element;\n\n if (event.shiftKey) {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no previous elements to focus, go up a row or go outside the table\n if (!isFirstRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => focusManager.focusLast(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n }\n }\n };\n const hasError = !!Object.keys(tableMeta.validation.errors?.[props.row.id] ?? {}).length;\n\n // rows are heavily memoized because performance in our table is critical\n // be careful and selective about props that you pass to the row\n const memoedProps = {\n data: props.row.original,\n // aria-grabbed is being deprecated but there is no current alternative api, we use it until there is\n 'aria-grabbed': isDraggingRow ? true : tableMeta.rowDrag.isEnabled ? false : undefined,\n 'data-current': isActiveRow,\n 'data-selected': props.row.getIsSelected(),\n 'data-invalid': hasError,\n draggable: tableMeta.rowDrag.isEnabled,\n index: props.index,\n onClick: tableMeta.rowClick.handleClick,\n onDrop: tableMeta.rowDrop.isEnabled ? tableMeta.rowDrop.handleDrop : undefined,\n };\n\n let output = <MemoedRow<TType> {...props} {...memoedProps} onKeyDown={handleKeyDown} />;\n\n if (tableMeta.editing.isEditing && (isActiveRow || (isHovered && !tableMeta.rowActive.isHoverStatePaused))) {\n output = (\n <EditingRow\n {...props}\n {...memoedProps}\n isFirstRow={isFirstRow}\n setActiveRowIndex={tableMeta.rowActive.setRowActiveIndex}\n />\n );\n }\n\n // we store the row index in context because in a virtualised table the row index and the\n // react table row index do not match when, for example, sorting is applied\n const contextValue = React.useMemo(\n () => ({ isHovered, setIsHovered, rowIndex: props.index, hasError }),\n [isHovered, hasError, props.index]\n );\n\n return <RowContext.Provider value={contextValue}>{output}</RowContext.Provider>;\n}\n\n// turns out we might need some kind of \"state\" for the focused column, but it doesn't need to be react state that re-renders\nexport const lastCellIndex = new LastCellIndex();\n\n// This code is needed to avoid multiple rows being hovered at the same time (it happens since we use non-css hovering)\nlet previouslyHoveredIndex: number | undefined;\nconst unhoverPreviousRow = (tableRef: React.RefObject<HTMLDivElement>) => {\n if (previouslyHoveredIndex !== undefined) {\n const mouseoutEvent = new MouseEvent('mouseout', { view: window, bubbles: true, cancelable: true });\n const previouslyHovered = tableRef?.current?.querySelector(`[data-row-index=\"${previouslyHoveredIndex}\"]`);\n previouslyHovered?.dispatchEvent(mouseoutEvent);\n }\n};\n\nfunction EditingRow(props) {\n const { isFirstRow, isLastRow, onKeyDown, setActiveRowIndex, virtualiser, ...attributes } = props;\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<unknown>;\n\n const handleClickCapture = (event: React.FocusEvent) => {\n lastCellIndex.value = getColumnIndex(event.target);\n };\n\n const handleNavigationBackwards = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowLeft' || (event.key === 'Tab' && event.shiftKey)) {\n // We need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n\n // \"CTRL + ArrowLeft\" or \"META + ArrowLeft\" should focus first focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no previous elements to focus, go up a row (if there are rows above)\n if (!isFirstRow || !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => {\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n const handleNavigationForward = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowRight' || (event.key === 'Tab' && !event.shiftKey)) {\n // We need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n\n // \"CTRL + ArrowRight\" or \"META + ArrowRight\" should focus last focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow && !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => {\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n React.useEffect(() => {\n // if some row stuck in hovered state, we heed to unhover it when hover state is paused\n if (tableMeta.rowActive.isHoverStatePaused) {\n unhoverPreviousRow(props.tableRef);\n }\n }, [tableMeta.rowActive.isHoverStatePaused]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (\n event.isDefaultPrevented() ||\n event.isPropagationStopped() ||\n tableMeta.editing.detailModeEditing ||\n tableMeta.shortcutsState.isPaused\n ) {\n return;\n }\n\n handleNavigationBackwards(event);\n handleNavigationForward(event);\n };\n\n // this ensures we focus either on a field or on the same column when keyboard navigating up/down\n React.useEffect(() => {\n // When table in searching state, whe should prevent editing control to be focused, because it will cause search field to loose focus.\n if (tableMeta.rowActive.rowActiveIndex === props.index && !tableMeta.search.isSearching) {\n if (lastCellIndex.value !== null) {\n const lastCellElement = props.tableRef.current?.querySelector(\n `[role=\"row\"][data-current=\"true\"] [data-column-index=\"${lastCellIndex.value}\"]`\n );\n const focusableElement = lastCellElement?.querySelector(focusableSelector);\n if (focusableElement) {\n focusableElement.focus();\n // if we found a cell but it doesn't contain focusable element, then we'll focus the first one in a row.\n } else if (lastCellElement) {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n } else {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n }\n // Need to subscribe to current row index and check is it a current row,\n // for a situation where hovered row is the next row after current row...\n // In this case row will not be re-rendered if user switch to next row, because hovered row also renders EditingRow.\n }, [tableMeta.rowActive.rowActiveIndex, tableMeta.search.isSearching]);\n\n return <MemoedRow {...attributes} onClickCapture={handleClickCapture} onKeyDown={handleKeyDown} />;\n}\n\n// Memoization\n\nexport type MemoedRowProps<TType = unknown> = Omit<RowProps<TType>, 'onClick'> & {\n data: TType;\n 'aria-grabbed'?: boolean;\n 'data-current': boolean;\n 'data-selected': boolean;\n draggable: boolean;\n index: number;\n onClick: any; //(event: React.MouseEvent<HTMLElement,MouseEvent>, data: unknown) => void;\n};\n\nconst clickableElements = ['input', 'button', 'a', 'select', 'option', 'label', 'textarea'];\n\nconst MemoedRow = React.memo(function MemoedRow<TType = unknown>(props: MemoedRowProps<TType>) {\n const {\n data,\n index,\n isLastRow: _1,\n measureRef,\n onClick,\n onClickCapture,\n onDrop,\n row,\n table,\n tableRef,\n ...attributes\n } = props;\n const ref = React.useRef<HTMLDivElement | null>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { setIsHovered } = useRowContext();\n\n // we measure the first cell (since the row has display: contents) so that the virtualiser height is correct\n React.useEffect(() => {\n const firstCell = ref.current?.querySelector('[role=cell]:first-child');\n\n if (firstCell) {\n measureRef(firstCell as HTMLElement);\n }\n }, [ref.current]);\n\n // we use capture because it also picks up clicks on e.g. select checkboxes\n const handleClickCapture = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (typeof onClickCapture === 'function') {\n onClickCapture(event);\n }\n\n // do this in the next frame, otherwise it remounts the row and prevents row actions on hover from being clickable\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (typeof onClick === 'function') {\n const clickedElement = event.target as HTMLElement;\n\n if (\n !ref.current?.contains(event.target as HTMLElement) ||\n clickableElements.includes(clickedElement.tagName.toLowerCase()) ||\n clickedElement.closest(clickableElements.map(tag => `[role=row] ${tag}`).join(','))\n ) {\n return;\n }\n\n onClick(event, data);\n }\n };\n\n const handleMouseEnter = () => {\n // When user moving mouse to fast, then some of the rows are getting stuck in hover state,\n // because mouseleave event never got triggered, to avoid this to happen we're saving the index of last hovered row,\n // so that we can unhover it when new row got hovered, and saving it in a variable outside of react to save in performance,\n // since it would be very performance heavy to use state which is bound to mouse events.\n if (previouslyHoveredIndex !== undefined) {\n if (previouslyHoveredIndex !== index) {\n unhoverPreviousRow(tableRef);\n previouslyHoveredIndex = index;\n }\n } else {\n previouslyHoveredIndex = index;\n }\n setIsHovered(true);\n };\n const handleMouseLeave = () => {\n if (previouslyHoveredIndex === index) {\n previouslyHoveredIndex = undefined;\n }\n setIsHovered(false);\n };\n\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => onDrop?.(event, row.original));\n\n const className = cn(\n 'group/row contents',\n // resizing column requires dragging, which means the mouse might (on rare occasions) move over rows and trigger hover state\n // that in turn triggers rendering of e.g. row actions, which could cause janky ui - so don't allow mouse interaction when resizing\n '[[role=\"table\"][data-resizing=\"true\"]_&]:pointer-events-none',\n {\n 'hover:cursor-pointer': typeof onClick === 'function',\n }\n );\n\n return (\n <div\n {...attributes}\n {...(onDrop ? dropTargetProps : undefined)}\n className={className}\n data-row-index={index}\n data-dragged-over={isDraggedOver}\n onClick={handleClick}\n onClickCapture={handleClickCapture}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role=\"row\"\n ref={ref}\n />\n );\n}) as <TType = unknown>(props: MemoedRowProps<TType>) => JSX.Element;\n"],"names":["FOCUS_MANAGER_OPTIONS","tabbable","accept","element","closest","Row","props","focusManager","useFocusManager","tableMeta","table","options","meta","isActiveRow","rowActive","rowActiveIndex","index","isDraggingRow","rowDrag","dragging","row","id","isFirstRow","isHovered","setIsHovered","React","useState","handleKeyDown","event","isDefaultPrevented","isPropagationStopped","key","setHoverStatePaused","focusedElement","shiftKey","focusPrevious","preventDefault","setRowActiveIndex","setTimeout","focusLast","focusNext","isLastRow","focusFirst","hasError","Object","keys","_tableMeta$validation","_tableMeta$validation2","validation","errors","length","memoedProps","data","original","isEnabled","undefined","getIsSelected","draggable","onClick","rowClick","handleClick","onDrop","rowDrop","handleDrop","output","MemoedRow","onKeyDown","editing","isEditing","isHoverStatePaused","EditingRow","setActiveRowIndex","contextValue","useMemo","rowIndex","RowContext","Provider","value","lastCellIndex","LastCellIndex","previouslyHoveredIndex","unhoverPreviousRow","tableRef","_tableRef$current","mouseoutEvent","MouseEvent","view","window","bubbles","cancelable","previouslyHovered","current","querySelector","dispatchEvent","virtualiser","attributes","handleClickCapture","getColumnIndex","target","handleNavigationBackwards","stopPropagation","ctrlKey","metaKey","blur","currentTarget","contains","handleNavigationForward","useEffect","detailModeEditing","shortcutsState","isPaused","search","isSearching","_props$tableRef$curre","lastCellElement","focusableElement","focusableSelector","focus","onClickCapture","clickableElements","memo","_1","measureRef","ref","useRef","useRowContext","firstCell","_ref$current","requestAnimationFrame","_ref$current2","clickedElement","includes","tagName","toLowerCase","map","tag","join","handleMouseEnter","handleMouseLeave","isDraggedOver","dropTargetProps","useDropTarget","className","cn","onMouseEnter","onMouseLeave","role"],"mappings":"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"}
1
+ {"version":3,"file":"Row.js","sources":["../../../../../../../../../src/components/Table3/components/rows/Row.tsx"],"sourcesContent":["import React from 'react';\nimport { Row as RTRow, Table as RTable, TableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport { RowContext, useRowContext } from './RowContext';\nimport { useDropTarget } from '../../../../utils/hooks/useDropTarget';\nimport { Table3RowClickHandler, Table3RowDropHandler } from '../../types';\nimport { useFocusManager } from '@react-aria/focus';\nimport { LastCellIndex, focusableSelector, getColumnIndex } from '../../util/editing';\n\nconst FOCUS_MANAGER_OPTIONS = {\n tabbable: true,\n // Filter out all focusable elelemnts which are not in current row\n accept: (element: Element) => !!element.closest('[role=\"row\"][data-current=\"true\"]'),\n};\n\ntype RowProps<TType = unknown> = Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onDrop'> & {\n index: number;\n isLastRow: boolean;\n measureRef: (el: HTMLElement | null) => void;\n onClick?: Table3RowClickHandler<TType>;\n onDrop?: Table3RowDropHandler<TType>;\n row: RTRow<TType>;\n table: RTable<TType>;\n tableRef: React.RefObject<HTMLDivElement>;\n};\n\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<TType>;\n const isActiveRow = tableMeta.rowActive.rowActiveIndex === props.index;\n const isDraggingRow = tableMeta.rowDrag.dragging[props.row.id];\n const isFirstRow = props.index === 0;\n // we use non-css hovered state to determine whether to render actions or not, for performance\n const [isHovered, setIsHovered] = React.useState(false);\n\n // tab behaviour is consistent across normal mode and edit mode, handle it here\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.isDefaultPrevented() || event.isPropagationStopped()) {\n return;\n }\n\n if (event.key === 'Tab') {\n tableMeta.rowActive.setHoverStatePaused(true);\n let focusedElement: Element;\n\n if (event.shiftKey) {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no previous elements to focus, go up a row or go outside the table\n if (!isFirstRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => focusManager.focusLast(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n // override default behaviour, since we're handling focus internally now\n event.preventDefault();\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow) {\n event.preventDefault();\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS), 1);\n }\n }\n }\n }\n };\n const hasError = !!Object.keys(tableMeta.validation.errors?.[props.row.id] ?? {}).length;\n\n // rows are heavily memoized because performance in our table is critical\n // be careful and selective about props that you pass to the row\n const memoedProps = {\n data: props.row.original,\n // aria-grabbed is being deprecated but there is no current alternative api, we use it until there is\n 'aria-grabbed': isDraggingRow ? true : tableMeta.rowDrag.isEnabled ? false : undefined,\n 'data-current': isActiveRow,\n 'data-selected': props.row.getIsSelected(),\n 'data-invalid': hasError,\n draggable: tableMeta.rowDrag.isEnabled,\n index: props.index,\n onClick: tableMeta.rowClick.handleClick,\n onDrop: tableMeta.rowDrop.isEnabled ? tableMeta.rowDrop.handleDrop : undefined,\n };\n\n let output = <MemoedRow<TType> {...props} {...memoedProps} onKeyDown={handleKeyDown} />;\n\n if (tableMeta.editing.isEditing && (isActiveRow || (isHovered && !tableMeta.rowActive.isHoverStatePaused))) {\n output = (\n <EditingRow\n {...props}\n {...memoedProps}\n isFirstRow={isFirstRow}\n setActiveRowIndex={tableMeta.rowActive.setRowActiveIndex}\n />\n );\n }\n\n // we store the row index in context because in a virtualised table the row index and the\n // react table row index do not match when, for example, sorting is applied\n const contextValue = React.useMemo(\n () => ({ isHovered, setIsHovered, rowIndex: props.index, hasError }),\n [isHovered, hasError, props.index]\n );\n\n return <RowContext.Provider value={contextValue}>{output}</RowContext.Provider>;\n}\n\n// turns out we might need some kind of \"state\" for the focused column, but it doesn't need to be react state that re-renders\nexport const lastCellIndex = new LastCellIndex();\n\n// This code is needed to avoid multiple rows being hovered at the same time (it happens since we use non-css hovering)\nlet previouslyHoveredIndex: number | undefined;\nconst unhoverPreviousRow = (tableRef: React.RefObject<HTMLDivElement>) => {\n if (previouslyHoveredIndex !== undefined) {\n const mouseoutEvent = new MouseEvent('mouseout', { view: window, bubbles: true, cancelable: true });\n const previouslyHovered = tableRef?.current?.querySelector(`[data-row-index=\"${previouslyHoveredIndex}\"]`);\n previouslyHovered?.dispatchEvent(mouseoutEvent);\n }\n};\n\nfunction EditingRow(props) {\n const { isFirstRow, isLastRow, onKeyDown, setActiveRowIndex, virtualiser, ...attributes } = props;\n const focusManager = useFocusManager();\n const tableMeta = props.table.options.meta as TableMeta<unknown>;\n\n const handleClickCapture = (event: React.FocusEvent) => {\n lastCellIndex.value = getColumnIndex(event.target);\n };\n\n const handleNavigationBackwards = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowLeft' || (event.key === 'Tab' && event.shiftKey)) {\n // We need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n\n // \"CTRL + ArrowLeft\" or \"META + ArrowLeft\" should focus first focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping backwards\n focusedElement = focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no previous elements to focus, go up a row (if there are rows above)\n if (!isFirstRow || !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index - 1);\n setTimeout(() => {\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n const handleNavigationForward = event => {\n let focusedElement: Element;\n\n if (event.key === 'ArrowRight' || (event.key === 'Tab' && !event.shiftKey)) {\n // We need to perform special behaviour when focus reaches the end of the row,\n // so we don't need default browser behaviour.\n event.stopPropagation();\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n\n // \"CTRL + ArrowRight\" or \"META + ArrowRight\" should focus last focusable element of the row\n if (event.ctrlKey || event.metaKey) {\n event.target.blur();\n focusedElement = focusManager.focusLast(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // looping forwards\n focusedElement = focusManager.focusNext(FOCUS_MANAGER_OPTIONS);\n\n if (focusedElement) {\n lastCellIndex.value = getColumnIndex(focusedElement);\n } else {\n // there are no next elements to focus, go down a row or go outside the table\n if (!props.isLastRow && !event.currentTarget.contains(focusedElement)) {\n event.preventDefault();\n tableMeta.rowActive.setHoverStatePaused(true);\n tableMeta.rowActive.setRowActiveIndex(props.index + 1);\n setTimeout(() => {\n focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n // Need to update lastIndex when row got changed and last element got selected.\n lastCellIndex.value = getColumnIndex(focusedElement);\n }, 1);\n }\n }\n }\n }\n };\n\n React.useEffect(() => {\n // if some row stuck in hovered state, we heed to unhover it when hover state is paused\n if (tableMeta.rowActive.isHoverStatePaused) {\n unhoverPreviousRow(props.tableRef);\n }\n }, [tableMeta.rowActive.isHoverStatePaused]);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (\n event.isDefaultPrevented() ||\n event.isPropagationStopped() ||\n tableMeta.editing.detailModeEditing ||\n tableMeta.shortcutsState.isPaused\n ) {\n return;\n }\n\n handleNavigationBackwards(event);\n handleNavigationForward(event);\n };\n\n // this ensures we focus either on a field or on the same column when keyboard navigating up/down\n React.useEffect(() => {\n // When table in searching state, whe should prevent editing control to be focused, because it will cause search field to loose focus.\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n if (tableMeta.rowActive.rowActiveIndex === props.index && !tableMeta.search.isSearching) {\n if (lastCellIndex.value !== null) {\n const lastCellElement = props.tableRef.current?.querySelector(\n `[role=\"row\"][data-current=\"true\"] [data-column-index=\"${lastCellIndex.value}\"]`\n );\n const focusableElement = lastCellElement?.querySelector(focusableSelector);\n if (focusableElement) {\n focusableElement.focus();\n // if we found a cell but it doesn't contain focusable element, then we'll focus the first one in a row.\n } else if (lastCellElement) {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n } else {\n const focusedElement = focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);\n lastCellIndex.value = getColumnIndex(focusedElement);\n }\n }\n // Need to subscribe to current row index and check is it a current row,\n // for a situation where hovered row is the next row after current row...\n // In this case row will not be re-rendered if user switch to next row, because hovered row also renders EditingRow.\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n }, [tableMeta.rowActive.rowActiveIndex, tableMeta.search.isSearching]);\n\n return <MemoedRow {...attributes} onClickCapture={handleClickCapture} onKeyDown={handleKeyDown} />;\n}\n\n// Memoization\n\nexport type MemoedRowProps<TType = unknown> = Omit<RowProps<TType>, 'onClick'> & {\n data: TType;\n 'aria-grabbed'?: boolean;\n 'data-current': boolean;\n 'data-selected': boolean;\n draggable: boolean;\n index: number;\n onClick: any; //(event: React.MouseEvent<HTMLElement,MouseEvent>, data: unknown) => void;\n};\n\nconst clickableElements = ['input', 'button', 'a', 'select', 'option', 'label', 'textarea'];\n\nconst MemoedRow = React.memo(function MemoedRow<TType = unknown>(props: MemoedRowProps<TType>) {\n const {\n data,\n index,\n isLastRow: _1,\n measureRef,\n onClick,\n onClickCapture,\n onDrop,\n row,\n table,\n tableRef,\n ...attributes\n } = props;\n const ref = React.useRef<HTMLDivElement | null>(null);\n const tableMeta = table.options.meta as TableMeta<TType>;\n const { setIsHovered } = useRowContext();\n\n // we measure the first cell (since the row has display: contents) so that the virtualiser height is correct\n React.useEffect(() => {\n const firstCell = ref.current?.querySelector('[role=cell]:first-child');\n\n if (firstCell) {\n measureRef(firstCell as HTMLElement);\n }\n }, [ref.current]);\n\n // we use capture because it also picks up clicks on e.g. select checkboxes\n const handleClickCapture = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (typeof onClickCapture === 'function') {\n onClickCapture(event);\n }\n\n // do this in the next frame, otherwise it remounts the row and prevents row actions on hover from being clickable\n requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (typeof onClick === 'function') {\n const clickedElement = event.target as HTMLElement;\n\n if (\n !ref.current?.contains(event.target as HTMLElement) ||\n clickableElements.includes(clickedElement.tagName.toLowerCase()) ||\n clickedElement.closest(clickableElements.map(tag => `[role=row] ${tag}`).join(','))\n ) {\n return;\n }\n\n onClick(event, data);\n }\n };\n\n const handleMouseEnter = () => {\n // When user moving mouse to fast, then some of the rows are getting stuck in hover state,\n // because mouseleave event never got triggered, to avoid this to happen we're saving the index of last hovered row,\n // so that we can unhover it when new row got hovered, and saving it in a variable outside of react to save in performance,\n // since it would be very performance heavy to use state which is bound to mouse events.\n if (previouslyHoveredIndex !== undefined) {\n if (previouslyHoveredIndex !== index) {\n unhoverPreviousRow(tableRef);\n previouslyHoveredIndex = index;\n }\n } else {\n previouslyHoveredIndex = index;\n }\n setIsHovered(true);\n };\n const handleMouseLeave = () => {\n if (previouslyHoveredIndex === index) {\n previouslyHoveredIndex = undefined;\n }\n setIsHovered(false);\n };\n\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => onDrop?.(event, row.original));\n\n const className = cn(\n 'group/row contents',\n // resizing column requires dragging, which means the mouse might (on rare occasions) move over rows and trigger hover state\n // that in turn triggers rendering of e.g. row actions, which could cause janky ui - so don't allow mouse interaction when resizing\n '[[role=\"table\"][data-resizing=\"true\"]_&]:pointer-events-none',\n {\n 'hover:cursor-pointer': typeof onClick === 'function',\n }\n );\n\n return (\n <div\n {...attributes}\n {...(onDrop ? dropTargetProps : undefined)}\n className={className}\n data-row-index={index}\n data-dragged-over={isDraggedOver}\n onClick={handleClick}\n onClickCapture={handleClickCapture}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role=\"row\"\n ref={ref}\n />\n );\n}) as <TType = unknown>(props: MemoedRowProps<TType>) => JSX.Element;\n"],"names":["FOCUS_MANAGER_OPTIONS","tabbable","accept","element","closest","Row","props","focusManager","useFocusManager","tableMeta","table","options","meta","isActiveRow","rowActive","rowActiveIndex","index","isDraggingRow","rowDrag","dragging","row","id","isFirstRow","isHovered","setIsHovered","React","useState","handleKeyDown","event","isDefaultPrevented","isPropagationStopped","key","setHoverStatePaused","focusedElement","shiftKey","focusPrevious","preventDefault","setRowActiveIndex","setTimeout","focusLast","focusNext","isLastRow","focusFirst","hasError","Object","keys","_tableMeta$validation","_tableMeta$validation2","validation","errors","length","memoedProps","data","original","isEnabled","undefined","getIsSelected","draggable","onClick","rowClick","handleClick","onDrop","rowDrop","handleDrop","output","MemoedRow","onKeyDown","editing","isEditing","isHoverStatePaused","EditingRow","setActiveRowIndex","contextValue","useMemo","rowIndex","RowContext","Provider","value","lastCellIndex","LastCellIndex","previouslyHoveredIndex","unhoverPreviousRow","tableRef","_tableRef$current","mouseoutEvent","MouseEvent","view","window","bubbles","cancelable","previouslyHovered","current","querySelector","dispatchEvent","virtualiser","attributes","handleClickCapture","getColumnIndex","target","handleNavigationBackwards","stopPropagation","ctrlKey","metaKey","blur","currentTarget","contains","handleNavigationForward","useEffect","detailModeEditing","shortcutsState","isPaused","search","isSearching","_props$tableRef$curre","lastCellElement","focusableElement","focusableSelector","focus","onClickCapture","clickableElements","memo","_1","measureRef","ref","useRef","useRowContext","firstCell","_ref$current","requestAnimationFrame","_ref$current2","clickedElement","includes","tagName","toLowerCase","map","tag","join","handleMouseEnter","handleMouseLeave","isDraggedOver","dropTargetProps","useDropTarget","className","cn","onMouseEnter","onMouseLeave","role"],"mappings":"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"}
@@ -5,14 +5,14 @@ import { useLocalization } from '../../../Provider/Localization.js';
5
5
  import { Checkbox } from '../../../Checkbox/Checkbox.js';
6
6
  import { Input } from '../../../Input/Input.js';
7
7
  import { Popover } from '../../../Popover/Popover.js';
8
- import { COLUMN_ID } from '../columns/internal/Actions.js';
9
- import { isInternalColumn } from '../../util/columns.js';
10
8
  import { ensureOrdering } from '../../../../primitives/Table/useTable/util/columns.js';
11
- import { COLUMN_ID as COLUMN_ID$1 } from '../columns/internal/EditingActions.js';
12
9
  import { Container } from '../../../../primitives/Sortable/components/Container.js';
13
10
  import { arrayMove } from '@dnd-kit/sortable';
14
11
  import { Item } from '../../../../primitives/Sortable/components/Item.js';
15
12
  import { List } from '../../../../primitives/Sortable/components/List.js';
13
+ import { COLUMN_ID } from '../columns/internal/Actions.js';
14
+ import { isInternalColumn } from '../../util/columns.js';
15
+ import { COLUMN_ID as COLUMN_ID$1 } from '../columns/internal/EditingActions.js';
16
16
 
17
17
  const Column = /*#__PURE__*/React__default.forwardRef(function Column(props, ref) {
18
18
  var _column$parent, _column$parent$column, _column$columnDef$met;
@@ -1,18 +1,17 @@
1
1
  import React__default from 'react';
2
2
  import cn from 'clsx';
3
3
  import { Icon } from '../../../../../Icon/Icon.js';
4
- import { useGlobalKeyDown } from '../../../../../../hooks/useGlobalKeyDown.js';
5
4
  import { IconButton } from '../../../../../IconButton/IconButton.js';
6
5
  import { useLocalization } from '../../../../../Provider/Localization.js';
7
6
  import { Button } from '../../../../../Button/Button.js';
8
7
  import { Popover } from '../../../../../Popover/Popover.js';
9
8
  import { Group } from '../../../../../Group/Group.js';
10
9
  import { Shortcut } from '../../../../../Shortcut/Shortcut.js';
10
+ import { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen.js';
11
11
  import { isInternalColumn } from '../../../../util/columns.js';
12
12
  import { Table3FilterComparator } from '../../../../types.js';
13
13
  import { Placeholder } from './components/Placeholder.js';
14
14
  import { Filter } from './components/Filter.js';
15
- import { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen.js';
16
15
 
17
16
  function sortByHeader(a, b) {
18
17
  var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
@@ -31,15 +30,11 @@ function FiltersButton(props) {
31
30
  const isLargeScreen = useIsLargeScreen();
32
31
  const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort(sortByHeader);
33
32
  const appliedFilters = table.getState().columnFilters;
34
- useGlobalKeyDown({
33
+ const shortcut = {
35
34
  key: 'f',
36
35
  meta: true,
37
36
  shift: true
38
- }, event => {
39
- var _ref$current;
40
- event.preventDefault();
41
- (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
42
- });
37
+ };
43
38
  // state, since we "apply" filters
44
39
  const [filters, setFilters] = React__default.useState(appliedFilters);
45
40
  const [placeholderCount, setPlaceholderCount] = React__default.useState(1);
@@ -116,6 +111,7 @@ function FiltersButton(props) {
116
111
  className: cn({
117
112
  '!wcag-blue-100': appliedFilters.length
118
113
  }),
114
+ shortcut,
119
115
  popover: popoverProps => ( /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
120
116
  onChange: handleClose
121
117
  }), /*#__PURE__*/React__default.createElement(Popover.Content, null, /*#__PURE__*/React__default.createElement("div", {
@@ -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 'clsx';\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, ColumnFilter } 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';\nimport { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen';\nimport { IconButton } from '../../../../../IconButton/IconButton';\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 FiltersButton<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { locale, texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const isLargeScreen = useIsLargeScreen();\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters as Table3Filter[];\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[]>(appliedFilters);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string | null, filter: { id: string | null; 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 | null) => {\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 const newFilters = filters.filter(f => {\n if (f.id === null) {\n return false;\n }\n\n const controlRenderer = (allColumns.find(c => c.id === f.id) as RTColumn<TType, unknown>)?.columnDef.meta\n ?.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 // Compiler didn't get that we stripped out filters with null ids, so we still need to cast a ColumnFilter type here\n return newFilters as ColumnFilter[];\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n const handleClose = React.useCallback(\n (open: boolean) => {\n if (!open) {\n setFilters(appliedFilters);\n setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);\n }\n },\n [appliedFilters]\n );\n\n // Because filters can be reset from outside\n React.useEffect(() => {\n if (appliedFilters.length === 0) {\n setFilters([]);\n setPlaceholderCount(1);\n }\n }, [appliedFilters]);\n\n const buttonProps = {\n 'aria-label': texts.table3.filters.tooltip,\n className: cn({ '!wcag-blue-100': appliedFilters.length }),\n popover: popoverProps => (\n <Popover {...popoverProps} onChange={handleClose}>\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(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(table.getFilteredRowModel().rows.length)\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(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={placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined}\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,\n tooltip: (\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n ),\n };\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <IconButton {...buttonProps} icon=\"filter\" />;\n }\n return (\n <Button {...buttonProps}>\n <Icon className={cn({ '-mr-1.5': !isLargeScreen })} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table3.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","_a$columnDef$meta","columnDef","meta","_a$columnDef$meta$hea","header","_a$columnDef$meta$hea2","localeCompare","call","_b$columnDef$meta","FiltersButton","props","total","table","locale","texts","useLocalization","ref","React","useRef","isLargeScreen","useIsLargeScreen","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","useGlobalKeyDown","key","shift","event","preventDefault","_ref$current","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","newFilters","controlRenderer","_allColumns$find","find","c","_allColumns$find$colu","control","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","handleClose","useCallback","open","useEffect","buttonProps","table3","tooltip","className","cn","popover","popoverProps","Popover","onChange","Content","button","replace","Intl","NumberFormat","format","getFilteredRowModel","rows","map","Filter","position","onRemove","Array","_","Placeholder","onCreate","Button","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","IconButton","icon","Icon","name"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../../../../../../../../../src/components/Table3/components/toolbar/Filter/filters/Filters.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'clsx';\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, ColumnFilter } from '../../../../types';\nimport { Shortcut } from '../../../../../Shortcut/Shortcut';\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';\nimport { useIsLargeScreen } from '../../../../../../hooks/useIsLargeScreen';\nimport { IconButton } from '../../../../../IconButton/IconButton';\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 FiltersButton<TType = unknown>(props: FiltersProps<TType>) {\n const { total, table } = props;\n const { locale, texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const isLargeScreen = useIsLargeScreen();\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n const appliedFilters = table.getState().columnFilters as Table3Filter[];\n\n const shortcut = { key: 'f', meta: true, shift: true };\n\n // state, since we \"apply\" filters\n const [filters, setFilters] = React.useState<Table3Filter[]>(appliedFilters);\n const [placeholderCount, setPlaceholderCount] = React.useState(1);\n\n // filters\n const handleChangeFilter = (currentId: string | null, filter: { id: string | null; 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 | null) => {\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 const newFilters = filters.filter(f => {\n if (f.id === null) {\n return false;\n }\n\n const controlRenderer = (allColumns.find(c => c.id === f.id) as RTColumn<TType, unknown>)?.columnDef.meta\n ?.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 // Compiler didn't get that we stripped out filters with null ids, so we still need to cast a ColumnFilter type here\n return newFilters as ColumnFilter[];\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([]);\n setPlaceholderCount(1);\n };\n\n const handleClose = React.useCallback(\n (open: boolean) => {\n if (!open) {\n setFilters(appliedFilters);\n setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);\n }\n },\n [appliedFilters]\n );\n\n // Because filters can be reset from outside\n React.useEffect(() => {\n if (appliedFilters.length === 0) {\n setFilters([]);\n setPlaceholderCount(1);\n }\n }, [appliedFilters]);\n\n const buttonProps = {\n 'aria-label': texts.table3.filters.tooltip,\n className: cn({ '!wcag-blue-100': appliedFilters.length }),\n shortcut,\n popover: popoverProps => (\n <Popover {...popoverProps} onChange={handleClose}>\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(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(table.getFilteredRowModel().rows.length)\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(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={placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined}\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,\n tooltip: (\n <>\n {texts.table3.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={{ key: 'f', meta: true, shift: true }} />\n </>\n ),\n };\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <IconButton {...buttonProps} icon=\"filter\" />;\n }\n return (\n <Button {...buttonProps}>\n <Icon className={cn({ '-mr-1.5': !isLargeScreen })} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table3.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </Button>\n );\n}\n"],"names":["sortByHeader","a","b","_a$columnDef$meta","columnDef","meta","_a$columnDef$meta$hea","header","_a$columnDef$meta$hea2","localeCompare","call","_b$columnDef$meta","FiltersButton","props","total","table","locale","texts","useLocalization","ref","React","useRef","isLargeScreen","useIsLargeScreen","allColumns","getAllLeafColumns","filter","column","isInternalColumn","id","sort","appliedFilters","getState","columnFilters","shortcut","key","shift","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","newFilters","controlRenderer","_allColumns$find","find","c","_allColumns$find$colu","control","IsEmpty","IsNotEmpty","handleClear","resetColumnFilters","handleClose","useCallback","open","useEffect","buttonProps","table3","tooltip","className","cn","popover","popoverProps","Popover","onChange","Content","button","replace","Intl","NumberFormat","format","getFilteredRowModel","rows","map","Filter","position","onRemove","Array","_","Placeholder","onCreate","Button","appearance","onClick","buttons","addFilter","Group","Close","Shortcut","keys","IconButton","icon","Icon","name"],"mappings":";;;;;;;;;;;;;;;AAgBA,SAASA,YAAYA,CAAkBC,CAAkB,EAAEC,CAAkB;;EACzE,QAAAC,iBAAA,GAAQF,CAAC,CAACG,SAAS,CAACC,IAAI,cAAAF,iBAAA,wBAAAG,qBAAA,GAAhBH,iBAAA,CAAkBI,MAAiB,cAAAD,qBAAA,wBAAAE,sBAAA,GAAnCF,qBAAA,CAAqCG,aAAa,cAAAD,sBAAA,uBAAlDA,sBAAA,CAAAE,IAAA,CAAAJ,qBAAA,GAAAK,iBAAA,GAAqDT,CAAC,CAACE,SAAS,CAACC,IAAI,cAAAM,iBAAA,uBAAhBA,iBAAA,CAAkBJ,MAAgB,CAAC;AACpG;SAOgBK,aAAaA,CAAkBC,KAA0B;EACrE,MAAM;IAAEC,KAAK;IAAEC;GAAO,GAAGF,KAAK;EAC9B,MAAM;IAAEG,MAAM;IAAEC;GAAO,GAAGC,eAAe,EAAE;EAC3C,MAAMC,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAoB,IAAI,CAAC;EACjD,MAAMC,aAAa,GAAGC,gBAAgB,EAAE;EACxC,MAAMC,UAAU,GAAGT,KAAK,CACnBU,iBAAiB,EAAE,CACnBC,MAAM,CAACC,MAAM,IAAI,CAACC,gBAAgB,CAACD,MAAM,CAACE,EAAE,CAAC,CAAC,CAC9CC,IAAI,CAAC9B,YAAY,CAAC;EACvB,MAAM+B,cAAc,GAAGhB,KAAK,CAACiB,QAAQ,EAAE,CAACC,aAA+B;EAEvE,MAAMC,QAAQ,GAAG;IAAEC,GAAG,EAAE,GAAG;IAAE9B,IAAI,EAAE,IAAI;IAAE+B,KAAK,EAAE;GAAM;;EAGtD,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGlB,cAAK,CAACmB,QAAQ,CAAiBR,cAAc,CAAC;EAC5E,MAAM,CAACS,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGrB,cAAK,CAACmB,QAAQ,CAAC,CAAC,CAAC;;EAGjE,MAAMG,kBAAkB,GAAGA,CAACC,SAAwB,EAAEjB,MAAuD;IACzGY,UAAU,CAACM,cAAc;MACrB,MAAMC,WAAW,GAAG,CAAC,GAAGD,cAAc,CAAC;MACvC,MAAME,KAAK,GAAGD,WAAW,CAACE,SAAS,CAACC,CAAC,IAAIA,CAAC,CAACnB,EAAE,KAAKc,SAAS,CAAC;MAC5DE,WAAW,CAACC,KAAK,CAAC,GAAGpB,MAAM;MAC3B,OAAOmB,WAAW;KACrB,CAAC;GACL;EAED,MAAMI,kBAAkB,GAAIC,QAAuB;IAC/C,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,CAAClB,MAAM,CAACsB,CAAC,IAAIA,CAAC,CAACnB,EAAE,KAAKqB,QAAQ,CAAC,CAAC;GAC9E;;EAGD,MAAMG,iCAAiC,GAAIH,QAAgB;IACvDZ,UAAU,CAACM,cAAc,IAAI,CACzB,GAAGA,cAAc,EACjB;MACIf,EAAE,EAAEqB,QAAQ;MACZI,KAAK,EAAE;QACHC,UAAU,EAAEC,sBAAsB,CAACC,QAAQ;QAC3CH,KAAK,EAAEI;;KAEd,CACJ,CAAC;IACFC,uBAAuB,EAAE;GAC5B;EAED,MAAMC,uBAAuB,GAAGA;IAC5BnB,mBAAmB,CAACW,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;GAC1C;EAED,MAAMO,uBAAuB,GAAGA;IAC5BlB,mBAAmB,CAACW,KAAK,IAAIA,KAAK,GAAG,CAAC,CAAC;GAC1C;;EAGD,MAAMS,WAAW,GAAGA;IAChB9C,KAAK,CAAC+C,gBAAgB,CAAC;MACnB,MAAMC,UAAU,GAAG1B,OAAO,CAACX,MAAM,CAACsB,CAAC;;QAC/B,IAAIA,CAAC,CAACnB,EAAE,KAAK,IAAI,EAAE;UACf,OAAO,KAAK;;QAGhB,MAAMmC,eAAe,IAAAC,gBAAA,GAAIzC,UAAU,CAAC0C,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACtC,EAAE,KAAKmB,CAAC,CAACnB,EAAE,CAA8B,cAAAoC,gBAAA,wBAAAG,qBAAA,GAAhEH,gBAAA,CAAkE7D,SAAS,CAACC,IAAI,cAAA+D,qBAAA,uBAAhFA,qBAAA,CACnBC,OAAO;QACb,IACIrB,CAAC,CAACM,KAAK,CAACC,UAAU,KAAKC,sBAAsB,CAACc,OAAO,IACrDtB,CAAC,CAACM,KAAK,CAACC,UAAU,KAAKC,sBAAsB,CAACe,UAAU,IACxDP,eAAe,KAAK,QAAQ,EAC9B;UACE,OAAO,IAAI;;QAEf,OAAO,CAAC,CAAChB,CAAC,CAACM,KAAK,CAACA,KAAK;OACzB,CAAC;;MAEF,OAAOS,UAA4B;KACtC,CAAC;GACL;EAED,MAAMS,WAAW,GAAGA;IAChBzD,KAAK,CAAC0D,kBAAkB,EAAE;IAC1BnC,UAAU,CAAC,EAAE,CAAC;IACdG,mBAAmB,CAAC,CAAC,CAAC;GACzB;EAED,MAAMiC,WAAW,GAAGtD,cAAK,CAACuD,WAAW,CAChCC,IAAa;IACV,IAAI,CAACA,IAAI,EAAE;MACPtC,UAAU,CAACP,cAAc,CAAC;MAC1BU,mBAAmB,CAACV,cAAc,CAACoB,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;GAE/D,EACD,CAACpB,cAAc,CAAC,CACnB;;EAGDX,cAAK,CAACyD,SAAS,CAAC;IACZ,IAAI9C,cAAc,CAACoB,MAAM,KAAK,CAAC,EAAE;MAC7Bb,UAAU,CAAC,EAAE,CAAC;MACdG,mBAAmB,CAAC,CAAC,CAAC;;GAE7B,EAAE,CAACV,cAAc,CAAC,CAAC;EAEpB,MAAM+C,WAAW,GAAG;IAChB,YAAY,EAAE7D,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAAC2C,OAAO;IAC1CC,SAAS,EAAEC,EAAE,CAAC;MAAE,gBAAgB,EAAEnD,cAAc,CAACoB;KAAQ,CAAC;IAC1DjB,QAAQ;IACRiD,OAAO,EAAEC,YAAY,mBACjBhE,6BAACiE,OAAO,oBAAKD,YAAY;MAAEE,QAAQ,EAAEZ;qBACjCtD,6BAACiE,OAAO,CAACE,OAAO,qBACZnE;MAAK6D,SAAS,EAAC;oBACX7D;MAAK6D,SAAS,EAAC;oBACX7D;MAAK6D,SAAS,EAAC;oBACX7D;MAAI6D,SAAS,EAAC;OAAoBhE,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAACmD,MAAM,CAAM,eACnEpE;MAAG6D,SAAS,EAAC;OACRhE,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAACvB,KAAK,CACtB2E,OAAO,CACJ,WAAW,EACX,IAAIC,IAAI,CAACC,YAAY,CAAC3E,MAAM,CAAC,CAAC4E,MAAM,CAAC7E,KAAK,CAAC8E,mBAAmB,EAAE,CAACC,IAAI,CAAC3C,MAAM,CAAC,CAChF,CACAsC,OAAO,CAAC,SAAS,EAAE,IAAIC,IAAI,CAACC,YAAY,CAAC3E,MAAM,CAAC,CAAC4E,MAAM,CAAC9E,KAAK,CAAC,CAAC,CACpE,CACF,CACJ,eACNM;MAAK6D,SAAS,EAAC;OACV5C,OAAO,CAAC0D,GAAG,CAAC,CAACrE,MAAM,EAAEoB,KAAK,oBACvB1B,6BAAC4E,MAAM;MACH7D,GAAG,YAAYW,OAAO;MACtBtB,UAAU,EAAEA,UAA0C;MACtDE,MAAM,EAAEA,MAAM;MACdW,OAAO,EAAEA,OAAO;MAChB4D,QAAQ,EAAEnD,KAAK;MACfwC,QAAQ,EAAE5C,kBAAkB;MAC5BwD,QAAQ,EAAEjD;MACZ,CACL,CAAC,EACD,CAAC,GAAGkD,KAAK,CAAC3D,gBAAgB,CAAC,CAAC,CAACuD,GAAG,CAAC,CAACK,CAAC,EAAEtD,KAAK,oBACvC1B,6BAACiF,WAAW;MACRlE,GAAG,iBAAiBW,OAAO;MAC3BtB,UAAU,EAAEA,UAA0C;MACtDa,OAAO,EAAEA,OAAO;MAChB4D,QAAQ,EAAE5D,OAAO,CAACc,MAAM,GAAGL,KAAK;MAChCwD,QAAQ,EAAEjD,iCAAwC;MAClD6C,QAAQ,EAAE1D,gBAAgB,GAAG,CAAC,IAAIH,OAAO,CAACc,MAAM,GAAG,CAAC,GAAGQ,uBAAuB,GAAGD;MACnF,CACL,CAAC,eACFtC;MAAK6D,SAAS,EAAC;oBACX7D,6BAACmF,MAAM;MAACC,UAAU,EAAC,UAAU;MAACC,OAAO,EAAE7C;aAChC3C,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAACqE,OAAO,CAACC,SAAS,CACpC,CACP,CACJ,eACNvF,6BAACwF,KAAK;MAAC3B,SAAS,EAAC;oBACb7D,6BAACiE,OAAO,CAACwB,KAAK,qBACVzF,6BAACmF,MAAM,iBAAgB,CACX,eAChBnF,6BAACmF,MAAM;MAACE,OAAO,EAAEjC;eAA2B,eAC5CpD,6BAACmF,MAAM;MAACC,UAAU,EAAC,SAAS;MAACC,OAAO,EAAE5C;eAE7B,CACL,CACN,CACQ,CACZ,CACb;IACD1C,GAAG;IACH6D,OAAO,iBACH5D,4DACKH,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAAC2C,OAAO,eAC7B5D,6BAAC0F,QAAQ;MAAC7B,SAAS,EAAC,MAAM;MAAC8B,IAAI,EAAE;QAAE5E,GAAG,EAAE,GAAG;QAAE9B,IAAI,EAAE,IAAI;QAAE+B,KAAK,EAAE;;MAAU,CAC3E;GAEV;EAED,IAAI,CAACd,aAAa,IAAI,CAACS,cAAc,CAACoB,MAAM,EAAE;IAC1C,oBAAO/B,6BAAC4F,UAAU,oBAAKlC,WAAW;MAAEmC,IAAI,EAAC;OAAW;;EAExD,oBACI7F,6BAACmF,MAAM,oBAAKzB,WAAW,gBACnB1D,6BAAC8F,IAAI;IAACjC,SAAS,EAAEC,EAAE,CAAC;MAAE,SAAS,EAAE,CAAC5D;KAAe,CAAC;IAAE6F,IAAI,EAAEpF,cAAc,CAACoB,MAAM,GAAG,cAAc,GAAG;IAAY,EAC9G7B,aAAa,GAAGL,KAAK,CAAC8D,MAAM,CAAC1C,OAAO,CAACmD,MAAM,GAAG,EAAE,EAChDzD,cAAc,CAACoB,MAAM,OAAOpB,cAAc,CAACoB,SAAS,GAAG,EAAE,CACrD;AAEjB;;;;"}
@@ -33,6 +33,7 @@ function guessComparatorsBasedOnControl(column) {
33
33
  var _column$columnDef$met;
34
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
35
  if (Array.isArray(columnMeta.filters)) {
36
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
36
37
  return columnMeta.filters;
37
38
  }
38
39
  if (typeof columnMeta.control === 'function') {
@@ -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 { 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 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","_column$columnDef$met","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","_column$columnDef","_column$columnDef$met2","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
+ {"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 Table3FilterComparator)) {\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>): Table3FilterComparator[] {\n const columnMeta = (column?.columnDef.meta ?? {}) as ColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\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 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","_column$columnDef$met","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","_column$columnDef","_column$columnDef$met2","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,7 @@
1
1
  import React__default from 'react';
2
- import { useGlobalKeyDown } from '../../../../../hooks/useGlobalKeyDown.js';
3
2
  import { IconButton } from '../../../../IconButton/IconButton.js';
4
3
  import { useLocalization } from '../../../../Provider/Localization.js';
4
+ import { Shortcut } from '../../../../Shortcut/Shortcut.js';
5
5
  import { useToast } from '../../../../Toast/Toaster.js';
6
6
  import { _catch } from '../../../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js';
7
7
  import { PrintIFrame } from './PrintIFrame.js';
@@ -29,8 +29,10 @@ function PrintButton(props) {
29
29
  // When changing printTableId, update packages/taco/src/components/Table3/Table3.tsx file and other usages where
30
30
  // printTableId is used to figure out whether the table is a print table or not.
31
31
  const printTableId = `${tableProps.id}_print`;
32
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
32
33
  const excludeUnmatchedResults = tableMeta.search.excludeUnmatchedResults;
33
34
  const defaultSettings = React__default.useMemo(() => ({
35
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
34
36
  columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,
35
37
  columnOrder: state.columnOrder,
36
38
  columnSizing: state.columnSizing,
@@ -42,7 +44,9 @@ function PrintButton(props) {
42
44
  // we don't save these, but we must pass them to print
43
45
  columnFilters: state.columnFilters,
44
46
  globalFilter: state.globalFilter
45
- }), [tableMeta.columnFreezing.frozenColumnIndex, state.columnOrder, state.columnSizing, state.columnVisibility, excludeUnmatchedResults, tableMeta.fontSize.size, tableMeta.rowHeight.height, state.sorting, state.columnFilters, state.globalFilter]);
47
+ }), [
48
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
49
+ tableMeta.columnFreezing.frozenColumnIndex, state.columnOrder, state.columnSizing, state.columnVisibility, excludeUnmatchedResults, tableMeta.fontSize.size, tableMeta.rowHeight.height, state.sorting, state.columnFilters, state.globalFilter]);
46
50
  const iframeTableChildren = React__default.useMemo(() => React__default.Children.toArray(tableProps.children).filter(child => {
47
51
  var _child$props;
48
52
  const enableColumnInPrinting = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.enablePrinting;
@@ -58,16 +62,6 @@ function PrintButton(props) {
58
62
  defaultSettings,
59
63
  id: printTableId
60
64
  };
61
- useGlobalKeyDown({
62
- key: 'p',
63
- meta: true,
64
- shift: false
65
- }, event => {
66
- var _buttonRef$current;
67
- event.preventDefault();
68
- // Starts custom printing
69
- (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.click();
70
- });
71
65
  const handleLoadingError = error => {
72
66
  var _loadingToastRef$curr;
73
67
  const errorMessage = `${texts.table3.print.error}: ${error}`;
@@ -138,6 +132,7 @@ function PrintButton(props) {
138
132
  // We need to pass search query to the server when printing, to be able to render correct data set in iFrame,
139
133
  // But in "display" table, search is performed only on client side, so we'll need to request data again without search query,
140
134
  // when printing will be finished.
135
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
141
136
  excludeUnmatchedResults ? tableMeta.search.query : undefined)).then(function () {
142
137
  // After the loadAll call above, the data changes. Hence, it becomes essential to acquire the data after
143
138
  // this call rather than before it.
@@ -160,6 +155,15 @@ function PrintButton(props) {
160
155
  return Promise.reject(e);
161
156
  }
162
157
  };
158
+ const shortcut = {
159
+ key: 'p',
160
+ meta: true,
161
+ shift: false
162
+ };
163
+ const tooltip = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table3.print.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
164
+ className: "ml-2",
165
+ keys: shortcut
166
+ }));
163
167
  const handleWarningDialogAccept = () => {
164
168
  setIsCurrentlyPrinting(true);
165
169
  };
@@ -185,8 +189,9 @@ function PrintButton(props) {
185
189
  icon: "print",
186
190
  onClick: handlePrint,
187
191
  "aria-label": texts.table3.print.tooltip,
188
- tooltip: texts.table3.print.tooltip,
189
- ref: buttonRef
192
+ tooltip: tooltip,
193
+ ref: buttonRef,
194
+ shortcut: shortcut
190
195
  }), isCurrentlyPrinting && iframeTableProps.data !== null && ( /*#__PURE__*/React__default.createElement(PrintIFrame, {
191
196
  onAfterPrint: handleAfterPrint,
192
197
  onBeforePrint: handleBeforePrint,
@@ -1 +1 @@
1
- {"version":3,"file":"PrintButton.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\n\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { ToastReference, useToast } from '../../../../Toast/Toaster';\nimport { PrintIFrame } from './PrintIFrame';\nimport { Table3ColumnProps, Table3Props } from '../../../types';\nimport { useGlobalKeyDown } from '../../../../../hooks/useGlobalKeyDown';\nimport { WarningDialog } from './WarningDialog';\n\nconst SAFE_PRINT_CELL_COUNT = 10000;\n\nexport type PrintButtonProps<TType = unknown> = React.HTMLAttributes<HTMLButtonElement> & {\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintButton<TType = unknown>(props: PrintButtonProps<TType>) {\n const { table, tableProps } = props;\n const { texts } = useLocalization();\n const toast = useToast();\n\n const [isCurrentlyPrinting, setIsCurrentlyPrinting] = React.useState(false);\n const [showWarningDialog, setShowWarningDialog] = React.useState(false);\n const loadingToastRef = React.useRef<ToastReference | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n const { isWarningVisibleForLargeDatasets } = tableMeta.printing;\n\n // When changing printTableId, update packages/taco/src/components/Table3/Table3.tsx file and other usages where\n // printTableId is used to figure out whether the table is a print table or not.\n const printTableId = `${tableProps.id}_print`;\n const excludeUnmatchedResults = tableMeta.search.excludeUnmatchedResults;\n\n const defaultSettings = React.useMemo(\n () => ({\n columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,\n columnOrder: state.columnOrder,\n columnSizing: state.columnSizing,\n columnVisibility: state.columnVisibility,\n excludeUnmatchedRecordsInSearch: excludeUnmatchedResults,\n fontSize: tableMeta.fontSize.size,\n rowHeight: tableMeta.rowHeight.height,\n sorting: state.sorting,\n // we don't save these, but we must pass them to print\n columnFilters: state.columnFilters,\n globalFilter: state.globalFilter,\n }),\n [\n tableMeta.columnFreezing.frozenColumnIndex,\n state.columnOrder,\n state.columnSizing,\n state.columnVisibility,\n excludeUnmatchedResults,\n tableMeta.fontSize.size,\n tableMeta.rowHeight.height,\n state.sorting,\n state.columnFilters,\n state.globalFilter,\n ]\n );\n\n const iframeTableChildren = React.useMemo(\n () =>\n (React.Children.toArray(tableProps.children) as React.ReactElement<Table3ColumnProps<TType>>[]).filter(child => {\n const enableColumnInPrinting = child.props?.enablePrinting;\n\n // For table children, only include columns doesn't have 'false' value for enablePrinting prop.\n if (React.isValidElement<Table3ColumnProps<TType>>(child) && enableColumnInPrinting === false) {\n return false;\n }\n\n return true;\n }),\n [tableProps.children]\n );\n\n const iframeTableProps = {\n ...tableProps,\n children: iframeTableChildren,\n defaultSettings,\n id: printTableId,\n };\n\n useGlobalKeyDown({ key: 'p', meta: true, shift: false }, (event: KeyboardEvent) => {\n event.preventDefault();\n // Starts custom printing\n buttonRef.current?.click();\n });\n\n const handleLoadingError = (error: any) => {\n const errorMessage = `${texts.table3.print.error}: ${error}`;\n\n console.error(errorMessage);\n loadingToastRef.current?.error(errorMessage);\n };\n\n const restoreTableDataWithoutSearch = async () => {\n try {\n await tableMeta.server.loadAll?.(table.getState().sorting, table.getState().columnFilters, undefined);\n } catch (error) {\n handleLoadingError(error);\n return;\n }\n };\n\n const handleAfterPrint = async () => {\n if (tableMeta.server.loadAll && excludeUnmatchedResults) {\n await restoreTableDataWithoutSearch();\n }\n setIsCurrentlyPrinting(false);\n loadingToastRef.current?.close();\n };\n\n const handleBeforePrint = () => {\n loadingToastRef.current?.close();\n };\n\n const handlePrint = async () => {\n loadingToastRef.current = toast.loading(texts.table3.print.loading as any);\n\n const getCellCount = (data: TType[]) => (data.length ? data.length * Object.keys(data[0]).length : 0);\n let hasNonSafeCellCount = false;\n\n // if loadAll is not defined, just print with what we've got\n // don't compare length to data.length because the api might be choosing not to return all for performance\n if (!tableMeta.server.loadAll) {\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } else {\n try {\n await tableMeta.server.loadAll(\n table.getState().sorting,\n table.getState().columnFilters,\n // We need to pass search query to the server when printing, to be able to render correct data set in iFrame,\n // But in \"display\" table, search is performed only on client side, so we'll need to request data again without search query,\n // when printing will be finished.\n excludeUnmatchedResults ? tableMeta.search.query : undefined\n );\n\n // After the loadAll call above, the data changes. Hence, it becomes essential to acquire the data after\n // this call rather than before it.\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } catch (error) {\n handleLoadingError(error);\n\n // in case of error, we return early\n return;\n }\n }\n\n if (hasNonSafeCellCount && isWarningVisibleForLargeDatasets) {\n setShowWarningDialog(true);\n } else {\n // only set printing (mount the iframe) when the data has loaded, it prevents repaint performance slow downs\n setIsCurrentlyPrinting(true);\n }\n };\n\n const handleWarningDialogAccept = () => {\n setIsCurrentlyPrinting(true);\n };\n\n const handleWarningDialogCancel = async () => {\n if (tableMeta.server.loadAll && excludeUnmatchedResults) {\n await restoreTableDataWithoutSearch();\n }\n };\n\n const handleWarningDialogClose = () => {\n loadingToastRef.current?.close();\n setShowWarningDialog(false);\n };\n\n return (\n <>\n <IconButton\n disabled={isCurrentlyPrinting}\n icon=\"print\"\n onClick={handlePrint}\n aria-label={texts.table3.print.tooltip}\n tooltip={texts.table3.print.tooltip}\n ref={buttonRef}\n />\n {isCurrentlyPrinting && iframeTableProps.data !== null && (\n <PrintIFrame\n onAfterPrint={handleAfterPrint}\n onBeforePrint={handleBeforePrint}\n tableProps={iframeTableProps as Table3Props<TType>}\n />\n )}\n <WarningDialog\n open={showWarningDialog}\n onAccept={handleWarningDialogAccept}\n onClose={handleWarningDialogClose}\n onCancel={handleWarningDialogCancel}\n onVisibilityChange={tableMeta.printing.setIsWarningVisibleForLargeDatasets}\n />\n </>\n );\n}\n"],"names":["SAFE_PRINT_CELL_COUNT","PrintButton","props","table","tableProps","texts","useLocalization","toast","useToast","isCurrentlyPrinting","setIsCurrentlyPrinting","React","useState","showWarningDialog","setShowWarningDialog","loadingToastRef","useRef","buttonRef","tableMeta","options","meta","state","getState","isWarningVisibleForLargeDatasets","printing","printTableId","id","excludeUnmatchedResults","search","defaultSettings","useMemo","columnFreezingIndex","columnFreezing","frozenColumnIndex","columnOrder","columnSizing","columnVisibility","excludeUnmatchedRecordsInSearch","fontSize","size","rowHeight","height","sorting","columnFilters","globalFilter","iframeTableChildren","Children","toArray","children","filter","child","enableColumnInPrinting","_child$props","enablePrinting","isValidElement","iframeTableProps","useGlobalKeyDown","key","shift","event","preventDefault","_buttonRef$current","current","click","handleLoadingError","error","errorMessage","table3","print","console","_loadingToastRef$curr","restoreTableDataWithoutSearch","_tableMeta$server$loa","_tableMeta$server","Promise","resolve","server","loadAll","call","undefined","then","_temp","e","reject","handleAfterPrint","_loadingToastRef$curr2","close","_temp2","_temp3","handleBeforePrint","_loadingToastRef$curr3","handlePrint","hasNonSafeCellCount","loading","getCellCount","data","length","Object","keys","_temp5","cellCount","_temp4","_catch","query","_exit","_temp6","handleWarningDialogAccept","handleWarningDialogCancel","_temp7","handleWarningDialogClose","_loadingToastRef$curr4","IconButton","disabled","icon","onClick","tooltip","ref","PrintIFrame","onAfterPrint","onBeforePrint","WarningDialog","open","onAccept","onClose","onCancel","onVisibilityChange","setIsWarningVisibleForLargeDatasets"],"mappings":"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"}
1
+ {"version":3,"file":"PrintButton.js","sources":["../../../../../../../../../../src/components/Table3/components/toolbar/PrintButton/PrintButton.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as RTable, TableMeta } from '@tanstack/react-table';\n\nimport { IconButton } from '../../../../IconButton/IconButton';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { ToastReference, useToast } from '../../../../Toast/Toaster';\nimport { PrintIFrame } from './PrintIFrame';\nimport { Table3ColumnProps, Table3Props } from '../../../types';\nimport { WarningDialog } from './WarningDialog';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\nconst SAFE_PRINT_CELL_COUNT = 10000;\n\nexport type PrintButtonProps<TType = unknown> = React.HTMLAttributes<HTMLButtonElement> & {\n table: RTable<TType>;\n tableProps: Table3Props<TType>;\n};\n\nexport function PrintButton<TType = unknown>(props: PrintButtonProps<TType>) {\n const { table, tableProps } = props;\n const { texts } = useLocalization();\n const toast = useToast();\n\n const [isCurrentlyPrinting, setIsCurrentlyPrinting] = React.useState(false);\n const [showWarningDialog, setShowWarningDialog] = React.useState(false);\n const loadingToastRef = React.useRef<ToastReference | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const tableMeta = table.options.meta as TableMeta<TType>;\n const state = table.getState();\n const { isWarningVisibleForLargeDatasets } = tableMeta.printing;\n\n // When changing printTableId, update packages/taco/src/components/Table3/Table3.tsx file and other usages where\n // printTableId is used to figure out whether the table is a print table or not.\n const printTableId = `${tableProps.id}_print`;\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n const excludeUnmatchedResults = tableMeta.search.excludeUnmatchedResults;\n\n const defaultSettings = React.useMemo(\n () => ({\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n columnFreezingIndex: tableMeta.columnFreezing.frozenColumnIndex,\n columnOrder: state.columnOrder,\n columnSizing: state.columnSizing,\n columnVisibility: state.columnVisibility,\n excludeUnmatchedRecordsInSearch: excludeUnmatchedResults,\n fontSize: tableMeta.fontSize.size,\n rowHeight: tableMeta.rowHeight.height,\n sorting: state.sorting,\n // we don't save these, but we must pass them to print\n columnFilters: state.columnFilters,\n globalFilter: state.globalFilter,\n }),\n [\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n tableMeta.columnFreezing.frozenColumnIndex,\n state.columnOrder,\n state.columnSizing,\n state.columnVisibility,\n excludeUnmatchedResults,\n tableMeta.fontSize.size,\n tableMeta.rowHeight.height,\n state.sorting,\n state.columnFilters,\n state.globalFilter,\n ]\n );\n\n const iframeTableChildren = React.useMemo(\n () =>\n (React.Children.toArray(tableProps.children) as React.ReactElement<Table3ColumnProps<TType>>[]).filter(child => {\n const enableColumnInPrinting = child.props?.enablePrinting;\n\n // For table children, only include columns doesn't have 'false' value for enablePrinting prop.\n if (React.isValidElement<Table3ColumnProps<TType>>(child) && enableColumnInPrinting === false) {\n return false;\n }\n\n return true;\n }),\n [tableProps.children]\n );\n\n const iframeTableProps = {\n ...tableProps,\n children: iframeTableChildren,\n defaultSettings,\n id: printTableId,\n };\n\n const handleLoadingError = (error: any) => {\n const errorMessage = `${texts.table3.print.error}: ${error}`;\n\n console.error(errorMessage);\n loadingToastRef.current?.error(errorMessage);\n };\n\n const restoreTableDataWithoutSearch = async () => {\n try {\n await tableMeta.server.loadAll?.(table.getState().sorting, table.getState().columnFilters, undefined);\n } catch (error) {\n handleLoadingError(error);\n return;\n }\n };\n\n const handleAfterPrint = async () => {\n if (tableMeta.server.loadAll && excludeUnmatchedResults) {\n await restoreTableDataWithoutSearch();\n }\n setIsCurrentlyPrinting(false);\n loadingToastRef.current?.close();\n };\n\n const handleBeforePrint = () => {\n loadingToastRef.current?.close();\n };\n\n const handlePrint = async () => {\n loadingToastRef.current = toast.loading(texts.table3.print.loading as any);\n\n const getCellCount = (data: TType[]) => (data.length ? data.length * Object.keys(data[0]).length : 0);\n let hasNonSafeCellCount = false;\n\n // if loadAll is not defined, just print with what we've got\n // don't compare length to data.length because the api might be choosing not to return all for performance\n if (!tableMeta.server.loadAll) {\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } else {\n try {\n await tableMeta.server.loadAll(\n table.getState().sorting,\n table.getState().columnFilters,\n // We need to pass search query to the server when printing, to be able to render correct data set in iFrame,\n // But in \"display\" table, search is performed only on client side, so we'll need to request data again without search query,\n // when printing will be finished.\n // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel\n excludeUnmatchedResults ? tableMeta.search.query : undefined\n );\n\n // After the loadAll call above, the data changes. Hence, it becomes essential to acquire the data after\n // this call rather than before it.\n const { data } = tableProps;\n const cellCount = getCellCount(data);\n\n hasNonSafeCellCount = cellCount > SAFE_PRINT_CELL_COUNT;\n } catch (error) {\n handleLoadingError(error);\n\n // in case of error, we return early\n return;\n }\n }\n\n if (hasNonSafeCellCount && isWarningVisibleForLargeDatasets) {\n setShowWarningDialog(true);\n } else {\n // only set printing (mount the iframe) when the data has loaded, it prevents repaint performance slow downs\n setIsCurrentlyPrinting(true);\n }\n };\n\n const shortcut = { key: 'p', meta: true, shift: false };\n const tooltip = (\n <>\n {texts.table3.print.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n );\n\n const handleWarningDialogAccept = () => {\n setIsCurrentlyPrinting(true);\n };\n\n const handleWarningDialogCancel = async () => {\n if (tableMeta.server.loadAll && excludeUnmatchedResults) {\n await restoreTableDataWithoutSearch();\n }\n };\n\n const handleWarningDialogClose = () => {\n loadingToastRef.current?.close();\n setShowWarningDialog(false);\n };\n\n return (\n <>\n <IconButton\n disabled={isCurrentlyPrinting}\n icon=\"print\"\n onClick={handlePrint}\n aria-label={texts.table3.print.tooltip}\n tooltip={tooltip}\n ref={buttonRef}\n shortcut={shortcut}\n />\n {isCurrentlyPrinting && iframeTableProps.data !== null && (\n <PrintIFrame\n onAfterPrint={handleAfterPrint}\n onBeforePrint={handleBeforePrint}\n tableProps={iframeTableProps as Table3Props<TType>}\n />\n )}\n <WarningDialog\n open={showWarningDialog}\n onAccept={handleWarningDialogAccept}\n onClose={handleWarningDialogClose}\n onCancel={handleWarningDialogCancel}\n onVisibilityChange={tableMeta.printing.setIsWarningVisibleForLargeDatasets}\n />\n </>\n );\n}\n"],"names":["SAFE_PRINT_CELL_COUNT","PrintButton","props","table","tableProps","texts","useLocalization","toast","useToast","isCurrentlyPrinting","setIsCurrentlyPrinting","React","useState","showWarningDialog","setShowWarningDialog","loadingToastRef","useRef","buttonRef","tableMeta","options","meta","state","getState","isWarningVisibleForLargeDatasets","printing","printTableId","id","excludeUnmatchedResults","search","defaultSettings","useMemo","columnFreezingIndex","columnFreezing","frozenColumnIndex","columnOrder","columnSizing","columnVisibility","excludeUnmatchedRecordsInSearch","fontSize","size","rowHeight","height","sorting","columnFilters","globalFilter","iframeTableChildren","Children","toArray","children","filter","child","enableColumnInPrinting","_child$props","enablePrinting","isValidElement","iframeTableProps","handleLoadingError","error","errorMessage","table3","print","console","_loadingToastRef$curr","current","restoreTableDataWithoutSearch","_tableMeta$server$loa","_tableMeta$server","Promise","resolve","server","loadAll","call","undefined","then","_temp","e","reject","handleAfterPrint","_loadingToastRef$curr2","close","_temp2","_temp3","handleBeforePrint","_loadingToastRef$curr3","handlePrint","hasNonSafeCellCount","loading","getCellCount","data","length","Object","keys","_temp5","cellCount","_temp4","_catch","query","_exit","_temp6","shortcut","key","shift","tooltip","Shortcut","className","handleWarningDialogAccept","handleWarningDialogCancel","_temp7","handleWarningDialogClose","_loadingToastRef$curr4","IconButton","disabled","icon","onClick","ref","PrintIFrame","onAfterPrint","onBeforePrint","WarningDialog","open","onAccept","onClose","onCancel","onVisibilityChange","setIsWarningVisibleForLargeDatasets"],"mappings":"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"}
@@ -51,23 +51,24 @@ import '../../../../Pagination/Pagination.js';
51
51
  import '../../../../Progress/Progress.js';
52
52
  import '../../../../Toast/Toaster.js';
53
53
  import '../../../../Provider/Provider.js';
54
+ import '../../../../../types.js';
55
+ import '../../../../../hooks/useLazyEffect.js';
54
56
  import '../../../../SearchInput/SearchInput.js';
55
57
  import '../../../../SearchInput2/SearchInput2.js';
58
+ import '../../../../Switch/Switch.js';
56
59
  import '../../../../../primitives/Collection/Collection.js';
57
60
  import '../../../../Tag/Tag.js';
58
- import '../../../../../types.js';
59
61
  import '../../../../Select2/Select2.js';
60
- import '../../../../Switch/Switch.js';
62
+ import '../../../../../hooks/useMatchMedia.js';
63
+ import '../../../../../hooks/useIsLargeScreen.js';
64
+ import '../../../../Report/Report.js';
61
65
  import '../../../../Table/components/Table.js';
62
66
  import '../../../../Table/components/PaginatedTable.js';
63
67
  import '../../../../Table/components/WindowedTable.js';
64
68
  import '../../../../Table/util/rowIndexPath.js';
65
69
  import '../../../../Table/hooks/useRowCreation.js';
66
70
  import ReactDOM from 'react-dom';
67
- import '../../../../../hooks/useLazyEffect.js';
68
71
  import '../../../../Textarea/Textarea.js';
69
- import '../../../../../hooks/useMatchMedia.js';
70
- import '../../../../../hooks/useIsLargeScreen.js';
71
72
  import { useParentStylesheets } from './hooks/useParentStylesheets.js';
72
73
  import '../../../hooks/useTableDataLoader.js';
73
74
  import { Table3 } from '../../../Table3.js';