@antelopejs/interface-dms 0.9.1 → 0.10.1

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 (519) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +1 -1
  3. package/dist/attachments.js +3 -1
  4. package/dist/attachments.js.map +1 -1
  5. package/dist/auth/db/models/sessions.model.js +1 -5
  6. package/dist/auth/db/models/sessions.model.js.map +1 -1
  7. package/dist/auth/db/tables/users.table.js.map +1 -1
  8. package/dist/auth/index.js +4 -1
  9. package/dist/auth/index.js.map +1 -1
  10. package/dist/auth/internal/jwt-auth-decorator.js +7 -5
  11. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
  12. package/dist/auth/internal/request-authenticators.js +4 -1
  13. package/dist/auth/internal/request-authenticators.js.map +1 -1
  14. package/dist/auth/internal/request-principal.js +1 -0
  15. package/dist/auth/internal/request-principal.js.map +1 -1
  16. package/dist/base/activity-feed.d.ts +26 -26
  17. package/dist/base/banner.d.ts +14 -14
  18. package/dist/base/banner.js +1 -0
  19. package/dist/base/banner.js.map +1 -1
  20. package/dist/base/block-registry/helpers.js +1 -0
  21. package/dist/base/block-registry/helpers.js.map +1 -1
  22. package/dist/base/block-registry/internal/describe.js +107 -85
  23. package/dist/base/block-registry/internal/describe.js.map +1 -1
  24. package/dist/base/block-registry/presentation.js +0 -5
  25. package/dist/base/block-registry/presentation.js.map +1 -1
  26. package/dist/base/block-registry/registry.js +4 -1
  27. package/dist/base/block-registry/registry.js.map +1 -1
  28. package/dist/base/block-types.js +0 -2
  29. package/dist/base/block-types.js.map +1 -1
  30. package/dist/base/card.d.ts +8 -8
  31. package/dist/base/chart-card.d.ts +2 -2
  32. package/dist/base/chart-card.js +2 -2
  33. package/dist/base/chart-card.js.map +1 -1
  34. package/dist/base/chart-schemas.d.ts +66 -66
  35. package/dist/base/chart-schemas.js +19 -21
  36. package/dist/base/chart-schemas.js.map +1 -1
  37. package/dist/base/chart.js +1 -0
  38. package/dist/base/chart.js.map +1 -1
  39. package/dist/base/code-block.js +1 -0
  40. package/dist/base/code-block.js.map +1 -1
  41. package/dist/base/confirm-dialog.d.ts +2 -6
  42. package/dist/base/confirm-dialog.js +36 -15
  43. package/dist/base/confirm-dialog.js.map +1 -1
  44. package/dist/base/data-sources.js +6 -2
  45. package/dist/base/data-sources.js.map +1 -1
  46. package/dist/base/data-types/compare-types.js +82 -68
  47. package/dist/base/data-types/compare-types.js.map +1 -1
  48. package/dist/base/data-types/core.d.ts +8 -101
  49. package/dist/base/data-types/core.js +40 -143
  50. package/dist/base/data-types/core.js.map +1 -1
  51. package/dist/base/data-types/default/address.d.ts +126 -0
  52. package/dist/base/data-types/default/address.js +57 -0
  53. package/dist/base/data-types/default/address.js.map +1 -0
  54. package/dist/base/data-types/default/choices.d.ts +54 -0
  55. package/dist/base/data-types/default/choices.js +135 -0
  56. package/dist/base/data-types/default/choices.js.map +1 -0
  57. package/dist/base/data-types/default/files.d.ts +86 -0
  58. package/dist/base/data-types/default/files.js +214 -0
  59. package/dist/base/data-types/default/files.js.map +1 -0
  60. package/dist/base/data-types/default/inputs.d.ts +11 -0
  61. package/dist/base/data-types/default/inputs.js +26 -0
  62. package/dist/base/data-types/default/inputs.js.map +1 -0
  63. package/dist/base/data-types/default/numbers.d.ts +62 -0
  64. package/dist/base/data-types/default/numbers.js +287 -0
  65. package/dist/base/data-types/default/numbers.js.map +1 -0
  66. package/dist/base/data-types/default/options.d.ts +133 -0
  67. package/dist/base/data-types/default/options.js +3 -0
  68. package/dist/base/data-types/default/options.js.map +1 -0
  69. package/dist/base/data-types/default/relations.d.ts +267 -0
  70. package/dist/base/data-types/default/relations.js +149 -0
  71. package/dist/base/data-types/default/relations.js.map +1 -0
  72. package/dist/base/data-types/default/strings.d.ts +35 -0
  73. package/dist/base/data-types/default/strings.js +154 -0
  74. package/dist/base/data-types/default/strings.js.map +1 -0
  75. package/dist/base/data-types/default-types.d.ts +73 -753
  76. package/dist/base/data-types/default-types.js +39 -991
  77. package/dist/base/data-types/default-types.js.map +1 -1
  78. package/dist/base/data-types/field-types.js +2 -6
  79. package/dist/base/data-types/field-types.js.map +1 -1
  80. package/dist/base/data-types/index.js +1 -20
  81. package/dist/base/data-types/index.js.map +1 -1
  82. package/dist/base/data-types/internal/compare-types.js +0 -2
  83. package/dist/base/data-types/internal/compare-types.js.map +1 -1
  84. package/dist/base/data-types/internal/relation-add-form.d.ts +7 -0
  85. package/dist/base/data-types/internal/relation-add-form.js +21 -0
  86. package/dist/base/data-types/internal/relation-add-form.js.map +1 -0
  87. package/dist/base/data-types/internal/relation-endpoints.d.ts +8 -0
  88. package/dist/base/data-types/internal/relation-endpoints.js +36 -0
  89. package/dist/base/data-types/internal/relation-endpoints.js.map +1 -0
  90. package/dist/base/data-types/status-type.js +0 -6
  91. package/dist/base/data-types/status-type.js.map +1 -1
  92. package/dist/base/display.d.ts +6 -6
  93. package/dist/base/display.js +15 -10
  94. package/dist/base/display.js.map +1 -1
  95. package/dist/base/empty-state.d.ts +8 -8
  96. package/dist/base/export-jobs.js.map +1 -1
  97. package/dist/base/form-block-schema.d.ts +36 -36
  98. package/dist/base/form-block-schema.js +0 -5
  99. package/dist/base/form-block-schema.js.map +1 -1
  100. package/dist/base/form-schema.d.ts +5 -1
  101. package/dist/base/form-schema.js +44 -206
  102. package/dist/base/form-schema.js.map +1 -1
  103. package/dist/base/form-types.d.ts +4 -84
  104. package/dist/base/form-types.js.map +1 -1
  105. package/dist/base/form.js +0 -7
  106. package/dist/base/form.js.map +1 -1
  107. package/dist/base/guard.d.ts +14 -14
  108. package/dist/base/helpers/archive-mode-helpers.js +11 -11
  109. package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
  110. package/dist/base/helpers/file-refs.js +20 -7
  111. package/dist/base/helpers/file-refs.js.map +1 -1
  112. package/dist/base/index.js +0 -5
  113. package/dist/base/index.js.map +1 -1
  114. package/dist/base/internal/button-availability.d.ts +3 -17
  115. package/dist/base/internal/button-availability.js +36 -31
  116. package/dist/base/internal/button-availability.js.map +1 -1
  117. package/dist/base/internal/chart-schemas.js +0 -2
  118. package/dist/base/internal/chart-schemas.js.map +1 -1
  119. package/dist/base/internal/composed-text.js +0 -2
  120. package/dist/base/internal/composed-text.js.map +1 -1
  121. package/dist/base/internal/confirm-dialog.d.ts +3 -13
  122. package/dist/base/internal/confirm-dialog.js +37 -21
  123. package/dist/base/internal/confirm-dialog.js.map +1 -1
  124. package/dist/base/internal/display.js +3 -1
  125. package/dist/base/internal/display.js.map +1 -1
  126. package/dist/base/internal/form-schema-components.d.ts +12 -0
  127. package/dist/base/internal/form-schema-components.js +61 -0
  128. package/dist/base/internal/form-schema-components.js.map +1 -0
  129. package/dist/base/internal/form-schema-validation.d.ts +16 -0
  130. package/dist/base/internal/form-schema-validation.js +68 -0
  131. package/dist/base/internal/form-schema-validation.js.map +1 -0
  132. package/dist/base/internal/form-schema.d.ts +2 -7
  133. package/dist/base/internal/form-schema.js +36 -28
  134. package/dist/base/internal/form-schema.js.map +1 -1
  135. package/dist/base/internal/layouts.d.ts +1 -59
  136. package/dist/base/internal/searchable.js +3 -1
  137. package/dist/base/internal/searchable.js.map +1 -1
  138. package/dist/base/key-value-list.d.ts +12 -12
  139. package/dist/base/kpi-card.d.ts +2 -2
  140. package/dist/base/kpi-card.js +2 -0
  141. package/dist/base/kpi-card.js.map +1 -1
  142. package/dist/base/layouts.d.ts +6 -80
  143. package/dist/base/layouts.js +38 -54
  144. package/dist/base/layouts.js.map +1 -1
  145. package/dist/base/live-toggle.d.ts +2 -2
  146. package/dist/base/meter.d.ts +25 -25
  147. package/dist/base/meter.js +0 -1
  148. package/dist/base/meter.js.map +1 -1
  149. package/dist/base/nav-card-grid.d.ts +13 -13
  150. package/dist/base/page-toolbar.d.ts +2 -2
  151. package/dist/base/page-toolbar.js +0 -6
  152. package/dist/base/page-toolbar.js.map +1 -1
  153. package/dist/base/period-selector.d.ts +2 -2
  154. package/dist/base/period-selector.js +0 -4
  155. package/dist/base/period-selector.js.map +1 -1
  156. package/dist/base/query-response.js +3 -5
  157. package/dist/base/query-response.js.map +1 -1
  158. package/dist/base/resource-form-schema.js +0 -4
  159. package/dist/base/resource-form-schema.js.map +1 -1
  160. package/dist/base/searchable.d.ts +5 -0
  161. package/dist/base/searchable.js +11 -2
  162. package/dist/base/searchable.js.map +1 -1
  163. package/dist/base/stat-group.d.ts +15 -15
  164. package/dist/base/tab.d.ts +8 -8
  165. package/dist/base/tab.js +1 -0
  166. package/dist/base/tab.js.map +1 -1
  167. package/dist/base/table-view/column-display.js +0 -1
  168. package/dist/base/table-view/column-display.js.map +1 -1
  169. package/dist/base/table-view/data-functions.d.ts +10 -10
  170. package/dist/base/table-view/data-functions.js.map +1 -1
  171. package/dist/base/table-view/factory.js +32 -204
  172. package/dist/base/table-view/factory.js.map +1 -1
  173. package/dist/base/table-view/internal/auth.js +5 -19
  174. package/dist/base/table-view/internal/auth.js.map +1 -1
  175. package/dist/base/table-view/internal/column-conditions.js +0 -5
  176. package/dist/base/table-view/internal/column-conditions.js.map +1 -1
  177. package/dist/base/table-view/internal/column-display.js +5 -3
  178. package/dist/base/table-view/internal/column-display.js.map +1 -1
  179. package/dist/base/table-view/internal/factory-helpers.js +24 -158
  180. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  181. package/dist/base/table-view/internal/factory-lifecycle-created.d.ts +21 -0
  182. package/dist/base/table-view/internal/factory-lifecycle-created.js +96 -0
  183. package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -0
  184. package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +15 -0
  185. package/dist/base/table-view/internal/factory-lifecycle-filter.js +37 -0
  186. package/dist/base/table-view/internal/factory-lifecycle-filter.js.map +1 -0
  187. package/dist/base/table-view/internal/factory-lifecycle-options.d.ts +41 -0
  188. package/dist/base/table-view/internal/factory-lifecycle-options.js +99 -0
  189. package/dist/base/table-view/internal/factory-lifecycle-options.js.map +1 -0
  190. package/dist/base/table-view/internal/factory-private-actions.d.ts +32 -0
  191. package/dist/base/table-view/internal/factory-private-actions.js +77 -0
  192. package/dist/base/table-view/internal/factory-private-actions.js.map +1 -0
  193. package/dist/base/table-view/internal/factory-private-displays.d.ts +5 -0
  194. package/dist/base/table-view/internal/factory-private-displays.js +21 -0
  195. package/dist/base/table-view/internal/factory-private-displays.js.map +1 -0
  196. package/dist/base/table-view/internal/factory-private-urls.d.ts +15 -0
  197. package/dist/base/table-view/internal/factory-private-urls.js +43 -0
  198. package/dist/base/table-view/internal/factory-private-urls.js.map +1 -0
  199. package/dist/base/table-view/internal/files.js +3 -4
  200. package/dist/base/table-view/internal/files.js.map +1 -1
  201. package/dist/base/table-view/internal/footer.js +5 -3
  202. package/dist/base/table-view/internal/footer.js.map +1 -1
  203. package/dist/base/table-view/internal/guards.js +7 -10
  204. package/dist/base/table-view/internal/guards.js.map +1 -1
  205. package/dist/base/table-view/internal/meta-helpers.d.ts +27 -0
  206. package/dist/base/table-view/internal/meta-helpers.js +75 -0
  207. package/dist/base/table-view/internal/meta-helpers.js.map +1 -0
  208. package/dist/base/table-view/internal/meta.js +8 -2
  209. package/dist/base/table-view/internal/meta.js.map +1 -1
  210. package/dist/base/table-view/internal/nav-badges.js +5 -3
  211. package/dist/base/table-view/internal/nav-badges.js.map +1 -1
  212. package/dist/base/table-view/internal/option-contract.d.ts +403 -0
  213. package/dist/base/table-view/internal/option-contract.js +3 -0
  214. package/dist/base/table-view/internal/option-contract.js.map +1 -0
  215. package/dist/base/table-view/internal/option-displays.d.ts +125 -0
  216. package/dist/base/table-view/internal/option-displays.js +3 -0
  217. package/dist/base/table-view/internal/option-displays.js.map +1 -0
  218. package/dist/base/table-view/internal/option-empty-states.d.ts +43 -0
  219. package/dist/base/table-view/internal/option-empty-states.js +3 -0
  220. package/dist/base/table-view/internal/option-empty-states.js.map +1 -0
  221. package/dist/base/table-view/internal/option-expandable.d.ts +66 -0
  222. package/dist/base/table-view/internal/option-expandable.js +3 -0
  223. package/dist/base/table-view/internal/option-expandable.js.map +1 -0
  224. package/dist/base/table-view/internal/option-filtering.d.ts +85 -0
  225. package/dist/base/table-view/internal/option-filtering.js +4 -0
  226. package/dist/base/table-view/internal/option-filtering.js.map +1 -0
  227. package/dist/base/table-view/internal/option-footer.d.ts +64 -0
  228. package/dist/base/table-view/internal/option-footer.js +3 -0
  229. package/dist/base/table-view/internal/option-footer.js.map +1 -0
  230. package/dist/base/table-view/internal/option-forms.d.ts +62 -0
  231. package/dist/base/table-view/internal/option-forms.js +3 -0
  232. package/dist/base/table-view/internal/option-forms.js.map +1 -0
  233. package/dist/base/table-view/internal/option-row-actions.d.ts +76 -0
  234. package/dist/base/table-view/internal/option-row-actions.js +3 -0
  235. package/dist/base/table-view/internal/option-row-actions.js.map +1 -0
  236. package/dist/base/table-view/internal/option-views.d.ts +199 -0
  237. package/dist/base/table-view/internal/option-views.js +3 -0
  238. package/dist/base/table-view/internal/option-views.js.map +1 -0
  239. package/dist/base/table-view/internal/options.d.ts +2 -6
  240. package/dist/base/table-view/internal/options.js +35 -6
  241. package/dist/base/table-view/internal/options.js.map +1 -1
  242. package/dist/base/table-view/internal/realtime.js +15 -5
  243. package/dist/base/table-view/internal/realtime.js.map +1 -1
  244. package/dist/base/table-view/internal/request-filter.js +12 -12
  245. package/dist/base/table-view/internal/request-filter.js.map +1 -1
  246. package/dist/base/table-view/internal/resource-form.js +1 -10
  247. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  248. package/dist/base/table-view/internal/row-actions-schema.js +0 -6
  249. package/dist/base/table-view/internal/row-actions-schema.js.map +1 -1
  250. package/dist/base/table-view/internal/row-rule-shape.d.ts +10 -0
  251. package/dist/base/table-view/internal/row-rule-shape.js +43 -0
  252. package/dist/base/table-view/internal/row-rule-shape.js.map +1 -0
  253. package/dist/base/table-view/internal/row-rules.js +1 -4
  254. package/dist/base/table-view/internal/row-rules.js.map +1 -1
  255. package/dist/base/table-view/internal/tabs.d.ts +1 -1
  256. package/dist/base/table-view/internal/tabs.js +6 -9
  257. package/dist/base/table-view/internal/tabs.js.map +1 -1
  258. package/dist/base/table-view/internal/validation.js +2 -16
  259. package/dist/base/table-view/internal/validation.js.map +1 -1
  260. package/dist/base/table-view/internal/writer.js +1 -0
  261. package/dist/base/table-view/internal/writer.js.map +1 -1
  262. package/dist/base/table-view/meta.js +11 -93
  263. package/dist/base/table-view/meta.js.map +1 -1
  264. package/dist/base/table-view/options.d.ts +61 -1099
  265. package/dist/base/table-view/options.js.map +1 -1
  266. package/dist/base/table-view/resource-form.js +0 -2
  267. package/dist/base/table-view/resource-form.js.map +1 -1
  268. package/dist/base/table-view/routes.d.ts +3 -1
  269. package/dist/base/table-view/routes.js +33 -28
  270. package/dist/base/table-view/routes.js.map +1 -1
  271. package/dist/base/table-view/schema.d.ts +93 -93
  272. package/dist/base/table-view/schema.js +4 -22
  273. package/dist/base/table-view/schema.js.map +1 -1
  274. package/dist/base/table-view/source.js +0 -5
  275. package/dist/base/table-view/source.js.map +1 -1
  276. package/dist/base/table-view/views.js +0 -3
  277. package/dist/base/table-view/views.js.map +1 -1
  278. package/dist/base/table-view/writer.js +0 -5
  279. package/dist/base/table-view/writer.js.map +1 -1
  280. package/dist/base/top-list-card.d.ts +13 -13
  281. package/dist/base/top-list-card.js +2 -0
  282. package/dist/base/top-list-card.js.map +1 -1
  283. package/dist/base/types/action-target.d.ts +1 -302
  284. package/dist/base/types/button.d.ts +2 -7
  285. package/dist/base/types/button.js +35 -8
  286. package/dist/base/types/button.js.map +1 -1
  287. package/dist/base/types/confirm-dialog.d.ts +1 -127
  288. package/dist/base/types/custom-button.d.ts +1 -87
  289. package/dist/base/types/error.js +2 -1
  290. package/dist/base/types/error.js.map +1 -1
  291. package/dist/base/types/export-status.d.ts +2 -8
  292. package/dist/base/types/export-status.js +35 -9
  293. package/dist/base/types/export-status.js.map +1 -1
  294. package/dist/base/types/form-values.d.ts +1 -4
  295. package/dist/base/types/internal/action-target.d.ts +2 -8
  296. package/dist/base/types/internal/action-target.js +36 -15
  297. package/dist/base/types/internal/action-target.js.map +1 -1
  298. package/dist/base/types/row-action-operators.d.ts +3 -29
  299. package/dist/base/types/row-action-operators.js +35 -18
  300. package/dist/base/types/row-action-operators.js.map +1 -1
  301. package/dist/base/types/row-action.d.ts +3 -36
  302. package/dist/base/types/size.d.ts +1 -3
  303. package/dist/base/types/size.js +0 -3
  304. package/dist/base/types/size.js.map +1 -1
  305. package/dist/base/types/tone.d.ts +3 -8
  306. package/dist/base/types/tone.js +35 -15
  307. package/dist/base/types/tone.js.map +1 -1
  308. package/dist/base/types/watch.d.ts +5 -19
  309. package/dist/base/types/watch.js +35 -3
  310. package/dist/base/types/watch.js.map +1 -1
  311. package/dist/component-options/action-target.d.ts +304 -0
  312. package/dist/component-options/action-target.js +3 -0
  313. package/dist/component-options/action-target.js.map +1 -0
  314. package/dist/component-options/button.d.ts +93 -0
  315. package/dist/component-options/button.js +12 -0
  316. package/dist/component-options/button.js.map +1 -0
  317. package/dist/component-options/confirm-dialog.d.ts +132 -0
  318. package/dist/component-options/confirm-dialog.js +18 -0
  319. package/dist/component-options/confirm-dialog.js.map +1 -0
  320. package/dist/component-options/data-type.d.ts +101 -0
  321. package/dist/component-options/data-type.js +146 -0
  322. package/dist/component-options/data-type.js.map +1 -0
  323. package/dist/component-options/form-field.d.ts +88 -0
  324. package/dist/component-options/form-field.js +3 -0
  325. package/dist/component-options/form-field.js.map +1 -0
  326. package/dist/component-options/internal/action-target.d.ts +8 -0
  327. package/dist/component-options/internal/action-target.js +18 -0
  328. package/dist/component-options/internal/action-target.js.map +1 -0
  329. package/dist/component-options/internal/button-availability.d.ts +17 -0
  330. package/dist/component-options/internal/button-availability.js +34 -0
  331. package/dist/component-options/internal/button-availability.js.map +1 -0
  332. package/dist/component-options/internal/confirm-dialog.d.ts +13 -0
  333. package/dist/component-options/internal/confirm-dialog.js +24 -0
  334. package/dist/component-options/internal/confirm-dialog.js.map +1 -0
  335. package/dist/component-options/internal/form-field.d.ts +7 -0
  336. package/dist/component-options/internal/form-field.js +31 -0
  337. package/dist/component-options/internal/form-field.js.map +1 -0
  338. package/dist/component-options/internal/page-layout.d.ts +71 -0
  339. package/dist/component-options/internal/page-layout.js +10 -0
  340. package/dist/component-options/internal/page-layout.js.map +1 -0
  341. package/dist/component-options/page-layout.d.ts +80 -0
  342. package/dist/component-options/page-layout.js +57 -0
  343. package/dist/component-options/page-layout.js.map +1 -0
  344. package/dist/component-options/row-action.d.ts +66 -0
  345. package/dist/component-options/row-action.js +22 -0
  346. package/dist/component-options/row-action.js.map +1 -0
  347. package/dist/component-slots.js.map +1 -1
  348. package/dist/component.d.ts +2 -2
  349. package/dist/component.js +38 -193
  350. package/dist/component.js.map +1 -1
  351. package/dist/data-controllers/members.js +2 -8
  352. package/dist/data-controllers/members.js.map +1 -1
  353. package/dist/data-controllers/roles.js +0 -5
  354. package/dist/data-controllers/roles.js.map +1 -1
  355. package/dist/db/internal/exportJobs.model.js +10 -6
  356. package/dist/db/internal/exportJobs.model.js.map +1 -1
  357. package/dist/db/internal/tenantLifecycle.model.js +0 -2
  358. package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
  359. package/dist/db/tables/exportJobs.table.d.ts +1 -1
  360. package/dist/db/tables/roles.table.js.map +1 -1
  361. package/dist/db/tables/user_invites.table.d.ts +1 -1
  362. package/dist/db/tables/user_invites.table.js.map +1 -1
  363. package/dist/export-status.d.ts +8 -0
  364. package/dist/export-status.js +13 -0
  365. package/dist/export-status.js.map +1 -0
  366. package/dist/hooks.d.ts +1 -1
  367. package/dist/hooks.js +2 -4
  368. package/dist/hooks.js.map +1 -1
  369. package/dist/index.js +0 -9
  370. package/dist/index.js.map +1 -1
  371. package/dist/internal/component-builder.d.ts +17 -0
  372. package/dist/internal/component-builder.js +58 -0
  373. package/dist/internal/component-builder.js.map +1 -0
  374. package/dist/internal/component-permissions.d.ts +13 -0
  375. package/dist/internal/component-permissions.js +45 -0
  376. package/dist/internal/component-permissions.js.map +1 -0
  377. package/dist/internal/component-serialization.d.ts +10 -0
  378. package/dist/internal/component-serialization.js +42 -0
  379. package/dist/internal/component-serialization.js.map +1 -0
  380. package/dist/internal/component-slots.js +7 -4
  381. package/dist/internal/component-slots.js.map +1 -1
  382. package/dist/internal/component-watches.d.ts +17 -0
  383. package/dist/internal/component-watches.js +110 -0
  384. package/dist/internal/component-watches.js.map +1 -0
  385. package/dist/internal/invite-membership.js +0 -1
  386. package/dist/internal/invite-membership.js.map +1 -1
  387. package/dist/invite-extension-payloads.d.ts +2 -0
  388. package/dist/invite-extension-payloads.js +3 -0
  389. package/dist/invite-extension-payloads.js.map +1 -0
  390. package/dist/invite-extensions/internal/delivery.js +4 -1
  391. package/dist/invite-extensions/internal/delivery.js.map +1 -1
  392. package/dist/invite-extensions/internal/edit.js +5 -4
  393. package/dist/invite-extensions/internal/edit.js.map +1 -1
  394. package/dist/invite-extensions/internal/form-slot.js +5 -35
  395. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  396. package/dist/invite-extensions/internal/payload-slices.js +10 -3
  397. package/dist/invite-extensions/internal/payload-slices.js.map +1 -1
  398. package/dist/invite-extensions/internal/registry.js +3 -5
  399. package/dist/invite-extensions/internal/registry.js.map +1 -1
  400. package/dist/invite-extensions/registry.js +3 -8
  401. package/dist/invite-extensions/registry.js.map +1 -1
  402. package/dist/invite-extensions/types.d.ts +1 -2
  403. package/dist/invite-resolution.js +2 -1
  404. package/dist/invite-resolution.js.map +1 -1
  405. package/dist/layout-banners.js.map +1 -1
  406. package/dist/notifications/builder.js +25 -5
  407. package/dist/notifications/builder.js.map +1 -1
  408. package/dist/notifications/internal.js +0 -3
  409. package/dist/notifications/internal.js.map +1 -1
  410. package/dist/notifications/sendable.js.map +1 -1
  411. package/dist/page/categories.js +1 -4
  412. package/dist/page/categories.js.map +1 -1
  413. package/dist/page/controllers.js +9 -55
  414. package/dist/page/controllers.js.map +1 -1
  415. package/dist/page/form-page-routes.js +0 -7
  416. package/dist/page/form-page-routes.js.map +1 -1
  417. package/dist/page/internal/categories.d.ts +1 -1
  418. package/dist/page/internal/categories.js +12 -36
  419. package/dist/page/internal/categories.js.map +1 -1
  420. package/dist/page/internal/category-permission.d.ts +10 -0
  421. package/dist/page/internal/category-permission.js +20 -0
  422. package/dist/page/internal/category-permission.js.map +1 -0
  423. package/dist/page/internal/component-target.js +2 -2
  424. package/dist/page/internal/component-target.js.map +1 -1
  425. package/dist/page/internal/component-tree.js +0 -2
  426. package/dist/page/internal/component-tree.js.map +1 -1
  427. package/dist/page/internal/controller-options.d.ts +6 -0
  428. package/dist/page/internal/controller-options.js +40 -0
  429. package/dist/page/internal/controller-options.js.map +1 -0
  430. package/dist/page/internal/extension-assembly.js +2 -7
  431. package/dist/page/internal/extension-assembly.js.map +1 -1
  432. package/dist/page/internal/layout-filter.js +7 -3
  433. package/dist/page/internal/layout-filter.js.map +1 -1
  434. package/dist/page/internal/metadata-components.d.ts +47 -0
  435. package/dist/page/internal/metadata-components.js +136 -0
  436. package/dist/page/internal/metadata-components.js.map +1 -0
  437. package/dist/page/internal/metadata-extension-contributions.d.ts +14 -0
  438. package/dist/page/internal/metadata-extension-contributions.js +56 -0
  439. package/dist/page/internal/metadata-extension-contributions.js.map +1 -0
  440. package/dist/page/internal/metadata-extensions.d.ts +8 -0
  441. package/dist/page/internal/metadata-extensions.js +21 -0
  442. package/dist/page/internal/metadata-extensions.js.map +1 -0
  443. package/dist/page/internal/metadata-helpers.js +0 -14
  444. package/dist/page/internal/metadata-helpers.js.map +1 -1
  445. package/dist/page/internal/metadata-info.d.ts +5 -0
  446. package/dist/page/internal/metadata-info.js +39 -0
  447. package/dist/page/internal/metadata-info.js.map +1 -0
  448. package/dist/page/internal/metadata-layout-response.d.ts +32 -0
  449. package/dist/page/internal/metadata-layout-response.js +76 -0
  450. package/dist/page/internal/metadata-layout-response.js.map +1 -0
  451. package/dist/page/internal/metadata-layout.d.ts +10 -0
  452. package/dist/page/internal/metadata-layout.js +44 -0
  453. package/dist/page/internal/metadata-layout.js.map +1 -0
  454. package/dist/page/internal/metadata-lifecycle.d.ts +52 -0
  455. package/dist/page/internal/metadata-lifecycle.js +241 -0
  456. package/dist/page/internal/metadata-lifecycle.js.map +1 -0
  457. package/dist/page/internal/metadata-owner.d.ts +53 -0
  458. package/dist/page/internal/metadata-owner.js +14 -0
  459. package/dist/page/internal/metadata-owner.js.map +1 -0
  460. package/dist/page/internal/metadata-publish.d.ts +20 -0
  461. package/dist/page/internal/metadata-publish.js +55 -0
  462. package/dist/page/internal/metadata-publish.js.map +1 -0
  463. package/dist/page/internal/metadata-registration.d.ts +8 -0
  464. package/dist/page/internal/metadata-registration.js +72 -0
  465. package/dist/page/internal/metadata-registration.js.map +1 -0
  466. package/dist/page/internal/metadata-upload-registration.d.ts +16 -0
  467. package/dist/page/internal/metadata-upload-registration.js +64 -0
  468. package/dist/page/internal/metadata-upload-registration.js.map +1 -0
  469. package/dist/page/internal/metadata-uploads.d.ts +18 -0
  470. package/dist/page/internal/metadata-uploads.js +46 -0
  471. package/dist/page/internal/metadata-uploads.js.map +1 -0
  472. package/dist/page/internal/nav-badges.d.ts +1 -1
  473. package/dist/page/internal/nav-badges.js +3 -1
  474. package/dist/page/internal/nav-badges.js.map +1 -1
  475. package/dist/page/internal/page-record.d.ts +2 -9
  476. package/dist/page/internal/page-record.js +8 -5
  477. package/dist/page/internal/page-record.js.map +1 -1
  478. package/dist/page/internal/page-registration.js +0 -4
  479. package/dist/page/internal/page-registration.js.map +1 -1
  480. package/dist/page/internal/registry.js +2 -1
  481. package/dist/page/internal/registry.js.map +1 -1
  482. package/dist/page/internal/table-view-ids.js +3 -2
  483. package/dist/page/internal/table-view-ids.js.map +1 -1
  484. package/dist/page/layout-filter.js +1 -0
  485. package/dist/page/layout-filter.js.map +1 -1
  486. package/dist/page/metadata.js +192 -558
  487. package/dist/page/metadata.js.map +1 -1
  488. package/dist/page/roots.js +3 -5
  489. package/dist/page/roots.js.map +1 -1
  490. package/dist/page/types.d.ts +1 -1
  491. package/dist/page/types.js.map +1 -1
  492. package/dist/permissions.js +0 -18
  493. package/dist/permissions.js.map +1 -1
  494. package/dist/realtime.js +0 -3
  495. package/dist/realtime.js.map +1 -1
  496. package/dist/request-tenant.js +4 -1
  497. package/dist/request-tenant.js.map +1 -1
  498. package/dist/tenant-lifecycle.js +2 -2
  499. package/dist/tenant-lifecycle.js.map +1 -1
  500. package/dist/tones.d.ts +8 -0
  501. package/dist/tones.js +19 -0
  502. package/dist/tones.js.map +1 -0
  503. package/dist/uploads.js +15 -4
  504. package/dist/uploads.js.map +1 -1
  505. package/dist/utils/internal/row-instance.js +2 -3
  506. package/dist/utils/internal/row-instance.js.map +1 -1
  507. package/dist/utils/internal/type-check.d.ts +10 -1
  508. package/dist/utils/internal/type-check.js +12 -3
  509. package/dist/utils/internal/type-check.js.map +1 -1
  510. package/dist/utils/internal/value-parser.js +7 -2
  511. package/dist/utils/internal/value-parser.js.map +1 -1
  512. package/dist/watch-actions.d.ts +19 -0
  513. package/dist/watch-actions.js +7 -0
  514. package/dist/watch-actions.js.map +1 -0
  515. package/docs/3.base/2.types.md +1 -1
  516. package/docs/3.base/4.tables.md +1 -1
  517. package/docs/3.base/8.data-types.md +2 -0
  518. package/docs/4.notifications/3.sending.md +1 -1
  519. package/package.json +3 -3
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildTableConfig = buildTableConfig;
7
+ exports.decorateColumn = decorateColumn;
8
+ /** @internal */
9
+ const node_assert_1 = __importDefault(require("node:assert"));
10
+ const interface_api_1 = require("@antelopejs/interface-api");
11
+ const interface_core_1 = require("@antelopejs/interface-core");
12
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
13
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
14
+ const form_schema_1 = require("../../form-schema");
15
+ const types_1 = require("../../types");
16
+ const column_display_1 = require("./column-display");
17
+ /** @internal */
18
+ function buildTableConfig(view, serialize) {
19
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published target constructor type does not establish ControllerClass.location; registration is assumed rather than validated here.
20
+ const apimeta = (0, interface_core_1.GetMetadata)(view.target, interface_api_1.ControllerMeta);
21
+ const datameta = (0, interface_core_1.GetMetadata)(view.target, metadata_1.DataAPIMeta);
22
+ return {
23
+ location: apimeta.location,
24
+ columns: Object.entries(view.columns)
25
+ .sort((a, b) => (a[1].order ?? 0) - (b[1].order ?? 0))
26
+ .map(([key, options]) => {
27
+ const meta = datameta.fields[key];
28
+ return {
29
+ id: key,
30
+ header: options.name ?? key,
31
+ isVisible: options.isVisible,
32
+ type: serialize(options.type),
33
+ accessorKey: key,
34
+ listable: !!meta.listable?.list,
35
+ enableSorting: meta.sortable !== undefined,
36
+ enableColumnFilter: !!options.filterable,
37
+ cellWrap: options.cellWrap,
38
+ size: options.size,
39
+ display: (0, column_display_1.serializeColumnDisplay)(options.display),
40
+ defaultValue: options.defaultValue,
41
+ accessMode: meta.mode,
42
+ readonlyBehavior: options.readonlyBehavior ?? types_1.ReadonlyBehaviorType.default,
43
+ };
44
+ }),
45
+ };
46
+ }
47
+ /** @internal */
48
+ function decorateColumn(target, key, descriptor, options, meta) {
49
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The decorator accepts PropertyKey while the column registry, the localization lookup and Filter take string keys; symbol and number inputs are not rejected or converted here.
50
+ const columnKey = key;
51
+ meta.setColumn(columnKey, options);
52
+ if (options.validate !== false) {
53
+ // oxlint-disable-next-line typescript/unbound-method -- This assertion checks method presence without calling it; getValidation is called through options.type below.
54
+ (0, node_assert_1.default)(options.type.getValidation, "Type has no getValidation method");
55
+ const dataMeta = (0, interface_core_1.GetMetadata)(target.constructor, metadata_1.DataAPIMeta);
56
+ const localizedFields = (0, interface_database_decorators_1.getModifiedFields)(dataMeta.tableClass.prototype, interface_database_decorators_1.LocalizationModifier);
57
+ const isLocalized = localizedFields.includes(key);
58
+ const baseSchema = options.type.getValidation();
59
+ const zodSchema = (0, form_schema_1.adaptFieldValidationSchema)(baseSchema, {
60
+ localized: isLocalized,
61
+ required: false,
62
+ fallbackLocale: isLocalized
63
+ ? interface_database_decorators_1.LocalizationModifier.fallbackLocaleOf(dataMeta.tableClass, columnKey)
64
+ : undefined,
65
+ });
66
+ (0, metadata_1.Validator)((value) => zodSchema.safeParseAsync(value))(target, key, descriptor ?? {});
67
+ }
68
+ if (options.filterable) {
69
+ (0, metadata_1.Filter)(options.type.filter.bind(options.type))(target, columnKey);
70
+ }
71
+ if (options.type.decorateField) {
72
+ options.type.decorateField(target, key, descriptor);
73
+ }
74
+ }
75
+ //# sourceMappingURL=meta-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-helpers.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta-helpers.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,15 @@ const interface_api_1 = require("@antelopejs/interface-api");
5
5
  const interface_core_1 = require("@antelopejs/interface-core");
