@antelopejs/interface-dms 0.9.1 → 0.10.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 (515) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/dist/attachments.js +3 -1
  3. package/dist/attachments.js.map +1 -1
  4. package/dist/auth/db/models/sessions.model.js +1 -5
  5. package/dist/auth/db/models/sessions.model.js.map +1 -1
  6. package/dist/auth/db/tables/users.table.js.map +1 -1
  7. package/dist/auth/index.js +4 -1
  8. package/dist/auth/index.js.map +1 -1
  9. package/dist/auth/internal/jwt-auth-decorator.js +7 -5
  10. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
  11. package/dist/auth/internal/request-authenticators.js +4 -1
  12. package/dist/auth/internal/request-authenticators.js.map +1 -1
  13. package/dist/auth/internal/request-principal.js +1 -0
  14. package/dist/auth/internal/request-principal.js.map +1 -1
  15. package/dist/base/activity-feed.d.ts +26 -26
  16. package/dist/base/banner.d.ts +14 -14
  17. package/dist/base/banner.js +1 -0
  18. package/dist/base/banner.js.map +1 -1
  19. package/dist/base/block-registry/helpers.js +1 -0
  20. package/dist/base/block-registry/helpers.js.map +1 -1
  21. package/dist/base/block-registry/internal/describe.js +107 -85
  22. package/dist/base/block-registry/internal/describe.js.map +1 -1
  23. package/dist/base/block-registry/presentation.js +0 -5
  24. package/dist/base/block-registry/presentation.js.map +1 -1
  25. package/dist/base/block-registry/registry.js +4 -1
  26. package/dist/base/block-registry/registry.js.map +1 -1
  27. package/dist/base/block-types.js +0 -2
  28. package/dist/base/block-types.js.map +1 -1
  29. package/dist/base/card.d.ts +8 -8
  30. package/dist/base/chart-card.d.ts +2 -2
  31. package/dist/base/chart-card.js +2 -2
  32. package/dist/base/chart-card.js.map +1 -1
  33. package/dist/base/chart-schemas.d.ts +66 -66
  34. package/dist/base/chart-schemas.js +19 -21
  35. package/dist/base/chart-schemas.js.map +1 -1
  36. package/dist/base/chart.js +1 -0
  37. package/dist/base/chart.js.map +1 -1
  38. package/dist/base/code-block.js +1 -0
  39. package/dist/base/code-block.js.map +1 -1
  40. package/dist/base/confirm-dialog.d.ts +2 -6
  41. package/dist/base/confirm-dialog.js +36 -15
  42. package/dist/base/confirm-dialog.js.map +1 -1
  43. package/dist/base/data-sources.js +6 -2
  44. package/dist/base/data-sources.js.map +1 -1
  45. package/dist/base/data-types/compare-types.js +82 -68
  46. package/dist/base/data-types/compare-types.js.map +1 -1
  47. package/dist/base/data-types/core.d.ts +8 -101
  48. package/dist/base/data-types/core.js +40 -143
  49. package/dist/base/data-types/core.js.map +1 -1
  50. package/dist/base/data-types/default/address.d.ts +126 -0
  51. package/dist/base/data-types/default/address.js +57 -0
  52. package/dist/base/data-types/default/address.js.map +1 -0
  53. package/dist/base/data-types/default/choices.d.ts +54 -0
  54. package/dist/base/data-types/default/choices.js +135 -0
  55. package/dist/base/data-types/default/choices.js.map +1 -0
  56. package/dist/base/data-types/default/files.d.ts +86 -0
  57. package/dist/base/data-types/default/files.js +214 -0
  58. package/dist/base/data-types/default/files.js.map +1 -0
  59. package/dist/base/data-types/default/inputs.d.ts +11 -0
  60. package/dist/base/data-types/default/inputs.js +26 -0
  61. package/dist/base/data-types/default/inputs.js.map +1 -0
  62. package/dist/base/data-types/default/numbers.d.ts +62 -0
  63. package/dist/base/data-types/default/numbers.js +287 -0
  64. package/dist/base/data-types/default/numbers.js.map +1 -0
  65. package/dist/base/data-types/default/options.d.ts +133 -0
  66. package/dist/base/data-types/default/options.js +3 -0
  67. package/dist/base/data-types/default/options.js.map +1 -0
  68. package/dist/base/data-types/default/relations.d.ts +267 -0
  69. package/dist/base/data-types/default/relations.js +149 -0
  70. package/dist/base/data-types/default/relations.js.map +1 -0
  71. package/dist/base/data-types/default/strings.d.ts +35 -0
  72. package/dist/base/data-types/default/strings.js +154 -0
  73. package/dist/base/data-types/default/strings.js.map +1 -0
  74. package/dist/base/data-types/default-types.d.ts +73 -753
  75. package/dist/base/data-types/default-types.js +39 -991
  76. package/dist/base/data-types/default-types.js.map +1 -1
  77. package/dist/base/data-types/field-types.js +2 -6
  78. package/dist/base/data-types/field-types.js.map +1 -1
  79. package/dist/base/data-types/index.js +1 -20
  80. package/dist/base/data-types/index.js.map +1 -1
  81. package/dist/base/data-types/internal/compare-types.js +0 -2
  82. package/dist/base/data-types/internal/compare-types.js.map +1 -1
  83. package/dist/base/data-types/internal/relation-add-form.d.ts +7 -0
  84. package/dist/base/data-types/internal/relation-add-form.js +21 -0
  85. package/dist/base/data-types/internal/relation-add-form.js.map +1 -0
  86. package/dist/base/data-types/internal/relation-endpoints.d.ts +8 -0
  87. package/dist/base/data-types/internal/relation-endpoints.js +36 -0
  88. package/dist/base/data-types/internal/relation-endpoints.js.map +1 -0
  89. package/dist/base/data-types/status-type.js +0 -6
  90. package/dist/base/data-types/status-type.js.map +1 -1
  91. package/dist/base/display.d.ts +6 -6
  92. package/dist/base/display.js +15 -10
  93. package/dist/base/display.js.map +1 -1
  94. package/dist/base/empty-state.d.ts +8 -8
  95. package/dist/base/export-jobs.js.map +1 -1
  96. package/dist/base/form-block-schema.d.ts +36 -36
  97. package/dist/base/form-block-schema.js +0 -5
  98. package/dist/base/form-block-schema.js.map +1 -1
  99. package/dist/base/form-schema.d.ts +5 -1
  100. package/dist/base/form-schema.js +44 -206
  101. package/dist/base/form-schema.js.map +1 -1
  102. package/dist/base/form-types.d.ts +4 -84
  103. package/dist/base/form-types.js.map +1 -1
  104. package/dist/base/form.js +0 -7
  105. package/dist/base/form.js.map +1 -1
  106. package/dist/base/guard.d.ts +14 -14
  107. package/dist/base/helpers/archive-mode-helpers.js +11 -11
  108. package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
  109. package/dist/base/helpers/file-refs.js +20 -7
  110. package/dist/base/helpers/file-refs.js.map +1 -1
  111. package/dist/base/index.js +0 -5
  112. package/dist/base/index.js.map +1 -1
  113. package/dist/base/internal/button-availability.d.ts +3 -17
  114. package/dist/base/internal/button-availability.js +36 -31
  115. package/dist/base/internal/button-availability.js.map +1 -1
  116. package/dist/base/internal/chart-schemas.js +0 -2
  117. package/dist/base/internal/chart-schemas.js.map +1 -1
  118. package/dist/base/internal/composed-text.js +0 -2
  119. package/dist/base/internal/composed-text.js.map +1 -1
  120. package/dist/base/internal/confirm-dialog.d.ts +3 -13
  121. package/dist/base/internal/confirm-dialog.js +37 -21
  122. package/dist/base/internal/confirm-dialog.js.map +1 -1
  123. package/dist/base/internal/display.js +3 -1
  124. package/dist/base/internal/display.js.map +1 -1
  125. package/dist/base/internal/form-schema-components.d.ts +12 -0
  126. package/dist/base/internal/form-schema-components.js +61 -0
  127. package/dist/base/internal/form-schema-components.js.map +1 -0
  128. package/dist/base/internal/form-schema-validation.d.ts +16 -0
  129. package/dist/base/internal/form-schema-validation.js +68 -0
  130. package/dist/base/internal/form-schema-validation.js.map +1 -0
  131. package/dist/base/internal/form-schema.d.ts +2 -7
  132. package/dist/base/internal/form-schema.js +36 -28
  133. package/dist/base/internal/form-schema.js.map +1 -1
  134. package/dist/base/internal/layouts.d.ts +1 -59
  135. package/dist/base/internal/searchable.js +3 -1
  136. package/dist/base/internal/searchable.js.map +1 -1
  137. package/dist/base/key-value-list.d.ts +12 -12
  138. package/dist/base/kpi-card.d.ts +2 -2
  139. package/dist/base/kpi-card.js +2 -0
  140. package/dist/base/kpi-card.js.map +1 -1
  141. package/dist/base/layouts.d.ts +6 -80
  142. package/dist/base/layouts.js +38 -54
  143. package/dist/base/layouts.js.map +1 -1
  144. package/dist/base/live-toggle.d.ts +2 -2
  145. package/dist/base/meter.d.ts +25 -25
  146. package/dist/base/meter.js +0 -1
  147. package/dist/base/meter.js.map +1 -1
  148. package/dist/base/nav-card-grid.d.ts +13 -13
  149. package/dist/base/page-toolbar.d.ts +2 -2
  150. package/dist/base/page-toolbar.js +0 -6
  151. package/dist/base/page-toolbar.js.map +1 -1
  152. package/dist/base/period-selector.d.ts +2 -2
  153. package/dist/base/period-selector.js +0 -4
  154. package/dist/base/period-selector.js.map +1 -1
  155. package/dist/base/query-response.js +3 -5
  156. package/dist/base/query-response.js.map +1 -1
  157. package/dist/base/resource-form-schema.js +0 -4
  158. package/dist/base/resource-form-schema.js.map +1 -1
  159. package/dist/base/searchable.d.ts +5 -0
  160. package/dist/base/searchable.js +11 -2
  161. package/dist/base/searchable.js.map +1 -1
  162. package/dist/base/stat-group.d.ts +15 -15
  163. package/dist/base/tab.d.ts +8 -8
  164. package/dist/base/tab.js +1 -0
  165. package/dist/base/tab.js.map +1 -1
  166. package/dist/base/table-view/column-display.js +0 -1
  167. package/dist/base/table-view/column-display.js.map +1 -1
  168. package/dist/base/table-view/data-functions.d.ts +10 -10
  169. package/dist/base/table-view/data-functions.js.map +1 -1
  170. package/dist/base/table-view/factory.js +32 -204
  171. package/dist/base/table-view/factory.js.map +1 -1
  172. package/dist/base/table-view/internal/auth.js +5 -19
  173. package/dist/base/table-view/internal/auth.js.map +1 -1
  174. package/dist/base/table-view/internal/column-conditions.js +0 -5
  175. package/dist/base/table-view/internal/column-conditions.js.map +1 -1
  176. package/dist/base/table-view/internal/column-display.js +5 -3
  177. package/dist/base/table-view/internal/column-display.js.map +1 -1
  178. package/dist/base/table-view/internal/factory-helpers.js +24 -158
  179. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  180. package/dist/base/table-view/internal/factory-lifecycle-created.d.ts +21 -0
  181. package/dist/base/table-view/internal/factory-lifecycle-created.js +96 -0
  182. package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -0
  183. package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +15 -0
  184. package/dist/base/table-view/internal/factory-lifecycle-filter.js +37 -0
  185. package/dist/base/table-view/internal/factory-lifecycle-filter.js.map +1 -0
  186. package/dist/base/table-view/internal/factory-lifecycle-options.d.ts +41 -0
  187. package/dist/base/table-view/internal/factory-lifecycle-options.js +99 -0
  188. package/dist/base/table-view/internal/factory-lifecycle-options.js.map +1 -0
  189. package/dist/base/table-view/internal/factory-private-actions.d.ts +32 -0
  190. package/dist/base/table-view/internal/factory-private-actions.js +77 -0
  191. package/dist/base/table-view/internal/factory-private-actions.js.map +1 -0
  192. package/dist/base/table-view/internal/factory-private-displays.d.ts +5 -0
  193. package/dist/base/table-view/internal/factory-private-displays.js +21 -0
  194. package/dist/base/table-view/internal/factory-private-displays.js.map +1 -0
  195. package/dist/base/table-view/internal/factory-private-urls.d.ts +15 -0
  196. package/dist/base/table-view/internal/factory-private-urls.js +43 -0
  197. package/dist/base/table-view/internal/factory-private-urls.js.map +1 -0
  198. package/dist/base/table-view/internal/files.js +3 -4
  199. package/dist/base/table-view/internal/files.js.map +1 -1
  200. package/dist/base/table-view/internal/footer.js +5 -3
  201. package/dist/base/table-view/internal/footer.js.map +1 -1
  202. package/dist/base/table-view/internal/guards.js +7 -10
  203. package/dist/base/table-view/internal/guards.js.map +1 -1
  204. package/dist/base/table-view/internal/meta-helpers.d.ts +27 -0
  205. package/dist/base/table-view/internal/meta-helpers.js +75 -0
  206. package/dist/base/table-view/internal/meta-helpers.js.map +1 -0
  207. package/dist/base/table-view/internal/meta.js +8 -2
  208. package/dist/base/table-view/internal/meta.js.map +1 -1
  209. package/dist/base/table-view/internal/nav-badges.js +5 -3
  210. package/dist/base/table-view/internal/nav-badges.js.map +1 -1
  211. package/dist/base/table-view/internal/option-contract.d.ts +403 -0
  212. package/dist/base/table-view/internal/option-contract.js +3 -0
  213. package/dist/base/table-view/internal/option-contract.js.map +1 -0
  214. package/dist/base/table-view/internal/option-displays.d.ts +125 -0
  215. package/dist/base/table-view/internal/option-displays.js +3 -0
  216. package/dist/base/table-view/internal/option-displays.js.map +1 -0
  217. package/dist/base/table-view/internal/option-empty-states.d.ts +43 -0
  218. package/dist/base/table-view/internal/option-empty-states.js +3 -0
  219. package/dist/base/table-view/internal/option-empty-states.js.map +1 -0
  220. package/dist/base/table-view/internal/option-expandable.d.ts +66 -0
  221. package/dist/base/table-view/internal/option-expandable.js +3 -0
  222. package/dist/base/table-view/internal/option-expandable.js.map +1 -0
  223. package/dist/base/table-view/internal/option-filtering.d.ts +85 -0
  224. package/dist/base/table-view/internal/option-filtering.js +4 -0
  225. package/dist/base/table-view/internal/option-filtering.js.map +1 -0
  226. package/dist/base/table-view/internal/option-footer.d.ts +64 -0
  227. package/dist/base/table-view/internal/option-footer.js +3 -0
  228. package/dist/base/table-view/internal/option-footer.js.map +1 -0
  229. package/dist/base/table-view/internal/option-forms.d.ts +62 -0
  230. package/dist/base/table-view/internal/option-forms.js +3 -0
  231. package/dist/base/table-view/internal/option-forms.js.map +1 -0
  232. package/dist/base/table-view/internal/option-row-actions.d.ts +76 -0
  233. package/dist/base/table-view/internal/option-row-actions.js +3 -0
  234. package/dist/base/table-view/internal/option-row-actions.js.map +1 -0
  235. package/dist/base/table-view/internal/option-views.d.ts +199 -0
  236. package/dist/base/table-view/internal/option-views.js +3 -0
  237. package/dist/base/table-view/internal/option-views.js.map +1 -0
  238. package/dist/base/table-view/internal/options.d.ts +2 -6
  239. package/dist/base/table-view/internal/options.js +35 -6
  240. package/dist/base/table-view/internal/options.js.map +1 -1
  241. package/dist/base/table-view/internal/realtime.js +15 -5
  242. package/dist/base/table-view/internal/realtime.js.map +1 -1
  243. package/dist/base/table-view/internal/request-filter.js +12 -12
  244. package/dist/base/table-view/internal/request-filter.js.map +1 -1
  245. package/dist/base/table-view/internal/resource-form.js +1 -10
  246. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  247. package/dist/base/table-view/internal/row-actions-schema.js +0 -6
  248. package/dist/base/table-view/internal/row-actions-schema.js.map +1 -1
  249. package/dist/base/table-view/internal/row-rule-shape.d.ts +10 -0
  250. package/dist/base/table-view/internal/row-rule-shape.js +43 -0
  251. package/dist/base/table-view/internal/row-rule-shape.js.map +1 -0
  252. package/dist/base/table-view/internal/row-rules.js +1 -4
  253. package/dist/base/table-view/internal/row-rules.js.map +1 -1
  254. package/dist/base/table-view/internal/tabs.js +3 -6
  255. package/dist/base/table-view/internal/tabs.js.map +1 -1
  256. package/dist/base/table-view/internal/validation.js +2 -16
  257. package/dist/base/table-view/internal/validation.js.map +1 -1
  258. package/dist/base/table-view/internal/writer.js +1 -0
  259. package/dist/base/table-view/internal/writer.js.map +1 -1
  260. package/dist/base/table-view/meta.js +11 -93
  261. package/dist/base/table-view/meta.js.map +1 -1
  262. package/dist/base/table-view/options.d.ts +61 -1099
  263. package/dist/base/table-view/options.js.map +1 -1
  264. package/dist/base/table-view/resource-form.js +0 -2
  265. package/dist/base/table-view/resource-form.js.map +1 -1
  266. package/dist/base/table-view/routes.js +10 -9
  267. package/dist/base/table-view/routes.js.map +1 -1
  268. package/dist/base/table-view/schema.d.ts +93 -93
  269. package/dist/base/table-view/schema.js +4 -22
  270. package/dist/base/table-view/schema.js.map +1 -1
  271. package/dist/base/table-view/source.js +0 -5
  272. package/dist/base/table-view/source.js.map +1 -1
  273. package/dist/base/table-view/views.js +0 -3
  274. package/dist/base/table-view/views.js.map +1 -1
  275. package/dist/base/table-view/writer.js +0 -5
  276. package/dist/base/table-view/writer.js.map +1 -1
  277. package/dist/base/top-list-card.d.ts +13 -13
  278. package/dist/base/top-list-card.js +2 -0
  279. package/dist/base/top-list-card.js.map +1 -1
  280. package/dist/base/types/action-target.d.ts +1 -302
  281. package/dist/base/types/button.d.ts +2 -7
  282. package/dist/base/types/button.js +35 -8
  283. package/dist/base/types/button.js.map +1 -1
  284. package/dist/base/types/confirm-dialog.d.ts +1 -127
  285. package/dist/base/types/custom-button.d.ts +1 -87
  286. package/dist/base/types/error.js +2 -1
  287. package/dist/base/types/error.js.map +1 -1
  288. package/dist/base/types/export-status.d.ts +2 -8
  289. package/dist/base/types/export-status.js +35 -9
  290. package/dist/base/types/export-status.js.map +1 -1
  291. package/dist/base/types/form-values.d.ts +1 -4
  292. package/dist/base/types/internal/action-target.d.ts +2 -8
  293. package/dist/base/types/internal/action-target.js +36 -15
  294. package/dist/base/types/internal/action-target.js.map +1 -1
  295. package/dist/base/types/row-action-operators.d.ts +3 -29
  296. package/dist/base/types/row-action-operators.js +35 -18
  297. package/dist/base/types/row-action-operators.js.map +1 -1
  298. package/dist/base/types/row-action.d.ts +3 -36
  299. package/dist/base/types/size.d.ts +1 -3
  300. package/dist/base/types/size.js +0 -3
  301. package/dist/base/types/size.js.map +1 -1
  302. package/dist/base/types/tone.d.ts +3 -8
  303. package/dist/base/types/tone.js +35 -15
  304. package/dist/base/types/tone.js.map +1 -1
  305. package/dist/base/types/watch.d.ts +5 -19
  306. package/dist/base/types/watch.js +35 -3
  307. package/dist/base/types/watch.js.map +1 -1
  308. package/dist/component-options/action-target.d.ts +304 -0
  309. package/dist/component-options/action-target.js +3 -0
  310. package/dist/component-options/action-target.js.map +1 -0
  311. package/dist/component-options/button.d.ts +93 -0
  312. package/dist/component-options/button.js +12 -0
  313. package/dist/component-options/button.js.map +1 -0
  314. package/dist/component-options/confirm-dialog.d.ts +132 -0
  315. package/dist/component-options/confirm-dialog.js +18 -0
  316. package/dist/component-options/confirm-dialog.js.map +1 -0
  317. package/dist/component-options/data-type.d.ts +101 -0
  318. package/dist/component-options/data-type.js +146 -0
  319. package/dist/component-options/data-type.js.map +1 -0
  320. package/dist/component-options/form-field.d.ts +88 -0
  321. package/dist/component-options/form-field.js +3 -0
  322. package/dist/component-options/form-field.js.map +1 -0
  323. package/dist/component-options/internal/action-target.d.ts +8 -0
  324. package/dist/component-options/internal/action-target.js +18 -0
  325. package/dist/component-options/internal/action-target.js.map +1 -0
  326. package/dist/component-options/internal/button-availability.d.ts +17 -0
  327. package/dist/component-options/internal/button-availability.js +34 -0
  328. package/dist/component-options/internal/button-availability.js.map +1 -0
  329. package/dist/component-options/internal/confirm-dialog.d.ts +13 -0
  330. package/dist/component-options/internal/confirm-dialog.js +24 -0
  331. package/dist/component-options/internal/confirm-dialog.js.map +1 -0
  332. package/dist/component-options/internal/form-field.d.ts +7 -0
  333. package/dist/component-options/internal/form-field.js +31 -0
  334. package/dist/component-options/internal/form-field.js.map +1 -0
  335. package/dist/component-options/internal/page-layout.d.ts +71 -0
  336. package/dist/component-options/internal/page-layout.js +10 -0
  337. package/dist/component-options/internal/page-layout.js.map +1 -0
  338. package/dist/component-options/page-layout.d.ts +80 -0
  339. package/dist/component-options/page-layout.js +57 -0
  340. package/dist/component-options/page-layout.js.map +1 -0
  341. package/dist/component-options/row-action.d.ts +66 -0
  342. package/dist/component-options/row-action.js +22 -0
  343. package/dist/component-options/row-action.js.map +1 -0
  344. package/dist/component-slots.js.map +1 -1
  345. package/dist/component.d.ts +2 -2
  346. package/dist/component.js +38 -193
  347. package/dist/component.js.map +1 -1
  348. package/dist/data-controllers/members.js +2 -8
  349. package/dist/data-controllers/members.js.map +1 -1
  350. package/dist/data-controllers/roles.js +0 -5
  351. package/dist/data-controllers/roles.js.map +1 -1
  352. package/dist/db/internal/exportJobs.model.js +10 -6
  353. package/dist/db/internal/exportJobs.model.js.map +1 -1
  354. package/dist/db/internal/tenantLifecycle.model.js +0 -2
  355. package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
  356. package/dist/db/tables/exportJobs.table.d.ts +1 -1
  357. package/dist/db/tables/roles.table.js.map +1 -1
  358. package/dist/db/tables/user_invites.table.d.ts +1 -1
  359. package/dist/db/tables/user_invites.table.js.map +1 -1
  360. package/dist/export-status.d.ts +8 -0
  361. package/dist/export-status.js +13 -0
  362. package/dist/export-status.js.map +1 -0
  363. package/dist/hooks.d.ts +1 -1
  364. package/dist/hooks.js +2 -4
  365. package/dist/hooks.js.map +1 -1
  366. package/dist/index.js +0 -9
  367. package/dist/index.js.map +1 -1
  368. package/dist/internal/component-builder.d.ts +17 -0
  369. package/dist/internal/component-builder.js +58 -0
  370. package/dist/internal/component-builder.js.map +1 -0
  371. package/dist/internal/component-permissions.d.ts +13 -0
  372. package/dist/internal/component-permissions.js +45 -0
  373. package/dist/internal/component-permissions.js.map +1 -0
  374. package/dist/internal/component-serialization.d.ts +10 -0
  375. package/dist/internal/component-serialization.js +42 -0
  376. package/dist/internal/component-serialization.js.map +1 -0
  377. package/dist/internal/component-slots.js +7 -4
  378. package/dist/internal/component-slots.js.map +1 -1
  379. package/dist/internal/component-watches.d.ts +17 -0
  380. package/dist/internal/component-watches.js +110 -0
  381. package/dist/internal/component-watches.js.map +1 -0
  382. package/dist/internal/invite-membership.js +0 -1
  383. package/dist/internal/invite-membership.js.map +1 -1
  384. package/dist/invite-extension-payloads.d.ts +2 -0
  385. package/dist/invite-extension-payloads.js +3 -0
  386. package/dist/invite-extension-payloads.js.map +1 -0
  387. package/dist/invite-extensions/internal/delivery.js +4 -1
  388. package/dist/invite-extensions/internal/delivery.js.map +1 -1
  389. package/dist/invite-extensions/internal/edit.js +5 -4
  390. package/dist/invite-extensions/internal/edit.js.map +1 -1
  391. package/dist/invite-extensions/internal/form-slot.js +5 -35
  392. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  393. package/dist/invite-extensions/internal/payload-slices.js +10 -3
  394. package/dist/invite-extensions/internal/payload-slices.js.map +1 -1
  395. package/dist/invite-extensions/internal/registry.js +3 -5
  396. package/dist/invite-extensions/internal/registry.js.map +1 -1
  397. package/dist/invite-extensions/registry.js +3 -8
  398. package/dist/invite-extensions/registry.js.map +1 -1
  399. package/dist/invite-extensions/types.d.ts +1 -2
  400. package/dist/invite-resolution.js +2 -1
  401. package/dist/invite-resolution.js.map +1 -1
  402. package/dist/layout-banners.js.map +1 -1
  403. package/dist/notifications/builder.js +25 -5
  404. package/dist/notifications/builder.js.map +1 -1
  405. package/dist/notifications/internal.js +0 -3
  406. package/dist/notifications/internal.js.map +1 -1
  407. package/dist/notifications/sendable.js.map +1 -1
  408. package/dist/page/categories.js +1 -4
  409. package/dist/page/categories.js.map +1 -1
  410. package/dist/page/controllers.js +9 -55
  411. package/dist/page/controllers.js.map +1 -1
  412. package/dist/page/form-page-routes.js +0 -7
  413. package/dist/page/form-page-routes.js.map +1 -1
  414. package/dist/page/internal/categories.d.ts +1 -1
  415. package/dist/page/internal/categories.js +12 -36
  416. package/dist/page/internal/categories.js.map +1 -1
  417. package/dist/page/internal/category-permission.d.ts +10 -0
  418. package/dist/page/internal/category-permission.js +20 -0
  419. package/dist/page/internal/category-permission.js.map +1 -0
  420. package/dist/page/internal/component-target.js +2 -2
  421. package/dist/page/internal/component-target.js.map +1 -1
  422. package/dist/page/internal/component-tree.js +0 -2
  423. package/dist/page/internal/component-tree.js.map +1 -1
  424. package/dist/page/internal/controller-options.d.ts +6 -0
  425. package/dist/page/internal/controller-options.js +40 -0
  426. package/dist/page/internal/controller-options.js.map +1 -0
  427. package/dist/page/internal/extension-assembly.js +2 -7
  428. package/dist/page/internal/extension-assembly.js.map +1 -1
  429. package/dist/page/internal/layout-filter.js +7 -3
  430. package/dist/page/internal/layout-filter.js.map +1 -1
  431. package/dist/page/internal/metadata-components.d.ts +47 -0
  432. package/dist/page/internal/metadata-components.js +136 -0
  433. package/dist/page/internal/metadata-components.js.map +1 -0
  434. package/dist/page/internal/metadata-extension-contributions.d.ts +14 -0
  435. package/dist/page/internal/metadata-extension-contributions.js +56 -0
  436. package/dist/page/internal/metadata-extension-contributions.js.map +1 -0
  437. package/dist/page/internal/metadata-extensions.d.ts +8 -0
  438. package/dist/page/internal/metadata-extensions.js +21 -0
  439. package/dist/page/internal/metadata-extensions.js.map +1 -0
  440. package/dist/page/internal/metadata-helpers.js +0 -14
  441. package/dist/page/internal/metadata-helpers.js.map +1 -1
  442. package/dist/page/internal/metadata-info.d.ts +5 -0
  443. package/dist/page/internal/metadata-info.js +39 -0
  444. package/dist/page/internal/metadata-info.js.map +1 -0
  445. package/dist/page/internal/metadata-layout-response.d.ts +32 -0
  446. package/dist/page/internal/metadata-layout-response.js +76 -0
  447. package/dist/page/internal/metadata-layout-response.js.map +1 -0
  448. package/dist/page/internal/metadata-layout.d.ts +10 -0
  449. package/dist/page/internal/metadata-layout.js +44 -0
  450. package/dist/page/internal/metadata-layout.js.map +1 -0
  451. package/dist/page/internal/metadata-lifecycle.d.ts +52 -0
  452. package/dist/page/internal/metadata-lifecycle.js +241 -0
  453. package/dist/page/internal/metadata-lifecycle.js.map +1 -0
  454. package/dist/page/internal/metadata-owner.d.ts +53 -0
  455. package/dist/page/internal/metadata-owner.js +14 -0
  456. package/dist/page/internal/metadata-owner.js.map +1 -0
  457. package/dist/page/internal/metadata-publish.d.ts +20 -0
  458. package/dist/page/internal/metadata-publish.js +55 -0
  459. package/dist/page/internal/metadata-publish.js.map +1 -0
  460. package/dist/page/internal/metadata-registration.d.ts +8 -0
  461. package/dist/page/internal/metadata-registration.js +72 -0
  462. package/dist/page/internal/metadata-registration.js.map +1 -0
  463. package/dist/page/internal/metadata-upload-registration.d.ts +16 -0
  464. package/dist/page/internal/metadata-upload-registration.js +64 -0
  465. package/dist/page/internal/metadata-upload-registration.js.map +1 -0
  466. package/dist/page/internal/metadata-uploads.d.ts +18 -0
  467. package/dist/page/internal/metadata-uploads.js +46 -0
  468. package/dist/page/internal/metadata-uploads.js.map +1 -0
  469. package/dist/page/internal/nav-badges.d.ts +1 -1
  470. package/dist/page/internal/nav-badges.js +3 -1
  471. package/dist/page/internal/nav-badges.js.map +1 -1
  472. package/dist/page/internal/page-record.d.ts +2 -9
  473. package/dist/page/internal/page-record.js +8 -5
  474. package/dist/page/internal/page-record.js.map +1 -1
  475. package/dist/page/internal/page-registration.js +0 -4
  476. package/dist/page/internal/page-registration.js.map +1 -1
  477. package/dist/page/internal/registry.js +2 -1
  478. package/dist/page/internal/registry.js.map +1 -1
  479. package/dist/page/internal/table-view-ids.js +3 -2
  480. package/dist/page/internal/table-view-ids.js.map +1 -1
  481. package/dist/page/layout-filter.js +1 -0
  482. package/dist/page/layout-filter.js.map +1 -1
  483. package/dist/page/metadata.js +192 -558
  484. package/dist/page/metadata.js.map +1 -1
  485. package/dist/page/roots.js +3 -5
  486. package/dist/page/roots.js.map +1 -1
  487. package/dist/page/types.d.ts +1 -1
  488. package/dist/page/types.js.map +1 -1
  489. package/dist/permissions.js +0 -18
  490. package/dist/permissions.js.map +1 -1
  491. package/dist/realtime.js +0 -3
  492. package/dist/realtime.js.map +1 -1
  493. package/dist/request-tenant.js +4 -1
  494. package/dist/request-tenant.js.map +1 -1
  495. package/dist/tenant-lifecycle.js +2 -2
  496. package/dist/tenant-lifecycle.js.map +1 -1
  497. package/dist/tones.d.ts +8 -0
  498. package/dist/tones.js +19 -0
  499. package/dist/tones.js.map +1 -0
  500. package/dist/uploads.js +15 -4
  501. package/dist/uploads.js.map +1 -1
  502. package/dist/utils/internal/row-instance.js +2 -3
  503. package/dist/utils/internal/row-instance.js.map +1 -1
  504. package/dist/utils/internal/type-check.d.ts +10 -1
  505. package/dist/utils/internal/type-check.js +12 -3
  506. package/dist/utils/internal/type-check.js.map +1 -1
  507. package/dist/utils/internal/value-parser.js +7 -2
  508. package/dist/utils/internal/value-parser.js.map +1 -1
  509. package/dist/watch-actions.d.ts +19 -0
  510. package/dist/watch-actions.js +7 -0
  511. package/dist/watch-actions.js.map +1 -0
  512. package/docs/3.base/2.types.md +1 -1
  513. package/docs/3.base/8.data-types.md +2 -0
  514. package/docs/4.notifications/3.sending.md +1 -1
  515. package/package.json +3 -3
