@coveord/plasma-mantine 53.1.4 → 54.0.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 (354) hide show
  1. package/.eslintrc.js +1 -5
  2. package/.turbo/turbo-build.log +3 -3
  3. package/.turbo/turbo-test.log +36 -35
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/cjs/components/button/Button.d.ts +1 -2
  6. package/dist/cjs/components/button/Button.d.ts.map +1 -1
  7. package/dist/cjs/components/button/Button.js.map +1 -1
  8. package/dist/cjs/components/code-editor/CodeEditor.d.ts.map +1 -1
  9. package/dist/cjs/components/code-editor/CodeEditor.js +2 -4
  10. package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
  11. package/dist/cjs/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  12. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +10 -2
  13. package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  14. package/dist/cjs/components/inline-confirm/InlineConfirm.js +2 -1
  15. package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
  16. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
  17. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
  18. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js +5 -5
  19. package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
  20. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
  21. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
  22. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js +3 -3
  23. package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
  24. package/dist/cjs/components/table/Table.d.ts +68 -55
  25. package/dist/cjs/components/table/Table.d.ts.map +1 -1
  26. package/dist/cjs/components/table/Table.js +129 -174
  27. package/dist/cjs/components/table/Table.js.map +1 -1
  28. package/dist/cjs/components/table/Table.module.css +8 -1
  29. package/dist/cjs/components/table/Table.types.d.ts +52 -147
  30. package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
  31. package/dist/cjs/components/table/TableContext.d.ts +15 -10
  32. package/dist/cjs/components/table/TableContext.d.ts.map +1 -1
  33. package/dist/cjs/components/table/TableContext.js +5 -20
  34. package/dist/cjs/components/table/TableContext.js.map +1 -1
  35. package/dist/cjs/components/table/index.d.ts +3 -3
  36. package/dist/cjs/components/table/index.d.ts.map +1 -1
  37. package/dist/cjs/components/table/index.js +5 -1
  38. package/dist/cjs/components/table/index.js.map +1 -1
  39. package/dist/cjs/components/table/layouts/TableLayoutControl.js +6 -6
  40. package/dist/cjs/components/table/layouts/TableLayoutControl.js.map +1 -1
  41. package/dist/cjs/components/table/layouts/TableLayouts.d.ts +1 -22
  42. package/dist/cjs/components/table/layouts/TableLayouts.d.ts.map +1 -1
  43. package/dist/cjs/components/table/layouts/TableLayouts.js.map +1 -1
  44. package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
  45. package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
  46. package/dist/cjs/components/table/layouts/row-layout/RowLayout.js.map +1 -1
  47. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
  48. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
  49. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js +17 -18
  50. package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
  51. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
  52. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  53. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js +9 -8
  54. package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  55. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
  56. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
  57. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js +3 -9
  58. package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
  59. package/dist/cjs/components/table/table-actions/TableActionContext.d.ts +9 -0
  60. package/dist/cjs/components/table/table-actions/TableActionContext.d.ts.map +1 -0
  61. package/dist/cjs/components/table/table-actions/TableActionContext.js +24 -0
  62. package/dist/cjs/components/table/table-actions/TableActionContext.js.map +1 -0
  63. package/dist/cjs/components/table/table-actions/TableActionItem.d.ts +44 -0
  64. package/dist/cjs/components/table/table-actions/TableActionItem.d.ts.map +1 -0
  65. package/dist/cjs/components/table/table-actions/TableActionItem.js +59 -0
  66. package/dist/cjs/components/table/table-actions/TableActionItem.js.map +1 -0
  67. package/dist/cjs/components/table/table-actions/TableActionsList.d.ts +37 -0
  68. package/dist/cjs/components/table/table-actions/TableActionsList.d.ts.map +1 -0
  69. package/dist/cjs/components/table/table-actions/TableActionsList.js +217 -0
  70. package/dist/cjs/components/table/table-actions/TableActionsList.js.map +1 -0
  71. package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts +11 -0
  72. package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
  73. package/dist/cjs/components/table/table-actions/TableHeaderActions.js +59 -0
  74. package/dist/cjs/components/table/table-actions/TableHeaderActions.js.map +1 -0
  75. package/dist/cjs/components/table/table-actions/index.d.ts +3 -0
  76. package/dist/cjs/components/table/table-actions/index.d.ts.map +1 -0
  77. package/dist/cjs/components/table/table-actions/index.js +9 -0
  78. package/dist/cjs/components/table/table-actions/index.js.map +1 -0
  79. package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts +6 -0
  80. package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
  81. package/dist/cjs/components/table/table-column/TableActionsColumn.js +53 -0
  82. package/dist/cjs/components/table/table-column/TableActionsColumn.js.map +1 -0
  83. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
  84. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js +6 -2
  85. package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  86. package/dist/cjs/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
  87. package/dist/cjs/components/table/table-column/TableSelectableColumn.js +4 -0
  88. package/dist/cjs/components/table/table-column/TableSelectableColumn.js.map +1 -1
  89. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
  90. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
  91. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js +24 -20
  92. package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
  93. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
  94. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
  95. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js +7 -7
  96. package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
  97. package/dist/cjs/components/table/table-filter/TableFilter.d.ts +1 -2
  98. package/dist/cjs/components/table/table-filter/TableFilter.d.ts.map +1 -1
  99. package/dist/cjs/components/table/table-filter/TableFilter.js +11 -16
  100. package/dist/cjs/components/table/table-filter/TableFilter.js.map +1 -1
  101. package/dist/cjs/components/table/table-header/TableHeader.d.ts +7 -2
  102. package/dist/cjs/components/table/table-header/TableHeader.d.ts.map +1 -1
  103. package/dist/cjs/components/table/table-header/TableHeader.js +15 -12
  104. package/dist/cjs/components/table/table-header/TableHeader.js.map +1 -1
  105. package/dist/cjs/components/table/table-header/Th.d.ts +1 -2
  106. package/dist/cjs/components/table/table-header/Th.d.ts.map +1 -1
  107. package/dist/cjs/components/table/table-header/Th.js +7 -3
  108. package/dist/cjs/components/table/table-header/Th.js.map +1 -1
  109. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
  110. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
  111. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js +6 -9
  112. package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
  113. package/dist/cjs/components/table/table-no-data/TableNoData.d.ts +6 -0
  114. package/dist/cjs/components/table/table-no-data/TableNoData.d.ts.map +1 -0
  115. package/dist/cjs/components/table/{table-consumer/TableConsumer.js → table-no-data/TableNoData.js} +4 -4
  116. package/dist/cjs/components/table/table-no-data/TableNoData.js.map +1 -0
  117. package/dist/cjs/components/table/table-pagination/TablePagination.d.ts.map +1 -1
  118. package/dist/cjs/components/table/table-pagination/TablePagination.js +9 -11
  119. package/dist/cjs/components/table/table-pagination/TablePagination.js.map +1 -1
  120. package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts +0 -4
  121. package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
  122. package/dist/cjs/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  123. package/dist/cjs/components/table/table-per-page/TablePerPage.js +16 -16
  124. package/dist/cjs/components/table/table-per-page/TablePerPage.js.map +1 -1
  125. package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts +1 -2
  126. package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
  127. package/dist/cjs/components/table/table-predicate/TablePredicate.js +12 -14
  128. package/dist/cjs/components/table/table-predicate/TablePredicate.js.map +1 -1
  129. package/dist/cjs/components/table/use-table.d.ts +182 -0
  130. package/dist/cjs/components/table/use-table.d.ts.map +1 -0
  131. package/dist/cjs/components/table/use-table.js +145 -0
  132. package/dist/cjs/components/table/use-table.js.map +1 -0
  133. package/dist/cjs/index.d.ts +11 -1
  134. package/dist/cjs/index.d.ts.map +1 -1
  135. package/dist/cjs/index.js.map +1 -1
  136. package/dist/cjs/theme/Theme.d.ts.map +1 -1
  137. package/dist/cjs/theme/Theme.js +0 -1
  138. package/dist/cjs/theme/Theme.js.map +1 -1
  139. package/dist/esm/components/button/Button.d.ts +1 -2
  140. package/dist/esm/components/button/Button.d.ts.map +1 -1
  141. package/dist/esm/components/button/Button.js.map +1 -1
  142. package/dist/esm/components/code-editor/CodeEditor.d.ts.map +1 -1
  143. package/dist/esm/components/code-editor/CodeEditor.js +2 -4
  144. package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
  145. package/dist/esm/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  146. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +10 -2
  147. package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
  148. package/dist/esm/components/inline-confirm/InlineConfirm.js +1 -1
  149. package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
  150. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
  151. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
  152. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js +4 -4
  153. package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
  154. package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
  155. package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
  156. package/dist/esm/components/inline-confirm/InlineConfirmTarget.js +2 -2
  157. package/dist/esm/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
  158. package/dist/esm/components/table/Table.d.ts +68 -55
  159. package/dist/esm/components/table/Table.d.ts.map +1 -1
  160. package/dist/esm/components/table/Table.js +122 -157
  161. package/dist/esm/components/table/Table.js.map +1 -1
  162. package/dist/esm/components/table/Table.module.css +8 -1
  163. package/dist/esm/components/table/Table.types.d.ts +52 -147
  164. package/dist/esm/components/table/Table.types.d.ts.map +1 -1
  165. package/dist/esm/components/table/Table.types.js.map +1 -1
  166. package/dist/esm/components/table/TableContext.d.ts +15 -10
  167. package/dist/esm/components/table/TableContext.d.ts.map +1 -1
  168. package/dist/esm/components/table/TableContext.js +1 -10
  169. package/dist/esm/components/table/TableContext.js.map +1 -1
  170. package/dist/esm/components/table/index.d.ts +3 -3
  171. package/dist/esm/components/table/index.d.ts.map +1 -1
  172. package/dist/esm/components/table/index.js +2 -1
  173. package/dist/esm/components/table/index.js.map +1 -1
  174. package/dist/esm/components/table/layouts/TableLayoutControl.js +4 -4
  175. package/dist/esm/components/table/layouts/TableLayoutControl.js.map +1 -1
  176. package/dist/esm/components/table/layouts/TableLayouts.d.ts +1 -22
  177. package/dist/esm/components/table/layouts/TableLayouts.d.ts.map +1 -1
  178. package/dist/esm/components/table/layouts/TableLayouts.js.map +1 -1
  179. package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
  180. package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
  181. package/dist/esm/components/table/layouts/row-layout/RowLayout.js.map +1 -1
  182. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
  183. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
  184. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js +13 -11
  185. package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
  186. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
  187. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
  188. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js +5 -5
  189. package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
  190. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
  191. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
  192. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js +2 -8
  193. package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
  194. package/dist/esm/components/table/table-actions/TableActionContext.d.ts +9 -0
  195. package/dist/esm/components/table/table-actions/TableActionContext.d.ts.map +1 -0
  196. package/dist/esm/components/table/table-actions/TableActionContext.js +4 -0
  197. package/dist/esm/components/table/table-actions/TableActionContext.js.map +1 -0
  198. package/dist/esm/components/table/table-actions/TableActionItem.d.ts +44 -0
  199. package/dist/esm/components/table/table-actions/TableActionItem.d.ts.map +1 -0
  200. package/dist/esm/components/table/table-actions/TableActionItem.js +40 -0
  201. package/dist/esm/components/table/table-actions/TableActionItem.js.map +1 -0
  202. package/dist/esm/components/table/table-actions/TableActionsList.d.ts +37 -0
  203. package/dist/esm/components/table/table-actions/TableActionsList.d.ts.map +1 -0
  204. package/dist/esm/components/table/table-actions/TableActionsList.js +187 -0
  205. package/dist/esm/components/table/table-actions/TableActionsList.js.map +1 -0
  206. package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts +11 -0
  207. package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
  208. package/dist/esm/components/table/table-actions/TableHeaderActions.js +43 -0
  209. package/dist/esm/components/table/table-actions/TableHeaderActions.js.map +1 -0
  210. package/dist/esm/components/table/table-actions/index.d.ts +3 -0
  211. package/dist/esm/components/table/table-actions/index.d.ts.map +1 -0
  212. package/dist/esm/components/table/table-actions/index.js +4 -0
  213. package/dist/esm/components/table/table-actions/index.js.map +1 -0
  214. package/dist/esm/components/table/table-column/TableActionsColumn.d.ts +6 -0
  215. package/dist/esm/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
  216. package/dist/esm/components/table/table-column/TableActionsColumn.js +40 -0
  217. package/dist/esm/components/table/table-column/TableActionsColumn.js.map +1 -0
  218. package/dist/esm/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
  219. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +7 -3
  220. package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
  221. package/dist/esm/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
  222. package/dist/esm/components/table/table-column/TableSelectableColumn.js +4 -0
  223. package/dist/esm/components/table/table-column/TableSelectableColumn.js.map +1 -1
  224. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
  225. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
  226. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js +22 -20
  227. package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
  228. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
  229. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
  230. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js +8 -8
  231. package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
  232. package/dist/esm/components/table/table-filter/TableFilter.d.ts +1 -2
  233. package/dist/esm/components/table/table-filter/TableFilter.d.ts.map +1 -1
  234. package/dist/esm/components/table/table-filter/TableFilter.js +14 -18
  235. package/dist/esm/components/table/table-filter/TableFilter.js.map +1 -1
  236. package/dist/esm/components/table/table-header/TableHeader.d.ts +7 -2
  237. package/dist/esm/components/table/table-header/TableHeader.d.ts.map +1 -1
  238. package/dist/esm/components/table/table-header/TableHeader.js +15 -13
  239. package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
  240. package/dist/esm/components/table/table-header/Th.d.ts +1 -2
  241. package/dist/esm/components/table/table-header/Th.d.ts.map +1 -1
  242. package/dist/esm/components/table/table-header/Th.js +8 -4
  243. package/dist/esm/components/table/table-header/Th.js.map +1 -1
  244. package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
  245. package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
  246. package/dist/esm/components/table/table-last-updated/TableLastUpdated.js +6 -8
  247. package/dist/esm/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
  248. package/dist/esm/components/table/table-no-data/TableNoData.d.ts +6 -0
  249. package/dist/esm/components/table/table-no-data/TableNoData.d.ts.map +1 -0
  250. package/dist/esm/components/table/table-no-data/TableNoData.js +6 -0
  251. package/dist/esm/components/table/table-no-data/TableNoData.js.map +1 -0
  252. package/dist/esm/components/table/table-pagination/TablePagination.d.ts.map +1 -1
  253. package/dist/esm/components/table/table-pagination/TablePagination.js +10 -13
  254. package/dist/esm/components/table/table-pagination/TablePagination.js.map +1 -1
  255. package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts +0 -4
  256. package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
  257. package/dist/esm/components/table/table-pagination/TablePagination.types.js.map +1 -1
  258. package/dist/esm/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
  259. package/dist/esm/components/table/table-per-page/TablePerPage.js +13 -12
  260. package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
  261. package/dist/esm/components/table/table-predicate/TablePredicate.d.ts +1 -2
  262. package/dist/esm/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
  263. package/dist/esm/components/table/table-predicate/TablePredicate.js +14 -18
  264. package/dist/esm/components/table/table-predicate/TablePredicate.js.map +1 -1
  265. package/dist/esm/components/table/use-table.d.ts +182 -0
  266. package/dist/esm/components/table/use-table.d.ts.map +1 -0
  267. package/dist/esm/components/table/use-table.js +122 -0
  268. package/dist/esm/components/table/use-table.js.map +1 -0
  269. package/dist/esm/index.d.ts +11 -1
  270. package/dist/esm/index.d.ts.map +1 -1
  271. package/dist/esm/index.js.map +1 -1
  272. package/dist/esm/theme/Theme.d.ts.map +1 -1
  273. package/dist/esm/theme/Theme.js +0 -1
  274. package/dist/esm/theme/Theme.js.map +1 -1
  275. package/package.json +36 -22
  276. package/src/__tests__/Utils.tsx +3 -1
  277. package/src/components/button/Button.tsx +3 -1
  278. package/src/components/code-editor/CodeEditor.tsx +1 -7
  279. package/src/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
  280. package/src/components/inline-confirm/InlineConfirm.tsx +12 -4
  281. package/src/components/inline-confirm/InlineConfirmPrompt.tsx +6 -9
  282. package/src/components/inline-confirm/InlineConfirmTarget.tsx +9 -4
  283. package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +37 -12
  284. package/src/components/table/Table.module.css +8 -1
  285. package/src/components/table/Table.tsx +148 -170
  286. package/src/components/table/Table.types.ts +57 -160
  287. package/src/components/table/TableContext.tsx +17 -16
  288. package/src/components/table/__tests__/Table.spec.tsx +176 -200
  289. package/src/components/table/__tests__/TableActions.spec.tsx +142 -31
  290. package/src/components/table/__tests__/TableCollapsibleColumn.spec.tsx +88 -0
  291. package/src/components/table/__tests__/TableColumnsSelector.spec.tsx +160 -119
  292. package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +13 -17
  293. package/src/components/table/__tests__/TableFilter.spec.tsx +52 -96
  294. package/src/components/table/__tests__/TableLastUpdated.spec.tsx +18 -37
  295. package/src/components/table/__tests__/TablePagination.spec.tsx +84 -100
  296. package/src/components/table/__tests__/TablePerPage.spec.tsx +81 -104
  297. package/src/components/table/__tests__/TablePredicate.spec.tsx +26 -80
  298. package/src/components/table/__tests__/Th.spec.tsx +24 -19
  299. package/src/components/table/index.ts +3 -9
  300. package/src/components/table/layouts/TableLayoutControl.tsx +4 -4
  301. package/src/components/table/layouts/TableLayouts.tsx +0 -22
  302. package/src/components/table/layouts/__tests__/RowLayout.spec.tsx +210 -182
  303. package/src/components/table/layouts/row-layout/RowLayout.tsx +2 -2
  304. package/src/components/table/layouts/row-layout/RowLayoutBody.tsx +17 -17
  305. package/src/components/table/layouts/row-layout/RowLayoutHeader.tsx +18 -9
  306. package/src/components/table/layouts/row-layout/RowLayoutIcon.tsx +3 -8
  307. package/src/components/table/table-actions/TableActionContext.ts +9 -0
  308. package/src/components/table/table-actions/TableActionItem.tsx +80 -0
  309. package/src/components/table/table-actions/TableActionsList.tsx +209 -0
  310. package/src/components/table/table-actions/TableHeaderActions.tsx +56 -0
  311. package/src/components/table/table-actions/index.ts +2 -0
  312. package/src/components/table/table-column/TableActionsColumn.tsx +39 -0
  313. package/src/components/table/table-column/TableCollapsibleColumn.tsx +7 -3
  314. package/src/components/table/table-column/TableSelectableColumn.tsx +4 -0
  315. package/src/components/table/table-columns-selector/TableColumnsSelector.tsx +33 -28
  316. package/src/components/table/table-date-range-picker/TableDateRangePicker.tsx +9 -11
  317. package/src/components/table/table-filter/TableFilter.tsx +12 -18
  318. package/src/components/table/table-header/TableHeader.tsx +32 -15
  319. package/src/components/table/table-header/Th.tsx +8 -7
  320. package/src/components/table/table-last-updated/TableLastUpdated.tsx +7 -10
  321. package/src/components/table/table-no-data/TableNoData.tsx +7 -0
  322. package/src/components/table/table-pagination/TablePagination.tsx +8 -11
  323. package/src/components/table/table-pagination/TablePagination.types.ts +0 -4
  324. package/src/components/table/table-per-page/TablePerPage.tsx +8 -10
  325. package/src/components/table/table-predicate/TablePredicate.tsx +21 -17
  326. package/src/components/table/use-table.ts +323 -0
  327. package/src/index.ts +11 -1
  328. package/src/theme/Theme.tsx +0 -1
  329. package/dist/cjs/components/table/table-actions/TableActions.d.ts +0 -38
  330. package/dist/cjs/components/table/table-actions/TableActions.d.ts.map +0 -1
  331. package/dist/cjs/components/table/table-actions/TableActions.js +0 -47
  332. package/dist/cjs/components/table/table-actions/TableActions.js.map +0 -1
  333. package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts +0 -5
  334. package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
  335. package/dist/cjs/components/table/table-consumer/TableConsumer.js.map +0 -1
  336. package/dist/cjs/hooks/useRowSelection.d.ts +0 -10
  337. package/dist/cjs/hooks/useRowSelection.d.ts.map +0 -1
  338. package/dist/cjs/hooks/useRowSelection.js +0 -80
  339. package/dist/cjs/hooks/useRowSelection.js.map +0 -1
  340. package/dist/esm/components/table/table-actions/TableActions.d.ts +0 -38
  341. package/dist/esm/components/table/table-actions/TableActions.d.ts.map +0 -1
  342. package/dist/esm/components/table/table-actions/TableActions.js +0 -29
  343. package/dist/esm/components/table/table-actions/TableActions.js.map +0 -1
  344. package/dist/esm/components/table/table-consumer/TableConsumer.d.ts +0 -5
  345. package/dist/esm/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
  346. package/dist/esm/components/table/table-consumer/TableConsumer.js +0 -6
  347. package/dist/esm/components/table/table-consumer/TableConsumer.js.map +0 -1
  348. package/dist/esm/hooks/useRowSelection.d.ts +0 -10
  349. package/dist/esm/hooks/useRowSelection.d.ts.map +0 -1
  350. package/dist/esm/hooks/useRowSelection.js +0 -59
  351. package/dist/esm/hooks/useRowSelection.js.map +0 -1
  352. package/src/components/table/table-actions/TableActions.tsx +0 -67
  353. package/src/components/table/table-consumer/TableConsumer.tsx +0 -3
  354. package/src/hooks/useRowSelection.ts +0 -76
