@economic/taco 2.23.0 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/dist/components/Card/Card.d.ts +1 -0
  2. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  3. package/dist/components/Provider/Localization.d.ts +6 -0
  4. package/dist/components/Report/Report.d.ts +2 -2
  5. package/dist/components/Report/components/Body/Body.d.ts +0 -1
  6. package/dist/components/Report/components/Footer/Summary.d.ts +0 -1
  7. package/dist/components/Report/components/Header/Header.d.ts +3 -0
  8. package/dist/components/Report/components/Header/components/Menu.d.ts +3 -0
  9. package/dist/components/Report/components/Toolbar/components/Filters/components/Filter.d.ts +2 -2
  10. package/dist/components/Report/components/Toolbar/components/Filters/components/FilterColumn.d.ts +5 -2
  11. package/dist/components/Report/components/Toolbar/components/Filters/util.d.ts +2 -0
  12. package/dist/components/Report/types.d.ts +2 -2
  13. package/dist/components/Report/useReport.d.ts +0 -1
  14. package/dist/components/Select2/Select2.d.ts +22 -0
  15. package/dist/components/Select2/hooks/useChildren.d.ts +1 -0
  16. package/dist/components/Table/Table.d.ts +1 -1
  17. package/dist/components/Table/components/BaseTable.d.ts +1 -1
  18. package/dist/components/Table/hooks/useRowCreation.d.ts +2 -2
  19. package/dist/components/Table/hooks/useTable.d.ts +5 -5
  20. package/dist/components/Table/hooks/useTableKeyboardNavigation.d.ts +2 -2
  21. package/dist/components/Table/types.d.ts +37 -37
  22. package/dist/components/Table/util/sortTypes.d.ts +2 -2
  23. package/dist/components/Table/util.d.ts +4 -4
  24. package/dist/components/Table3/components/toolbar/Filter/filters/components/Filter.d.ts +2 -2
  25. package/dist/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.d.ts +5 -2
  26. package/dist/components/Table3/hooks/useTable.d.ts +8 -8
  27. package/dist/components/Table3/types.d.ts +2 -0
  28. package/dist/esm/index.css +55 -46
  29. package/dist/esm/packages/taco/src/components/Button/util.js +8 -8
  30. package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
  31. package/dist/esm/packages/taco/src/components/Card/Card.js +2 -1
  32. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +11 -2
  34. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +1 -1
  36. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js +12 -1
  37. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js.map +1 -1
  38. package/dist/esm/packages/taco/src/components/Provider/Localization.js +7 -1
  39. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  40. package/dist/esm/packages/taco/src/components/Report/Report.js +3 -8
  41. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  42. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js +4 -3
  43. package/dist/esm/packages/taco/src/components/Report/components/Body/Body.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js +1 -1
  45. package/dist/esm/packages/taco/src/components/Report/components/Cell/Cell.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js +1 -1
  47. package/dist/esm/packages/taco/src/components/Report/components/Cell/GroupedCell.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js +1 -1
  49. package/dist/esm/packages/taco/src/components/Report/components/Cell/util.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js +14 -2
  51. package/dist/esm/packages/taco/src/components/Report/components/Footer/Footer.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js +3 -3
  53. package/dist/esm/packages/taco/src/components/Report/components/Footer/Summary.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js +18 -1
  55. package/dist/esm/packages/taco/src/components/Report/components/Header/Header.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js +10 -1
  57. package/dist/esm/packages/taco/src/components/Report/components/Header/components/Menu.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js +1 -1
  59. package/dist/esm/packages/taco/src/components/Report/components/Header/util.js.map +1 -1
  60. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js +47 -11
  61. package/dist/esm/packages/taco/src/components/Report/components/Internal/Selection.js.map +1 -1
  62. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js +13 -1
  63. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/Filters.js.map +1 -1
  64. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js +44 -51
  65. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  66. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js +14 -7
  67. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  68. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js +4 -3
  69. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  70. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js +11 -1
  71. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  72. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js +4 -1
  73. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/util.js.map +1 -1
  74. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js +10 -8
  75. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Print/Print.js.map +1 -1
  76. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js +1 -1
  77. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
  78. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js +1 -1
  79. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Settings/Settings.js.map +1 -1
  80. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js +2 -2
  81. package/dist/esm/packages/taco/src/components/Report/listeners/useTableRowActiveListener.js.map +1 -1
  82. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js +8 -5
  83. package/dist/esm/packages/taco/src/components/Report/styles/useCssGridStylesheet.js.map +1 -1
  84. package/dist/esm/packages/taco/src/components/Report/useReport.js +3 -3
  85. package/dist/esm/packages/taco/src/components/Report/useReport.js.map +1 -1
  86. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js +3 -10
  87. package/dist/esm/packages/taco/src/components/Report/util/useTableGlobalShortcuts.js.map +1 -1
  88. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +2 -1
  89. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  90. package/dist/esm/packages/taco/src/components/Select2/Select2.js +43 -4
  91. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  92. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js +1 -1
  93. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js.map +1 -1
  94. package/dist/esm/packages/taco/src/components/Table/components/PaginatedTable.js.map +1 -1
  95. package/dist/esm/packages/taco/src/components/Table/components/Table.js.map +1 -1
  96. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
  97. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  98. package/dist/esm/packages/taco/src/components/Table/hooks/useRowCreation.js.map +1 -1
  99. package/dist/esm/packages/taco/src/components/Table/hooks/useTable.js.map +1 -1
  100. package/dist/esm/packages/taco/src/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  101. package/dist/esm/packages/taco/src/components/Table/util/renderRow.js.map +1 -1
  102. package/dist/esm/packages/taco/src/components/Table/util/sortTypes.js.map +1 -1
  103. package/dist/esm/packages/taco/src/components/Table/util.js.map +1 -1
  104. package/dist/esm/packages/taco/src/components/Table3/Table3.js +4 -6
  105. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  106. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js +1 -1
  107. package/dist/esm/packages/taco/src/components/Table3/components/columns/footer/Summary.js.map +1 -1
  108. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js +66 -14
  109. package/dist/esm/packages/taco/src/components/Table3/components/columns/internal/Selection.js.map +1 -1
  110. package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js +1 -1
  111. package/dist/esm/packages/taco/src/components/Table3/components/columns/styles.js.map +1 -1
  112. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js +1 -1
  113. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/ColumnSettings.js.map +1 -1
  114. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js +27 -44
  115. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/Filters.js.map +1 -1
  116. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js +14 -7
  117. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Filter.js.map +1 -1
  118. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js +4 -3
  119. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterColumn.js.map +1 -1
  120. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js +1 -1
  121. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/FilterComparator.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js +2 -0
  123. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintButton.js.map +1 -1
  124. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/PrintButton/PrintIFrame.js +1 -1
  125. package/dist/esm/packages/taco/src/components/Table3/hooks/features/useSettings.js +1 -1
  126. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js +3 -1
  127. package/dist/esm/packages/taco/src/components/Table3/hooks/listeners/useSettingsStateListener.js.map +1 -1
  128. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js +26 -19
  129. package/dist/esm/packages/taco/src/components/Table3/hooks/useTable.js.map +1 -1
  130. package/dist/esm/packages/taco/src/components/Table3/types.js.map +1 -1
  131. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -1
  132. package/dist/esm/packages/taco/src/index.js +1 -1
  133. package/dist/esm/packages/taco/src/primitives/Button.js +1 -0
  134. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  135. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  136. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnFreezing.js.map +1 -0
  137. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnOrdering.js.map +1 -0
  138. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFontSize.js.map +1 -0
  139. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFooter.js.map +1 -0
  140. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTablePrinting.js +36 -0
  141. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTablePrinting.js.map +1 -0
  142. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRef.js.map +1 -0
  143. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js.map +1 -0
  144. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -0
  145. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowClick.js.map +1 -0
  146. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js.map +1 -0
  147. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGoto.js.map +1 -0
  148. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGroups.js.map +1 -0
  149. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowHeight.js.map +1 -0
  150. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -0
  151. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -0
  152. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -0
  153. package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableSettings.js +1 -2
  154. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSettings.js.map +1 -0
  155. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -0
  156. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -0
  157. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -0
  158. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -0
  159. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -0
  160. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -0
  161. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -0
  162. package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableSettingsListener.js +1 -1
  163. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -0
  164. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -0
  165. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSortingListener.js.map +1 -0
  166. package/dist/esm/packages/taco/src/primitives/Table/{useTable/useTable.js → useTableManager/useTableManager.js} +10 -8
  167. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -0
  168. package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/columns.js +33 -7
  169. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -0
  170. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js.map +1 -0
  171. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -0
  172. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -0
  173. package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/settings.js +0 -1
  174. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/settings.js.map +1 -0
  175. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -0
  176. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -0
  177. package/dist/esm/packages/taco/src/utils/dom.js +12 -3
  178. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  179. package/dist/esm/packages/taco/src/utils/keyboard.js +2 -2
  180. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  181. package/dist/hooks/useLocalStorage.d.ts +2 -1
  182. package/dist/index.css +55 -46
  183. package/dist/primitives/Table/types.d.ts +5 -18
  184. package/dist/primitives/Table/useTableManager/features/useTablePrinting.d.ts +15 -0
  185. package/dist/primitives/Table/useTableManager/types.d.ts +13 -0
  186. package/dist/primitives/Table/{useTable/useTable.d.ts → useTableManager/useTableManager.d.ts} +4 -3
  187. package/dist/primitives/Table/useTableManager/util/presets.d.ts +2 -0
  188. package/dist/primitives/Table/{useTable → useTableManager}/util/settings.d.ts +0 -1
  189. package/dist/primitives/Table/{useTable → useTableManager}/util/setup.d.ts +5 -4
  190. package/dist/taco.cjs.development.js +603 -408
  191. package/dist/taco.cjs.development.js.map +1 -1
  192. package/dist/taco.cjs.production.min.js +1 -1
  193. package/dist/taco.cjs.production.min.js.map +1 -1
  194. package/dist/utils/dom.d.ts +3 -1
  195. package/package.json +2 -2
  196. package/types.json +10314 -9345
  197. package/dist/components/Report/components/Toolbar/components/Filters/components/Placeholder.d.ts +0 -12
  198. package/dist/components/Table3/components/toolbar/Filter/filters/components/Placeholder.d.ts +0 -12
  199. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js +0 -41
  200. package/dist/esm/packages/taco/src/components/Report/components/Toolbar/components/Filters/components/Placeholder.js.map +0 -1
  201. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js +0 -41
  202. package/dist/esm/packages/taco/src/components/Table3/components/toolbar/Filter/filters/components/Placeholder.js.map +0 -1
  203. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnFreezing.js.map +0 -1
  204. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableColumnOrdering.js.map +0 -1
  205. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFontSize.js.map +0 -1
  206. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableFooter.js.map +0 -1
  207. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js +0 -16
  208. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTablePrinting.js.map +0 -1
  209. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRef.js.map +0 -1
  210. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActions.js.map +0 -1
  211. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowActive.js.map +0 -1
  212. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowClick.js.map +0 -1
  213. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowExpansion.js.map +0 -1
  214. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGoto.js.map +0 -1
  215. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowGroups.js.map +0 -1
  216. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowHeight.js.map +0 -1
  217. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableRowSelection.js.map +0 -1
  218. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSearch.js.map +0 -1
  219. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableServerLoading.js.map +0 -1
  220. package/dist/esm/packages/taco/src/primitives/Table/useTable/features/useTableSettings.js.map +0 -1
  221. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableDataListener.js.map +0 -1
  222. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableFilterListener.js.map +0 -1
  223. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableFontSizeListener.js.map +0 -1
  224. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowHeightListener.js.map +0 -1
  225. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableRowSelectionListener.js.map +0 -1
  226. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSearchListener.js.map +0 -1
  227. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableServerLoadingListener.js.map +0 -1
  228. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSettingsListener.js.map +0 -1
  229. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableShortcutsListener.js.map +0 -1
  230. package/dist/esm/packages/taco/src/primitives/Table/useTable/listeners/useTableSortingListener.js.map +0 -1
  231. package/dist/esm/packages/taco/src/primitives/Table/useTable/useTable.js.map +0 -1
  232. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/columns.js.map +0 -1
  233. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/filtering.js.map +0 -1
  234. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/presets.js.map +0 -1
  235. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/search.js.map +0 -1
  236. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/settings.js.map +0 -1
  237. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/setup.js.map +0 -1
  238. package/dist/esm/packages/taco/src/primitives/Table/useTable/util/sorting.js.map +0 -1
  239. package/dist/primitives/Table/useTable/features/useTablePrinting.d.ts +0 -8
  240. package/dist/primitives/Table/useTable/util/presets.d.ts +0 -2
  241. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableColumnFreezing.js +0 -0
  242. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableColumnOrdering.js +0 -0
  243. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableFontSize.js +0 -0
  244. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableFooter.js +0 -0
  245. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRef.js +0 -0
  246. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowActions.js +0 -0
  247. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowActive.js +0 -0
  248. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowClick.js +0 -0
  249. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowExpansion.js +0 -0
  250. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowGoto.js +0 -0
  251. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowGroups.js +0 -0
  252. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowHeight.js +0 -0
  253. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableRowSelection.js +0 -0
  254. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableSearch.js +0 -0
  255. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/features/useTableServerLoading.js +0 -0
  256. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableDataListener.js +0 -0
  257. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableFilterListener.js +0 -0
  258. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableFontSizeListener.js +0 -0
  259. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableRowHeightListener.js +0 -0
  260. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableRowSelectionListener.js +0 -0
  261. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableSearchListener.js +0 -0
  262. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableServerLoadingListener.js +0 -0
  263. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableShortcutsListener.js +0 -0
  264. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/listeners/useTableSortingListener.js +0 -0
  265. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/filtering.js +0 -0
  266. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/presets.js +0 -0
  267. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/search.js +0 -0
  268. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/setup.js +0 -0
  269. /package/dist/esm/packages/taco/src/primitives/Table/{useTable → useTableManager}/util/sorting.js +0 -0
  270. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableColumnFreezing.d.ts +0 -0
  271. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableColumnOrdering.d.ts +0 -0
  272. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableFontSize.d.ts +0 -0
  273. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableFooter.d.ts +0 -0
  274. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRef.d.ts +0 -0
  275. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowActions.d.ts +0 -0
  276. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowActive.d.ts +0 -0
  277. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowClick.d.ts +0 -0
  278. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowExpansion.d.ts +0 -0
  279. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowGoto.d.ts +0 -0
  280. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowGroups.d.ts +0 -0
  281. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowHeight.d.ts +0 -0
  282. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableRowSelection.d.ts +0 -0
  283. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableSearch.d.ts +0 -0
  284. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableServerLoading.d.ts +0 -0
  285. /package/dist/primitives/Table/{useTable → useTableManager}/features/useTableSettings.d.ts +0 -0
  286. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableDataListener.d.ts +0 -0
  287. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableFilterListener.d.ts +0 -0
  288. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableFontSizeListener.d.ts +0 -0
  289. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableRowHeightListener.d.ts +0 -0
  290. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableRowSelectionListener.d.ts +0 -0
  291. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableSearchListener.d.ts +0 -0
  292. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableServerLoadingListener.d.ts +0 -0
  293. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableSettingsListener.d.ts +0 -0
  294. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableShortcutsListener.d.ts +0 -0
  295. /package/dist/primitives/Table/{useTable → useTableManager}/listeners/useTableSortingListener.d.ts +0 -0
  296. /package/dist/primitives/Table/{useTable → useTableManager}/util/columns.d.ts +0 -0
  297. /package/dist/primitives/Table/{useTable → useTableManager}/util/columns.spec.d.ts +0 -0
  298. /package/dist/primitives/Table/{useTable → useTableManager}/util/filtering.d.ts +0 -0
  299. /package/dist/primitives/Table/{useTable → useTableManager}/util/search.d.ts +0 -0
  300. /package/dist/primitives/Table/{useTable → useTableManager}/util/sorting.d.ts +0 -0