6
6
  const meta_1 = require("../meta");
7
7
  /** @internal */
8
- const getTableViewMetaFor = (target) => (0, interface_core_1.GetMetadata)(target.constructor, meta_1.TableViewMeta);
8
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- This published adapter accepts arbitrary controller receivers; the metadata lookup below assumes a registered constructor without validating it.
9
+ const getTableViewMetaFor = (target) => (0, interface_core_1.GetMetadata)(
10
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published unknown receiver does not prove ControllerClass; controller route dispatch supplies it and this adapter preserves that unchecked boundary.
11
+ target.constructor, meta_1.TableViewMeta);
9
12
  exports.getTableViewMetaFor = getTableViewMetaFor;
10
13
  /** @internal */
11
- const getControllerLocation = (target) => (0, interface_core_1.GetMetadata)(target.constructor, interface_api_1.ControllerMeta).location;
14
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- This published metadata adapter accepts arbitrary controller receivers; narrowing its input would change that contract.
15
+ const getControllerLocation = (target) => (0, interface_core_1.GetMetadata)(
16
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The published unknown receiver does not verify its constructor; route dispatch remains responsible for supplying a controller instance.
17
+ target.constructor, interface_api_1.ControllerMeta).location;
12
18
  exports.getControllerLocation = getControllerLocation;