@@ -1,22 +1,23 @@
1
1
  import {Box, Center, Factory, Loader, useProps, useStyles} from '@mantine/core';
2
- import {useForm} from '@mantine/form';
3
- import {useDidUpdate, useMergedRef} from '@mantine/hooks';
2
+ import {useClickOutside, useMergedRef} from '@mantine/hooks';
4
3
  import {
5
4
  ColumnDef,
5
+ Row,
6
+ RowSelectionState,
6
7
  defaultColumnSizing,
7
8
  getCoreRowModel,
8
- Row,
9
- TableState as TanstackTableState,
10
9
  useReactTable,
11
10
  } from '@tanstack/react-table';
12
- import debounce from 'lodash.debounce';
13
- import defaultsDeep from 'lodash.defaultsdeep';
14
- import {Children, cloneElement, Dispatch, ForwardedRef, ReactElement, useCallback, useEffect, useState} from 'react';
15
-
16
- import {useRowSelection} from '../../hooks/useRowSelection';
11
+ import isEqual from 'fast-deep-equal';
12
+ import {Children, ForwardedRef, ReactElement, useRef} from 'react';
17
13
  import {CustomComponentThemeExtend, identity} from '../../utils';
14
+ import classes from './Table.module.css';
15
+ import {TableLayout, TableProps} from './Table.types';
16
+ import {TableProvider} from './TableContext';
18
17
  import {TableLayouts} from './layouts/TableLayouts';