@@ -0,0 +1,146 @@
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.RegisterDataCompareMode = exports.RegisterDataType = exports.DataType = void 0;
7
+ exports.CreateDataType = CreateDataType;
8
+ exports.getDataTypeId = getDataTypeId;
9
+ exports.serializeType = serializeType;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const decorators_1 = require("@antelopejs/interface-core/decorators");
12
+ const dataCompareModes = {};
13
+ const dataCompareModesMetadata = new Map();
14
+ const dataTypes = {};
15
+ const dataTypesReverse = new WeakMap();
16
+ class DataType {
17
+ compareModes;
18
+ defaultCompareMode;
19
+ options;
20
+ constructor(compareModes = [], defaultCompareMode,
21
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- Published data-type options are interpreted by application-defined subclasses.
22
+ options) {
23
+ this.compareModes = compareModes;
24
+ this.defaultCompareMode = defaultCompareMode;
25
+ this.options = options;
26
+ }
27
+ // oxlint-disable-next-line eslint/max-params -- Data-type implementations and callers share this positional filter contract.
28
+ filter(context, proxy, key, value, mode,
29
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- Published comparator rows belong to application schemas, not a fixed interface model.
30
+ row) {
31
+ const compareMode = dataCompareModes[mode];
32
+ if (!compareMode)
33
+ return false;
34
+ return compareMode.filter(context, proxy, key, value, row);
35
+ }
36
+ /**
37
+ * Returns filters components for this data type.
38
+ * This component is used in filters for filtering values of this data type.
39
+ * Must include a 'default' component, and can optionally include
40
+ * mode-specific components for different compare modes.
41
+ * Override this method in subclasses for custom filter components per mode.
42
+ *
43
+ * @returns A record of filter components with at least a 'default' key
44
+ */
45
+ filterComponents() {
46
+ return {
47
+ default: this.defaultInputComponent(),
48
+ };
49
+ }
50
+ /**
51
+ * Returns the form input component for this data type.
52
+ * This component is used in forms for editing values of this data type.
53
+ *
54
+ * @returns The input component for this data type
55
+ */
56
+ inputComponent() {
57
+ return this.defaultInputComponent();
58
+ }
59
+ /**
60
+ * The input component a value of this type is described with where
61
+ * nothing is entered through it: a table column's type, whose cells, cards
62
+ * and quick filters read its options, and a read-only form field. Defaults
63
+ * to {@link inputComponent}; a type whose input carries what only an
64
+ * editable control uses (a relation's inline "add" form) leaves it out, so
65
+ * a page does not ship it once per column.
66
+ *
67
+ * @returns The input component, without what only editing uses
68
+ */
69
+ describedInputComponent() {
70
+ return this.inputComponent();
71
+ }
72
+ }
73
+ exports.DataType = DataType;
74
+ /**
75
+ * Register a new data type
76
+ * @param id - The id of the data type
77
+ * @returns The data type class decorator
78
+ */
79
+ exports.RegisterDataType = (0, decorators_1.MakeClassDecorator)((target, id) => {
80
+ dataTypes[id] = target;
81
+ dataTypesReverse.set(target, id);
82
+ });
83
+ /**
84
+ * Register a new data compare mode
85
+ * @param id - The id of the data compare mode
86
+ * @param noInput - Whether this compare mode requires no input (default: false)
87
+ * @returns The data compare mode class decorator
88
+ */
89
+ exports.RegisterDataCompareMode = (0, decorators_1.MakeClassDecorator)((target, id, noInput = false) => {
90
+ const instance = new target();
91
+ dataCompareModes[id] = instance;
92
+ dataCompareModesMetadata.set(target, {
93
+ id,
94
+ instance,
95
+ noInput,
96
+ });
97
+ });
98
+ /**
99
+ * Create a new data type instance
100
+ * @param id - The id of the data type
101
+ * @param options - The options for the data type
102
+ * @returns The data type instance
103
+ */
104
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Published factory forwards options to the registered application class, which owns their interpretation.
105
+ function CreateDataType(id, options) {
106
+ const cls = dataTypes[id];
107
+ (0, node_assert_1.default)(cls, `Unknown type ${id}`);
108
+ return new cls(options);
109
+ }
110
+ /**
111
+ * Get the ID of a DataType instance
112
+ */
113
+ function getDataTypeId(instance) {
114
+ return dataTypesReverse.get(Object.getPrototypeOf(instance).constructor);
115
+ }
116
+ function serializeType(instance) {
117
+ if (instance) {
118
+ const id = getDataTypeId(instance);
119
+ if (id) {
120
+ const compareModes = instance.compareModes
121
+ .map((modeClass) => dataCompareModesMetadata.get(modeClass)?.id)
122
+ .filter((modeId) => Boolean(modeId));
123
+ const defaultCompareMode = instance.defaultCompareMode
124
+ ? dataCompareModesMetadata.get(instance.defaultCompareMode)?.id
125
+ : undefined;
126
+ const inputComponents = instance.filterComponents();
127
+ const filteredInputComponents = {
128
+ ...inputComponents,
129
+ };
130
+ instance.compareModes.forEach((modeClass) => {
131
+ const metadata = dataCompareModesMetadata.get(modeClass);
132
+ if (metadata?.noInput) {
133
+ filteredInputComponents[metadata.id] = "noInput";
134
+ }
135
+ });
136
+ return {
137
+ id,
138
+ compareModes,
139
+ defaultCompareMode,
140
+ filterComponents: filteredInputComponents,
141
+ inputComponent: instance.describedInputComponent(),
142
+ };
143
+ }
144
+ }
145
+ }
146
+ //# sourceMappingURL=data-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-type.js","sourceRoot":"","sources":["../../src/component-options/data-type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import type { ComponentInfoSerialized } from "../component";
2
+ import type { Tone } from "../tones";
3
+ import type { DataType } from "./data-type";
4
+ /**
5
+ * Valid default values for form fields and columns
6
+ */
7
+ export type DefaultValue = string | number | boolean | Date | null | DefaultValue[];
8
+ /** A pill shown beside a read-only field's value. */
9
+ export interface FormFieldBadge {
10
+ /** i18n key or literal. */
11
+ label: string;
12
+ tone: Tone;
13
+ }
14
+ /** A link shown beside a read-only field's value: where it is changed. */
15
+ export interface FormFieldLink {
16
+ /** i18n key or literal. */
17
+ label: string;
18
+ /** Takes the page URL tokens (`{{params.X}}`, `{{query.X}}`). */
19
+ to: string;
20
+ }
21
+ /** A field shown, not edited, with what tells why or where to change it. */
22
+ export interface FormFieldReadonly {
23
+ badge?: FormFieldBadge;
24
+ link?: FormFieldLink;
25
+ }
26
+ /**
27
+ * Holds while another field of the same form holds one of the values `in`
28
+ * lists (a select's or status's value, a boolean; `null` for an empty
29
+ * field), compared as is: `{ field: "stage", in: ["lost"] }`.
30
+ */
31
+ export interface FieldCondition {
32
+ field: string;
33
+ in: readonly unknown[];
34
+ }
35
+ export interface FormField {
36
+ id: string;
37
+ label?: string;
38
+ description?: string;
39
+ /** A grey help line under the control (i18n key or literal). */
40
+ hint?: string;
41
+ type: DataType;
42
+ inputComponent?: ComponentInfoSerialized;
43
+ disabled?: boolean;
44
+ /**
45
+ * The value is shown, not edited: `true`, or with a pill (`badge`) and a
46
+ * link to where it is changed (`link`).
47
+ */
48
+ readonly?: boolean | FormFieldReadonly;
49
+ /**
50
+ * A form creating a record leaves out a read-only field (`disabled` or
51
+ * `readonly`) that holds nothing yet, a value the server sets once the
52
+ * record exists: `true` shows it empty all the same.
53
+ */
54
+ showEmptyOnCreate?: boolean;
55
+ required?: boolean;
56
+ /** The value of a new record: the field starts with it. */
57
+ defaultValue?: DefaultValue;
58
+ /**
59
+ * `defaultValue` is the module's default for a setting, not only a new
60
+ * record's starting value: while the field holds something else, it shows
61
+ * "Module default: X" with "Use default", which puts it back. Off unless
62
+ * set, so a record form (a table view's) never presents a column's initial
63
+ * value as a default the user strayed from.
64
+ */
65
+ offersDefault?: boolean;
66
+ localized?: boolean;
67
+ /**
68
+ * The language a localized field falls back to (its `@Localized`
69
+ * `fallbackLocale`): a value in any language requires one in this one.
70
+ */
71
+ fallbackLocale?: string;
72
+ /**
73
+ * Shown only while the condition holds, from the moment the form opens:
74
+ * hidden, the field is neither required nor sent. A table view's data
75
+ * routes hold to it as well (see `ColumnOptions.visibleWhen`).
76
+ */
77
+ visibleWhen?: FieldCondition;
78
+ /**
79
+ * Shown read-only while the condition holds, from the moment the form
80
+ * opens: its value is not sent. A table view's data routes hold to it as
81
+ * well (see `ColumnOptions.disabledWhen`).
82
+ */
83
+ disabledWhen?: FieldCondition;
84
+ }
85
+ export interface FormFieldSerialized extends Omit<FormField, "type" | "inputComponent"> {
86
+ component: ComponentInfoSerialized;
87
+ type: string;
88
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../src/component-options/form-field.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { ActionTarget, ActionTargetSerialized } from "../action-target";
2
+ /**
3
+ * An action target as the options carry it: a component target is serialized,
4
+ * every other kind is plain data already.
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function serializeActionTarget(target: ActionTarget): ActionTargetSerialized;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeActionTarget = serializeActionTarget;
4
+ /**
5
+ * An action target as the options carry it: a component target is serialized,
6
+ * every other kind is plain data already.
7
+ *
8
+ * @internal
9
+ */
10
+ function serializeActionTarget(target) {
11
+ if (target.type === "drawer" ||
12
+ target.type === "modal" ||
13
+ target.type === "sidePanel") {
14
+ return { ...target, component: target.component.serializeSync() };
15
+ }
16
+ return target;
17
+ }
18
+ //# sourceMappingURL=action-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-target.js","sourceRoot":"","sources":["../../../src/component-options/internal/action-target.ts"],"names":[],"mappings":";;AAQA,sDAWC;AAjBD;;;;;GAKG;AACH,SAAgB,qBAAqB,CACnC,MAAoB;IAEpB,IACE,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxB,MAAM,CAAC,IAAI,KAAK,OAAO;QACvB,MAAM,CAAC,IAAI,KAAK,WAAW,EAC3B,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ComponentFilterContext } from "../../component";
2
+ import type { CustomButtonAvailability, CustomButtonSerialized } from "../button";
3
+ /**
4
+ * What a button served to one request carries of its availability.
5
+ *
6
+ * @internal
7
+ */
8
+ export type AvailabilityFields = Pick<CustomButtonSerialized, "id" | "label" | "disabled" | "disabledReason">;
9
+ /**
10
+ * A served button, disabled with its reason when its `availability` refuses
11
+ * the request, `undefined` when it hides the button. A resolver that throws
12
+ * leaves the button enabled: the operation behind it still refuses on its
13
+ * own, and failing the layout would take the page down.
14
+ *
15
+ * @internal
16
+ */
17
+ export declare function applyButtonAvailability<T extends AvailabilityFields>(availability: CustomButtonAvailability | undefined, serialized: T, context: ComponentFilterContext): Promise<T | undefined>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyButtonAvailability = applyButtonAvailability;
4
+ const logging_1 = require("@antelopejs/interface-core/logging");
5
+ const isHidden = (answer) => answer.hidden === true;
6
+ /**
7
+ * A served button, disabled with its reason when its `availability` refuses
8
+ * the request, `undefined` when it hides the button. A resolver that throws
9
+ * leaves the button enabled: the operation behind it still refuses on its
10
+ * own, and failing the layout would take the page down.
11
+ *
12
+ * @internal
13
+ */
14
+ async function applyButtonAvailability(availability, serialized, context) {
15
+ if (!availability)
16
+ return serialized;
17
+ try {
18
+ const unavailability = await availability(context);
19
+ if (!unavailability)
20
+ return serialized;
21
+ if (isHidden(unavailability))
22
+ return undefined;
23
+ return {
24
+ ...serialized,
25
+ disabled: true,
26
+ disabledReason: unavailability.reason,
27
+ };
28
+ }
29
+ catch (error) {
30
+ logging_1.Logging.Error(`[dms] availability of button "${serialized.id ?? serialized.label}" could not be resolved:`, error);
31
+ return serialized;
32
+ }
33
+ }
34
+ //# sourceMappingURL=button-availability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-availability.js","sourceRoot":"","sources":["../../../src/component-options/internal/button-availability.ts"],"names":[],"mappings":";;AA+BA,0DAsBC;AArDD,gEAA6D;AAmB7D,MAAM,QAAQ,GAAG,CACf,MAAgE,EAClC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;AAE1D;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,YAAkD,EAClD,UAAa,EACb,OAA+B;IAE/B,IAAI,CAAC,YAAY;QAAE,OAAO,UAAU,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc;YAAE,OAAO,UAAU,CAAC;QACvC,IAAI,QAAQ,CAAC,cAAc,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO;YACL,GAAG,UAAU;YACb,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,cAAc,CAAC,MAAM;SACtC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iBAAO,CAAC,KAAK,CACX,iCAAiC,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,0BAA0B,EAC5F,KAAK,CACN,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ActionConfirm, ActionConfirmSerialized, ConfirmDialogFrom } from "../confirm-dialog";
2
+ /**
3
+ * Whether a confirmation is worded by the server (`{ from }`).
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function isConfirmFrom(confirm: ActionConfirm | ActionConfirmSerialized): confirm is ConfirmDialogFrom;
8
+ /**
9
+ * An action's confirmation as its options carry it.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare function serializeActionConfirm(confirm: ActionConfirm | undefined): ActionConfirmSerialized | undefined;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isConfirmFrom = isConfirmFrom;
4
+ exports.serializeActionConfirm = serializeActionConfirm;
5
+ const confirm_dialog_1 = require("../confirm-dialog");
6
+ /**
7
+ * Whether a confirmation is worded by the server (`{ from }`).
8
+ *
9
+ * @internal
10
+ */
11
+ function isConfirmFrom(confirm) {
12
+ return "from" in confirm;
13
+ }
14
+ /**
15
+ * An action's confirmation as its options carry it.
16
+ *
17
+ * @internal
18
+ */
19
+ function serializeActionConfirm(confirm) {
20
+ if (!confirm)
21
+ return undefined;
22
+ return isConfirmFrom(confirm) ? confirm : (0, confirm_dialog_1.serializeConfirmDialog)(confirm);
23
+ }
24
+ //# sourceMappingURL=confirm-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-dialog.js","sourceRoot":"","sources":["../../../src/component-options/internal/confirm-dialog.ts"],"names":[],"mappings":";;AAYA,sCAIC;AAOD,wDAKC;AAvBD,sDAA2D;AAE3D;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,OAAgD;IAEhD,OAAO,MAAM,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,OAAkC;IAElC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { FormField, FormFieldSerialized } from "../form-field";
2
+ /**
3
+ * A form field as the client reads it: its data type reduced to an id.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function serializeFormField(field: FormField): FormFieldSerialized;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeFormField = serializeFormField;
4
+ const data_type_1 = require("../data-type");
5
+ /**
6
+ * A form field as the client reads it: its data type reduced to an id.
7
+ *
8
+ * @internal
9
+ */
10
+ function serializeFormField(field) {
11
+ const typeId = (0, data_type_1.getDataTypeId)(field.type) || "unknown";
12
+ return {
13
+ id: field.id,
14
+ label: field.label,
15
+ description: field.description,
16
+ hint: field.hint,
17
+ component: field.inputComponent || field.type.inputComponent(),
18
+ disabled: field.disabled,
19
+ readonly: field.readonly,
20
+ showEmptyOnCreate: field.showEmptyOnCreate,
21
+ type: typeId,
22
+ required: field.required,
23
+ defaultValue: field.defaultValue,
24
+ offersDefault: field.offersDefault,
25
+ localized: field.localized,
26
+ visibleWhen: field.visibleWhen,
27
+ disabledWhen: field.disabledWhen,
28
+ fallbackLocale: field.fallbackLocale,
29
+ };
30
+ }
31
+ //# sourceMappingURL=form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../../src/component-options/internal/form-field.ts"],"names":[],"mappings":";;AAQA,gDAqBC;AA7BD,4CAA6C;AAG7C;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAgB;IACjD,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IAEtD,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;QAC9D,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { ButtonPermission } from "../../component";
2
+ import type { ActionTargetSerialized } from "../action-target";
3
+ import type { CustomButtonAvailability, CustomButtonSerialized } from "../button";
4
+ import type { DefaultLayoutOptions } from "../page-layout";
5
+ /**
6
+ * A button of the page header as the layout serves it, right of the title.
7
+ * One the layout declares (`DefaultLayout({ headerActions })`) carries its
8
+ * `target`; one a component of the page places in the header (a table view's
9
+ * `placement: "header"` button or add) names that component, which runs it.
10
+ *
11
+ * @internal
12
+ */
13
+ export interface PageHeaderButtonSerialized extends Omit<CustomButtonSerialized, "id" | "target"> {
14
+ /** Key of the button in the header. */
15
+ id: string;
16
+ target?: ActionTargetSerialized;
17
+ /** The component of the page the button belongs to, which runs it. */
18
+ componentId?: string;
19
+ /** Id of that component's button; absent for its built-in add action. */
20
+ buttonId?: string;
21
+ /** Place among the header's buttons (`PageHeaderButton.order`). */
22
+ order?: number;
23
+ }
24
+ /**
25
+ * A header button as the layout holds it until a request is served: its
26
+ * permission and availability are resolved per request, then dropped.
27
+ * @internal
28
+ */
29
+ export interface PageHeaderButtonDeclared extends PageHeaderButtonSerialized {
30
+ /** Acts on the page's record (`PageHeaderButton.requiresRecord`). */
31
+ requiresRecord?: boolean;
32
+ permission?: ButtonPermission;
33
+ permissionId?: string;
34
+ availability?: CustomButtonAvailability;
35
+ }
36
+ /**
37
+ * The options a page layout serializes, its header buttons held as declared.
38
+ *
39
+ * @internal
40
+ */
41
+ export interface DefaultLayoutSerializedOptions extends Omit<DefaultLayoutOptions, "headerActions"> {
42
+ headerActions?: PageHeaderButtonDeclared[];
43
+ /**
44
+ * The page query the header buttons were served for, set only when one of
45
+ * them declares an `availability` or the layout reads a `record`: the
46
+ * header asks for its buttons again when the page URL's query no longer
47
+ * matches it.
48
+ */
49
+ headerActionsQuery?: Readonly<Record<string, string>>;
50
+ /** The route parameters (`:id`) of the page URL, likewise. */
51
+ headerActionsParams?: Readonly<Record<string, string>>;
52
+ /**
53
+ * How the layout's `record` was read for the page URL it was served for,
54
+ * set only when the layout reads one: the page leaves for its list once
55
+ * a record it showed is `missing`.
56
+ */
57
+ recordStatus?: PageRecordStatus;
58
+ }
59
+ /**
60
+ * How the page's record was read for one request: `found`, `missing` when its
61
+ * loader answered none (not found, not the caller's), `error` when it threw.
62
+ * The frontend takes a record going from `found` to `missing` for one that
63
+ * was deleted.
64
+ */
65
+ export type PageRecordStatus = "found" | "missing" | "error";
66
+ /**
67
+ * The frontend component `TableView` emits.
68
+ *
69
+ * @internal
70
+ */
71
+ export declare const TABLE_VIEW_COMPONENT_NAME = "dms-table-view";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TABLE_VIEW_COMPONENT_NAME = void 0;
4
+ /**
5
+ * The frontend component `TableView` emits.
6
+ *
7
+ * @internal
8
+ */
9
+ exports.TABLE_VIEW_COMPONENT_NAME = "dms-table-view";
10
+ //# sourceMappingURL=page-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../../src/component-options/internal/page-layout.ts"],"names":[],"mappings":";;;AA+EA;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type { ComponentFilterContext, ComponentInfo } from "../component";
2
+ import type { MaybePromise } from "../types";
3
+ import type { CustomButton } from "./button";
4
+ /** A button of the page header: a `CustomButton` that may say where it goes. */
5
+ export interface PageHeaderButton extends CustomButton {
6
+ /**
7
+ * Place among the header's buttons, smallest first; defaults to `0`. The
8
+ * header sorts the buttons the layout serves and the actions a Vue
9
+ * component of the page adds (`usePageHeaderActions(render, { order })`)
10
+ * together; at an equal order the served buttons come first, in the order
11
+ * declared. A table view's buttons placed in the header (`placement:
12
+ * "header"`) take `0`.
13
+ */
14
+ order?: number;
15
+ /**
16
+ * The button acts on the record the page shows (the layout's `record`): it
17
+ * is left out of a page whose record was not found. A target naming
18
+ * `{{record.X}}` implies it.
19
+ */
20
+ requiresRecord?: boolean;
21
+ }
22
+ /**
23
+ * Reads the record a page shows, each time its layout is served: the page
24
+ * URL names it (`context.params`, `context.query`), for the caller
25
+ * (`context.user`, `context.tenantId`). Answers `undefined` when there is
26
+ * none to show (not found, not the caller's).
27
+ *
28
+ * @example ({ params }) => GetModel(SiteModel).get(params?.id ?? "")
29
+ */
30
+ export type PageRecordLoader = (context: ComponentFilterContext) => MaybePromise<Record<string, unknown> | undefined>;
31
+ export interface DefaultLayoutOptions {
32
+ /**
33
+ * Content spans the whole panel. Defaults to `true`: dashboard pages are
34
+ * full-width unless they opt out. Set to `false` for pages that only hold a
35
+ * form, where a constrained column stays readable.
36
+ */
37
+ fullWidth?: boolean;
38
+ hideHeader?: boolean;
39
+ /**
40
+ * The page fills the height of the dashboard panel instead of growing with
41
+ * its content, for a page built around one tool that scrolls inside itself:
42
+ * a file explorer, a data grid, a canvas. The page header keeps its height
43
+ * and the last component of the page takes the rest: give its root
44
+ * `flex-1 min-h-0` and let an element inside it scroll. The page stops
45
+ * shrinking at a minimum height, below which the panel scrolls again.
46
+ * Defaults to `false`.
47
+ */
48
+ fillHeight?: boolean;
49
+ /**
50
+ * Buttons right of the page title, in order: the same buttons as a table's
51
+ * toolbar — a link (`page` or `external` target), a quick action
52
+ * (`quickAction`), a drawer, a modal, an API call or an export, with their
53
+ * confirmation and availability. A string `permission` names an action of
54
+ * the page, relative to its permission id; `permissionId` is an absolute
55
+ * one. A table view's own buttons join them with `placement: "header"`.
56
+ * An `availability` disables a button for one request, or hides it.
57
+ */
58
+ headerActions?: PageHeaderButton[];
59
+ /**
60
+ * The record the page shows, read on the server with the layout: the
61
+ * header buttons acting on it (`requiresRecord`, or a `{{record.X}}` in
62
+ * their target) are left out without it, and every `availability` of the
63
+ * page reads it as `context.record`.
64
+ */
65
+ record?: PageRecordLoader;
66
+ }
67
+ export declare function DefaultLayout(options?: DefaultLayoutOptions): ComponentInfo;
68
+ /**
69
+ * Standard dashboard frame for a page that holds nothing but a form: keeps the
70
+ * constrained, readable content column instead of the full-width default.
71
+ */
72
+ export declare function FormPageLayout(options?: Omit<DefaultLayoutOptions, "fullWidth">): ComponentInfo;
73
+ /**
74
+ * Dashboard frame of the settings area: the settings navigation next to the
75
+ * page, in the one column width every settings page shares. Declared by
76
+ * `settingsCategory`, so its pages and sub-categories get it without naming
77
+ * it; a settings page declared with a layout of its own opts out.
78
+ */
79
+ export declare function SettingsLayout(options?: Omit<DefaultLayoutOptions, "fullWidth">): ComponentInfo;
80
+ export declare function EmptyLayout(): ComponentInfo;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultLayout = DefaultLayout;
4
+ exports.FormPageLayout = FormPageLayout;
5
+ exports.SettingsLayout = SettingsLayout;
6
+ exports.EmptyLayout = EmptyLayout;
7
+ const confirm_dialog_1 = require("./internal/confirm-dialog");
8
+ const action_target_1 = require("./internal/action-target");
9
+ const HEADER_BUTTON_ID_PREFIX = "header-";
10
+ function declareHeaderButton(button, index) {
11
+ const { id, target, confirm, placement: _placement, ...rest } = button;
12
+ const declared = {
13
+ ...rest,
14
+ id: id ?? `${HEADER_BUTTON_ID_PREFIX}${index}`,
15
+ target: (0, action_target_1.serializeActionTarget)(target),
16
+ };
17
+ if (confirm)
18
+ declared.confirm = (0, confirm_dialog_1.serializeActionConfirm)(confirm);
19
+ return declared;
20
+ }
21
+ function dashboardLayout(componentName, options) {
22
+ const { headerActions, ...rest } = options;
23
+ const layoutOptions = rest;
24
+ if (headerActions) {
25
+ layoutOptions.headerActions = headerActions.map(declareHeaderButton);
26
+ }
27
+ return { componentName, options: layoutOptions };
28
+ }
29
+ function DefaultLayout(options) {
30
+ return dashboardLayout("dms-default-layout", {
31
+ fullWidth: true,
32
+ ...options,
33
+ });
34
+ }
35
+ /**
36
+ * Standard dashboard frame for a page that holds nothing but a form: keeps the
37
+ * constrained, readable content column instead of the full-width default.
38
+ */
39
+ function FormPageLayout(options) {
40
+ return DefaultLayout({ ...options, fullWidth: false });
41
+ }
42
+ /**
43
+ * Dashboard frame of the settings area: the settings navigation next to the
44
+ * page, in the one column width every settings page shares. Declared by
45
+ * `settingsCategory`, so its pages and sub-categories get it without naming
46
+ * it; a settings page declared with a layout of its own opts out.
47
+ */
48
+ function SettingsLayout(options) {
49
+ return dashboardLayout("dms-settings-layout", { ...options });
50
+ }
51
+ function EmptyLayout() {
52
+ return {
53
+ componentName: "dms-empty-layout",
54
+ options: {},
55
+ };
56
+ }
57
+ //# sourceMappingURL=page-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../src/component-options/page-layout.ts"],"names":[],"mappings":";;AA2GA,sCAKC;AAMD,wCAIC;AAQD,wCAIC;AAED,kCAKC;AA3ID,8DAAmE;AACnE,4DAAiE;AA4EjE,MAAM,uBAAuB,GAAG,SAAS,CAAC;AAE1C,SAAS,mBAAmB,CAC1B,MAAwB,EACxB,KAAa;IAEb,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACvE,MAAM,QAAQ,GAA6B;QACzC,GAAG,IAAI;QACP,EAAE,EAAE,EAAE,IAAI,GAAG,uBAAuB,GAAG,KAAK,EAAE;QAC9C,MAAM,EAAE,IAAA,qCAAqB,EAAC,MAAM,CAAC;KACtC,CAAC;IACF,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CACtB,aAAqB,EACrB,OAA6B;IAE7B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,aAAa,GAAmC,IAAI,CAAC;IAC3D,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACnD,CAAC;AAED,SAAgB,aAAa,CAAC,OAA8B;IAC1D,OAAO,eAAe,CAAC,oBAAoB,EAAE;QAC3C,SAAS,EAAE,IAAI;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAC5B,OAAiD;IAEjD,OAAO,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,OAAiD;IAEjD,OAAO,eAAe,CAAC,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO;QACL,aAAa,EAAE,kBAAkB;QACjC,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC"}