13
19
  //# sourceMappingURL=meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta.ts"],"names":[],"mappings":";;;AAAA,6DAGmC;AACnC,+DAAyD;AACzD,kCAAwC;AAExC,gBAAgB;AACT,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAiB,EAAE,CACpE,IAAA,4BAAW,EACR,MAA2C,CAAC,WAAW,EACxD,oBAAa,CACd,CAAC;AAJS,QAAA,mBAAmB,uBAI5B;AAEJ,gBAAgB;AACT,MAAM,qBAAqB,GAAG,CAAC,MAAe,EAAU,EAAE,CAC/D,IAAA,4BAAW,EACR,MAA2C,CAAC,WAAW,EACxD,8BAAc,CACf,CAAC,QAAQ,CAAC;AAJA,QAAA,qBAAqB,yBAIrB"}
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/meta.ts"],"names":[],"mappings":";;;AAAA,6DAGmC;AACnC,+DAAyD;AACzD,kCAAwC;AAExC,gBAAgB;AAChB,+MAA+M;AACxM,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAiB,EAAE,CACpE,IAAA,4BAAW;AACT,2OAA2O;AAC1O,MAA2C,CAAC,WAAW,EACxD,oBAAa,CACd,CAAC;AALS,QAAA,mBAAmB,uBAK5B;AAEJ,gBAAgB;AAChB,sLAAsL;AAC/K,MAAM,qBAAqB,GAAG,CAAC,MAAe,EAAU,EAAE,CAC/D,IAAA,4BAAW;AACT,0NAA0N;AACzN,MAA2C,CAAC,WAAW,EACxD,8BAAc,CACf,CAAC,QAAQ,CAAC;AALA,QAAA,qBAAqB,yBAKrB"}
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- // The navigation badges a table view publishes: the counter of a tab declared
3
- // with `navBadge`, counted on the server when the menu loads.
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.declareTabNavBadges = declareTabNavBadges;
6
4
  const interface_api_1 = require("@antelopejs/interface-api");