19
- import {TableActions, TableActionsStylesNames} from './table-actions/TableActions';
18
+ import {TableActionItem, TableActionItemStylesNames, TableHeaderActionsStylesNames} from './table-actions';
19
+ import {TableActionsListStylesNames} from './table-actions/TableActionsList';
20
+ import {TableActionsColumn} from './table-column/TableActionsColumn';
20
21
  import {
21
22
  TableAccordionColumn,
22
23
  TableCollapsibleColumn,
@@ -24,7 +25,6 @@ import {
24
25
  } from './table-column/TableCollapsibleColumn';
25
26
  import {TableSelectableColumn} from './table-column/TableSelectableColumn';
26
27
  import {TableColumnsSelector, TableColumnsSelectorStylesNames} from './table-columns-selector/TableColumnsSelector';
27
- import {TableConsumer} from './table-consumer/TableConsumer';
28
28
  import {TableDateRangePicker, TableDateRangePickerStylesNames} from './table-date-range-picker/TableDateRangePicker';
29
29
  import {TableFilter, TableFilterStylesNames} from './table-filter/TableFilter';
30
30
  import {TableFooter} from './table-footer/TableFooter';
@@ -32,19 +32,20 @@ import {TableHeader, TableHeaderStylesNames} from './table-header/TableHeader';
32
32
  import {TableThStylesNames} from './table-header/Th';
33
33
  import {TableLastUpdated, TableLastUpdatedStylesNames} from './table-last-updated/TableLastUpdated';
34
34
  import {TableLoading} from './table-loading/TableLoading';
35
+ import {TableNoData} from './table-no-data/TableNoData';
35
36
  import {TablePagination} from './table-pagination/TablePagination';
36
37
  import {TablePerPage} from './table-per-page/TablePerPage';
37
38
  import {TablePredicate, TablePredicateStylesNames} from './table-predicate/TablePredicate';
38
- import classes from './Table.module.css';
39
- import {TableFormType, TableLayout, TableProps, TableState} from './Table.types';
40
- import {TableContext, TableStylesProvider} from './TableContext';
39
+ import {TableState} from './use-table';
41
40
 
42
41
  type TableStylesNames =
43
42
  | 'root'
44
43
  | 'table'
45
44
  | 'header'
46
45
  | 'body'
47
- | TableActionsStylesNames
46
+ | TableHeaderActionsStylesNames
47
+ | TableActionsListStylesNames
48
+ | TableActionItemStylesNames
48
49
  | TableCollapsibleColumnStylesNames
49
50
  | TableDateRangePickerStylesNames
50
51
  | TableFilterStylesNames
@@ -59,49 +60,47 @@ export type PlasmaTableFactory = Factory<{
59
60
  ref: HTMLDivElement;
60
61
  stylesNames: TableStylesNames;
61
62
  staticComponents: {
62
- Actions: typeof TableActions;
63
+ AccordionColumn: typeof TableAccordionColumn;
64
+ ActionsColumn: typeof TableActionsColumn;
65
+ ActionItem: typeof TableActionItem;
66
+ CollapsibleColumn: typeof TableCollapsibleColumn;
67
+ ColumnsSelector: typeof TableColumnsSelector;
68
+ DateRangePicker: typeof TableDateRangePicker;
63
69
  Filter: typeof TableFilter;
64
70
  Footer: typeof TableFooter;
65
71
  Header: typeof TableHeader;
66
72
  LastUpdated: typeof TableLastUpdated;
73
+ Layouts: typeof TableLayouts;
74
+ Loading: typeof TableLoading;
75
+ NoData: typeof TableNoData;
67
76
  Pagination: typeof TablePagination;
68
77
  PerPage: typeof TablePerPage;
69
78
  Predicate: typeof TablePredicate;
70
- DateRangePicker: typeof TableDateRangePicker;
71
- CollapsibleColumn: typeof TableCollapsibleColumn;
72
- ColumnsSelector: typeof TableColumnsSelector;
73
- AccordionColumn: typeof TableAccordionColumn;
74
- Consumer: typeof TableConsumer;
75
- Loading: typeof TableLoading;
76
- Layouts: typeof TableLayouts;
77
79
  };
78
80
  }>;
79
81
 
80
82
  const defaultProps: Partial<TableProps<unknown>> = {
81
83
  layouts: [TableLayouts.Rows as TableLayout],
84
+ layoutProps: {},
82
85
  loading: false,
83
- multiRowSelectionEnabled: false,
84
- initialState: {},
86
+ additionalRootNodes: [],
85
87
  options: {},
88
+ getRowActions: () => [],
86
89
  };
87
90
 
88
91
  export const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {
89
92
  const {
93
+ store,
90
94
  data,
91
95
  getRowId,
92
- noDataChildren,
93
- getExpandChildren,
94
- initialState,
96
+ getRowAttributes,
97
+ getRowExpandedContent,
98
+ getRowActions,
95
99
  columns,
96
100
  layouts,
97
- onMount,
98
- onChange,
101
+ layoutProps,
99
102
  children,
100
103
  loading,
101
- doubleClickAction,
102
- multiRowSelectionEnabled,
103
- disableRowSelection,
104
- onRowSelectionChange,
105
104
  additionalRootNodes,
106
105
  options,
107
106
  ref,
@@ -129,85 +128,86 @@ export const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElem
129
128
  const convertedChildren = Children.toArray(children) as ReactElement[];
130
129
  const header = convertedChildren.find((child) => child.type === TableHeader);
131
130
  const footer = convertedChildren.find((child) => child.type === TableFooter);
132
- const consumer = convertedChildren.find((child) => child.type === TableConsumer);
133
131
  const lastUpdated = convertedChildren.find((child) => child.type === TableLastUpdated);
134
-
135
- const {predicates, dateRange, ...initialStateWithoutForm} = initialState;
136
- const form = useForm<TableFormType>({
137
- initialValues: {
138
- predicates: initialState?.predicates ?? {},
139
- dateRange: initialState?.dateRange ?? [null, null],
140
- layout: initialState?.layout ?? layouts[0].displayName,
141
- },
142
- });
132
+ const noData = convertedChildren.find((child) => child.type === TableNoData);
143
133
 
144
134
  const table = useReactTable({
145
- initialState: defaultsDeep(initialStateWithoutForm, {
146
- pagination: {pageSize: TablePerPage.DEFAULT_SIZE},
147
- globalFilter: '',
148
- }),
149
135
  data,
150
- columns: multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,
136
+ state: {
137
+ globalFilter: store.state.globalFilter,
138
+ sorting: store.state.sorting,
139
+ pagination: store.state.pagination,
140
+ columnVisibility: store.state.columnVisibility,
141
+ expanded: store.state.expanded,
142
+ },
143
+ onGlobalFilterChange: store.setGlobalFilter,
144
+ onExpandedChange: store.setExpanded,
145
+ onSortingChange: store.setSorting,
146
+ onPaginationChange: store.setPagination,
147
+ onColumnVisibilityChange: store.setColumnVisibility,
148
+ columns: store.multiRowSelectionEnabled ? [TableSelectableColumn as ColumnDef<T>].concat(columns) : columns,
151
149
  getCoreRowModel: getCoreRowModel(),
152
150
  manualPagination: options?.getPaginationRowModel === undefined,
153
- enableMultiRowSelection: !!multiRowSelectionEnabled,
151
+ enableMultiRowSelection: !!store.multiRowSelectionEnabled,
154
152
  getRowId,
155
- getRowCanExpand: (row: Row<T>) => !!getExpandChildren?.(row.original) ?? false,
153
+ getRowCanExpand: (row: Row<T>) => !!getRowExpandedContent?.(row.original, row.index, row) ?? false,
156
154
  enableRowSelection: !loading,
157
155
  defaultColumn: {
158
156
  size: undefined,
159
157
  minSize: defaultColumnSizing.minSize,
160
158
  maxSize: defaultColumnSizing.maxSize,
161
159
  },
160
+ rowCount: options?.getFilteredRowModel ? undefined : store.state.totalEntries,
162
161
  ...options,
163
162
  });
164
163
 
165
- const getAllColumns = table.getAllFlatColumns;
166
-
167
- const [state, setState] = useState<TableState<T>>(table.initialState as TableState<T>);
168
164
  table.setOptions((prev) => ({
169
165
  ...prev,
170
- state: state as TanstackTableState,
171
- onStateChange: setState as Dispatch<React.SetStateAction<TanstackTableState>>,
172
- }));
173
- const {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef} = useRowSelection(table, {
174
- multiRowSelectionEnabled,
175
- onRowSelectionChange,
176
- additionalRootNodes,
177
- });
178
- const containerRef = useMergedRef(outsideClickRef, ref);
179
- const isFiltered =
180
- !!state.globalFilter ||
181
- Object.keys(form.values?.predicates ?? {}).some((predicate) => !!form.values.predicates[predicate]) ||
182
- !!form.values.dateRange?.[0] ||
183
- !!form.values.dateRange?.[1];
166
+ state: {
167
+ ...prev.state,
168
+ rowSelection: store.state.rowSelection as RowSelectionState,
169
+ },
170
+ onRowSelectionChange: (rowSelectionUpdater) => {
171
+ store.setRowSelection((old) => {
172
+ const newRowSelection = (
173
+ rowSelectionUpdater instanceof Function
174
+ ? rowSelectionUpdater(old as RowSelectionState)
175
+ : rowSelectionUpdater
176
+ ) as TableState<T>['rowSelection'];
184
177
 
185
- const triggerChange = debounce(() => onChange?.({...state, ...form.values}), 500);
178
+ if (isEqual(old, newRowSelection)) {
179
+ return old;
180
+ }
186
181
 
187
- useEffect(() => {
188
- onMount?.({...state, ...form.values});
189
- return () => {
190
- triggerChange.cancel();
191
- };
192
- }, []);
182
+ const rows = table.getRowModel().rowsById;
193
183
 
194
- useDidUpdate(() => {
195
- triggerChange();
196
- if (!multiRowSelectionEnabled) {
197
- clearSelection();
198
- }
199
- }, [
200
- state.globalFilter,
201
- state.pagination,
202
- state.sorting,
203
- JSON.stringify(form.values.dateRange),
204
- JSON.stringify(form.values.predicates),
205
- ]);
184
+ Object.keys(newRowSelection).forEach((rowId) => {
185
+ if (newRowSelection[rowId] === true) {
186
+ if (!rows[rowId]) {
187
+ console.error(
188
+ 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.',
189
+ );
190
+ }
191
+ newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);
192
+ }
193
+ });
206
194
 
207
- const clearFilters = useCallback(() => {
208
- form.setFieldValue('predicates', initialState.predicates ?? {});
209
- setState((prevState) => ({...prevState, globalFilter: ''}));
210
- }, []);
195
+ return newRowSelection;
196
+ });
197
+ },
198
+ }));
199
+
200
+ const containerRef = useRef<HTMLDivElement>();
201
+ useClickOutside(
202
+ () => {
203
+ if (!store.multiRowSelectionEnabled) {
204
+ store.clearRowSelection();
205
+ }
206
+ },
207
+ null,
208
+ [containerRef.current, ...additionalRootNodes],
209
+ );
210
+ const mergedRef = useMergedRef(containerRef, ref);
211
211
 