@@ -4061,8 +4061,17 @@ function isElementInsideOrTriggeredFromContainer(element, container) {
4061
4061
  }
4062
4062
  return !!(container !== null && container !== void 0 && container.contains(element));
4063
4063
  }
4064
- function isEventTriggeredOnInteractiveElement(eventTarget) {
4065
- const element = eventTarget;
4064
+ function isElementInsideOverlay(element) {
4065
+ return !!(element !== null && element !== void 0 && element.closest('[role=dialog],[role=menu]'));
4066
+ }
4067
+ function isSiblingElementInsideSameParentOverlay(element, sibling) {
4068
+ var _element$closest2;
4069
+ return !!(element !== null && element !== void 0 && (_element$closest2 = element.closest('[role=dialog],[role=menu]')) !== null && _element$closest2 !== void 0 && _element$closest2.contains(sibling));
4070
+ }
4071
+ function isElementInteractive(element) {
4072
+ if (!element) {
4073
+ return false;
4074
+ }
4066
4075
  return ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'].includes(element.tagName) && !element.hidden && !element.disabled && !element.readOnly;
4067
4076
  }
4068
4077
 
@@ -4085,7 +4094,7 @@ function shouldTriggerShortcut(event, key) {
4085
4094
  }
4086
4095
  function createShortcutKeyDownHandler(key, handler, stopPropagation = true) {
4087
4096
  return function (event) {
4088
- if (event.target !== event.currentTarget && isEventTriggeredOnInteractiveElement(event.target) && !isPressingMetaKey(event)) {
4097
+ if (event.target !== event.currentTarget && isElementInteractive(event.target) && !isPressingMetaKey(event)) {
4089
4098
  return;
4090
4099
  }
4091
4100
  const condition = shouldTriggerShortcut(event, key);
@@ -4142,6 +4151,7 @@ const Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {
4142
4151
  });
4143
4152
  const Tag = props.href ? 'a' : 'button';
4144
4153
  return /*#__PURE__*/React.createElement(Tag, Object.assign({}, otherProps, {
4154
+ href: disabled ? undefined : props.href,
4145
4155
  "aria-disabled": disabled ? 'true' : undefined,
4146
4156
  disabled: disabled,
4147
4157
  target: Tag === 'a' ? target : undefined,
@@ -4184,29 +4194,29 @@ const Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(props, ref) {
4184
4194
  });
4185
4195
 
4186
4196
  const getButtonClasses = () => {
4187
- return 'flex-shrink-0 min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max leading-5 inline-flex items-center justify-center focus-visible:yt-focus disabled:cursor-not-allowed';
4197
+ return 'flex-shrink-0 min-h-[theme(spacing.8)] min-w-[theme(spacing.8)] gap-1 h-max leading-5 inline-flex items-center justify-center focus-visible:yt-focus aria-disabled:cursor-not-allowed';
4188
4198
  };
4189
4199
  const getAppearanceClasses = (value, icon = false) => {
4190
4200
  switch (value) {
4191
4201
  case 'primary':
4192
- return `wcag-blue-500 enabled:hover:wcag-blue-700 enabled:hover:active:wcag-blue-500 disabled:bg-blue-500/50`;
4202
+ return `wcag-blue-500 visited:wcag-blue-500 hover:wcag-blue-700 hover:active:wcag-blue-500 aria-disabled:bg-blue-500/50 aria-disabled:active:bg-blue-500/50`;
4193
4203
  case 'danger':
4194
- return `wcag-red-500 enabled:hover:wcag-red-700 enabled:hover:active:wcag-red-500 disabled:bg-red-500/50`;
4204
+ return `wcag-red-500 visited:wcag-red-500 hover:wcag-red-700 hover:active:wcag-red-500 aria-disabled:bg-red-500/50 aria-disabled:active:bg-red-500/50`;
4195
4205
  case 'ghost':
4196
- return `bg-white border border-blue-500 text-blue-500 enabled:hover:bg-blue-100 enabled:hover:text-blue-700 disabled:border-blue-500/50 disabled:text-blue-500/50`;
4206
+ return `bg-white border border-blue-500 text-blue-500 visited:text-blue-500 hover:bg-blue-100 hover:text-blue-700 aria-disabled:border-blue-500/50 aria-disabled:text-blue-500/50 aria-disabled:bg-white`;
4197
4207
  case 'discrete':
4198
4208
  {
4199
4209
  if (icon) {
4200
- return `bg-transparent text-black enabled:hover:bg-[#000]/[0.08] disabled:text-black/30`;
4210
+ return `bg-transparent text-black visited:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30`;
4201
4211
  }
4202
- return `bg-transparent text-blue-500 enabled:hover:text-blue-700 disabled:text-blue-500/50`;
4212
+ return `bg-transparent text-blue-500 visited:text-blue-500 hover:text-blue-700 aria-disabled:text-blue-500/50`;
4203
4213
  }
4204
4214
  case 'transparent':
4205
4215
  {
4206
- return `bg-transparent text-black enabled:hover:text-black enabled:hover:bg-[#000]/[0.08] disabled:text-black/30`;
4216
+ return `bg-transparent text-black visited:text-black hover:text-black hover:bg-[#000]/[0.08] aria-disabled:text-black/30 aria-disabled:bg-transparent`;
4207
4217
  }
4208
4218
  default:
4209
- return `wcag-grey-200 enabled:hover:wcag-grey-300 disabled:bg-grey-200/50 disabled:text-black/30`;
4219
+ return `wcag-grey-200 visited:wcag-grey-200 hover:wcag-grey-300 aria-disabled:bg-grey-200/50 aria-disabled:text-black/30`;
4210
4220
  }
4211
4221
  };
4212
4222
  const createButtonWithTooltip = (props, className, ref) => {
@@ -4383,6 +4393,8 @@ const defaultLocalisationTexts = {
4383
4393
  expandAll: 'Expand all rows'
4384
4394
  },
4385
4395
  menu: {
4396
+ editFilter: 'Edit filter',
4397
+ filter: 'Filter',
4386
4398
  freezeFirstColumn: 'Freeze the first column',
4387
4399
  freezeUptoColumn: `Freeze first [TOTAL] columns`,
4388
4400
  freezeColumns: (count = 1) => count === 1 ? 'Freeze the first column' : `Freeze first ${count} columns`,
@@ -4592,7 +4604,11 @@ const defaultLocalisationTexts = {
4592
4604
  delete: 'Delete',
4593
4605
  save: 'Save',
4594
4606
  search: 'Search...',
4595
- searchOrCreate: 'Search or create...'
4607
+ searchOrCreate: 'Search or create...',
4608
+ selectAll: 'Select all',
4609
+ selectAllResults: 'Select all results',
4610
+ deselectAll: 'Deselect all',
4611
+ deselectAllResults: 'Deselect all results'
4596
4612
  },
4597
4613
  toasts: {
4598
4614
  dismiss: 'Dismiss'
@@ -4872,6 +4888,7 @@ const Content$2 = /*#__PURE__*/React.forwardRef(function CardContent(externalPro
4872
4888
  }, props.className);
4873
4889
  return /*#__PURE__*/React.createElement("div", Object.assign({}, props, {
4874
4890
  className: className,
4891
+ "data-taco": "card-content",
4875
4892
  ref: ref
4876
4893
  }));
4877
4894
  });
@@ -4881,7 +4898,7 @@ const Card = /*#__PURE__*/React.forwardRef(function Card(props, ref) {
4881
4898
  menu,
4882
4899
  children
4883
4900
  } = props;
4884
- const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500 [&_[data-taco="table2"]]:!border-0', props.className);
4901
+ const className = cn('bg-white flex flex-col rounded-xl border border-solid border-radius-[12px] border-grey-300 hover:border-grey-500', props.className);
4885
4902
  return /*#__PURE__*/React.createElement("div", {
4886
4903
  className: className,
4887
4904
  "data-taco": "card",
@@ -4906,12 +4923,52 @@ const useId = nativeId => {
4906
4923
  return React__default.useMemo(() => nativeId !== null && nativeId !== void 0 ? nativeId : uuid.v4(), []);
4907
4924
  };
4908
4925
 
4926
+ const Spinner = /*#__PURE__*/React__default.forwardRef(function Spinner(props, ref) {
4927
+ const {
4928
+ delay = 350,
4929
+ label,
4930
+ ...otherProps
4931
+ } = props;
4932
+ const [visible, setVisibility] = React__default.useState(!delay);
4933
+ React__default.useEffect(() => {
4934
+ let timeout;
4935
+ if (delay) {
4936
+ timeout = window.setTimeout(() => setVisibility(true), delay);
4937
+ }
4938
+ return () => {
4939
+ if (timeout) {
4940
+ clearTimeout(timeout);
4941
+ }
4942
+ };
4943
+ }, [delay]);
4944
+ if (!visible) {
4945
+ return null;
4946
+ }
4947
+ const className = cn('inline-flex flex-col relative items-center', otherProps.className);
4948
+ return /*#__PURE__*/React__default.createElement("div", Object.assign({}, otherProps, {
4949
+ className: className,
4950
+ "data-taco": "spinner",
4951
+ ref: ref
4952
+ }), /*#__PURE__*/React__default.createElement("svg", {
4953
+ className: "h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]",
4954
+ viewBox: "0 0 100 100",
4955
+ xmlns: "http://www.w3.org/2000/svg"
4956
+ }, /*#__PURE__*/React__default.createElement("circle", {
4957
+ cx: "50",
4958
+ cy: "50",
4959
+ r: "45"
4960
+ })), label && /*#__PURE__*/React__default.createElement("span", {
4961
+ className: "mt-4"
4962
+ }, label));
4963
+ });
4964
+
4909
4965
  const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4910
4966
  const {
4911
4967
  checked,
4912
4968
  indeterminate,
4913
4969
  invalid,
4914
4970
  label,
4971
+ loading,
4915
4972
  onChange,
4916
4973
  ...otherProps
4917
4974
  } = props;
@@ -4942,6 +4999,11 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4942
4999
  event.currentTarget.click();
4943
5000
  }
4944
5001
  };
5002
+ const spinnerClassname = cn(
5003
+ //Spinner is slightly bigger then 'line' and 'tick' icons, so making it 2px smaller from each side
5004
+ "m-0.5 !h-[calc(100%-theme('spacing.1'))] !w-[calc(100%-theme('spacing.1'))]", {
5005
+ 'text-blue-500': !checked && !indeterminate
5006
+ });
4945
5007
  const element = /*#__PURE__*/React.createElement(CheckboxPrimitive.Root, Object.assign({}, otherProps, labelledByProps, {
4946
5008
  "aria-invalid": invalid ? 'true' : undefined,
4947
5009
  "data-taco": "checkbox",
@@ -4950,12 +5012,14 @@ const Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(props, ref) {
4950
5012
  onCheckedChange: handleChange,
4951
5013
  onKeyDown: handleKeyDown,
4952
5014
  ref: ref
4953
- }), /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
5015
+ }), loading ? ( /*#__PURE__*/React.createElement(Spinner, {
5016
+ className: spinnerClassname
5017
+ })) : ( /*#__PURE__*/React.createElement(CheckboxPrimitive.Indicator, {
4954
5018
  className: "flex h-full w-full"
4955
5019
  }, /*#__PURE__*/React.createElement(Icon, {
4956
5020
  name: indeterminate ? 'line' : 'tick',
4957
5021
  className: "!h-full !w-full"
4958
- })));
5022
+ }))));
4959
5023
  if (label) {
4960
5024
  const labelContainerClassName = cn('flex items-center cursor-pointer gap-2', {
4961
5025
  'cursor-not-allowed text-grey-300': props.disabled
@@ -5254,45 +5318,6 @@ const useListScrollTo = (internalRef, itemRefs) => {
5254
5318
  };
5255
5319
  };
5256
5320
 
5257
- const Spinner = /*#__PURE__*/React__default.forwardRef(function Spinner(props, ref) {
5258
- const {
5259
- delay = 350,
5260
- label,
5261
- ...otherProps
5262
- } = props;
5263
- const [visible, setVisibility] = React__default.useState(!delay);
5264
- React__default.useEffect(() => {
5265
- let timeout;
5266
- if (delay) {
5267
- timeout = window.setTimeout(() => setVisibility(true), delay);
5268
- }
5269
- return () => {
5270
- if (timeout) {
5271
- clearTimeout(timeout);
5272
- }
5273
- };
5274
- }, [delay]);
5275
- if (!visible) {
5276
- return null;
5277
- }
5278
- const className = cn('inline-flex flex-col relative items-center', otherProps.className);
5279
- return /*#__PURE__*/React__default.createElement("div", Object.assign({}, otherProps, {
5280
- className: className,
5281
- "data-taco": "spinner",
5282
- ref: ref
5283
- }), /*#__PURE__*/React__default.createElement("svg", {
5284
- className: "h-10 w-10 animate-[spinnerRotation_2s_linear_infinite]",
5285
- viewBox: "0 0 100 100",
5286
- xmlns: "http://www.w3.org/2000/svg"
5287
- }, /*#__PURE__*/React__default.createElement("circle", {
5288
- cx: "50",
5289
- cy: "50",
5290
- r: "45"
5291
- })), label && /*#__PURE__*/React__default.createElement("span", {
5292
- className: "mt-4"
5293
- }, label));
5294
- });
5295
-
5296
5321
  const getId = (id, value) => `${id}_${value}`;
5297
5322
  const getNextEnabledItem = (event, data, index) => {
5298
5323
  const nextIndex = getNextIndexFromKey(event.key, data.length, index);
@@ -7873,6 +7898,15 @@ const Link = /*#__PURE__*/React.forwardRef(function MenuLink(props, ref) {
7873
7898
  const Trigger$6 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref) {
7874
7899
  const menu = useCurrentMenu();
7875
7900
  const internalRef = useMergedRef(ref);
7901
+ const preventArrowDownShortcut = event => {
7902
+ var _internalRef$current, _internalRef$current2;
7903
+ const isRenderedInTable = !!((_internalRef$current = internalRef.current) !== null && _internalRef$current !== void 0 && _internalRef$current.closest('[data-taco="table2-body"]'));
7904
+ const isRenderedInReport = !!((_internalRef$current2 = internalRef.current) !== null && _internalRef$current2 !== void 0 && _internalRef$current2.closest('[data-taco="report-body"]'));
7905
+ if ((isRenderedInTable || isRenderedInReport) && event.key === 'ArrowDown') {
7906
+ var _internalRef$current3, _internalRef$current4;
7907
+ internalRef === null || internalRef === void 0 ? void 0 : (_internalRef$current3 = internalRef.current) === null || _internalRef$current3 === void 0 ? void 0 : (_internalRef$current4 = _internalRef$current3.parentNode) === null || _internalRef$current4 === void 0 ? void 0 : _internalRef$current4.dispatchEvent(createCustomKeyboardEvent(event));
7908
+ }
7909
+ };
7876
7910
  React.useEffect(() => {
7877
7911
  if (internalRef.current) {
7878
7912
  menu === null || menu === void 0 ? void 0 : menu.setMinWidth(internalRef.current.getBoundingClientRect().width);
@@ -7880,7 +7914,8 @@ const Trigger$6 = /*#__PURE__*/React.forwardRef(function MenuTrigger(props, ref)
7880
7914
  }, [internalRef]);
7881
7915
  return /*#__PURE__*/React.createElement(DropdownMenuPrimitive.Trigger, Object.assign({}, props, {
7882
7916
  asChild: true,
7883
- ref: internalRef
7917
+ ref: internalRef,
7918
+ onKeyDown: preventArrowDownShortcut
7884
7919
  }));
7885
7920
  });
7886
7921
 
@@ -9277,13 +9312,32 @@ function getCellValueAsString(value, dataType) {
9277
9312
  }
9278
9313
  return String(value);
9279
9314
  }
9315
+ function orderColumn(column, {
9316
+ orderingDisabled,
9317
+ orderingEnabled
9318
+ }) {
9319
+ const groupedColumn = column;
9320
+ if (Array.isArray(groupedColumn.columns) && groupedColumn.columns.length > 0) {
9321
+ groupedColumn.columns.forEach(subcolumn => orderColumn(subcolumn, {
9322
+ orderingDisabled,
9323
+ orderingEnabled
9324
+ }));
9325
+ } else {
9326
+ var _column$meta;
9327
+ if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
9328
+ orderingEnabled.push(column.id);
9329
+ } else {
9330
+ orderingDisabled.push(column.id);
9331
+ }
9332
+ }
9333
+ }
9280
9334
  // ordering
9281
9335
  function ensureOrdering(columns, settingsOrder, internalColumnsPinnedToTheRight = ['__actions']) {
9282
9336
  // internal columns come with a defined order
9283
9337
  const internalColumns = columns.filter(column => isInternalColumn(column.id) && !internalColumnsPinnedToTheRight.includes(String(column.id))).map(column => column.id);
9284
9338
  // columns with ordering disabled should be moved to the front
9285
9339
  const orderingDisabled = [];
9286
- const orderingEnabled = [];
9340
+ let orderingEnabled = [];
9287
9341
  let orderedColumns = columns;
9288
9342
  // if settings is defined, make sure the columns that are actual children are sorted by it
9289
9343
  if (Array.isArray(settingsOrder)) {
@@ -9292,16 +9346,23 @@ function ensureOrdering(columns, settingsOrder, internalColumnsPinnedToTheRight
9292
9346
  (a, b) => (settingsOrder.indexOf(a.id) >>> 0) - (settingsOrder.indexOf(b.id) >>> 0));
9293
9347
  }
9294
9348
  orderedColumns.forEach(column => {
9295
- var _column$meta;
9296
9349
  if (isInternalColumn(column.id)) {
9297
9350
  return;
9298
9351
  }
9299
- if ((_column$meta = column.meta) !== null && _column$meta !== void 0 && _column$meta.enableOrdering) {
9300
- orderingEnabled.push(column.id);
9301
- } else {
9302
- orderingDisabled.push(column.id);
9303
- }
9352
+ orderColumn(column, {
9353
+ orderingDisabled,
9354
+ orderingEnabled
9355
+ });
9304
9356
  });
9357
+ if (settingsOrder && settingsOrder.length > 0) {
9358
+ orderingEnabled = orderingEnabled.reduce((acc, column) => {
9359
+ const index = settingsOrder.indexOf(column);
9360
+ if (index > -1) {
9361
+ acc[index] = column;
9362
+ }
9363
+ return acc;
9364
+ }, []).filter(column => !!column);
9365
+ }
9305
9366
  const order = [...internalColumns, ...orderingDisabled, ...orderingEnabled];
9306
9367
  // actions should always be last, enforce that
9307
9368
  internalColumnsPinnedToTheRight.forEach(id => {
@@ -9896,17 +9957,79 @@ function useTableFontSize(isEnabled = false, defaultFontSize = 'medium') {
9896
9957
  };
9897
9958
  }
9898
9959
 
9899
- function useTablePrinting(isEnabled = false, defaultIsWarningVisible = true) {
9960
+ function useTacoSettings() {
9961
+ return React__default.useContext(TacoContext);
9962
+ }
9963
+
9964
+ const useLocalStorage = (key, initialValue) => {
9965
+ const [state, setState] = React__default.useState(() => {
9966
+ if (!key) {
9967
+ return initialValue;
9968
+ }
9969
+ try {
9970
+ const localStorageValue = localStorage.getItem(key);
9971
+ if (typeof localStorageValue !== 'string') {
9972
+ localStorage.setItem(key, JSON.stringify(initialValue));
9973
+ return initialValue;
9974
+ } else {
9975
+ return JSON.parse(localStorageValue || 'null');
9976
+ }
9977
+ } catch {
9978
+ // If user is in private mode or has storage restriction
9979
+ // localStorage can throw. JSON.parse and JSON.stringify
9980
+ // can throw, too.
9981
+ return initialValue;
9982
+ }
9983
+ });
9984
+ React__default.useEffect(() => {
9985
+ if (!key) {
9986
+ return;
9987
+ }
9988
+ try {
9989
+ const serializedState = JSON.stringify(state);
9990
+ localStorage.setItem(key, serializedState);
9991
+ } catch {
9992
+ // If user is in private mode or has storage restriction
9993
+ // localStorage can throw. Also JSON.stringify can throw.
9994
+ }
9995
+ }, [key, state]);
9996
+ const clear = () => {
9997
+ if (key) {
9998
+ localStorage.removeItem(key);
9999
+ }
10000
+ };
10001
+ return [state, setState, clear];
10002
+ };
10003
+
10004
+ function useTablePrinting(isEnabled = false, tableId) {
9900
10005
  const [isPrinting, setIsPrinting] = React__default.useState(false);
9901
- const [isWarningVisibleForLargeDatasets, setIsWarningVisibleForLargeDatasets] = React__default.useState(defaultIsWarningVisible);
10006
+ const [settings, setSetting] = useTablePrintingSettings(tableId);
9902
10007
  return {
9903
10008
  isEnabled,
9904
10009
  isPrinting,
9905
10010
  setIsPrinting,
9906
- isWarningVisibleForLargeDatasets,
9907
- setIsWarningVisibleForLargeDatasets: isEnabled ? setIsWarningVisibleForLargeDatasets : () => undefined
10011
+ settings,
10012
+ setSetting
9908
10013
  };
9909
10014
  }
10015
+ const DEFAULT_PRINT_SETTINGS = {
10016
+ size: 'A4',
10017
+ orientation: 'portrait',
10018
+ allRows: true,
10019
+ splitGroups: true
10020
+ };
10021
+ function useTablePrintingSettings(tableId) {
10022
+ const tacoSettings = useTacoSettings();
10023
+ const uniqueId = `taco.${tacoSettings.uniqueUserIdentifier}.table.${tableId}.print.settings`;
10024
+ const [persistedSettings, setPersistedSettings] = useLocalStorage(uniqueId, DEFAULT_PRINT_SETTINGS);
10025
+ function setSetting(key, value) {
10026
+ setPersistedSettings(currentSettings => ({
10027
+ ...currentSettings,
10028
+ [key]: value
10029
+ }));
10030
+ }
10031
+ return [persistedSettings, setSetting];
10032
+ }
9910
10033
 
9911
10034
  const DEFAULT_ROW_ACTIONS_LENGTH = 4;
9912
10035
  function useTableRowActions(isEnabled = false, rowActions, rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH) {
@@ -10336,50 +10459,6 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
10336
10459
  };
10337
10460
  }
10338
10461
 
10339
- const useLocalStorage = (key, initialValue) => {
10340
- const [state, setState] = React__default.useState(() => {
10341
- if (!key) {
10342
- return initialValue;
10343
- }
10344
- try {
10345
- const localStorageValue = localStorage.getItem(key);
10346
- if (typeof localStorageValue !== 'string') {
10347
- localStorage.setItem(key, JSON.stringify(initialValue));
10348
- return initialValue;
10349
- } else {
10350
- return JSON.parse(localStorageValue || 'null');
10351
- }
10352
- } catch {
10353
- // If user is in private mode or has storage restriction
10354
- // localStorage can throw. JSON.parse and JSON.stringify
10355
- // can throw, too.
10356
- return initialValue;
10357
- }
10358
- });
10359
- React__default.useEffect(() => {
10360
- if (!key) {
10361
- return;
10362
- }
10363
- try {
10364
- const serializedState = JSON.stringify(state);
10365
- localStorage.setItem(key, serializedState);
10366
- } catch {
10367
- // If user is in private mode or has storage restriction
10368
- // localStorage can throw. Also JSON.stringify can throw.
10369
- }
10370
- }, [key, state]);
10371
- const clear = () => {
10372
- if (key) {
10373
- localStorage.removeItem(key);
10374
- }
10375
- };
10376
- return [state, setState, clear];
10377
- };
10378
-
10379
- function useTacoSettings() {
10380
- return React__default.useContext(TacoContext);
10381
- }
10382
-
10383
10462
  const DEFAULT_ENABLED_OPTIONS = {
10384
10463
  columnOrder: true,
10385
10464
  columnPinning: true,
@@ -10389,7 +10468,6 @@ const DEFAULT_ENABLED_OPTIONS = {
10389
10468
  fontSize: true,
10390
10469
  grouping: true,
10391
10470
  rowHeight: true,
10392
- showWarningWhenPrintingLargeDataset: true,
10393
10471
  sorting: true
10394
10472
  };
10395
10473
  function useUniqueTableId(tableId) {
@@ -10618,7 +10696,6 @@ function getSettings(table) {
10618
10696
  fontSize: meta.fontSize.isEnabled ? meta.fontSize.size : undefined,
10619
10697
  grouping: table.options.enableGrouping ? state.grouping : undefined,
10620
10698
  rowHeight: meta.rowHeight.isEnabled ? meta.rowHeight.height : undefined,
10621
- showWarningWhenPrintingLargeDataset: meta.printing.isWarningVisibleForLargeDatasets,
10622
10699
  //searchQuery: table.options.enableGlobalFilter ? state.globalFilter : undefined,
10623
10700
  sorting: state.sorting
10624
10701
  };
@@ -10640,7 +10717,7 @@ function useTableSettingsListener(table, onChangeSettings) {
10640
10717
  //state.columnFilters,
10641
10718
  state.columnOrder, state.columnPinning, state.columnSizing, state.columnVisibility,
10642
10719
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
10643
- meta.search.excludeUnmatchedResults, meta.fontSize.size, state.grouping, meta.rowHeight.height, meta.printing.isWarningVisibleForLargeDatasets,
10720
+ meta.search.excludeUnmatchedResults, meta.fontSize.size, state.grouping, meta.rowHeight.height,
10644
10721
  //state.globalFilter,
10645
10722
  state.sorting]);
10646
10723
  }
@@ -10729,8 +10806,8 @@ function useTableRef(table, ref) {
10729
10806
  }, [table, ref.current]);
10730
10807
  }
10731
10808
 
10732
- function useTable(props, ref, meta, internalColumns) {
10733
- var _props$length, _instance$options$met;
10809
+ function useTableManager(props, ref, meta, internalColumns) {
10810
+ var _props$data, _props$length, _instance$options$met;
10734
10811
  // CSS.escape would be best here, but it doesn't seem to work very well
10735
10812
  const safeId = props.id.replace('.', '_');
10736
10813
  // configure table options, merging props with presets
@@ -10742,7 +10819,7 @@ function useTable(props, ref, meta, internalColumns) {
10742
10819
  const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);
10743
10820
  const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);
10744
10821
  const footer = useTableFooter(options.enableFooter);
10745
- const printing = useTablePrinting(options.enablePrinting, settings.showWarningWhenPrintingLargeDataset);
10822
+ const printing = useTablePrinting(options.enablePrinting, safeId);
10746
10823
  const rowActive = useTableRowActive(options.enableRowActive, props.defaultRowActiveIndex);
10747
10824
  const rowActions = useTableRowActions(options.enableRowActions, props.rowActions, props.rowActionsLength);
10748
10825
  const rowClick = useTableRowClick(options.enableRowClick, props.onRowClick);
@@ -10761,10 +10838,13 @@ function useTable(props, ref, meta, internalColumns) {
10761
10838
  } = mapTableChildrenToColumns(props, settings, options, internalColumns);
10762
10839
  // configure initial table state
10763
10840
  const initialState = useReactTableInitialState(props, columns, settings, defaultState);
10841
+ // ensure data is always valid
10842
+ const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
10843
+ const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
10764
10844
  // create a react-table instance
10765
10845
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
10766
10846
  const instance = reactTable.useReactTable({
10767
- data: props.data,
10847
+ data,
10768
10848
  columns,
10769
10849
  // configure initial table state
10770
10850
  initialState,
@@ -10780,7 +10860,7 @@ function useTable(props, ref, meta, internalColumns) {
10780
10860
  columnOrdering,
10781
10861
  fontSize,
10782
10862
  footer,
10783
- //getSettings
10863
+ length,
10784
10864
  printing,
10785
10865
  rowActions,
10786
10866
  rowActive,
@@ -10810,7 +10890,6 @@ function useTable(props, ref, meta, internalColumns) {
10810
10890
  return {
10811
10891
  id: safeId,
10812
10892
  instance,
10813
- length: (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : props.data.length,
10814
10893
  meta: (_instance$options$met = instance.options.meta) !== null && _instance$options$met !== void 0 ? _instance$options$met : {},
10815
10894
  state: instance.getState()
10816
10895
  };
@@ -10990,6 +11069,7 @@ function Header$3(context) {
10990
11069
  key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
10991
11070
  checked: isAllRowsSelected,
10992
11071
  indeterminate: isSomeRowsSelected,
11072
+ loading: tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading,
10993
11073
  onChange: handleChange
10994
11074
  }));
10995
11075
  }
@@ -11009,6 +11089,9 @@ function Cell$2(context) {
11009
11089
  row,
11010
11090
  table
11011
11091
  } = context;
11092
+ const {
11093
+ rowIndex
11094
+ } = React__default.useContext(RowContext);
11012
11095
  const tableMeta = table.options.meta;
11013
11096
  if (table.options.enableGrouping && (_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length && !row.getIsGrouped()) {
11014
11097
  return null;
@@ -11016,18 +11099,48 @@ function Cell$2(context) {
11016
11099
  const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();
11017
11100
  const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;
11018
11101
  if (table.options.enableMultiRowSelection) {
11019
- const handleClick = event => {
11020
- event.stopPropagation();
11021
- if (row.getIsGrouped()) {
11022
- row.subRows.forEach(row => row.toggleSelected());
11023
- } else if (event.shiftKey) {
11024
- var _tableMeta$rowSelecti;
11025
- const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, row.index);
11026
- table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
11027
- } else {
11028
- row.toggleSelected();
11102
+ const handleClick = function (event) {
11103
+ try {
11104
+ function _temp7() {
11105
+ tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
11106
+ }
11107
+ event.stopPropagation();
11108
+ const _temp6 = function () {
11109
+ if (row.getIsGrouped()) {
11110
+ row.subRows.forEach(row => row.toggleSelected());
11111
+ } else {
11112
+ const _temp5 = function () {
11113
+ if (event.shiftKey) {
11114
+ var _tableMeta$rowSelecti;
11115
+ function _temp4() {
11116
+ table.setRowSelection(currentRowSelection => ({
11117
+ ...currentRowSelection,
11118
+ ...selectedRows.reduce((state, row) => ({
11119
+ ...state,
11120
+ [row.id]: true
11121
+ }), {})
11122
+ }));
11123
+ }
11124
+ const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
11125
+ const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
11126
+ const _temp3 = function () {
11127
+ if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
11128
+ // don't pass the search query because we need all data - not filtered data
11129
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, undefined)).then(function () {});
11130
+ }
11131
+ }();
11132
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
11133
+ } else {
11134
+ row.toggleSelected();
11135
+ }
11136
+ }();
11137
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
11138
+ }
11139
+ }();
11140
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
11141
+ } catch (e) {
11142
+ return Promise.reject(e);
11029
11143
  }
11030
- tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;
11031
11144
  };
11032
11145
  return /*#__PURE__*/React__default.createElement(Tooltip, {
11033
11146
  title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
@@ -11070,7 +11183,7 @@ function useTableRowActiveListener(table, tableRef) {
11070
11183
  const activeRow = (_tableRef$current$que = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector('tbody tr[data-row-active="true"]')) !== null && _tableRef$current$que !== void 0 ? _tableRef$current$que : null;
11071
11184
  // if the focused element, or it's parent if it's portalled, aren't in the row, then focus the row
11072
11185
  // this ensures the next tab press starts at the row
11073
- if (!isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isEventTriggeredOnInteractiveElement(document.activeElement)) {
11186
+ if (!isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isElementInteractive(document.activeElement)) {
11074
11187
  var _activeRow$focus;
11075
11188
  activeRow === null || activeRow === void 0 ? void 0 : (_activeRow$focus = activeRow.focus) === null || _activeRow$focus === void 0 ? void 0 : _activeRow$focus.call(activeRow, {
11076
11189
  preventScroll: true
@@ -11082,7 +11195,6 @@ function useTableRowActiveListener(table, tableRef) {
11082
11195
 
11083
11196
  function useReport(props, ref) {
11084
11197
  const meta = {};
11085
- // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
11086
11198
  const INTERNAL_COLUMNS = React__default.useMemo(() => ({
11087
11199
  rowActions: {
11088
11200
  header: Header$1,
@@ -11115,7 +11227,8 @@ function useReport(props, ref) {
11115
11227
  }
11116
11228
  }
11117
11229
  }), []);
11118
- const report = useTable(props, ref, meta, INTERNAL_COLUMNS);
11230
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
11231
+ const report = useTableManager(props, ref, meta, INTERNAL_COLUMNS);
11119
11232
  // listeners
11120
11233
  useTableRowActiveListener(report.instance, ref);
11121
11234
  return report;
@@ -11292,12 +11405,15 @@ function GotoPopover(props) {
11292
11405
 
11293
11406
  function HeaderMenu(props) {
11294
11407
  const {
11408
+ canFilter,
11295
11409
  canGoto,
11296
11410
  canHide,
11297
11411
  canPin,
11298
11412
  canSort,
11299
11413
  customMenu,
11300
11414
  index,
11415
+ isFiltered,
11416
+ onFilter: handleFilter,
11301
11417
  onGoto: handleGoto,
11302
11418
  onHide: handleHide,
11303
11419
  onPin: handlePin,
@@ -11391,6 +11507,12 @@ function HeaderMenu(props) {
11391
11507
  onClick: () => handlePin(undefined)
11392
11508
  }, texts.table3.columns.menu.unfreezeColumns));
11393
11509
  }
11510
+ if (canFilter && handleFilter) {
11511
+ menuItems.push( /*#__PURE__*/React__default.createElement(Menu$1.Item, {
11512
+ icon: isFiltered ? 'filter-solid' : 'filter',
11513
+ onClick: () => handleFilter()
11514
+ }, isFiltered ? texts.table3.columns.menu.editFilter : texts.table3.columns.menu.filter));
11515
+ }
11394
11516
  if (customMenu) {
11395
11517
  const menu = customMenu({
11396
11518
  trigger: undefined
@@ -11406,7 +11528,7 @@ function HeaderMenu(props) {
11406
11528
  return menuItems.map((item, key) => /*#__PURE__*/React__default.cloneElement(item, {
11407
11529
  key
11408
11530
  }));
11409
- }, [canGoto, canHide, canPin, canSort, customMenu, handleGoto, handleSortToggle, index, sortDirection]);
11531
+ }, [canFilter, canGoto, canHide, canPin, canSort, customMenu, handleGoto, handleSortToggle, index, isFiltered, sortDirection]);
11410
11532
  // can't use display: none because the button needs to be focusable
11411
11533
  const className = cn(
11412
11534
  // positioning
@@ -11461,6 +11583,7 @@ function Header$4(header) {
11461
11583
  const columnMeta = (_header$column$column = header.column.columnDef.meta) !== null && _header$column$column !== void 0 ? _header$column$column : {};
11462
11584
  const isGroup = !!header.subHeaders.length;
11463
11585
  const isPinned = getIsPinned(header);
11586
+ const canFilter = !header.isPlaceholder && header.column.getCanFilter() && !!table.options.enableColumnFilters;
11464
11587
  const canHide = !header.isPlaceholder && !isGroup && header.column.getCanHide();
11465
11588
  const canMeasureSize = !!table.getRowModel().rows.length;
11466
11589
  const canPin = !header.isPlaceholder && !isGroup && header.column.getCanPin();
@@ -11474,6 +11597,7 @@ function Header$4(header) {
11474
11597
  // passing header or column results in re-renders on scroll, so anything from those objects as memoed props
11475
11598
  const memoedProps = {
11476
11599
  align: columnMeta.align,
11600
+ canFilter,
11477
11601
  canHide,
11478
11602
  canGoto,
11479
11603
  canMeasureSize,
@@ -11487,6 +11611,7 @@ function Header$4(header) {
11487
11611
  defaultWidth: columnMeta.defaultWidth,
11488
11612
  hasMenu,
11489
11613
  id: header.id,
11614
+ isFiltered: header.column.getIsFiltered(),
11490
11615
  index: header.index,
11491
11616
  isGroup,
11492
11617
  isPinned,
@@ -11503,6 +11628,13 @@ function Header$4(header) {
11503
11628
  'after:!content-none': nextHeader === null || nextHeader === void 0 ? void 0 : nextHeader.isPlaceholder
11504
11629
  });
11505
11630
  }
11631
+ if (canFilter) {
11632
+ memoedProps.onFilter = () => {
11633
+ header.column.setFilterValue({
11634
+ comparator: TableFilterComparator.Contains
11635
+ });
11636
+ };
11637
+ }
11506
11638
  if (canGoto) {
11507
11639
  memoedProps.onGoto = query => {
11508
11640
  var _tableMeta$rowGoto$ha, _tableMeta$rowGoto;
@@ -11546,6 +11678,7 @@ function Header$4(header) {
11546
11678
  const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(props) {
11547
11679
  const {
11548
11680
  align,
11681
+ canFilter,
11549
11682
  canGoto,
11550
11683
  canHide,
11551
11684
  canMeasureSize,
@@ -11560,11 +11693,13 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
11560
11693
  hasMenu,
11561
11694
  id,
11562
11695
  index,
11696
+ isFiltered,
11563
11697
  isGroup,
11564
11698
  isPinned,
11565
11699
  isPlaceholder,
11566
11700
  isResizing,
11567
11701
  offset,
11702
+ onFilter: handleFilter,
11568
11703
  onGoto: handleGoto,
11569
11704
  onHide: handleHide,
11570
11705
  onPin: handlePin,
@@ -11605,6 +11740,7 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
11605
11740
  }, children))), sortDirection ? /*#__PURE__*/React__default.createElement(SortIndicator, {
11606
11741
  direction: sortDirection
11607
11742
  }) : null, hasMenu ? ( /*#__PURE__*/React__default.createElement(HeaderMenu, {
11743
+ canFilter: canFilter,
11608
11744
  canGoto: canGoto,
11609
11745
  canHide: canHide,
11610
11746
  canPin: canPin,
@@ -11615,6 +11751,8 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
11615
11751
  }),
11616
11752
  customMenu: customMenu,
11617
11753
  index: index,
11754
+ isFiltered: isFiltered,
11755
+ onFilter: handleFilter,
11618
11756
  onGoto: handleGoto,
11619
11757
  onHide: handleHide,
11620
11758
  onPin: handlePin,
@@ -11652,7 +11790,6 @@ function useAugmentedFocusManager() {
11652
11790
  function Body(props) {
11653
11791
  const {
11654
11792
  enableArrowKeyFocusing = false,
11655
- length,
11656
11793
  table,
11657
11794
  ...attributes
11658
11795
  } = props;
@@ -11667,7 +11804,7 @@ function Body(props) {
11667
11804
  }
11668
11805
  if (tableMeta.rowActive.rowActiveIndex !== undefined) {
11669
11806
  const isFirstRow = tableMeta.rowActive.rowActiveIndex === 0;
11670
- const isLastRow = tableMeta.rowActive.rowActiveIndex === length - 1;
11807
+ const isLastRow = tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1;
11671
11808
  if (event.key === 'Tab' || enableArrowKeyFocusing && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
11672
11809
  tableMeta.rowActive.setHoverStatePaused(true);
11673
11810
  const focusedElement = event.shiftKey || event.key === 'ArrowLeft' ? focusManager.focusPrevious() : focusManager.focusNext();
@@ -11699,56 +11836,29 @@ function Body(props) {
11699
11836
  }
11700
11837
  }
11701
11838
  };
11702
- return /*#__PURE__*/React__default.createElement("tbody", Object.assign({}, attributes, {
11839
+ return /*#__PURE__*/React__default.createElement("tbody", Object.assign({
11840
+ "data-taco": "report-body"
11841
+ }, attributes, {
11703
11842
  onKeyDown: handleKeyDown,
11704
11843
  ref: ref
11705
11844
  }));
11706
11845
  }
11707
11846
 
11708
- function Footer$3(header) {
11709
- return /*#__PURE__*/React__default.createElement(MemoedFooter, {
11710
- key: header.id,
11711
- footer: header
11712
- });
11713
- }
11714
- const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(props) {
11715
- var _footer$subHeaders, _footer$subHeaders$fi;
11716
- const {
11717
- footer
11718
- } = props;
11719
- const columnMeta = footer.column.columnDef.meta;
11720
- // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers
11721
- const isHeaderGroup = !!((_footer$subHeaders = footer.subHeaders) !== null && _footer$subHeaders !== void 0 && _footer$subHeaders.length);
11722
- const isPinned = isHeaderGroup ? (_footer$subHeaders$fi = footer.subHeaders.find(x => x.column.getIsPinned())) === null || _footer$subHeaders$fi === void 0 ? void 0 : _footer$subHeaders$fi.column.getIsPinned() : footer.column.getIsPinned();
11723
- const style = {};
11724
- if (isPinned) {
11725
- // pinned columns should be offset from either the left or right
11726
- style[isPinned] = `${footer.column.getStart(isPinned) - 1}px`;
11727
- }
11728
- return /*#__PURE__*/React__default.createElement("td", {
11729
- key: footer.id,
11730
- "data-cell-align": columnMeta.align,
11731
- "data-cell-id": footer.id,
11732
- "data-cell-pinned": isPinned ? isPinned : undefined,
11733
- style: style
11734
- }, footer.isPlaceholder ? null : reactTable.flexRender(footer.column.columnDef.footer, footer.getContext()));
11735
- });
11736
-
11737
11847
  function Summary(props) {
11738
11848
  var _table$getState$colum;
11739
11849
  const {
11740
- length,
11741
11850
  table
11742
11851
  } = props;
11743
11852
  const {
11744
11853
  locale,
11745
11854
  texts
11746
11855
  } = useLocalization();
11856
+ const length = table.options.meta.length;
11747
11857
  const currentLength = table.getRowModel().rows.length;
11748
11858
  let label;
11749
11859
  let count;
11750
11860
  // row selection
11751
- const rowsSelectedLength = table.getIsAllRowsSelected() ? length : table.getSelectedRowModel().rows.length;
11861
+ const rowsSelectedLength = table.getSelectedRowModel().rows.length;
11752
11862
  if (rowsSelectedLength > 0) {
11753
11863
  label = texts.table3.footer.summary.selected;
11754
11864
  count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(rowsSelectedLength)), "\u00A0", texts.table3.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
@@ -11763,11 +11873,51 @@ function Summary(props) {
11763
11873
  count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
11764
11874
  }
11765
11875
  return /*#__PURE__*/React__default.createElement("div", {
11766
- className: "border-grey-300 sticky z-20 -mt-[2.63rem] ml-px flex h-10 w-fit items-center whitespace-nowrap rounded-bl border-t-2 bg-white px-4 !pr-3",
11876
+ className: "sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]",
11767
11877
  "data-taco": "table2-footer-summary"
11768
11878
  }, label, "\u00A0", count);
11769
11879
  }
11770
11880
 
11881
+ function Footer$3(header) {
11882
+ return /*#__PURE__*/React__default.createElement(MemoedFooter, {
11883
+ key: header.id,
11884
+ footer: header
11885
+ });
11886
+ }
11887
+ const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(props) {
11888
+ var _footer$subHeaders, _footer$subHeaders$fi;
11889
+ const {
11890
+ footer
11891
+ } = props;
11892
+ const columnMeta = footer.column.columnDef.meta;
11893
+ // getIsPinned returns true for split header groups, even if the split group has no pinned sub headers
11894
+ const isHeaderGroup = !!((_footer$subHeaders = footer.subHeaders) !== null && _footer$subHeaders !== void 0 && _footer$subHeaders.length);
11895
+ const isPinned = isHeaderGroup ? (_footer$subHeaders$fi = footer.subHeaders.find(x => x.column.getIsPinned())) === null || _footer$subHeaders$fi === void 0 ? void 0 : _footer$subHeaders$fi.column.getIsPinned() : footer.column.getIsPinned();
11896
+ const style = {};
11897
+ if (isPinned) {
11898
+ // pinned columns should be offset from either the left or right
11899
+ style[isPinned] = `${footer.column.getStart(isPinned) - 1}px`;
11900
+ }
11901
+ let content;
11902
+ let align;
11903
+ if (footer.index === 0) {
11904
+ align = 'left';
11905
+ content = /*#__PURE__*/React__default.createElement(Summary, {
11906
+ table: footer.getContext().table
11907
+ });
11908
+ } else {
11909
+ align = columnMeta.align;
11910
+ content = footer.isPlaceholder ? null : reactTable.flexRender(footer.column.columnDef.footer, footer.getContext());
11911
+ }
11912
+ return /*#__PURE__*/React__default.createElement("td", {
11913
+ key: footer.id,
11914
+ "data-cell-align": align,
11915
+ "data-cell-id": footer.id,
11916
+ "data-cell-pinned": isPinned ? isPinned : undefined,
11917
+ style: style
11918
+ }, content);
11919
+ });
11920
+
11771
11921
  const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput2(props, ref) {
11772
11922
  var _attributes$ariaLabe, _attributes$placehold;
11773
11923
  const {
@@ -11838,6 +11988,7 @@ const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput
11838
11988
  }
11839
11989
  if (event.key === 'Escape') {
11840
11990
  handleClear();
11991
+ event.stopPropagation();
11841
11992
  return;
11842
11993
  }
11843
11994
  };
@@ -13731,7 +13882,39 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
13731
13882
  (_internalRef$current = internalRef.current) === null || _internalRef$current === void 0 ? void 0 : _internalRef$current.focus();
13732
13883
  }
13733
13884
  };
13734
- const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none', createCollectionClassName());
13885
+ const selectOptions = searchQuery === '' ? flattenedChildren.map(child => child.key) : filteredChildren.map(child => isGroup(child) ? Array.isArray(child.props.children) && child.props.children.map(subChild => subChild.key) : child.key).flatMap(c => c) || [];
13886
+ const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));
13887
+ const selectAllText = React__default.useMemo(() => {
13888
+ if (searchQuery === '') {
13889
+ if (areAllSelected) {
13890
+ return texts.select2.deselectAll;
13891
+ } else {
13892
+ return texts.select2.selectAll;
13893
+ }
13894
+ } else if (areAllSelected) {
13895
+ return texts.select2.deselectAllResults;
13896
+ } else {
13897
+ return texts.select2.selectAllResults;
13898
+ }
13899
+ }, [areAllSelected, searchQuery]);
13900
+ const selectAll = () => {
13901
+ if (!Array.isArray(value) || value.length === 0) {
13902
+ setValue(selectOptions);
13903
+ } else {
13904
+ // array of all available options which are not selected
13905
+ const preselectedValues = selectOptions.filter(option => !value.includes(option));
13906
+ setValue([...value, ...preselectedValues]);
13907
+ }
13908
+ };
13909
+ const deselectAll = () => {
13910
+ if (searchQuery === '') {
13911
+ setValue([]);
13912
+ } else {
13913
+ const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));
13914
+ setValue(nextValue);
13915
+ }
13916
+ };
13917
+ const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none"', createCollectionClassName());
13735
13918
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
13736
13919
  value: context
13737
13920
  }, /*#__PURE__*/React__default.createElement(PopoverPrimitive.Root, {
@@ -13771,11 +13954,17 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
13771
13954
  style: {
13772
13955
  minWidth: dimensions !== null && dimensions !== void 0 && dimensions.width ? `${dimensions.width}px` : undefined
13773
13956
  }
13774
- }, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(Search$2, {
13957
+ }, flattenedChildren.length > 0 || onCreate ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Search$2, {
13775
13958
  placeholder: onCreate ? texts.select2.searchOrCreate : texts.select2.search,
13776
13959
  ref: searchRef,
13777
13960
  onTabKeyPress: () => setTabTriggeredClose(true)
13778
- })) : null, flattenedChildren.length <= 0 ? ( /*#__PURE__*/React__default.createElement("div", {
13961
+ }), multiple && selectOptions.length > 1 && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$1, {
13962
+ className: "!justify-start",
13963
+ appearance: "discrete",
13964
+ onClick: areAllSelected ? deselectAll : selectAll
13965
+ }, selectAllText), /*#__PURE__*/React__default.createElement("div", {
13966
+ className: "border-grey-300 mx-3 rounded border-t"
13967
+ }))))) : null, flattenedChildren.length <= 0 ? ( /*#__PURE__*/React__default.createElement("div", {
13779
13968
  className: "text-grey-700 -mt-0.5 flex h-8 items-center px-2",
13780
13969
  role: "presentation"
13781
13970
  }, "No results found...")) : ( /*#__PURE__*/React__default.createElement(Root$1, {
@@ -13922,6 +14111,12 @@ function Print$1(props) {
13922
14111
  const lastScrollTopRef = React__default.useRef();
13923
14112
  const toast = useToast();
13924
14113
  const tableMeta = table.options.meta;
14114
+ const {
14115
+ allRows,
14116
+ orientation,
14117
+ size,
14118
+ splitGroups
14119
+ } = tableMeta.printing.settings;
13925
14120
  const togglePrinting = React__default.useCallback(enabled => {
13926
14121
  tableMeta.printing.setIsPrinting(enabled);
13927
14122
  if (tableRef.current) {
@@ -13979,10 +14174,6 @@ function Print$1(props) {
13979
14174
  return Promise.reject(e);
13980
14175
  }
13981
14176
  };
13982
- const [orientation, setOrientation] = React__default.useState('portrait');
13983
- const [size, setSize] = React__default.useState('A4');
13984
- const [allRows, setAllRows] = React__default.useState(true);
13985
- const [splitGroups, setSplitGroups] = React__default.useState(true);
13986
14177
  const printStyle = [`@page { size: ${size} ${orientation}; }`];
13987
14178
  if (!allRows) {
13988
14179
  printStyle.push(`table[data-taco='report']#${tableId} tr:not([data-row-selected="true"]) { display: none; }`);
@@ -14008,13 +14199,13 @@ function Print$1(props) {
14008
14199
  table: table,
14009
14200
  onAccept: print,
14010
14201
  orientation: orientation,
14011
- setOrientation: setOrientation,
14202
+ setOrientation: value => tableMeta.printing.setSetting('orientation', value),
14012
14203
  size: size,
14013
- setSize: setSize,
14204
+ setSize: value => tableMeta.printing.setSetting('size', value),
14014
14205
  allRows: allRows,
14015
- setAllRows: setAllRows,
14206
+ setAllRows: value => tableMeta.printing.setSetting('allRows', value),
14016
14207
  splitGroups: splitGroups,
14017
- setSplitGroups: setSplitGroups
14208
+ setSplitGroups: value => tableMeta.printing.setSetting('splitGroups', value)
14018
14209
  }))),
14019
14210
  ref: ref,
14020
14211
  shortcut: shortcut,
@@ -14042,8 +14233,11 @@ function sortByHeader(a, b) {
14042
14233
  var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
14043
14234
  return (_a$columnDef$meta = a.columnDef.meta) === null || _a$columnDef$meta === void 0 ? void 0 : (_a$columnDef$meta$hea = _a$columnDef$meta.header) === null || _a$columnDef$meta$hea === void 0 ? void 0 : (_a$columnDef$meta$hea2 = _a$columnDef$meta$hea.localeCompare) === null || _a$columnDef$meta$hea2 === void 0 ? void 0 : _a$columnDef$meta$hea2.call(_a$columnDef$meta$hea, (_b$columnDef$meta = b.columnDef.meta) === null || _b$columnDef$meta === void 0 ? void 0 : _b$columnDef$meta.header);
14044
14235
  }
14236
+ function isEmptyFilter(filter) {
14237
+ return !filter.value.hasOwnProperty('value'); // eslint-disable-line no-prototype-builtins
14238
+ }
14045
14239
 
14046
- function FilterColumn(props) {
14240
+ const FilterColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
14047
14241
  const {
14048
14242
  allColumns,
14049
14243
  filters,
@@ -14063,7 +14257,8 @@ function FilterColumn(props) {
14063
14257
  warning: warning,
14064
14258
  className: "min-h-[theme(spacing.8)]"
14065
14259
  }, /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
14066
- className: "!w-32 flex-shrink-0",
14260
+ ref: ref,
14261
+ className: "focus:yt-focus !w-32 flex-shrink-0 ",
14067
14262
  emptyValue: null,
14068
14263
  onChange: handleChange,
14069
14264
  value: value
@@ -14081,7 +14276,7 @@ function FilterColumn(props) {
14081
14276
  disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
14082
14277
  }, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
14083
14278
  }))));
14084
- }
14279
+ });
14085
14280
 
14086
14281
  function FilterComparator(props) {
14087
14282
  const {
@@ -14186,6 +14381,7 @@ function getComparatorText(comparator, texts, column) {
14186
14381
  }
14187
14382
  }
14188
14383
 
14384
+ const querySelector = 'filter-value';
14189
14385
  function FilterValue(props) {
14190
14386
  const {
14191
14387
  column,
@@ -14207,6 +14403,7 @@ function FilterValue(props) {
14207
14403
  return /*#__PURE__*/React__default.createElement(Input, {
14208
14404
  "aria-label": texts.table3.filters.emptyFilter.value,
14209
14405
  className: "flex-grow",
14406
+ "data-query-selector": querySelector,
14210
14407
  disabled: true,
14211
14408
  value: texts.table3.filters.emptyFilter.value
14212
14409
  });
@@ -14216,10 +14413,12 @@ function FilterValue(props) {
14216
14413
  className: "flex flex-grow items-center gap-2"
14217
14414
  }, /*#__PURE__*/React__default.createElement(Control, {
14218
14415
  column: column,
14416
+ "data-query-selector": querySelector,
14219
14417
  onChange: value => handleChange([value, toValue]),
14220
14418
  value: fromValue
14221
14419
  }), /*#__PURE__*/React__default.createElement(Control, {
14222
14420
  column: column,
14421
+ "data-query-selector": querySelector,
14223
14422
  onChange: value => handleChange([fromValue, value]),
14224
14423
  value: toValue
14225
14424
  }));
@@ -14228,11 +14427,13 @@ function FilterValue(props) {
14228
14427
  className: "flex flex-grow items-center gap-2"
14229
14428
  }, /*#__PURE__*/React__default.createElement(Control, {
14230
14429
  column: column,
14430
+ "data-query-selector": querySelector,
14231
14431
  onChange: value => handleChange([isNaN(value) ? undefined : value, toValue]),
14232
14432
  placeholder: "from",
14233
14433
  value: fromValue !== null && fromValue !== void 0 ? fromValue : ''
14234
14434
  }), /*#__PURE__*/React__default.createElement(Control, {
14235
14435
  column: column,
14436
+ "data-query-selector": querySelector,
14236
14437
  onChange: value => handleChange([fromValue, isNaN(value) ? undefined : value]),
14237
14438
  placeholder: "to",
14238
14439
  value: toValue !== null && toValue !== void 0 ? toValue : ''
@@ -14241,6 +14442,7 @@ function FilterValue(props) {
14241
14442
  return /*#__PURE__*/React__default.createElement(Control, {
14242
14443
  comparator: comparator,
14243
14444
  column: column,
14445
+ "data-query-selector": querySelector,
14244
14446
  onChange: handleChange,
14245
14447
  value: value
14246
14448
  });
@@ -14262,10 +14464,13 @@ function Control(props) {
14262
14464
  }
14263
14465
  }, []);
14264
14466
  if (typeof controlRenderer === 'function') {
14265
- return controlRenderer({
14467
+ return /*#__PURE__*/React__default.cloneElement(controlRenderer({
14266
14468
  ...attributes,
14267
14469
  setValue: value => onChange(value),
14268
14470
  value
14471
+ }), {
14472
+ ['data-query-selector']: querySelector,
14473
+ className: 'focus:yt-focus'
14269
14474
  });
14270
14475
  } else if (controlRenderer === 'datepicker' || dataType === 'datetime') {
14271
14476
  return /*#__PURE__*/React__default.createElement(Datepicker, Object.assign({}, attributes, {
@@ -14308,6 +14513,7 @@ function Filter$1(props) {
14308
14513
  texts
14309
14514
  } = useLocalization();
14310
14515
  const column = allColumns.find(c => c.id === filter.id);
14516
+ const ref = React__default.useRef(null);
14311
14517
  const {
14312
14518
  id,
14313
14519
  value: {
@@ -14326,7 +14532,7 @@ function Filter$1(props) {
14326
14532
  comparator: TableFilterComparator.Contains,
14327
14533
  value: undefined
14328
14534
  };
14329
- handleChange(id, {
14535
+ handleChange(position, {
14330
14536
  id: columnId,
14331
14537
  value
14332
14538
  });
@@ -14336,7 +14542,7 @@ function Filter$1(props) {
14336
14542
  if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {
14337
14543
  nextValue = undefined;
14338
14544
  }
14339
- handleChange(id, {
14545
+ handleChange(position, {
14340
14546
  id,
14341
14547
  value: {
14342
14548
  comparator,
@@ -14345,7 +14551,7 @@ function Filter$1(props) {
14345
14551
  });
14346
14552
  };
14347
14553
  const handleChangeValue = value => {
14348
- handleChange(id, {
14554
+ handleChange(position, {
14349
14555
  id,
14350
14556
  value: {
14351
14557
  ...filter.value,
@@ -14353,7 +14559,12 @@ function Filter$1(props) {
14353
14559
  }
14354
14560
  });
14355
14561
  };
14356
- const handleRemove = () => onRemove(id);
14562
+ const handleRemove = () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(position);
14563
+ React__default.useEffect(() => {
14564
+ if (ref.current && !id) {
14565
+ ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.
14566
+ }
14567
+ }, [id]);
14357
14568
  return /*#__PURE__*/React__default.createElement("div", {
14358
14569
  className: "flex items-start gap-2"
14359
14570
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -14362,7 +14573,8 @@ function Filter$1(props) {
14362
14573
  allColumns: allColumns,
14363
14574
  filters: filters,
14364
14575
  onChange: handleChangeColumn,
14365
- value: id
14576
+ value: id,
14577
+ ref: ref
14366
14578
  }), /*#__PURE__*/React__default.createElement(FilterComparator, {
14367
14579
  column: column,
14368
14580
  onChange: handleChangeComparator,
@@ -14372,46 +14584,21 @@ function Filter$1(props) {
14372
14584
  comparator: comparator,
14373
14585
  onChange: handleChangeValue,
14374
14586
  value: value
14375
- }), /*#__PURE__*/React__default.createElement(IconButton, {
14587
+ }), onRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
14376
14588
  appearance: "discrete",
14377
14589
  className: "ml-auto",
14378
14590
  icon: "close",
14379
14591
  onClick: handleRemove
14380
- }));
14381
- }
14382
-
14383
- function Placeholder(props) {
14384
- const {
14385
- allColumns,
14386
- filters,
14387
- onCreate: handleCreate,
14388
- onRemove: handleRemove,
14389
- position
14390
- } = props;
14391
- const {
14392
- texts
14393
- } = useLocalization();
14394
- return /*#__PURE__*/React__default.createElement("div", {
14395
- className: "flex items-start gap-2"
14396
- }, /*#__PURE__*/React__default.createElement("div", {
14397
- className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
14398
- }, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn, {
14399
- allColumns: allColumns,
14400
- filters: filters,
14401
- onChange: handleCreate,
14402
- value: null
14403
- }), /*#__PURE__*/React__default.createElement(FilterComparator, null), /*#__PURE__*/React__default.createElement(Input, {
14404
- "aria-label": texts.table3.filters.emptyFilter.value,
14405
- className: "flex-grow",
14406
- disabled: true,
14407
- value: texts.table3.filters.emptyFilter.value
14408
- }), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
14409
- appearance: "discrete",
14410
- icon: "close",
14411
- onClick: handleRemove
14412
14592
  }) : null);
14413
14593
  }
14414
14594
 
14595
+ const placeholderFilter = {
14596
+ id: '',
14597
+ value: {
14598
+ comparator: TableFilterComparator.Contains,
14599
+ value: undefined
14600
+ }
14601
+ };
14415
14602
  function ManageFiltersPopover(props) {
14416
14603
  const {
14417
14604
  length,
@@ -14423,54 +14610,46 @@ function ManageFiltersPopover(props) {
14423
14610
  texts
14424
14611
  } = useLocalization();
14425
14612
  const allColumns = table.getAllLeafColumns().filter(column => !isInternalColumn(column.id)).sort(sortByHeader);
14426
- const appliedFilters = table.getState().columnFilters;
14613
+ const columnFilters = table.getState().columnFilters;
14427
14614
  // state, since we "apply" filters - our filter values have a special shape, so we force to our type
14428
- const [filters, setFilters] = React__default.useState(table.getState().columnFilters);
14429
- const [placeholderCount, setPlaceholderCount] = React__default.useState(1);
14430
- // filters might reset from the outside
14615
+ const [filters, setFilters] = React__default.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
14616
+ // this runs if filters are set outside (e.g. through column header)
14431
14617
  React__default.useEffect(() => {
14432
- if (appliedFilters.length === 0) {
14433
- setFilters([]);
14434
- setPlaceholderCount(1);
14435
- }
14436
- }, [appliedFilters]);
14618
+ setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);
14619
+ // focus the filter value, as we preset the column/comparator.
14620
+ requestAnimationFrame(() => {
14621
+ const filterValues = document.querySelectorAll('[data-query-selector="filter-value"]');
14622
+ const lastFilter = filterValues.length ? filterValues[filterValues.length - 1] : undefined;
14623
+ lastFilter === null || lastFilter === void 0 ? void 0 : lastFilter.focus();
14624
+ });
14625
+ }, [columnFilters]);
14437
14626
  // filters
14438
- const handleChangeFilter = (currentId, filter) => {
14627
+ const handleChangeFilter = (position, filter) => {
14439
14628
  setFilters(currentFilters => {
14440
- const nextFilters = [...currentFilters];
14441
- nextFilters[nextFilters.findIndex(f => f.id === currentId)] = filter;
14442
- return nextFilters;
14629
+ return currentFilters.map((current, index) => {
14630
+ if (index === position) {
14631
+ return filter;
14632
+ }
14633
+ return current;
14634
+ });
14443
14635
  });
14444
14636
  };
14445
- const handleRemoveFilter = columnId => {
14446
- if (filters.length === 1 && placeholderCount === 0) {
14447
- setPlaceholderCount(count => count + 1);
14637
+ const handleRemoveFilter = position => {
14638
+ if (filters.length === 1) {
14639
+ setFilters([placeholderFilter]);
14640
+ return;
14448
14641
  }
14449
- setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));
14642
+ setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));
14450
14643
  };
14451
- // placeholders
14452
- const handleCreateFilterFromPlaceholder = columnId => {
14453
- setFilters(currentFilters => [...currentFilters, {
14454
- id: columnId,
14455
- value: {
14456
- comparator: TableFilterComparator.Contains,
14457
- value: undefined
14458
- }
14459
- }]);
14460
- handleRemovePlaceholder();
14461
- };
14462
- const handleCreatePlaceholder = () => {
14463
- setPlaceholderCount(count => count + 1);
14464
- };
14465
- const handleRemovePlaceholder = () => {
14466
- setPlaceholderCount(count => count - 1);
14644
+ const handleCreate = () => {
14645
+ setFilters(filters.concat(placeholderFilter));
14467
14646
  };
14468
14647
  //
14469
14648
  const handleApply = () => {
14470
14649
  table.setColumnFilters(() => {
14471
14650
  const newFilters = filters.filter(f => {
14472
14651
  var _allColumns$find, _allColumns$find$colu;
14473
- if (f.id === null) {
14652
+ if (f.id === null || f.id === '') {
14474
14653
  return false;
14475
14654
  }
14476
14655
  const controlRenderer = (_allColumns$find = allColumns.find(c => c.id === f.id)) === null || _allColumns$find === void 0 ? void 0 : (_allColumns$find$colu = _allColumns$find.columnDef.meta) === null || _allColumns$find$colu === void 0 ? void 0 : _allColumns$find$colu.control;
@@ -14484,12 +14663,14 @@ function ManageFiltersPopover(props) {
14484
14663
  };
14485
14664
  const handleClear = () => {
14486
14665
  table.resetColumnFilters();
14487
- setFilters([]);
14488
- setPlaceholderCount(1);
14666
+ setFilters([placeholderFilter]);
14489
14667
  };
14490
- const handleClose = () => {
14491
- setFilters(appliedFilters);
14492
- setPlaceholderCount(appliedFilters.length ? 0 : 1);
14668
+ const handleClose = open => {
14669
+ if (!open) {
14670
+ const nonEmptyFilters = columnFilters.filter(f => !isEmptyFilter(f));
14671
+ table.setColumnFilters(nonEmptyFilters);
14672
+ setFilters(nonEmptyFilters.length === 0 ? [placeholderFilter] : nonEmptyFilters);
14673
+ }
14493
14674
  };
14494
14675
  return /*#__PURE__*/React__default.createElement(Popover, Object.assign({}, popoverProps, {
14495
14676
  onChange: handleClose
@@ -14512,19 +14693,12 @@ function ManageFiltersPopover(props) {
14512
14693
  filters: filters,
14513
14694
  position: index,
14514
14695
  onChange: handleChangeFilter,
14515
- onRemove: handleRemoveFilter
14516
- }))), [...Array(placeholderCount)].map((_, index) => ( /*#__PURE__*/React__default.createElement(Placeholder, {
14517
- key: `placeholder_${index}`,
14518
- allColumns: allColumns,
14519
- filters: filters,
14520
- position: filters.length + index,
14521
- onCreate: handleCreateFilterFromPlaceholder,
14522
- onRemove: placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined
14696
+ onRemove: filters.length > 0 && filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined
14523
14697
  }))), /*#__PURE__*/React__default.createElement("div", {
14524
14698
  className: "justify-start"
14525
14699
  }, /*#__PURE__*/React__default.createElement(Button$1, {
14526
14700
  appearance: "discrete",
14527
- onClick: handleCreatePlaceholder
14701
+ onClick: handleCreate
14528
14702
  }, "+ ", texts.table3.filters.buttons.addFilter))), /*#__PURE__*/React__default.createElement(Group, {
14529
14703
  className: "ml-auto"
14530
14704
  }, /*#__PURE__*/React__default.createElement(Popover.Close, null, /*#__PURE__*/React__default.createElement(Button$1, null, "Cancel")), /*#__PURE__*/React__default.createElement(Button$1, {
@@ -14544,7 +14718,9 @@ function Filters(props) {
14544
14718
  texts
14545
14719
  } = useLocalization();
14546
14720
  const isLargeScreen = useIsLargeScreen();
14547
- const appliedFilters = table.getState().columnFilters;
14721
+ const columnFilters = table.getState().columnFilters;
14722
+ const appliedFilters = columnFilters.filter(f => !isEmptyFilter(f));
14723
+ const ref = React__default.useRef(null);
14548
14724
  const shortcut = {
14549
14725
  key: 'f',
14550
14726
  meta: true,
@@ -14558,11 +14734,20 @@ function Filters(props) {
14558
14734
  table: table
14559
14735
  })),
14560
14736
  shortcut,
14737
+ ref,
14561
14738
  tooltip: ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, texts.table3.filters.tooltip, /*#__PURE__*/React__default.createElement(Shortcut, {
14562
14739
  className: "ml-2",
14563
14740
  keys: shortcut
14564
14741
  })))
14565
14742
  };
14743
+ React__default.useEffect(() => {
14744
+ const emptyFilter = columnFilters.find(isEmptyFilter);
14745
+ // we set an empty filter when adding a filter through a column header.
14746
+ if (emptyFilter) {
14747
+ var _ref$current;
14748
+ (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.click();
14749
+ }
14750
+ }, [columnFilters]);
14566
14751
  if (!isLargeScreen && !appliedFilters.length) {
14567
14752
  return /*#__PURE__*/React__default.createElement(IconButton, Object.assign({}, buttonProps, {
14568
14753
  icon: "filter"
@@ -14652,12 +14837,15 @@ function useCssGridStylesheet(tableId, table, fontSize) {
14652
14837
  size = `minmax(${minWidth}px, auto)`;
14653
14838
  } else if (width !== undefined) {
14654
14839
  const isLastColumn = index === allVisibleColumns.length - 1;
14655
- if (isLastColumn) {
14656
- size = `minmax(${minSize}px, auto)`;
14657
- } else if (width === 'grow' || Number.isNaN(width)) {
14840
+ if (width === 'grow' || Number.isNaN(width) && !isLastColumn) {
14658
14841
  size = `minmax(${minSize}px, 1fr)`;
14659
14842
  } else {
14660
- size = `${width < minSize ? minSize : width}px`;
14843
+ const minWidth = width < minSize ? minSize : width;
14844
+ if (isLastColumn) {
14845
+ size = `minmax(${minWidth}px, auto)`;
14846
+ } else {
14847
+ size = `${minWidth}px`;
14848
+ }
14661
14849
  }
14662
14850
  } else {
14663
14851
  size = `minmax(${minSize}px, auto)`;
@@ -15284,16 +15472,8 @@ function useTableGlobalShortcuts(table, tableRef, scrollToIndex) {
15284
15472
  const rows = table.getRowModel().rows;
15285
15473
  React__default.useEffect(() => {
15286
15474
  const handleKeyDown = event => {
15287
- const target = event.target;
15288
- const dialog = target.closest('[role="dialog"]');
15289
- //const eventOriginatedFromCombobox = !!target.closest('[role="combobox"]');
15290
- // Don't trigger global shortcuts on the table if event originated from a combobox or if table is
15291
- // outside the dialog
15292
- if (
15293
- //eventOriginatedFromCombobox ||
15294
- dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(tableRef.current))
15295
- // || tableMeta.shortcutsState.isPaused
15296
- ) {
15475
+ const trigger = event.target;
15476
+ if (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current)) {
15297
15477
  return;
15298
15478
  }
15299
15479
  tableMeta.rowActive.handleKeyDown(event, rows.length, scrollToIndex, tableRef);
@@ -15342,12 +15522,12 @@ const Report$1 = /*#__PURE__*/fixedForwardRef(function Report(props, ref) {
15342
15522
  const stylesheet = useStylesheet(report.id, report.instance);
15343
15523
  useTableGlobalShortcuts(report.instance, tableRef, renderer.scrollToIndex);
15344
15524
  const handleFocus = report.meta.rowActive.rowActiveIndex === undefined ? event => {
15345
- report.meta.rowActive.handleFocus(event, report.length, renderer.scrollToIndex);
15525
+ report.meta.rowActive.handleFocus(event, report.meta.length, renderer.scrollToIndex);
15346
15526
  } : undefined;
15347
15527
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, stylesheet, /*#__PURE__*/React__default.createElement(Toolbar, {
15348
15528
  customSettings: props.customSettings,
15349
15529
  left: props.toolbarLeft,
15350
- length: report.length,
15530
+ length: report.meta.length,
15351
15531
  right: props.toolbarRight,
15352
15532
  scrollToIndex: renderer.scrollToIndex,
15353
15533
  table: report.instance,
@@ -15371,15 +15551,11 @@ const Report$1 = /*#__PURE__*/fixedForwardRef(function Report(props, ref) {
15371
15551
  }, /*#__PURE__*/React__default.createElement("thead", null, report.instance.getHeaderGroups().map(headerGroup => ( /*#__PURE__*/React__default.createElement("tr", {
15372
15552
  key: headerGroup.id
15373
15553
  }, headerGroup.headers.map(Header$4))))), (_renderer$rows = renderer.rows) !== null && _renderer$rows !== void 0 && _renderer$rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
15374
- length: report.length,
15375
15554
  table: report.instance,
15376
15555
  style: renderer.style
15377
15556
  }, renderer.rows), report.meta.footer.isEnabled ? ( /*#__PURE__*/React__default.createElement("tfoot", null, /*#__PURE__*/React__default.createElement("tr", null, report.instance.getFooterGroups()[0].headers.map(Footer$3)))) : null)) : ( /*#__PURE__*/React__default.createElement(EmptyStateBody, {
15378
15557
  emptyState: props.emptyState
15379
- }))), report.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Summary, {
15380
- length: report.length,
15381
- table: report.instance
15382
- }) : null));
15558
+ })))));
15383
15559
  });
15384
15560
  Report$1.Column = Column$1;
15385
15561
  Report$1.Group = Group$3;
@@ -16200,7 +16376,7 @@ const useTableSortingListener$1 = (data, sortedRows, onSort, manualSorting, stat
16200
16376
  }, [onSort && JSON.stringify(state.sortBy), manualSorting]);
16201
16377
  };
16202
16378
  const DEFAULT_PAGE_SIZE$1 = 10;
16203
- const useTable$1 = (props, ref) => {
16379
+ const useTable = (props, ref) => {
16204
16380
  var _otherProps$tabIndex;
16205
16381
  const {
16206
16382
  children,
@@ -16523,7 +16699,7 @@ const Table = /*#__PURE__*/React__default.forwardRef(function Table(props, ref)
16523
16699
  prepareRow,
16524
16700
  pagination,
16525
16701
  instance
16526
- } = useTable$1(otherProps, tableRef);
16702
+ } = useTable(otherProps, tableRef);
16527
16703
  let paginationElement;
16528
16704
  if (pagination) {
16529
16705
  paginationElement = /*#__PURE__*/React__default.createElement(Pagination, {
@@ -16631,7 +16807,7 @@ const WindowedTable = /*#__PURE__*/React__default.forwardRef(function WindowedTa
16631
16807
  prepareRow,
16632
16808
  instance,
16633
16809
  state
16634
- } = useTable$1({
16810
+ } = useTable({
16635
16811
  ...otherProps,
16636
16812
  windowed: true
16637
16813
  }, tableRef);
@@ -17990,7 +18166,9 @@ function useSettingsStateListener(table, onChangeSettings) {
17990
18166
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
17991
18167
  meta.columnFreezing.frozenColumnIndex, state.columnOrder, state.columnSizing, state.columnVisibility,
17992
18168
  // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
17993
- meta.search.excludeUnmatchedResults, meta.fontSize.size, meta.rowHeight.height, meta.printing.isWarningVisibleForLargeDatasets, state.sorting]);
18169
+ meta.search.excludeUnmatchedResults, meta.fontSize.size, meta.rowHeight.height,
18170
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
18171
+ meta.printing.isWarningVisibleForLargeDatasets, state.sorting]);
17994
18172
  }
17995
18173
 
17996
18174
  var Table3FilterComparator;
@@ -19669,6 +19847,25 @@ function Header$6(context) {
19669
19847
  const isAllRowsSelected = context.table.getIsAllRowsSelected();
19670
19848
  const isSomeRowsSelected = context.table.getIsSomeRowsSelected();
19671
19849
  const title = isAllRowsSelected ? texts.table3.columns.select.deselectAll : texts.table3.columns.select.selectAll;
19850
+ const tableMeta = context.table.options.meta;
19851
+ const isServerloading = tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading;
19852
+ const isLoadingAll = isAllRowsSelected && isServerloading;
19853
+ const isLoadingPreviousRows = tableMeta.rowSelection.lastSelectedRowIndex !== undefined && isServerloading;
19854
+ const toggleSelectAll = function () {
19855
+ try {
19856
+ const _temp = function () {
19857
+ if (!isServerloading) {
19858
+ var _tableMeta$server, _tableMeta$server$loa;
19859
+ return Promise.resolve((_tableMeta$server = tableMeta.server) === null || _tableMeta$server === void 0 ? void 0 : (_tableMeta$server$loa = _tableMeta$server.loadAllIfNeeded) === null || _tableMeta$server$loa === void 0 ? void 0 : _tableMeta$server$loa.call(_tableMeta$server, context.table.getState().sorting, context.table.getState().columnFilters, undefined)).then(function () {
19860
+ context.table.toggleAllRowsSelected(!isAllRowsSelected);
19861
+ });
19862
+ }
19863
+ }();
19864
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
19865
+ } catch (e) {
19866
+ return Promise.reject(e);
19867
+ }
19868
+ };
19672
19869
  return /*#__PURE__*/React__default.createElement(Header$5, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
19673
19870
  title: title
19674
19871
  }, /*#__PURE__*/React__default.createElement(Checkbox, {
@@ -19677,8 +19874,9 @@ function Header$6(context) {
19677
19874
  key: String(`${isAllRowsSelected}_${isSomeRowsSelected}`),
19678
19875
  checked: isAllRowsSelected,
19679
19876
  indeterminate: isSomeRowsSelected,
19680
- onChange: context.table.toggleAllRowsSelected,
19681
- tabIndex: -1
19877
+ onChange: toggleSelectAll,
19878
+ tabIndex: -1,
19879
+ loading: isLoadingAll || isLoadingPreviousRows
19682
19880
  })));
19683
19881
  } else {
19684
19882
  return /*#__PURE__*/React__default.createElement(Header$5, Object.assign({}, context));
@@ -19700,18 +19898,49 @@ const Cell$7 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
19700
19898
  const isActiveRow = tableMeta.rowActive.rowActiveIndex === rowIndex;
19701
19899
  const isSelected = context.row.getIsSelected();
19702
19900
  const title = isSelected ? texts.table3.columns.select.deselect : texts.table3.columns.select.select;
19703
- if (context.table.options.enableMultiRowSelection) {
19704
- const handleClick = event => {
19705
- event.stopPropagation();
19706
- if (event.shiftKey) {
19707
- var _tableMeta$rowSelecti;
19708
- const [fromIndex, toIndex] = toggleBetween$2((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
19709
- context.table.getRowModel().rows.slice(fromIndex, toIndex + 1).forEach(row => row.toggleSelected(true));
19710
- } else {
19711
- context.row.toggleSelected();
19901
+ const handleCheckboxClick = function (event) {
19902
+ try {
19903
+ function _temp5() {
19904
+ tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
19712
19905
  }
19713
- tableMeta.rowSelection.lastSelectedRowIndex.current = rowIndex;
19714
- };
19906
+ event.stopPropagation();
19907
+ const _temp4 = function () {
19908
+ if (event.shiftKey) {
19909
+ var _tableMeta$rowSelecti;
19910
+ function _temp3() {
19911
+ const currentlySelected = context.table.getSelectedRowModel().rows;
19912
+ // concat currently selected with selection range and get rid of duplicates using "Set".
19913
+ // converting allSelected array into updater object: {[row.id]: true}
19914
+ const allSelected = [...new Set(currentlySelected.concat(selectionRangeRows))];
19915
+ const updater = allSelected.reduce((obj, row) => Object.assign(obj, {
19916
+ [row.id]: true
19917
+ }), {});
19918
+ context.table.setRowSelection(updater);
19919
+ }
19920
+ const [fromIndex, toIndex] = toggleBetween$2((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
19921
+ const selectionRangeRows = context.table.getRowModel().rows.slice(fromIndex, toIndex + 1);
19922
+ // Table data loader filling-in all the rest of unloaded items with the undefined values,
19923
+ // so we can easily check if at least one of the rows in the selection range is undefined,
19924
+ // then it means that we need to call load all.
19925
+ const hasUndefinedRows = selectionRangeRows.some(row => row.original === undefined);
19926
+ const _temp2 = function () {
19927
+ if (hasUndefinedRows) {
19928
+ var _tableMeta$server2, _tableMeta$server2$lo;
19929
+ // We don't need to await and freeze UI
19930
+ return Promise.resolve((_tableMeta$server2 = tableMeta.server) === null || _tableMeta$server2 === void 0 ? void 0 : (_tableMeta$server2$lo = _tableMeta$server2.loadAllIfNeeded) === null || _tableMeta$server2$lo === void 0 ? void 0 : _tableMeta$server2$lo.call(_tableMeta$server2, context.table.getState().sorting, context.table.getState().columnFilters, undefined)).then(function () {});
19931
+ }
19932
+ }();
19933
+ return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
19934
+ } else {
19935
+ context.row.toggleSelected();
19936
+ }
19937
+ }();
19938
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
19939
+ } catch (e) {
19940
+ return Promise.reject(e);
19941
+ }
19942
+ };
19943
+ if (context.table.options.enableMultiRowSelection) {
19715
19944
  return /*#__PURE__*/React__default.createElement(DisplayCell$1, Object.assign({}, context), /*#__PURE__*/React__default.createElement(Tooltip, {
19716
19945
  title: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title, /*#__PURE__*/React__default.createElement(Shortcut, {
19717
19946
  className: "ml-2",
@@ -19721,7 +19950,7 @@ const Cell$7 = /*#__PURE__*/React__default.memo(function MemoedCell(context) {
19721
19950
  "aria-label": title,
19722
19951
  className: "!mt-0",
19723
19952
  checked: isSelected,
19724
- onClick: handleClick,
19953
+ onClick: handleCheckboxClick,
19725
19954
  // this is necessary to remove console spam from eslint
19726
19955
  onChange: () => false,
19727
19956
  tabIndex: isActiveRow ? 0 : -1
@@ -20412,8 +20641,8 @@ function usePauseShortcuts() {
20412
20641
  };
20413
20642
  }
20414
20643
 
20415
- function useTable$2(props, ref) {
20416
- var _settings$columnFreez, _props$length;
20644
+ function useTable$1(props, ref) {
20645
+ var _settings$columnFreez, _props$data, _ref, _props$length, _props$data2;
20417
20646
  // load any persisted table settings and merge them with any defaults
20418
20647
  const [settings, setSettings] = useSettings(props.id, props.defaultSettings, props.onChangeSettings);
20419
20648
  // configure table3 options
@@ -20437,6 +20666,12 @@ function useTable$2(props, ref) {
20437
20666
  // haven't migrated load all/server loading yet
20438
20667
  const search = useSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);
20439
20668
  const shortcutsState = usePauseShortcuts();
20669
+ React__default.useEffect(() => {
20670
+ // Needed for DataDog
20671
+ if (!Array.isArray(props.data)) {
20672
+ console.error('Table3 data value is not an array');
20673
+ }
20674
+ }, []);
20440
20675
  // custom features - shared/migrated
20441
20676
  const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);
20442
20677
  const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);
@@ -20489,7 +20724,8 @@ function useTable$2(props, ref) {
20489
20724
  };
20490
20725
  };
20491
20726
  const table = reactTable.useReactTable({
20492
- data: props.data,
20727
+ // We need to fallback to an empty array, to avoid table crash in the client
20728
+ data: (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [],
20493
20729
  columns,
20494
20730
  getCoreRowModel: reactTable.getCoreRowModel(),
20495
20731
  initialState,
@@ -20533,7 +20769,7 @@ function useTable$2(props, ref) {
20533
20769
  useTableSortingListener(table, props.onSort);
20534
20770
  return {
20535
20771
  table,
20536
- length: (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : props.data.length
20772
+ length: (_ref = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : (_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.length) !== null && _ref !== void 0 ? _ref : 0
20537
20773
  };
20538
20774
  }
20539
20775
  function configureReactTableOptions$1(props, options) {
@@ -21017,7 +21253,7 @@ function resetHighlightedColumnIndexes$1(enabled, value, table) {
21017
21253
  return firstRowIndex;
21018
21254
  }
21019
21255
 
21020
- function FilterColumn$1(props) {
21256
+ const FilterColumn$1 = /*#__PURE__*/React__default.forwardRef((props, ref) => {
21021
21257
  const {
21022
21258
  allColumns,
21023
21259
  filters,
@@ -21037,7 +21273,8 @@ function FilterColumn$1(props) {
21037
21273
  warning: warning,
21038
21274
  className: "min-h-[theme(spacing.8)]"
21039
21275
  }, /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
21040
- className: "!w-32 flex-shrink-0",
21276
+ ref: ref,
21277
+ className: "focus:yt-focus !w-32 flex-shrink-0",
21041
21278
  emptyValue: null,
21042
21279
  onChange: handleChange,
21043
21280
  value: value
@@ -21055,7 +21292,7 @@ function FilterColumn$1(props) {
21055
21292
  disabled: column.id !== value && (!column.getCanFilter() || !!filters.find(f => f.id === column.id))
21056
21293
  }, ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.header) + (column.parent ? ` (${(_column$parent = column.parent) === null || _column$parent === void 0 ? void 0 : (_column$parent$column = _column$parent.columnDef.meta) === null || _column$parent$column === void 0 ? void 0 : _column$parent$column.header})` : ''));
21057
21294
  }))));
21058
- }
21295
+ });
21059
21296
 
21060
21297
  function FilterComparator$1(props) {
21061
21298
  const {
@@ -21074,7 +21311,7 @@ function FilterComparator$1(props) {
21074
21311
  }
21075
21312
  }, [validComparators]);
21076
21313
  return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
21077
- className: "!w-32 flex-shrink-0",
21314
+ className: "focus:yt-focus !w-32 flex-shrink-0",
21078
21315
  disabled: !column,
21079
21316
  onChange: handleChange,
21080
21317
  value: value
@@ -21161,38 +21398,6 @@ function getComparatorText$1(comparator, texts, column) {
21161
21398
  }
21162
21399
  }
21163
21400
 
21164
- function Placeholder$1(props) {
21165
- const {
21166
- allColumns,
21167
- filters,
21168
- onCreate: handleCreate,
21169
- onRemove: handleRemove,
21170
- position
21171
- } = props;
21172
- const {
21173
- texts
21174
- } = useLocalization();
21175
- return /*#__PURE__*/React__default.createElement("div", {
21176
- className: "flex items-start gap-2"
21177
- }, /*#__PURE__*/React__default.createElement("div", {
21178
- className: "flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right"
21179
- }, position > 0 ? texts.table3.filters.conditions.and : texts.table3.filters.conditions.where), /*#__PURE__*/React__default.createElement(FilterColumn$1, {
21180
- allColumns: allColumns,
21181
- filters: filters,
21182
- onChange: handleCreate,
21183
- value: null
21184
- }), /*#__PURE__*/React__default.createElement(FilterComparator$1, null), /*#__PURE__*/React__default.createElement(Input, {
21185
- "aria-label": texts.table3.filters.emptyFilter.value,
21186
- className: "flex-grow",
21187
- disabled: true,
21188
- value: texts.table3.filters.emptyFilter.value
21189
- }), handleRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
21190
- appearance: "discrete",
21191
- icon: "close",
21192
- onClick: handleRemove
21193
- }) : null);
21194
- }
21195
-
21196
21401
  function FilterValue$1(props) {
21197
21402
  const {
21198
21403
  column,
@@ -21313,6 +21518,7 @@ function Filter$2(props) {
21313
21518
  texts
21314
21519
  } = useLocalization();
21315
21520
  const column = allColumns.find(c => c.id === filter.id);
21521
+ const ref = React__default.useRef(null);
21316
21522
  const {
21317
21523
  id,
21318
21524
  value: {
@@ -21331,7 +21537,7 @@ function Filter$2(props) {
21331
21537
  comparator: null,
21332
21538
  value: null
21333
21539
  };
21334
- handleChange(id, {
21540
+ handleChange(position, {
21335
21541
  id: columnId,
21336
21542
  value
21337
21543
  });
@@ -21341,7 +21547,7 @@ function Filter$2(props) {
21341
21547
  if (comparator === Table3FilterComparator.IsEmpty || comparator === Table3FilterComparator.IsNotEmpty) {
21342
21548
  nextValue = undefined;
21343
21549
  }
21344
- handleChange(id, {
21550
+ handleChange(position, {
21345
21551
  id,
21346
21552
  value: {
21347
21553
  comparator,
@@ -21350,7 +21556,7 @@ function Filter$2(props) {
21350
21556
  });
21351
21557
  };
21352
21558
  const handleChangeValue = value => {
21353
- handleChange(id, {
21559
+ handleChange(position, {
21354
21560
  id,
21355
21561
  value: {
21356
21562
  ...filter.value,
@@ -21358,7 +21564,12 @@ function Filter$2(props) {
21358
21564
  }
21359
21565
  });
21360
21566
  };
21361
- const handleRemove = () => onRemove(id);
21567
+ const handleRemove = () => onRemove === null || onRemove === void 0 ? void 0 : onRemove(position);
21568
+ React__default.useEffect(() => {
21569
+ if (ref.current && !id) {
21570
+ ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.
21571
+ }
21572
+ }, [id]);
21362
21573
  return /*#__PURE__*/React__default.createElement("div", {
21363
21574
  className: "flex items-start gap-2"
21364
21575
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -21367,7 +21578,8 @@ function Filter$2(props) {
21367
21578
  allColumns: allColumns,
21368
21579
  filters: filters,
21369
21580
  onChange: handleChangeColumn,
21370
- value: id
21581
+ value: id,
21582
+ ref: ref
21371
21583
  }), /*#__PURE__*/React__default.createElement(FilterComparator$1, {
21372
21584
  column: column,
21373
21585
  onChange: handleChangeComparator,
@@ -21377,18 +21589,25 @@ function Filter$2(props) {
21377
21589
  comparator: comparator,
21378
21590
  onChange: handleChangeValue,
21379
21591
  value: value
21380
- }), /*#__PURE__*/React__default.createElement(IconButton, {
21592
+ }), onRemove ? /*#__PURE__*/React__default.createElement(IconButton, {
21381
21593
  appearance: "discrete",
21382
21594
  className: "ml-auto",
21383
21595
  icon: "close",
21384
21596
  onClick: handleRemove
21385
- }));
21597
+ }) : null);
21386
21598
  }
21387
21599
 
21388
21600
  function sortByHeader$1(a, b) {
21389
21601
  var _a$columnDef$meta, _a$columnDef$meta$hea, _a$columnDef$meta$hea2, _b$columnDef$meta;
21390
21602
  return (_a$columnDef$meta = a.columnDef.meta) === null || _a$columnDef$meta === void 0 ? void 0 : (_a$columnDef$meta$hea = _a$columnDef$meta.header) === null || _a$columnDef$meta$hea === void 0 ? void 0 : (_a$columnDef$meta$hea2 = _a$columnDef$meta$hea.localeCompare) === null || _a$columnDef$meta$hea2 === void 0 ? void 0 : _a$columnDef$meta$hea2.call(_a$columnDef$meta$hea, (_b$columnDef$meta = b.columnDef.meta) === null || _b$columnDef$meta === void 0 ? void 0 : _b$columnDef$meta.header);
21391
21603
  }
21604
+ const placeholderFilter$1 = {
21605
+ id: null,
21606
+ value: {
21607
+ comparator: Table3FilterComparator.Contains,
21608
+ value: undefined
21609
+ }
21610
+ };
21392
21611
  function FiltersButton(props) {
21393
21612
  const {
21394
21613
  total,
@@ -21408,41 +21627,28 @@ function FiltersButton(props) {
21408
21627
  shift: true
21409
21628
  };
21410
21629
  // state, since we "apply" filters
21411
- const [filters, setFilters] = React__default.useState(appliedFilters);
21412
- const [placeholderCount, setPlaceholderCount] = React__default.useState(1);
21630
+ const [filters, setFilters] = React__default.useState(appliedFilters.length ? appliedFilters : [placeholderFilter$1]);
21413
21631
  // filters
21414
- const handleChangeFilter = (currentId, filter) => {
21632
+ const handleChangeFilter = (position, filter) => {
21415
21633
  setFilters(currentFilters => {
21416
- const nextFilters = [...currentFilters];
21417
- const index = nextFilters.findIndex(f => f.id === currentId);
21418
- nextFilters[index] = filter;
21419
- return nextFilters;
21634
+ return currentFilters.map((current, index) => {
21635
+ if (index === position) {
21636
+ return filter;
21637
+ }
21638
+ return current;
21639
+ });
21420
21640
  });
21421
21641
  };
21422
- const handleRemoveFilter = columnId => {
21423
- if (filters.length === 1 && placeholderCount === 0) {
21424
- setPlaceholderCount(count => count + 1);
21642
+ const handleRemoveFilter = position => {
21643
+ if (filters.length === 1) {
21644
+ setFilters([placeholderFilter$1]);
21645
+ return;
21425
21646
  }
21426
- setFilters(currentFilters => currentFilters.filter(f => f.id !== columnId));
21427
- };
21428
- // placeholders
21429
- const handleCreateFilterFromPlaceholder = columnId => {
21430
- setFilters(currentFilters => [...currentFilters, {
21431
- id: columnId,
21432
- value: {
21433
- comparator: Table3FilterComparator.Contains,
21434
- value: undefined
21435
- }
21436
- }]);
21437
- handleRemovePlaceholder();
21647
+ setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));
21438
21648
  };
21439
- const handleCreatePlaceholder = () => {
21440
- setPlaceholderCount(count => count + 1);
21649
+ const handleCreateNew = () => {
21650
+ setFilters(filters.concat(placeholderFilter$1));
21441
21651
  };
21442
- const handleRemovePlaceholder = () => {
21443
- setPlaceholderCount(count => count - 1);
21444
- };
21445
- //
21446
21652
  const handleApply = () => {
21447
21653
  table.setColumnFilters(() => {
21448
21654
  const newFilters = filters.filter(f => {
@@ -21462,20 +21668,17 @@ function FiltersButton(props) {
21462
21668
  };
21463
21669
  const handleClear = () => {
21464
21670
  table.resetColumnFilters();
21465
- setFilters([]);
21466
- setPlaceholderCount(1);
21671
+ setFilters([placeholderFilter$1]);
21467
21672
  };
21468
21673
  const handleClose = React__default.useCallback(open => {
21469
21674
  if (!open) {
21470
- setFilters(appliedFilters);
21471
- setPlaceholderCount(appliedFilters.length === 0 ? 1 : 0);
21675
+ setFilters(appliedFilters.length === 0 ? [placeholderFilter$1] : appliedFilters);
21472
21676
  }
21473
21677
  }, [appliedFilters]);
21474
21678
  // Because filters can be reset from outside
21475
21679
  React__default.useEffect(() => {
21476
21680
  if (appliedFilters.length === 0) {
21477
- setFilters([]);
21478
- setPlaceholderCount(1);
21681
+ setFilters([placeholderFilter$1]);
21479
21682
  }
21480
21683
  }, [appliedFilters]);
21481
21684
  const buttonProps = {
@@ -21505,19 +21708,12 @@ function FiltersButton(props) {
21505
21708
  filters: filters,
21506
21709
  position: index,
21507
21710
  onChange: handleChangeFilter,
21508
- onRemove: handleRemoveFilter
21509
- }))), [...Array(placeholderCount)].map((_, index) => ( /*#__PURE__*/React__default.createElement(Placeholder$1, {
21510
- key: `placeholder_${index}`,
21511
- allColumns: allColumns,
21512
- filters: filters,
21513
- position: filters.length + index,
21514
- onCreate: handleCreateFilterFromPlaceholder,
21515
- onRemove: placeholderCount > 1 || filters.length > 0 ? handleRemovePlaceholder : undefined
21711
+ onRemove: filters.length > 0 && filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined
21516
21712
  }))), /*#__PURE__*/React__default.createElement("div", {
21517
21713
  className: "justify-start"
21518
21714
  }, /*#__PURE__*/React__default.createElement(Button$1, {
21519
21715
  appearance: "discrete",
21520
- onClick: handleCreatePlaceholder
21716
+ onClick: handleCreateNew
21521
21717
  }, "+ ", texts.table3.filters.buttons.addFilter))), /*#__PURE__*/React__default.createElement(Group, {
21522
21718
  className: "ml-auto"
21523
21719
  }, /*#__PURE__*/React__default.createElement(Popover.Close, null, /*#__PURE__*/React__default.createElement(Button$1, null, "Cancel")), /*#__PURE__*/React__default.createElement(Button$1, {
@@ -21867,6 +22063,7 @@ function PrintButton(props) {
21867
22063
  const buttonRef = React__default.useRef(null);
21868
22064
  const tableMeta = table.options.meta;
21869
22065
  const state = table.getState();
22066
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
21870
22067
  const {
21871
22068
  isWarningVisibleForLargeDatasets
21872
22069
  } = tableMeta.printing;
@@ -22045,6 +22242,7 @@ function PrintButton(props) {
22045
22242
  onAccept: handleWarningDialogAccept,
22046
22243
  onClose: handleWarningDialogClose,
22047
22244
  onCancel: handleWarningDialogCancel,
22245
+ // @ts-expect-error: fixing type issue while report and table3 TableMeta definitions live in parallel
22048
22246
  onVisibilityChange: tableMeta.printing.setIsWarningVisibleForLargeDatasets
22049
22247
  }));
22050
22248
  }
@@ -22324,7 +22522,7 @@ function Summary$1(props) {
22324
22522
  let label;
22325
22523
  let count;
22326
22524
  // row selection
22327
- const rowsSelectedLength = table.getIsAllRowsSelected() ? length : table.getSelectedRowModel().rows.length;
22525
+ const rowsSelectedLength = table.getSelectedRowModel().rows.length;
22328
22526
  if (rowsSelectedLength > 0) {
22329
22527
  label = texts.table3.footer.summary.selected;
22330
22528
  count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(rowsSelectedLength)), "\u00A0", texts.table3.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
@@ -22723,7 +22921,7 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
22723
22921
  const {
22724
22922
  table,
22725
22923
  length
22726
- } = useTable$2(props, internalRef);
22924
+ } = useTable$1(props, internalRef);
22727
22925
  useTableRefInstanceSetup(table, internalRef);
22728
22926
  React__default.useEffect(() => {
22729
22927
  if (props.autoFocus) {
@@ -22754,13 +22952,10 @@ const Table$1 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
22754
22952
  }, []);
22755
22953
  React__default.useEffect(() => {
22756
22954
  const handleKeyDown = event => {
22757
- const target = event.target;
22758
- const dialog = target.closest('[role="dialog"]');
22955
+ const trigger = event.target;
22759
22956
  // Select2 also have combobox role to align with W3C guidelines
22760
- const eventOriginatedFromCombobox = !!target.closest('[role="combobox"]:not([data-taco="Select2"])');
22761
- // Don't trigger global shortcuts on the table if event originated from a combobox or if table is
22762
- // outside the dialog
22763
- if (eventOriginatedFromCombobox || dialog && !(dialog !== null && dialog !== void 0 && dialog.contains(internalRef.current)) || tableMeta.shortcutsState.isPaused) {
22957
+ const eventOriginatedFromCombobox = !!trigger.closest('[role="combobox"]:not([data-taco="Select2"])');
22958
+ if (tableMeta.shortcutsState.isPaused || isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, internalRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, internalRef.current) || eventOriginatedFromCombobox) {
22764
22959
  return;
22765
22960
  }
22766
22961
  const rows = table.getRowModel().rows;