@@ -37,11 +35,14 @@ async function countRows(controller, ctx, user, filter) {
37
35
  const permissions = await (0, auth_1.authorizeAction)(instance, auth_1.LIST_ACTION, user, (0, request_tenant_1.getRequestTenantId)(ctx));
38
36
  const queryContext = withQuery(ctx, tabFilterQuery(filter));
39
37
  const filters = components_1.Parameters.ExtractFilters(queryContext, (0, interface_data_api_1.GetDataControllerMeta)(instance));
40
- const { total } = await (0, data_functions_1.countWithSearch)(instance, queryContext, { filters }, user, permissions);
38
+ const { total } = await (0, data_functions_1.countWithSearch)(
39
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- GetControllerInstance returns an instance, while the published runtime proxy accepts DataControllerCallback as its receiver type; that mismatch is not validated here.
40
+ instance, queryContext, { filters }, user, permissions);
41
41
  return total;
42
42
  }
43
43
  /** The tab's count in the tone its `navBadge` declares; a bare count without one. */
44
44
  function withTabTone(tab) {
45
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The published navBadge option declares a boolean shorthand or an object with a tone; this selects the object variant.
45
46
  const tone = typeof tab.navBadge === "object" ? tab.navBadge.tone : undefined;
46
47
  return (count) => (tone ? { count, tone } : count);
47
48
  }