212
212
  if (!data) {
213
213
  return (
@@ -217,81 +217,59 @@ export const Table = <T,>(props: TableProps<T> & {ref?: ForwardedRef<HTMLDivElem
217
217
  );
218
218
  }
219
219
 
220
- const Layout = layouts.find(({displayName}) => displayName === form.values.layout);
220
+ const Layout =
221
+ store.state.layout === null ? layouts[0] : layouts.find(({displayName}) => displayName === store.state.layout);
221
222
  const hasRows = table.getRowModel().rows.length > 0;
222
223
 
223
224
  return (
224
- <Box ref={containerRef} {...others} {...getStyles('root')}>
225
- <TableStylesProvider value={{getStyles}}>
226
- <TableContext.Provider
227
- value={{
228
- onChange: triggerChange,
229
- state,
230
- isFiltered,
231
- setState,
232
- clearFilters,
233
- getSelectedRow,
234
- getSelectedRows,
235
- clearSelection,
236
- form,
237
- containerRef: outsideClickRef,
238
- multiRowSelectionEnabled,
239
- getPageCount: table.getPageCount,
240
- getAllColumns,
241
- disableRowSelection,
242
- layouts,
243
- }}
244
- >
245
- <Layout>
246
- {consumer}
247
- {!hasRows && !isFiltered && !loading ? (
248
- noDataChildren
249
- ) : (
250
- <>
251
- <Box component="table" {...getStyles('table')} pb="sm">
252
- <thead {...getStyles('header')}>
253
- {!!header ? (
254
- <tr>
255
- <th style={{padding: 0}} colSpan={table.getAllColumns().length}>
256
- {header}
257
- </th>
258
- </tr>
259
- ) : null}
260
- <Layout.Header
261
- table={table}
262
- doubleClickAction={doubleClickAction}
263
- getExpandChildren={getExpandChildren}
225
+ <Box ref={mergedRef} {...others} {...getStyles('root')}>
226
+ <TableProvider<T> value={{getStyles, getRowActions, store, table, layouts, containerRef}}>
227
+ <Layout>
228
+ {store.isVacant && !store.isFiltered ? (
229
+ noData
230
+ ) : (
231
+ <>
232
+ <Box component="table" {...getStyles('table')} pb="sm" mod={{loading}}>
233
+ <thead {...getStyles('header')}>
234
+ {!!header ? (
235
+ <tr>
236
+ <th style={{padding: 0}} colSpan={table.getAllColumns().length}>
237
+ {header}
238
+ </th>
239
+ </tr>
240
+ ) : null}
241
+ <Layout.Header
242
+ getRowExpandedContent={getRowExpandedContent}
243
+ getRowAttributes={getRowAttributes}
244
+ loading={loading}
245
+ {...layoutProps}
246
+ />
247
+ </thead>
248
+ <tbody {...getStyles('body')}>
249
+ {hasRows ? (
250
+ <Layout.Body
251
+ getRowExpandedContent={getRowExpandedContent}
252
+ getRowAttributes={getRowAttributes}
264
253
  loading={loading}
254
+ {...layoutProps}
265
255
  />
266
- </thead>
267
- <tbody {...getStyles('body')}>
268
- {hasRows ? (
269
- <Layout.Body
270
- table={table}
271
- doubleClickAction={doubleClickAction}
272
- getExpandChildren={getExpandChildren}
273
- loading={loading}
274
- />
275
- ) : (
276
- <tr>
277
- <td colSpan={table.getAllColumns().length}>
278
- <TableLoading visible={loading}>{noDataChildren}</TableLoading>
279
- </td>
280
- </tr>
281
- )}
282
- </tbody>
283
- </Box>
284
- {footer}
285
- {lastUpdated
286
- ? cloneElement(lastUpdated, {
287
- dependencies: [data, ...(lastUpdated.props.dependencies ?? [])],
288
- })
289
- : null}
290
- </>
291
- )}
292
- </Layout>
293
- </TableContext.Provider>
294
- </TableStylesProvider>
256
+ ) : (
257
+ <tr>
258
+ <td colSpan={table.getAllColumns().length}>
259
+ <TableLoading visible={loading || !store.isFiltered}>
260
+ {noData}
261
+ </TableLoading>
262
+ </td>
263
+ </tr>
264
+ )}
265
+ </tbody>
266
+ </Box>
267
+ {footer}
268
+ {lastUpdated}
269
+ </>
270
+ )}
271
+ </Layout>
272
+ </TableProvider>
295
273
  </Box>
296
274
  );
297
275
  };
@@ -306,21 +284,21 @@ export const TableComponentsOrder = {
306
284
  LayoutControl: 1,
307
285
  };
308
286
 
309
- Table.Actions = TableActions;
287
+ Table.AccordionColumn = TableAccordionColumn;
288
+ Table.ActionsColumn = TableActionsColumn;
289
+ Table.ActionItem = TableActionItem;
290
+ Table.CollapsibleColumn = TableCollapsibleColumn;
291
+ Table.ColumnsSelector = TableColumnsSelector;
292
+ Table.DateRangePicker = TableDateRangePicker;
310
293
  Table.Filter = TableFilter;
311
294
  Table.Footer = TableFooter;
312
295
  Table.Header = TableHeader;
313
296
  Table.LastUpdated = TableLastUpdated;
297
+ Table.Layouts = TableLayouts;
298
+ Table.Loading = TableLoading;
299
+ Table.NoData = TableNoData;
314
300
  Table.Pagination = TablePagination;
315
- Table.Predicate = TablePredicate;
316
301
  Table.PerPage = TablePerPage;
317
302
  Table.Predicate = TablePredicate;
318
- Table.CollapsibleColumn = TableCollapsibleColumn;
319
- Table.AccordionColumn = TableAccordionColumn;
320
- Table.DateRangePicker = TableDateRangePicker;
321
- Table.Consumer = TableConsumer;
322
- Table.Loading = TableLoading;
323
- Table.ColumnsSelector = TableColumnsSelector;
324
- Table.Layouts = TableLayouts;
325
303
 
326
304
  Table.extend = identity as CustomComponentThemeExtend<PlasmaTableFactory>;