@@ -58,6 +59,7 @@ function navBadgeSourceOf(tab, controller) {
58
59
  };
59
60
  }
60
61
  const { to, countFrom } = tab;
62
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Published tab targets and count sources may be strings or controller classes; navigation badges require the class variants.
61
63
  if (typeof to === "string" || !countFrom || typeof countFrom === "string") {
62
64
  logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}": tab "${tab.id}" sets navBadge but links to a path or counts from a location; a navigation badge needs a page controller \`to\` and a data controller \`countFrom\`. It publishes nothing.`);
63
65
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/nav-badges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/nav-badges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,403 @@
1
+ /** @internal @packageDocumentation */
2
+ import type { CustomButtonSerialized, CustomButton } from "../../types/custom-button";
3
+ import type { TableViewRowActionOptionsSerialized, TableViewRowActionOptions } from "./option-row-actions";
4
+ import type { ComponentInfoSerialized } from "../../../component";
5
+ import type { FormPropsSerialized } from "../../form-types";
6
+ import type { QueryParamFilters, RouteParamFilters, TableViewLayout, TableViewQuickFilter, TableViewPaginationMode, TableViewReorderOptions } from "./option-filtering";
7
+ import type { TableViewTabSerialized, TableViewViewsSerialized, TableViewRowClick, TableViewColumnsOptions, TableViewTab, TableViewViewsOptions } from "./option-views";
8
+ import type { TableViewDisplayOptionSerialized, KanbanOptions, GroupedOptions, TableViewCardOptions, TableViewDisplayOption } from "./option-displays";
9
+ import type { TableViewFormPageUrls, FormContainer, TableViewFormSetup } from "./option-forms";
10
+ import type { TableViewExpandableSerialized, TableViewExpandableOptions } from "./option-expandable";
11
+ import type { TableViewFooterSerialized, TableViewFooterOptions } from "./option-footer";
12
+ import type { TableViewEmptyStatesSerialized, TableViewEmptyStates } from "./option-empty-states";
13
+ import type { TableViewSourceSerialized } from "../source";
14
+ import type { RowActionRule } from "../../types/row-action";
15
+ import type { TableViewGuards } from "../../types/guards";
16
+ export interface TableViewOptionsSerialized extends Omit<TableViewOptions, "columns" | "customButtons" | "rowActions" | "kanban" | "displays" | "formSlots" | "forms" | "expandable" | "tabs" | "views" | "footer" | "emptyStates"> {
17
+ enableTableExport: boolean;
18
+ /** Whether the controller declares `@Searchable` fields to search in. */
19
+ searchable: boolean;
20
+ customButtons?: CustomButtonSerialized[];
21
+ defaultFilters?: Array<{
22
+ accessorKey: string;
23
+ value?: string;
24
+ mode: string;
25
+ }>;
26
+ rowActions?: TableViewRowActionOptionsSerialized;
27
+ formComponents: Record<string, ComponentInfoSerialized<FormPropsSerialized> | undefined>;
28
+ defaultSort?: {
29
+ field: string;
30
+ desc?: boolean;
31
+ };
32
+ queryParamFilters?: QueryParamFilters;
33
+ routeParamFilters?: RouteParamFilters;
34
+ tabs?: TableViewTabSerialized[];
35
+ displays?: TableViewDisplayOptionSerialized[];
36
+ /**
37
+ * Resolved page-mode form URLs. Server-computed, so the frontend navigates to
38
+ * the very URLs the form sub-pages were registered under instead of rebuilding
39
+ * them from the browser path. Absent when the container is not a page.
40
+ */
41
+ formPages?: TableViewFormPageUrls;
42
+ expandable?: TableViewExpandableSerialized;
43
+ views?: TableViewViewsSerialized;
44
+ footer?: TableViewFooterSerialized;
45
+ emptyStates?: TableViewEmptyStatesSerialized;
46
+ /** Where a `TableView.fromSource` table reads its rows. */
47
+ source?: TableViewSourceSerialized;
48
+ /**
49
+ * Key of the table view in its page, which prefixes its URL keys
50
+ * (`?<tableId>.view=`). Set per request.
51
+ */
52
+ tableId?: string;
53
+ /**
54
+ * The table view is the only one its page carries: the short URL keys
55
+ * (`?view=`, `?tab=`) are its own. Set per request.
56
+ */
57
+ isSoleTableView?: boolean;
58
+ }
59
+ /**
60
+ * When a `liveHold` table also holds its rows while its live page is in
61
+ * Direct: the table alone keeps them and counts its events into the
62
+ * "N new · Show" banner, the other blocks of the page staying live. The
63
+ * banner says why the table holds ("Table on hold · search active"). It reads
64
+ * the rows once again when the hold ends, if it missed any.
65
+ */
66
+ export interface TableViewLiveHoldOptions {
67
+ /** While one of its rows is open in the side panel. Defaults to false. */
68
+ whileRowOpen?: boolean;
69
+ /** While the user has scrolled its first row out of view. Defaults to false. */
70
+ whileScrolled?: boolean;
71
+ /** While the user's search narrows the rows. Defaults to false. */
72
+ whileSearching?: boolean;
73
+ /**
74
+ * While the user sorts the rows otherwise than by the table's `defaultSort`
75
+ * (the newest first, for a log): new rows would land anywhere among them.
76
+ * Defaults to false.
77
+ */
78
+ whileSorted?: boolean;
79
+ /**
80
+ * What the strip calls the new rows, given `{count}`, as the `LiveToggle`'s
81
+ * own `missedLabel`: an i18n key prefixed with `$`
82
+ * (`"$api.live.new_requests"`, "12 new requests"), or a text. While the
83
+ * page is paused, the strip adds the breakdown a component gave with
84
+ * `usePageLive().setMissedDetail` ("12 new requests · 2 in 5xx").
85
+ * Defaults to "N new".
86
+ */
87
+ missedLabel?: string;
88
+ }
89
+ export interface TableViewOptions<T extends Record<string, unknown> = Record<string, unknown>> {
90
+ caption?: string;
91
+ /**
92
+ * Row density the table opens with: "compact" gives 36px rows under a 32px
93
+ * header. The user picks another from the "Density" entry of the ⋯ table
94
+ * menu, kept with the rest of the table's state.
95
+ */
96
+ density?: "default" | "compact";
97
+ /**
98
+ * Caps the rows in a scroll area of their own (any CSS length, e.g.
99
+ * "60vh"), under a column header that stays in view while they scroll.
100
+ */
101
+ maxHeight?: string;
102
+ /**
103
+ * What runs the row's click action: a double-click by default, a single
104
+ * click with `"single"`. See {@link TableViewRowClick}.
105
+ * @example "single"
106
+ */
107
+ rowClick?: TableViewRowClick;
108
+ /**
109
+ * Expandable rows: a caret column in front of the content opens a detail
110
+ * band under each row, listing `fields` or rendering `component`.
111
+ * @example { fields: ["address", "carrier"], defaultExpanded: "first" }
112
+ * @example { component: CustomComponent("OrderLines"), single: true }
113
+ */
114
+ expandable?: TableViewExpandableOptions;
115
+ /**
116
+ * How much the table draws around its rows: `"full"` (the default) or the
117
+ * `"compact"` list of a settings page. See {@link TableViewLayout}.
118
+ */
119
+ layout?: TableViewLayout;
120
+ /** Placeholder of the search field. `$`-prefixed: an i18n key. */
121
+ searchPlaceholder?: string;
122
+ /**
123
+ * The key that opens and focuses the search field, in Nuxt UI
124
+ * `defineShortcuts` notation: `"/"`, `"shift_f"`, `"meta_k"`. Defaults to
125
+ * `"shift_f"` (⇧F). Like every table shortcut, it does not fire while the
126
+ * user types in a field, so `"/"` stays a character there.
127
+ * @example "/"
128
+ */
129
+ searchShortcut?: string;
130
+ /** One-click dropdown filters drawn in the toolbar. */
131
+ quickFilters?: TableViewQuickFilter[];
132
+ /**
133
+ * Rows per page while the user has picked none, from 1 to 50 (registration
134
+ * throws otherwise). Defaults to 10. A size other than the standard 10, 25
135
+ * and 50 joins them in this table's page size picker.
136
+ */
137
+ pageSize?: number;
138
+ /**
139
+ * How the rows beyond the first page are reached. Defaults to `pages`.
140
+ * See {@link TableViewPaginationMode}.
141
+ */
142
+ pagination?: TableViewPaginationMode;
143
+ /**
144
+ * The footer band: the row count and a hint, figures computed over the
145
+ * listed rows (`summary`) and a legend of a select column's items.
146
+ */
147
+ footer?: TableViewFooterOptions<T>;
148
+ /**
149
+ * What the empty body of the grid and the `cards` display says when the
150
+ * table has no row yet, when its filters match nothing, or when the list
151
+ * failed. See {@link TableViewEmptyStates}.
152
+ */
153
+ emptyStates?: TableViewEmptyStates;
154
+ /**
155
+ * The key of the row id, default is _id
156
+ */
157
+ rowIdKey?: string;
158
+ /**
159
+ * The key of the field naming a row: it follows the title of the drawer or
160
+ * modal that edits or shows the row ("Edit task · Write the docs"), and
161
+ * ends the breadcrumb of its edit and details pages.
162
+ */
163
+ labelKey?: string;
164
+ rowActions?: TableViewRowActionOptions<T>;
165
+ /**
166
+ * The controller's columns as this table view shows them, when one page
167
+ * needs them otherwise than the controller declares: a related list on a
168
+ * record's page hides the column naming that record.
169
+ * @example { hidden: ["workspace"] }
170
+ */
171
+ columns?: TableViewColumnsOptions;
172
+ customButtons?: CustomButton[];
173
+ /**
174
+ * Where the add, edit and details forms open (a page by default) and their
175
+ * titles, in any container.
176
+ * @example { type: "drawer", pages: { new: { displayName: "$tasks.form.new_title" } } }
177
+ */
178
+ formContainer?: FormContainer;
179
+ /**
180
+ * Enable archive mode: replaces delete action with archive/restore
181
+ */
182
+ archiveMode?: boolean;
183
+ /**
184
+ * The count the caption shows while the archived rows are listed, naming
185
+ * them: an i18n key with `$` receiving `{ count }` and pluralized on it
186
+ * ("13 factures archivées"), or a text with `{count}`. Defaults to
187
+ * "Archived: {count}" ("Archives : {count}" in French), which agrees with
188
+ * no noun.
189
+ * @example "$invoices.archived_count"
190
+ */
191
+ archivedCountLabel?: string;
192
+ /**
193
+ * Default filters to apply when the table view is opened
194
+ */
195
+ defaultFilters?: Array<{
196
+ accessorKey: string;
197
+ value?: string;
198
+ mode: string;
199
+ }>;
200
+ /**
201
+ * Default sort configuration applied when no user preference exists, and
202
+ * the sort the table goes back to when the user clears theirs.
203
+ */
204
+ defaultSort?: {
205
+ field: string;
206
+ desc?: boolean;
207
+ };
208
+ /**
209
+ * Rows listed first, whatever the sort: those `pinnedRows` accepts, a rule
210
+ * on the row's fields as a row action's `rule`, in the order the sort gives
211
+ * them. The rest follows in the sort's order. A route answering every row
212
+ * (a `TableView.fromSource` without `paginate`) has its pinned rows on the
213
+ * first page; a route answering one page has them first within the page it
214
+ * answers. The `grouped` display keeps its groups and pins nothing;
215
+ * registration refuses it alongside `reorder`, whose rows keep their
216
+ * position.
217
+ * @example { field: "isBase", equals: true }
218
+ */
219
+ pinnedRows?: RowActionRule<T>;
220
+ /**
221
+ * Maps URL query parameters to hidden filters applied to the table data.
222
+ * These filters are not persisted in preferences, and not visible in the UI
223
+ * unless one sets `visible: true`: it then shows as a removable chip.
224
+ * @example { email: { field: "email", visible: true, label: "$app.email" } }
225
+ */
226
+ queryParamFilters?: QueryParamFilters;
227
+ /**
228
+ * Maps DMS route parameters (extracted from the page slug, e.g. `:id`) to
229
+ * hidden filters applied to the table data. Filters are not visible in the
230
+ * UI nor persisted in preferences. Useful for detail pages where the table
231
+ * must be scoped by a path param such as the parent entity id.
232
+ */
233
+ routeParamFilters?: RouteParamFilters;
234
+ /**
235
+ * When true, reject entire request if any row fails rule validation.
236
+ * When false (default), only process rows that pass rule validation.
237
+ */
238
+ strictRuleValidation?: boolean;
239
+ /**
240
+ * Tabs displayed above the table. Each tab filters the rows on one column,
241
+ * or links to another page. The implicit "all" tab (no filter) is shown
242
+ * automatically when at least one tab is configured here.
243
+ *
244
+ * Each tab shows a row counter, fetched in one request: filter tabs with
245
+ * counters require the controller to mount
246
+ * `countBatch: TableViewRoutes.CountBatch`. `TableView()` warns at
247
+ * registration when a table declares tabs without it.
248
+ */
249
+ tabs?: TableViewTab[];
250
+ /**
251
+ * When false, disables realtime broadcast/presence for this resource.
252
+ * Defaults to true (realtime is opt-out).
253
+ */
254
+ realtime?: boolean;
255
+ /**
256
+ * Topics the backend publishes on (`PublishMessage`) when the rows change
257
+ * without a write through this table's routes — a batch, a job, an import.
258
+ * The table reads its rows again on each event, keeping the current rows on
259
+ * screen until the answer lands. The page registers them, as for a chart's
260
+ * `realtimeTopic`. Independent of `realtime`, which covers the writes made
261
+ * through the controller.
262
+ */
263
+ realtimeTopic?: string | string[];
264
+ /**
265
+ * On a page declared with `live`, keeps the rows on screen while the page is
266
+ * paused, through the user's own search, sort and pagination too, and shows
267
+ * a "N new · Show" banner counting the rows the table would add since:
268
+ * how many more rows its tab, search and filters match now than it holds,
269
+ * asked of its count route (the events received, if that count fails).
270
+ * Show reads the rows once without leaving the pause. The page in Direct,
271
+ * the table also keeps its rows while they are on screen or scrolled past:
272
+ * a new row at the top would push down the rows the user reads, so new ones
273
+ * wait behind a "N new · Show" pill laid over the rows, which moves nothing.
274
+ * A table still below the screen follows the feed.
275
+ *
276
+ * A `TableView.fromSource` route receives the moment the rows were frozen
277
+ * as `liveHeldAt` (ISO 8601) on every list and count request made while
278
+ * paused, so it can answer the rows as they stood then; a data controller's
279
+ * rows are held against the realtime only. Ignored on a page without `live`.
280
+ *
281
+ * An object also names why the table holds, the rest of the page staying
282
+ * live, in more cases (see {@link TableViewLiveHoldOptions}); `true` and
283
+ * `{}` hold it while the page is paused or its rows are on screen.
284
+ *
285
+ * ```ts
286
+ * liveHold: { whileRowOpen: true, whileScrolled: true, whileSearching: true }
287
+ * ```
288
+ */
289
+ liveHold?: boolean | TableViewLiveHoldOptions;
290
+ /**
291
+ * Enable the kanban display mode for this collection. When set, users can
292
+ * switch between the table and a kanban board from the toolbar.
293
+ */
294
+ kanban?: KanbanOptions;
295
+ /**
296
+ * Lets the user order the rows by hand: the rows are listed sorted on
297
+ * `field`, a drag handle moves a row within its page — on the grid and on
298
+ * the `cards` display, whose custom `card.component` receives the handle
299
+ * as its `reorder` prop — and only the rows whose position changed are
300
+ * saved (a partial edit of `field`). Moving is off while a search, a
301
+ * filter or a tab narrows the rows. Needs the `edit` action.
302
+ */
303
+ reorder?: TableViewReorderOptions;
304
+ /**
305
+ * Offers the `grouped` display: the grid's columns with a header row per
306
+ * group of rows. A view may open in it (`display: "grouped"`).
307
+ * @example { groupByField: "createdAt", by: "day", count: true }
308
+ */
309
+ grouped?: GroupedOptions;
310
+ /**
311
+ * Named states of the table — filters, search, sort, columns, display and
312
+ * density — drawn as tabs, a strip of pills or a menu, opened from the URL
313
+ * (`?view=<id>`) and, with `userViews`, saved by users for themselves.
314
+ * Views and `tabs` coexist: a tab filters on one column, a view sets the
315
+ * whole table.
316
+ */
317
+ views?: TableViewViewsOptions;
318
+ /**
319
+ * The card the `kanban` and `cards` displays draw for each row: the columns
320
+ * it shows, or a component drawing it whole.
321
+ * @example { fields: ["email", "due_date"] }
322
+ * @example { component: CustomComponent("TaskCard") }
323
+ */
324
+ card?: TableViewCardOptions;
325
+ /**
326
+ * The displays this table view offers, in the switcher's order. Left out,
327
+ * the table view offers the built-in `table` alone; listed, it offers
328
+ * exactly these, so the grid is kept by listing `{ id: "table" }`. The
329
+ * `kanban` and `grouped` options add their display after the list unless it
330
+ * places them. Each `component` is a frontend component resolved by name on
331
+ * the client from the global registry (declare its directory with
332
+ * `global: true`); it receives the normalized `context` prop.
333
+ * `selfManagedData`/`capabilities` are the SSR source of truth for data
334
+ * fetching + chrome; the matching client plugin (`registerTableViewDisplay`)
335
+ * supplies the id, label, icon and component.
336
+ * @example [{ id: "table" }, { id: "cards" }]
337
+ */
338
+ displays?: TableViewDisplayOption[];
339
+ /**
340
+ * Display shown by default when the user has no saved preference. Defaults to
341
+ * the first display offered: `table` when `displays` is left out.
342
+ */
343
+ defaultDisplay?: string;
344
+ /**
345
+ * Display a phone opens on (a viewport narrower than 768px) when the user
346
+ * has no saved choice and the open view sets no `display` of its own (a
347
+ * `views.defaultView` without one opens on it too): `cards` gives a narrow screen a
348
+ * card per row instead of a grid cut after its first columns. One of the
349
+ * displays offered, so the switcher still leads back to the grid. Applied
350
+ * once mounted (the server cannot see the viewport) and not saved: the same
351
+ * user on a wide screen keeps `defaultDisplay`.
352
+ * @example { displays: [{ id: "table" }, { id: "cards" }], mobileDisplay: "cards" }
353
+ */
354
+ mobileDisplay?: string;
355
+ /**
356
+ * Server-side guards that run before mutating actions (edit/delete/archive/
357
+ * restore/new). Throw with `assert(...)` from `@antelopejs/interface-api-util`
358
+ * to abort the operation with an HTTP error and an i18n message key.
359
+ * `this` inside a guard is the data controller instance, so models declared
360
+ * with @Model are accessible.
361
+ */
362
+ guards?: TableViewGuards<T>;
363
+ /**
364
+ * Component slots the generated forms open, by form kind, so another module
365
+ * can extend them through `RegisterComponentSlot` — the pending-invite edit
366
+ * form opens one for the invite extensions. Values the slot adds to a form
367
+ * reach the data routes only if the controller reads them.
368
+ */
369
+ formSlots?: Partial<Record<"new" | "edit" | "view", string>>;
370
+ /**
371
+ * Settles the forms the table view generates, by form kind, for input
372
+ * comfort only: each callback receives the form's builder before the table
373
+ * view embeds it, and declares on it what a module's own `Form` would — a
374
+ * value filled in from another (`SET_FIELD_VALUE`), a field one table's
375
+ * forms leave out. No data rule here: the data routes never see these
376
+ * watches. A field shown, required or locked by the value of another is a
377
+ * column's `visibleWhen` / `disabledWhen`, which the routes enforce too.
378
+ * What it declares holds in a drawer, a modal or a form page alike; the
379
+ * `new` form's also on a duplicated row. A watch's `requirePermission` is
380
+ * checked per request, as on a page's own components.
381
+ *
382
+ * @example
383
+ * forms: {
384
+ * new: (form) =>
385
+ * form.watch(FormEvents.FIELD_CHANGE, FormFunctions.SET_FIELD_VALUE, {
386
+ * params: { targetField: "probability", valueMap: { won: 100, lost: 0 } },
387
+ * onParam: { key: "fieldId", value: "stage" },
388
+ * }),
389
+ * }
390
+ */
391
+ forms?: Partial<Record<"new" | "edit" | "view", TableViewFormSetup>>;
392
+ /**
393
+ * Skip the tenant access gate on every data route of this table view, the
394
+ * table-view mirror of the guards' `bypassTenantAccessGate` option. Reserved
395
+ * for tables that must stay readable when a gate denies the tenant (e.g.
396
+ * invoices on the billing page of a suspended tenant) so it can regularize
397
+ * its situation. Data routes are registered independently of pages, so the
398
+ * opt-out is controller-level and latched: once any `TableView()` call on a
399
+ * controller declares it, the controller's routes bypass the gate wherever
400
+ * they are rendered. Permission checks still apply.
401
+ */
402
+ bypassTenantAccessGate?: boolean;
403
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=option-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-contract.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/option-contract.ts"],"names":[],"mappings":""}