@anzusystems/common-admin 2.0.0-rc.5 → 2.0.0-rc.6

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 (679) hide show
  1. package/dist/AnzuSystemsCommonAdmin.d.ts +42 -32
  2. package/dist/AnzuSystemsCommonAdmin.js.map +1 -1
  3. package/dist/common-admin.css +1 -1
  4. package/dist/common-admin.js +282 -282
  5. package/dist/domains/anzuUser/api/anzuUserApi.d.ts +9 -12
  6. package/dist/domains/anzuUser/api/anzuUserApi.js.map +1 -1
  7. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
  8. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue.d.ts +38 -44
  9. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
  11. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue.d.ts +12 -13
  12. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
  14. package/dist/domains/anzuUser/components/AAnzuUserForm.vue.d.ts +18 -20
  15. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
  17. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
  19. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  20. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
  21. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue.d.ts +2 -3
  22. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
  24. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue.d.ts +9 -15
  25. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
  27. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue.d.ts +8 -7
  28. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
  30. package/dist/domains/anzuUser/components/AUserManageButton.vue.d.ts +0 -1
  31. package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
  33. package/dist/domains/anzuUser/components/AUserMetadataForm.vue.d.ts +8 -9
  34. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
  36. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
  38. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue.d.ts +1 -2
  39. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
  41. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
  43. package/dist/domains/anzuUser/components/AUserSystemPanel.vue.d.ts +2 -2
  44. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
  46. package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  47. package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
  48. package/dist/domains/anzuUser/components/AUserTabsShell.vue.d.ts +17 -22
  49. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/domains/anzuUser/composables/anzuUserActions.d.ts +5 -9
  51. package/dist/domains/anzuUser/composables/anzuUserActions.js.map +1 -1
  52. package/dist/domains/anzuUser/composables/anzuUserValidations.d.ts +4 -6
  53. package/dist/domains/anzuUser/composables/anzuUserValidations.js.map +1 -1
  54. package/dist/domains/anzuUser/composables/cachedAnzuUsers.d.ts +3 -3
  55. package/dist/domains/anzuUser/composables/cachedAnzuUsers.js.map +1 -1
  56. package/dist/domains/anzuUser/composables/userCrossSystemSearch.d.ts +2 -4
  57. package/dist/domains/anzuUser/composables/userCrossSystemSearch.js.map +1 -1
  58. package/dist/domains/anzuUser/composables/userCrossSystemWrites.d.ts +5 -11
  59. package/dist/domains/anzuUser/composables/userCrossSystemWrites.js.map +1 -1
  60. package/dist/domains/anzuUser/composables/userSystemDescriptor.d.ts +33 -57
  61. package/dist/domains/anzuUser/composables/userSystemDescriptor.js.map +1 -1
  62. package/dist/domains/anzuUser/composables/userSystemProbe.d.ts +7 -27
  63. package/dist/domains/anzuUser/composables/userSystemProbe.js.map +1 -1
  64. package/dist/domains/anzuUser/filter/anzuUserFilter.d.ts +6 -16
  65. package/dist/domains/anzuUser/filter/anzuUserFilter.js.map +1 -1
  66. package/dist/domains/anzuUser/store/anzuUserStore.d.ts +1 -5
  67. package/dist/domains/anzuUser/store/anzuUserStore.js.map +1 -1
  68. package/dist/domains/anzuUser/store/userCrossSystemStore.d.ts +3 -14
  69. package/dist/domains/anzuUser/store/userCrossSystemStore.js.map +1 -1
  70. package/dist/domains/anzuUser/utils/userMetadataDiff.d.ts +7 -19
  71. package/dist/domains/anzuUser/utils/userMetadataDiff.js.map +1 -1
  72. package/dist/domains/anzuUser/utils/userSystemState.d.ts +12 -30
  73. package/dist/domains/anzuUser/utils/userSystemState.js.map +1 -1
  74. package/dist/domains/anzuUser/utils/userTabs.d.ts +1 -3
  75. package/dist/domains/anzuUser/utils/userTabs.js.map +1 -1
  76. package/dist/domains/api/composables/defineApiClient.d.ts +4 -8
  77. package/dist/domains/api/composables/defineApiClient.js.map +1 -1
  78. package/dist/domains/api/composables/request.d.ts +18 -48
  79. package/dist/domains/api/composables/request.js.map +1 -1
  80. package/dist/domains/api/composables/useApiFetchByIds.d.ts +7 -21
  81. package/dist/domains/api/composables/useApiFetchByIds.js.map +1 -1
  82. package/dist/domains/api/composables/useApiFetchItems.d.ts +18 -57
  83. package/dist/domains/api/composables/useApiFetchItems.js.map +1 -1
  84. package/dist/domains/api/composables/useApiFetchList.d.ts +7 -23
  85. package/dist/domains/api/composables/useApiFetchList.js.map +1 -1
  86. package/dist/domains/api/composables/useApiFetchListBatch.d.ts +5 -22
  87. package/dist/domains/api/composables/useApiFetchListBatch.js.map +1 -1
  88. package/dist/domains/api/composables/useApiQueryBuilder.js.map +1 -1
  89. package/dist/domains/api/composables/useApiRequest.d.ts +16 -39
  90. package/dist/domains/api/composables/useApiRequest.js.map +1 -1
  91. package/dist/domains/api/utils/apiErrors.d.ts +28 -55
  92. package/dist/domains/api/utils/apiErrors.js.map +1 -1
  93. package/dist/domains/api/utils/listBody.d.ts +22 -43
  94. package/dist/domains/api/utils/listBody.js.map +1 -1
  95. package/dist/domains/auth/components/Acl.js.map +1 -1
  96. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  97. package/dist/domains/auth/composables/aclAllowed.d.ts +2 -3
  98. package/dist/domains/auth/composables/aclAllowed.js.map +1 -1
  99. package/dist/domains/auth/composables/defineAuth.js.map +1 -1
  100. package/dist/domains/auth/composables/refreshSession.d.ts +10 -13
  101. package/dist/domains/auth/composables/refreshSession.js.map +1 -1
  102. package/dist/domains/cached/components/ACachedChip.js.map +1 -1
  103. package/dist/domains/cached/components/ACachedChip.vue.d.ts +13 -11
  104. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/domains/cached/components/ACachedUserChip.js +1 -1
  106. package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
  107. package/dist/domains/cached/components/ACachedUserChip.vue.d.ts +3 -3
  108. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  109. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.d.ts +9 -9
  110. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js.map +1 -1
  111. package/dist/domains/cached/composables/defineCached.d.ts +13 -11
  112. package/dist/domains/cached/composables/defineCached.js.map +1 -1
  113. package/dist/domains/cached/composables/useCachedItem.d.ts +7 -8
  114. package/dist/domains/cached/composables/useCachedItem.js.map +1 -1
  115. package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
  116. package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/domains/collab/composables/collabAnyDataChange.js.map +1 -1
  118. package/dist/domains/collab/composables/collabField.d.ts +5 -3
  119. package/dist/domains/collab/composables/collabField.js.map +1 -1
  120. package/dist/domains/collab/composables/collabInit.js +58 -54
  121. package/dist/domains/collab/composables/collabInit.js.map +1 -1
  122. package/dist/domains/collab/composables/collabRecovery.d.ts +49 -0
  123. package/dist/domains/collab/composables/collabRecovery.js +99 -0
  124. package/dist/domains/collab/composables/collabRecovery.js.map +1 -0
  125. package/dist/domains/collab/composables/collabRoom.js +106 -106
  126. package/dist/domains/collab/composables/collabRoom.js.map +1 -1
  127. package/dist/domains/collab/composables/collabState.d.ts +11 -4
  128. package/dist/domains/collab/composables/collabState.js +34 -25
  129. package/dist/domains/collab/composables/collabState.js.map +1 -1
  130. package/dist/domains/collab/composables/commonAdminCollabOptions.d.ts +4 -2
  131. package/dist/domains/collab/types/Collab.d.ts +31 -5
  132. package/dist/domains/collab/types/Collab.js +23 -11
  133. package/dist/domains/collab/types/Collab.js.map +1 -1
  134. package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
  135. package/dist/domains/customDataForm/components/ACustomDataForm.vue.d.ts +7 -5
  136. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  137. package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
  138. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
  140. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue.d.ts +5 -3
  141. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/domains/customDataForm/composables/useCustomDataForm.js.map +1 -1
  143. package/dist/domains/customDataForm/types/CustomDataForm.d.ts +4 -1
  144. package/dist/domains/dam/api/damAssetApi.d.ts +7 -7
  145. package/dist/domains/dam/api/damAssetApi.js.map +1 -1
  146. package/dist/domains/dam/api/damAssetLicenceApi.d.ts +1 -1
  147. package/dist/domains/dam/api/damAssetLicenceApi.js.map +1 -1
  148. package/dist/domains/dam/api/damConstants.js.map +1 -1
  149. package/dist/domains/dam/api/damEndPoints.js.map +1 -1
  150. package/dist/domains/dam/api/damImageApi.js.map +1 -1
  151. package/dist/domains/dam/api/uploadApi.js.map +1 -1
  152. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
  153. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue.d.ts +7 -5
  154. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
  156. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
  158. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue.d.ts +1 -1
  159. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue.d.ts +5 -3
  161. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
  162. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
  164. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  165. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
  166. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
  168. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue.d.ts +1 -1
  169. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
  171. package/dist/domains/dam/assetDetail/components/AssetImage.vue.d.ts +1 -1
  172. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  173. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
  174. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue.d.ts +2 -2
  175. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
  176. package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
  177. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  178. package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
  179. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.d.ts +5 -6
  181. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js.map +1 -1
  182. package/dist/domains/dam/assetDetail/composables/assetDetailView.d.ts +10 -10
  183. package/dist/domains/dam/assetDetail/composables/assetDetailView.js.map +1 -1
  184. package/dist/domains/dam/assetDetail/store/assetDetailStore.js.map +1 -1
  185. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.d.ts +4 -3
  186. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js.map +1 -1
  187. package/dist/domains/dam/assetSelect/api/damPodcastApi.js.map +1 -1
  188. package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
  189. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue.d.ts +789 -787
  190. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  191. package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
  192. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue.d.ts +395 -393
  193. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
  195. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue.d.ts +14 -12
  196. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
  198. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
  200. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue.d.ts +9 -7
  201. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  202. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
  203. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  204. package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js.map +1 -1
  205. package/dist/domains/dam/assetSelect/store/assetSelectStore.js.map +1 -1
  206. package/dist/domains/dam/author/api/authorApi.js.map +1 -1
  207. package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
  208. package/dist/domains/dam/author/components/AuthorCreateButton.vue.d.ts +1 -1
  209. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
  211. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue.d.ts +9 -6
  212. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  213. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
  214. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js +1 -1
  216. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
  217. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue.d.ts +2 -2
  218. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
  220. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue.d.ts +1 -1
  221. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  222. package/dist/domains/dam/author/composables/cachedAuthors.d.ts +5 -4
  223. package/dist/domains/dam/author/composables/cachedAuthors.js.map +1 -1
  224. package/dist/domains/dam/author/composables/cachedUsers.d.ts +5 -4
  225. package/dist/domains/dam/author/composables/cachedUsers.js.map +1 -1
  226. package/dist/domains/dam/author/composables/damAuthorConfig.d.ts +2 -2
  227. package/dist/domains/dam/author/composables/damAuthorConfig.js.map +1 -1
  228. package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
  229. package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  230. package/dist/domains/dam/composables/commonAdminCoreDamOptions.d.ts +10 -8
  231. package/dist/domains/dam/composables/commonAdminCoreDamOptions.js.map +1 -1
  232. package/dist/domains/dam/composables/damConfigName.d.ts +8 -9
  233. package/dist/domains/dam/composables/damConfigName.js.map +1 -1
  234. package/dist/domains/dam/composables/damNotifications.d.ts +9 -9
  235. package/dist/domains/dam/composables/damNotifications.js.map +1 -1
  236. package/dist/domains/dam/composables/damNotificationsConnection.d.ts +4 -4
  237. package/dist/domains/dam/composables/damNotificationsConnection.js.map +1 -1
  238. package/dist/domains/dam/composables/damNotificationsEventBus.d.ts +2 -2
  239. package/dist/domains/dam/composables/damNotificationsEventBus.js.map +1 -1
  240. package/dist/domains/dam/composables/extSystemIdForCached.d.ts +5 -4
  241. package/dist/domains/dam/composables/extSystemIdForCached.js.map +1 -1
  242. package/dist/domains/dam/config/api/damAssetCustomFormApi.js.map +1 -1
  243. package/dist/domains/dam/config/api/damConfigApi.js.map +1 -1
  244. package/dist/domains/dam/config/composables/damConfigState.d.ts +5 -5
  245. package/dist/domains/dam/config/composables/damConfigState.js.map +1 -1
  246. package/dist/domains/dam/config/store/damConfigStore.d.ts +5 -4
  247. package/dist/domains/dam/config/store/damConfigStore.js.map +1 -1
  248. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.d.ts +3 -1
  249. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js.map +1 -1
  250. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  251. package/dist/domains/dam/cropper/components/ACropper.vue.d.ts +8 -16
  252. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  253. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
  254. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  255. package/dist/domains/dam/cropper/store/imageRoiStore.d.ts +9 -12
  256. package/dist/domains/dam/cropper/store/imageRoiStore.js.map +1 -1
  257. package/dist/domains/dam/cropper/utils/cropperGeometry.d.ts +24 -38
  258. package/dist/domains/dam/cropper/utils/cropperGeometry.js.map +1 -1
  259. package/dist/domains/dam/cropper/utils/cropperJsService.d.ts +3 -7
  260. package/dist/domains/dam/cropper/utils/cropperJsService.js +10 -3
  261. package/dist/domains/dam/cropper/utils/cropperJsService.js.map +1 -1
  262. package/dist/domains/dam/cropper/utils/cropperTypes.d.ts +3 -6
  263. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.d.ts +5 -5
  264. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js.map +1 -1
  265. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
  266. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  267. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
  268. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  269. package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
  270. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
  272. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  273. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue.d.ts +43 -41
  274. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue.d.ts +31 -29
  275. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
  276. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue.d.ts +29 -27
  277. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  278. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
  279. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue.d.ts +1 -1
  280. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  281. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
  282. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue.d.ts +68 -66
  283. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  284. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
  285. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue.d.ts +402 -400
  286. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  287. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
  288. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue.d.ts +384 -382
  289. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  290. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
  291. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
  293. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  294. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue.d.ts +7 -5
  295. package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js.map +1 -1
  296. package/dist/domains/dam/imageWidget/composables/imageApiCms.js.map +1 -1
  297. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.d.ts +11 -13
  298. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js.map +1 -1
  299. package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js.map +1 -1
  300. package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js.map +1 -1
  301. package/dist/domains/dam/imageWidget/store/imageStore.js.map +1 -1
  302. package/dist/domains/dam/imageWidget/utils/damImage.d.ts +5 -6
  303. package/dist/domains/dam/imageWidget/utils/damImage.js.map +1 -1
  304. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.d.ts +1 -2
  305. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js.map +1 -1
  306. package/dist/domains/dam/imageWidget/utils/imageSaves.d.ts +10 -14
  307. package/dist/domains/dam/imageWidget/utils/imageSaves.js.map +1 -1
  308. package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js.map +1 -1
  309. package/dist/domains/dam/imageWidget/utils/waitLimit.d.ts +4 -6
  310. package/dist/domains/dam/imageWidget/utils/waitLimit.js.map +1 -1
  311. package/dist/domains/dam/keyword/api/keywordApi.js.map +1 -1
  312. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
  313. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue.d.ts +1 -1
  314. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  315. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
  316. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue.d.ts +8 -5
  317. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  318. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js +1 -1
  319. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
  320. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue.d.ts +2 -2
  321. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  322. package/dist/domains/dam/keyword/composables/cachedKeywords.d.ts +5 -4
  323. package/dist/domains/dam/keyword/composables/cachedKeywords.js.map +1 -1
  324. package/dist/domains/dam/keyword/composables/damKeywordConfig.d.ts +2 -2
  325. package/dist/domains/dam/keyword/composables/damKeywordConfig.js.map +1 -1
  326. package/dist/domains/dam/types/Asset.d.ts +1 -1
  327. package/dist/domains/dam/types/Asset.js.map +1 -1
  328. package/dist/domains/dam/types/UploadQueue.d.ts +5 -4
  329. package/dist/domains/dam/types/UploadQueue.js.map +1 -1
  330. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
  331. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  332. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
  333. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue.d.ts +2 -2
  334. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  335. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
  336. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  337. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
  338. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  339. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
  340. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue.d.ts +6 -4
  341. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
  343. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue.d.ts +1 -1
  344. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  345. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
  346. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  347. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
  348. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue.d.ts +6 -6
  349. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  350. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
  351. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue.d.ts +13 -13
  352. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.d.ts +13 -13
  354. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js.map +1 -1
  355. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.d.ts +2 -2
  356. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js.map +1 -1
  357. package/dist/domains/dam/uploadQueue/composables/uploadMeter.d.ts +12 -12
  358. package/dist/domains/dam/uploadQueue/composables/uploadMeter.js.map +1 -1
  359. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.d.ts +5 -5
  360. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js.map +1 -1
  361. package/dist/domains/dam/uploadQueue/composables/uploadService.d.ts +2 -3
  362. package/dist/domains/dam/uploadQueue/composables/uploadService.js.map +1 -1
  363. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.d.ts +5 -4
  364. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js.map +1 -1
  365. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.d.ts +3 -2
  366. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js.map +1 -1
  367. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.d.ts +8 -5
  368. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js.map +1 -1
  369. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.d.ts +3 -3
  370. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js.map +1 -1
  371. package/dist/domains/dam/uploadQueue/presets/queuePresets.d.ts +8 -5
  372. package/dist/domains/dam/uploadQueue/presets/queuePresets.js.map +1 -1
  373. package/dist/domains/dam/uploadQueue/presets/uploadPresets.d.ts +15 -13
  374. package/dist/domains/dam/uploadQueue/presets/uploadPresets.js.map +1 -1
  375. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.d.ts +7 -7
  376. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js.map +1 -1
  377. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.d.ts +4 -4
  378. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js.map +1 -1
  379. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.d.ts +28 -30
  380. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js.map +1 -1
  381. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.d.ts +2 -2
  382. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js.map +1 -1
  383. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.d.ts +2 -2
  384. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js.map +1 -1
  385. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.d.ts +63 -73
  386. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js.map +1 -1
  387. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.d.ts +8 -9
  388. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js.map +1 -1
  389. package/dist/domains/dam/user/api/userApi.d.ts +2 -2
  390. package/dist/domains/dam/user/api/userApi.js.map +1 -1
  391. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
  392. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue.d.ts +1 -1
  393. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  394. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
  395. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue.d.ts +1 -1
  396. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  397. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
  398. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue.d.ts +1 -1
  399. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  400. package/dist/domains/dam/user/composables/damUserSelectActions.d.ts +1 -1
  401. package/dist/domains/dam/user/composables/damUserSelectActions.js.map +1 -1
  402. package/dist/domains/dam/user/types/DamDistributionServiceType.d.ts +2 -2
  403. package/dist/domains/dam/user/types/DamDistributionServiceType.js.map +1 -1
  404. package/dist/domains/dam/user/types/DamExternalProviderAssetType.d.ts +1 -1
  405. package/dist/domains/dam/user/types/DamExternalProviderAssetType.js.map +1 -1
  406. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
  407. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  408. package/dist/domains/filters/bookmarks/store/bookmarksStore.d.ts +3 -3
  409. package/dist/domains/filters/bookmarks/store/bookmarksStore.js.map +1 -1
  410. package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
  411. package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  412. package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
  413. package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  414. package/dist/domains/filters/components/AFilterString.js.map +1 -1
  415. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
  416. package/dist/domains/filters/components/AFilterTimeInterval.js +1 -1
  417. package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
  418. package/dist/domains/filters/components/AFilterTimeInterval.vue.d.ts +5 -3
  419. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
  420. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
  421. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  422. package/dist/domains/filters/components/AFilterWrapper.vue.d.ts +17 -15
  423. package/dist/domains/filters/components/AFilterWrapperSidebar.vue.d.ts +5 -3
  424. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  425. package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js.map +1 -1
  426. package/dist/domains/filters/composables/filterFactory.d.ts +16 -26
  427. package/dist/domains/filters/composables/filterFactory.js +38 -31
  428. package/dist/domains/filters/composables/filterFactory.js.map +1 -1
  429. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  430. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +3 -1
  431. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map +1 -1
  432. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  433. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +2 -4
  434. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  435. package/dist/domains/filters/utils/filterInjectionKeys.js.map +1 -1
  436. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  437. package/dist/domains/form/components/AFormDatetimePicker.vue.d.ts +7 -5
  438. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  439. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  440. package/dist/domains/form/components/AFormFlagDatetimePicker.vue.d.ts +7 -5
  441. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  442. package/dist/domains/form/components/AFormSwitch.vue.d.ts +7 -5
  443. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  444. package/dist/domains/form/components/AFormTextField.vue.d.ts +9 -7
  445. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  446. package/dist/domains/form/components/AFormTextarea.vue.d.ts +13 -11
  447. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue.d.ts +7 -5
  448. package/dist/domains/form/components/ASystemEntityScope.vue.d.ts +5 -3
  449. package/dist/domains/job/api/jobApi.js.map +1 -1
  450. package/dist/domains/job/components/AJobDetailCommon.vue.d.ts +5 -3
  451. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  452. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  453. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  454. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue.d.ts +2 -3
  455. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  456. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  457. package/dist/domains/listEditor/components/ASortableListEditor.vue.d.ts +2 -3
  458. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  459. package/dist/domains/listEditor/composables/useListEditorController.d.ts +4 -5
  460. package/dist/domains/listEditor/composables/useListEditorController.js.map +1 -1
  461. package/dist/domains/listEditor/composables/useNestedListEditor.d.ts +3 -4
  462. package/dist/domains/listEditor/composables/useNestedListEditor.js.map +1 -1
  463. package/dist/domains/listEditor/composables/useNestedListEditorController.d.ts +5 -4
  464. package/dist/domains/listEditor/composables/useNestedListEditorController.js.map +1 -1
  465. package/dist/domains/listEditor/composables/useReorderMode.js.map +1 -1
  466. package/dist/domains/listEditor/types/listEditorTypes.d.ts +2 -2
  467. package/dist/domains/listEditor/utils/listEditorLoader.d.ts +5 -5
  468. package/dist/domains/listEditor/utils/listEditorLoader.js.map +1 -1
  469. package/dist/domains/listEditor/utils/resolveCompactText.js.map +1 -1
  470. package/dist/domains/log/api/logApi.d.ts +2 -3
  471. package/dist/domains/log/api/logApi.js.map +1 -1
  472. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  473. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  474. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  475. package/dist/domains/log/components/ALogDetailView.vue.d.ts +1 -1
  476. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  477. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  478. package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  479. package/dist/domains/log/components/ALogListView.js.map +1 -1
  480. package/dist/domains/log/components/ALogListView.vue.d.ts +1 -1
  481. package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  482. package/dist/domains/log/composables/logActions.d.ts +4 -5
  483. package/dist/domains/log/composables/logActions.js.map +1 -1
  484. package/dist/domains/log/composables/logType.d.ts +6 -7
  485. package/dist/domains/log/composables/logType.js.map +1 -1
  486. package/dist/domains/log/filter/logFilter.d.ts +8 -11
  487. package/dist/domains/log/filter/logFilter.js.map +1 -1
  488. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  489. package/dist/domains/permission/components/APermissionEditor.vue.d.ts +4 -4
  490. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  491. package/dist/domains/permission/composables/permissionActions.d.ts +3 -6
  492. package/dist/domains/permission/composables/permissionActions.js.map +1 -1
  493. package/dist/domains/permission/config/api/permissionConfigApi.d.ts +2 -2
  494. package/dist/domains/permission/config/api/permissionConfigApi.js.map +1 -1
  495. package/dist/domains/permission/config/composables/permissionConfigActions.d.ts +3 -7
  496. package/dist/domains/permission/config/composables/permissionConfigActions.js.map +1 -1
  497. package/dist/domains/permission/config/store/permissionConfigStore.d.ts +2 -4
  498. package/dist/domains/permission/config/store/permissionConfigStore.js.map +1 -1
  499. package/dist/domains/permission/group/api/permissionGroupApi.d.ts +8 -10
  500. package/dist/domains/permission/group/api/permissionGroupApi.js.map +1 -1
  501. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  502. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue.d.ts +12 -10
  503. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  504. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  505. package/dist/domains/permission/group/components/APermissionGroupDetail.vue.d.ts +21 -22
  506. package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  507. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  508. package/dist/domains/permission/group/components/APermissionGroupManage.vue.d.ts +21 -22
  509. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  510. package/dist/domains/permission/group/composables/cachedPermissionGroups.js.map +1 -1
  511. package/dist/domains/permission/group/composables/permissionGroupActions.d.ts +6 -8
  512. package/dist/domains/permission/group/composables/permissionGroupActions.js.map +1 -1
  513. package/dist/domains/permission/group/composables/permissionGroupValidations.d.ts +2 -3
  514. package/dist/domains/permission/group/composables/permissionGroupValidations.js.map +1 -1
  515. package/dist/domains/permission/group/filter/permissionGroupFilter.d.ts +2 -3
  516. package/dist/domains/permission/group/filter/permissionGroupFilter.js.map +1 -1
  517. package/dist/domains/permission/group/store/permissionGroupStore.d.ts +3 -6
  518. package/dist/domains/permission/group/store/permissionGroupStore.js.map +1 -1
  519. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  520. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  521. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  522. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  523. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  524. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  525. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue.d.ts +5 -3
  526. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.d.ts +11 -13
  527. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js.map +1 -1
  528. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue.d.ts +13 -11
  529. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  530. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  531. package/dist/domains/subjectSelect/composables/useSubjectSelect.js +53 -51
  532. package/dist/domains/subjectSelect/composables/useSubjectSelect.js.map +1 -1
  533. package/dist/domains/system/appShell/components/AActionbar.vue.d.ts +7 -5
  534. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  535. package/dist/domains/system/appShell/components/ALayoutSwitch.vue.d.ts +7 -5
  536. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  537. package/dist/domains/system/appShell/composables/teleportSlot.d.ts +0 -1
  538. package/dist/domains/system/appShell/composables/teleportSlot.js.map +1 -1
  539. package/dist/domains/system/components/AAlerts.js.map +1 -1
  540. package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  541. package/dist/domains/system/composables/alerts.js.map +1 -1
  542. package/dist/domains/system/composables/breadcrumbs.d.ts +3 -3
  543. package/dist/domains/system/composables/breadcrumbs.js.map +1 -1
  544. package/dist/domains/system/composables/languageSettings.js.map +1 -1
  545. package/dist/domains/system/composables/loginStatus.js.map +1 -1
  546. package/dist/domains/system/composables/navigationError.d.ts +6 -8
  547. package/dist/domains/system/composables/navigationError.js.map +1 -1
  548. package/dist/domains/system/composables/pageNavigation.d.ts +9 -10
  549. package/dist/domains/system/composables/pageNavigation.js.map +1 -1
  550. package/dist/domains/system/composables/recordActions.d.ts +14 -22
  551. package/dist/domains/system/composables/recordActions.js.map +1 -1
  552. package/dist/domains/system/composables/recordPage.d.ts +23 -38
  553. package/dist/domains/system/composables/recordPage.js.map +1 -1
  554. package/dist/domains/system/composables/routeHistory.d.ts +4 -5
  555. package/dist/domains/system/composables/routeHistory.js.map +1 -1
  556. package/dist/domains/system/composables/sentry.js.map +1 -1
  557. package/dist/domains/system/composables/useDebugFeatures.d.ts +3 -6
  558. package/dist/domains/system/composables/useDebugFeatures.js.map +1 -1
  559. package/dist/domains/system/store/datatablePageStore.d.ts +8 -1
  560. package/dist/domains/system/store/datatablePageStore.js +10 -3
  561. package/dist/domains/system/store/datatablePageStore.js.map +1 -1
  562. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  563. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  564. package/dist/domains/system/systemBar/utils/appReload.d.ts +5 -5
  565. package/dist/domains/system/systemBar/utils/appReload.js.map +1 -1
  566. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  567. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue.d.ts +2 -3
  568. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js.map +1 -1
  569. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  570. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  571. package/dist/domains/ui/buttons/components/ABtnSplit.vue.d.ts +9 -7
  572. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  573. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  574. package/dist/domains/ui/components/ACard.js.map +1 -1
  575. package/dist/domains/ui/components/ACard.vue.d.ts +7 -3
  576. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +6 -2
  577. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  578. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  579. package/dist/domains/ui/components/ACardLoader.vue.d.ts +1 -0
  580. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +13 -7
  581. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  582. package/dist/domains/ui/components/AChipNoLink.vue.d.ts +5 -3
  583. package/dist/domains/ui/components/ACopyText.vue.d.ts +9 -7
  584. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  585. package/dist/domains/ui/components/ACreateDialog.vue.d.ts +11 -9
  586. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  587. package/dist/domains/ui/components/ADialogToolbar.vue.d.ts +5 -3
  588. package/dist/domains/ui/components/ARow.vue.d.ts +5 -3
  589. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  590. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  591. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  592. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue.d.ts +3 -5
  593. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  594. package/dist/domains/ui/datetime/components/ADatetimePicker.js +1 -1
  595. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  596. package/dist/domains/ui/datetime/components/ADatetimePicker.vue.d.ts +5 -3
  597. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  598. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  599. package/dist/domains/ui/file/components/AFileDropzone.vue.d.ts +1 -1
  600. package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js.map +1 -1
  601. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  602. package/dist/domains/ui/file/components/AFileInput.vue.d.ts +9 -7
  603. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  604. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  605. package/dist/domains/ui/file/components/AFileInputDialog.vue.d.ts +9 -7
  606. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  607. package/dist/domains/ui/file/composables/dropzone.js.map +1 -1
  608. package/dist/domains/ui/file/composables/formatAndSizeCheck.js.map +1 -1
  609. package/dist/domains/ui/view/components/AGenericView.vue.d.ts +7 -5
  610. package/dist/domains/ui/view/components/ALoginView.js +1 -1
  611. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  612. package/dist/domains/ui/view/components/ALoginView.vue.d.ts +5 -3
  613. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  614. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  615. package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  616. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  617. package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  618. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.d.ts +6 -7
  619. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js.map +1 -1
  620. package/dist/lib.d.ts +2 -2
  621. package/dist/plugins/commonVuetifyConfig.d.ts +3 -3
  622. package/dist/plugins/commonVuetifyConfig.js.map +1 -1
  623. package/dist/plugins/i18n.d.ts +4 -5
  624. package/dist/plugins/i18n.js.map +1 -1
  625. package/dist/plugins/pluginOptions.d.ts +4 -2
  626. package/dist/plugins/pluginOptions.js.map +1 -1
  627. package/dist/plugins/webfontloader.js.map +1 -1
  628. package/dist/shared/error/AnzuApiCancelledError.d.ts +5 -8
  629. package/dist/shared/error/AnzuApiCancelledError.js.map +1 -1
  630. package/dist/shared/error/AnzuError.d.ts +3 -5
  631. package/dist/shared/error/AnzuError.js.map +1 -1
  632. package/dist/shared/error/AuthUnavailableError.d.ts +3 -3
  633. package/dist/shared/error/AuthUnavailableError.js.map +1 -1
  634. package/dist/shared/error/isInCauseChain.d.ts +2 -2
  635. package/dist/shared/error/isInCauseChain.js.map +1 -1
  636. package/dist/shared/types/UserAndTimeTracking.d.ts +5 -5
  637. package/dist/shared/types/Validation.d.ts +4 -5
  638. package/dist/shared/types/common.d.ts +1 -3
  639. package/dist/shared/types/globalComponents.d.ts +5 -6
  640. package/dist/shared/utils/common.js.map +1 -1
  641. package/dist/shared/utils/datetime.d.ts +0 -1
  642. package/dist/shared/utils/datetime.js.map +1 -1
  643. package/dist/shared/utils/datetimePickerValue.d.ts +4 -7
  644. package/dist/shared/utils/datetimePickerValue.js.map +1 -1
  645. package/dist/shared/utils/development.d.ts +3 -3
  646. package/dist/shared/utils/development.js.map +1 -1
  647. package/dist/shared/utils/envConfig.d.ts +4 -4
  648. package/dist/shared/utils/envConfig.js.map +1 -1
  649. package/dist/shared/utils/json.d.ts +1 -1
  650. package/dist/shared/utils/json.js.map +1 -1
  651. package/dist/shared/utils/userAndTimeTracking.d.ts +5 -7
  652. package/dist/shared/utils/userAndTimeTracking.js.map +1 -1
  653. package/dist/shared/validators/vuelidate/common/useValidateHexColor.d.ts +3 -5
  654. package/dist/shared/validators/vuelidate/common/useValidateHexColor.js.map +1 -1
  655. package/dist/testing/appShell.d.ts +11 -11
  656. package/dist/testing/appShell.js.map +1 -1
  657. package/dist/testing/closeButtons.d.ts +9 -11
  658. package/dist/testing/closeButtons.js.map +1 -1
  659. package/dist/testing/declaredDependencies.d.ts +7 -7
  660. package/dist/testing/declaredDependencies.js.map +1 -1
  661. package/dist/testing/generatedRoutes.d.ts +6 -11
  662. package/dist/testing/generatedRoutes.js.map +1 -1
  663. package/dist/testing/routeHistory.d.ts +5 -12
  664. package/dist/testing/routeHistory.js.map +1 -1
  665. package/dist/testing/sortableLists.d.ts +16 -21
  666. package/dist/testing/sortableLists.js.map +1 -1
  667. package/dist/testing/typedRouter.d.ts +0 -1
  668. package/dist/testing/typedRouter.js.map +1 -1
  669. package/package.json +27 -27
  670. package/src/eslint/adminConfig.mjs +19 -27
  671. package/src/eslint/globalComponentNames.mjs +3 -4
  672. package/src/eslint/oxlint.mjs +7 -20
  673. package/src/eslint/plugin.d.mts +2 -4
  674. package/src/eslint/plugin.mjs +18 -34
  675. package/src/eslint/validRouteName.mjs +6 -7
  676. package/src/vite/devWatch.mjs +30 -43
  677. package/src/vite/index.d.mts +5 -5
  678. package/src/vite/sentry.mjs +7 -12
  679. package/src/vite/sourcemaps.mjs +4 -8
@@ -5,28 +5,25 @@ export declare const ANZU_USER_ENDPOINT = "/adm/v1/anzu-user";
5
5
  export interface AnzuUserApiParams {
6
6
  client: AxiosClientFn;
7
7
  /**
8
- * Both reach every `useApiRequest` built here. The admins' copies declared `system = 'common'`
9
- * and `entity = 'anzuUser'` as file constants, which is why a shared version has to take them:
10
- * the same file now serves nine backends, and the error context has to name the right one.
8
+ * Both reach every `useApiRequest` built here.
9
+ * This file serves nine backends, so the error context has to name the right one.
11
10
  */
12
11
  system: string;
13
12
  entity?: string;
14
13
  /**
15
- * i18n scope for a server-side validation failure, which is a different question from which
16
- * backend answered. `AnzuApiValidationError` builds `<system>.<entity>.model.<field>` keys, and
17
- * for a component shared by nine backends the labels are always the library's own `common.*` --
18
- * `weather.anzuUser.model.email` exists nowhere. Defaults to `common` plus the entity;
19
- * contentHub passes its own pair to keep the keys it already has.
14
+ * i18n scope for server-side validation failures, separate from which backend answered.
15
+ * `AnzuApiValidationError` builds `<system>.<entity>.model.<field>` keys. For a component shared by
16
+ * nine backends the labels are the library's `common.*`; `weather.anzuUser.model.email` does not exist.
17
+ * Defaults to `common` plus the entity. contentHub passes its own pair to keep its existing keys.
20
18
  */
21
19
  validationSystem?: string;
22
20
  validationEntity?: string;
23
21
  endPoint?: string;
24
22
  }
25
23
  /**
26
- * Generic in the user type, because the three systems that answer on `/adm/users` return a DTO of
27
- * their own -- `CmsUserDto`, `DamUserDto`, `ContentHubUserDto` -- each extending `UserDto` with
28
- * system fields. Losing those in the round trip is exactly what the write invariant forbids: the
29
- * body of a write is the whole object the preceding GET returned.
24
+ * Generic in the user type: the systems on `/adm/users` return their own DTO (`CmsUserDto`,
25
+ * `DamUserDto`, `ContentHubUserDto`) extending `UserDto` with system fields.
26
+ * Those fields must survive the round trip: a write body is the whole object the preceding GET returned.
30
27
  */
31
28
  export declare const useAnzuUserApi: <T extends AnzuUser = AnzuUser>({ client, system, entity, validationSystem, validationEntity, endPoint, }: AnzuUserApiParams) => {
32
29
  useFetchAnzuUserListByIds: () => import('../../api/composables/useApiFetchByIds').UseApiFetchByIdsReturnType<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"anzuUserApi.js","names":["ANZU_USER_ENTITY","ANZU_USER_ENDPOINT","useAnzuUserApi","entity","scope","useApiFetchByIds","endPoint","useApiFetchList","useApiRequest","patchEndPoint"],"sources":["../../../../src/domains/anzuUser/api/anzuUserApi.ts"],"sourcesContent":["import type { AxiosClientFn } from '@/domains/api/utils/client'\nimport { useApiFetchByIds } from '@/domains/api/composables/useApiFetchByIds'\nimport { useApiFetchList } from '@/domains/api/composables/useApiFetchList'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\n\nexport const ANZU_USER_ENTITY = 'anzuUser'\nexport const ANZU_USER_ENDPOINT = '/adm/v1/anzu-user'\n\nexport interface AnzuUserApiParams {\n client: AxiosClientFn\n /**\n * Both reach every `useApiRequest` built here. The admins' copies declared `system = 'common'`\n * and `entity = 'anzuUser'` as file constants, which is why a shared version has to take them:\n * the same file now serves nine backends, and the error context has to name the right one.\n */\n system: string\n entity?: string\n /**\n * i18n scope for a server-side validation failure, which is a different question from which\n * backend answered. `AnzuApiValidationError` builds `<system>.<entity>.model.<field>` keys, and\n * for a component shared by nine backends the labels are always the library's own `common.*` --\n * `weather.anzuUser.model.email` exists nowhere. Defaults to `common` plus the entity;\n * contentHub passes its own pair to keep the keys it already has.\n */\n validationSystem?: string\n validationEntity?: string\n endPoint?: string\n}\n\n/**\n * Generic in the user type, because the three systems that answer on `/adm/users` return a DTO of\n * their own -- `CmsUserDto`, `DamUserDto`, `ContentHubUserDto` -- each extending `UserDto` with\n * system fields. Losing those in the round trip is exactly what the write invariant forbids: the\n * body of a write is the whole object the preceding GET returned.\n */\nexport const useAnzuUserApi = <T extends AnzuUser = AnzuUser>({\n client,\n system,\n entity = ANZU_USER_ENTITY,\n validationSystem = 'common',\n validationEntity = entity,\n endPoint = ANZU_USER_ENDPOINT,\n}: AnzuUserApiParams) => {\n const scope = { validationSystem, validationEntity }\n const useFetchAnzuUserListByIds = () =>\n useApiFetchByIds<T>({ client, system, entity, ...scope, urlTemplate: endPoint })\n\n const useFetchAnzuUserList = () => useApiFetchList<T>({ client, system, entity, ...scope, urlTemplate: endPoint })\n\n const useFetchAnzuUser = () =>\n useApiRequest<T, null>({ client, method: 'GET', system, entity, ...scope, urlTemplate: endPoint + '/:id' })\n\n const useCreateAnzuUser = () =>\n useApiRequest<T, T>({ client, method: 'POST', system, entity, ...scope, urlTemplate: endPoint })\n\n const useUpdateAnzuUser = () =>\n useApiRequest<T, T>({ client, method: 'PUT', system, entity, ...scope, urlTemplate: endPoint + '/:id' })\n\n /**\n * Only cms, dam and contentHub have this, and it is the safe path for metadata: the method\n * behind it writes e-mail, locale, avatar and person and has no setter for anything else.\n *\n * The body is the whole record the preceding read returned -- typed `T`, not `BaseUser`. Two\n * reasons, and both are the invariant: `BaseUser` has no `locale`, and the method behind this\n * path calls `setLocale` unconditionally, so a body shaped like `BaseUser` would erase the\n * interface language of whoever was edited. And `id` has to be in it: `BaseUserDto` declares a\n * uniqueness constraint on both `id` and `email`, and the validator only excludes the record\n * itself when the DTO carries a non-empty `id` -- without it the server reports the user's own\n * e-mail as taken, on every account.\n */\n const usePatchBaseUser = (patchEndPoint: string) =>\n useApiRequest<T, T>({ client, method: 'PATCH', system, entity, ...scope, urlTemplate: patchEndPoint })\n\n return {\n useFetchAnzuUserListByIds,\n useFetchAnzuUserList,\n useFetchAnzuUser,\n useCreateAnzuUser,\n useUpdateAnzuUser,\n usePatchBaseUser,\n }\n}\n"],"mappings":";;;;AAMA,IAAaA,IAAmB,YACnBC,IAAqB,qBA6BrBC,KAAiD,EAC5D,WACA,WACA,YAASF,GACT,sBAAmB,UACnB,sBAAmBG,GACnB,cAAWF,QACY;CACvB,IAAMG,IAAQ;EAAE;EAAkB;CAAiB;CA8BnD,OAAO;EACL,iCA7BAC,EAAoB;GAAE;GAAQ;GAAQ;GAAQ,GAAGD;GAAO,aAAaE;EAAS,CAAC;EA8B/E,4BA5BiCC,EAAmB;GAAE;GAAQ;GAAQ;GAAQ,GAAGH;GAAO,aAAaE;EAAS,CAAC;EA6B/G,wBA1BAE,EAAuB;GAAE;GAAQ,QAAQ;GAAO;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE,IAAW;EAAO,CAAC;EA2B1G,yBAxBAE,EAAoB;GAAE;GAAQ,QAAQ;GAAQ;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE;EAAS,CAAC;EAyB/F,yBAtBAE,EAAoB;GAAE;GAAQ,QAAQ;GAAO;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE,IAAW;EAAO,CAAC;EAuBvG,mBATwB,MACxBE,EAAoB;GAAE;GAAQ,QAAQ;GAAS;GAAQ;GAAQ,GAAGJ;GAAO,aAAaK;EAAc,CAAC;CASvG;AACF"}
1
+ {"version":3,"file":"anzuUserApi.js","names":["ANZU_USER_ENTITY","ANZU_USER_ENDPOINT","useAnzuUserApi","entity","scope","useApiFetchByIds","endPoint","useApiFetchList","useApiRequest","patchEndPoint"],"sources":["../../../../src/domains/anzuUser/api/anzuUserApi.ts"],"sourcesContent":["import type { AxiosClientFn } from '@/domains/api/utils/client'\nimport { useApiFetchByIds } from '@/domains/api/composables/useApiFetchByIds'\nimport { useApiFetchList } from '@/domains/api/composables/useApiFetchList'\nimport { useApiRequest } from '@/domains/api/composables/useApiRequest'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\n\nexport const ANZU_USER_ENTITY = 'anzuUser'\nexport const ANZU_USER_ENDPOINT = '/adm/v1/anzu-user'\n\nexport interface AnzuUserApiParams {\n client: AxiosClientFn\n /**\n * Both reach every `useApiRequest` built here.\n * This file serves nine backends, so the error context has to name the right one.\n */\n system: string\n entity?: string\n /**\n * i18n scope for server-side validation failures, separate from which backend answered.\n * `AnzuApiValidationError` builds `<system>.<entity>.model.<field>` keys. For a component shared by\n * nine backends the labels are the library's `common.*`; `weather.anzuUser.model.email` does not exist.\n * Defaults to `common` plus the entity. contentHub passes its own pair to keep its existing keys.\n */\n validationSystem?: string\n validationEntity?: string\n endPoint?: string\n}\n\n/**\n * Generic in the user type: the systems on `/adm/users` return their own DTO (`CmsUserDto`,\n * `DamUserDto`, `ContentHubUserDto`) extending `UserDto` with system fields.\n * Those fields must survive the round trip: a write body is the whole object the preceding GET returned.\n */\nexport const useAnzuUserApi = <T extends AnzuUser = AnzuUser>({\n client,\n system,\n entity = ANZU_USER_ENTITY,\n validationSystem = 'common',\n validationEntity = entity,\n endPoint = ANZU_USER_ENDPOINT,\n}: AnzuUserApiParams) => {\n const scope = { validationSystem, validationEntity }\n const useFetchAnzuUserListByIds = () =>\n useApiFetchByIds<T>({ client, system, entity, ...scope, urlTemplate: endPoint })\n\n const useFetchAnzuUserList = () => useApiFetchList<T>({ client, system, entity, ...scope, urlTemplate: endPoint })\n\n const useFetchAnzuUser = () =>\n useApiRequest<T, null>({ client, method: 'GET', system, entity, ...scope, urlTemplate: endPoint + '/:id' })\n\n const useCreateAnzuUser = () =>\n useApiRequest<T, T>({ client, method: 'POST', system, entity, ...scope, urlTemplate: endPoint })\n\n const useUpdateAnzuUser = () =>\n useApiRequest<T, T>({ client, method: 'PUT', system, entity, ...scope, urlTemplate: endPoint + '/:id' })\n\n /**\n * Only cms, dam and contentHub have this path. It is the safe path for metadata:\n * the backend method writes e-mail, locale, avatar and person and nothing else.\n * The body is the whole record from the preceding read, typed `T`, not `BaseUser`. The method calls `setLocale`\n * unconditionally, and `BaseUser` has no `locale`, so a `BaseUser` body would erase the user's interface language.\n * The body must also carry `id`. `BaseUserDto` has a uniqueness constraint on `id` and `email`, and the validator\n * excludes the record itself only when `id` is set. Without it the server reports the user's own e-mail as taken.\n */\n const usePatchBaseUser = (patchEndPoint: string) =>\n useApiRequest<T, T>({ client, method: 'PATCH', system, entity, ...scope, urlTemplate: patchEndPoint })\n\n return {\n useFetchAnzuUserListByIds,\n useFetchAnzuUserList,\n useFetchAnzuUser,\n useCreateAnzuUser,\n useUpdateAnzuUser,\n usePatchBaseUser,\n }\n}\n"],"mappings":";;;;AAMA,IAAaA,IAAmB,YACnBC,IAAqB,qBA0BrBC,KAAiD,EAC5D,WACA,WACA,YAASF,GACT,sBAAmB,UACnB,sBAAmBG,GACnB,cAAWF,QACY;CACvB,IAAMG,IAAQ;EAAE;EAAkB;CAAiB;CA0BnD,OAAO;EACL,iCAzBAC,EAAoB;GAAE;GAAQ;GAAQ;GAAQ,GAAGD;GAAO,aAAaE;EAAS,CAAC;EA0B/E,4BAxBiCC,EAAmB;GAAE;GAAQ;GAAQ;GAAQ,GAAGH;GAAO,aAAaE;EAAS,CAAC;EAyB/G,wBAtBAE,EAAuB;GAAE;GAAQ,QAAQ;GAAO;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE,IAAW;EAAO,CAAC;EAuB1G,yBApBAE,EAAoB;GAAE;GAAQ,QAAQ;GAAQ;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE;EAAS,CAAC;EAqB/F,yBAlBAE,EAAoB;GAAE;GAAQ,QAAQ;GAAO;GAAQ;GAAQ,GAAGJ;GAAO,aAAaE,IAAW;EAAO,CAAC;EAmBvG,mBATwB,MACxBE,EAAoB;GAAE;GAAQ,QAAQ;GAAS;GAAQ;GAAQ,GAAGJ;GAAO,aAAaK;EAAc,CAAC;CASvG;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AAnzuUserDatatable.js","names":["_sfc_main","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","AAnzuUserDatatable_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n *\n * A bare key takes its header from the library's own `common.anzuUser.model.*`, which holds\n * eight keys and none of any system's -- so a system column passes its title already\n * translated, out of the namespace that has it.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Signing in as somebody else, as a switchable feature.\n *\n * A callback rather than a path, because there is more than one mechanism: cms posts to\n * `/adm/users/{id}/impersonate` and gets a JWT with an impersonation claim, blog opens the\n * public site through `window.open`. Only the cms one reaches a shared component -- blog's\n * hangs off its product user, which is a different view -- so one prop is enough for now.\n * Left unset, nothing is drawn.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n *\n * A parameter and not part of the shared list, because the same filter is not the same query\n * everywhere: cms asks for permission groups with `memberOf`, dam with `custom`, and\n * `allowedSites` exists only in cms. A plain field needs nothing more -- the generic renderer\n * draws it -- while one that wants a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters, which are stored per user, so both are needed for the button to appear. cms\n * and dam have them on the list this replaces; the other three admins do not.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n *\n * Drawn here rather than left to a slot: a group is a group in every admin, the library already\n * has the cache -- keyed per system, because id 42 in weather and id 42 in blog are different rows\n * -- and leaving it to the call sites is how the column ends up empty in every one of them. An app\n * that wants its own chip still overrides through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the filter, which is the name\n// `AFilterWrapper` renders a field's own widget under. The prefix is what keeps a field slot apart\n// from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AAnzuUserDatatable.js","names":["_sfc_main","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","AAnzuUserDatatable_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n * A bare key takes its header from `common.anzuUser.model.*`, which has\n * no system keys. So a system column passes its title already translated.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Optional impersonation. Left unset, nothing is drawn.\n * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and\n * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n * Not part of the shared list because the same filter is a different query per system:\n * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.\n * A plain field is drawn by the generic renderer. A field that\n * needs a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n * Drawn here rather than left to a slot, so the column is not left empty in every app.\n * The cache is keyed per system because the same id is a different group in each backend.\n * An app can still override the chip through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the\n// filter. That is the name `AFilterWrapper` renders a field's widget under.\n// The prefix keeps field slots apart from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -17,71 +17,65 @@ type __VLS_Props = {
17
17
  permissionGroupEndPoint?: string;
18
18
  /**
19
19
  * Extra columns the app draws through `#systemColumns`, appended after the shared ones.
20
- *
21
- * A bare key takes its header from the library's own `common.anzuUser.model.*`, which holds
22
- * eight keys and none of any system's -- so a system column passes its title already
23
- * translated, out of the namespace that has it.
20
+ * A bare key takes its header from `common.anzuUser.model.*`, which has
21
+ * no system keys. So a system column passes its title already translated.
24
22
  */
25
23
  systemColumns?: Array<string | {
26
24
  key: string;
27
25
  title: string;
28
26
  }>;
29
27
  /**
30
- * Signing in as somebody else, as a switchable feature.
31
- *
32
- * A callback rather than a path, because there is more than one mechanism: cms posts to
33
- * `/adm/users/{id}/impersonate` and gets a JWT with an impersonation claim, blog opens the
34
- * public site through `window.open`. Only the cms one reaches a shared component -- blog's
35
- * hangs off its product user, which is a different view -- so one prop is enough for now.
36
- * Left unset, nothing is drawn.
28
+ * Optional impersonation. Left unset, nothing is drawn.
29
+ * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and
30
+ * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.
37
31
  */
38
32
  impersonate?: ((user: AnzuUser) => void) | undefined;
39
33
  canImpersonate?: boolean;
40
34
  /**
41
35
  * Filter fields this system adds to the shared three.
42
- *
43
- * A parameter and not part of the shared list, because the same filter is not the same query
44
- * everywhere: cms asks for permission groups with `memberOf`, dam with `custom`, and
45
- * `allowedSites` exists only in cms. A plain field needs nothing more -- the generic renderer
46
- * draws it -- while one that wants a remote autocomplete comes in through `#filter.<name>`.
36
+ * Not part of the shared list because the same filter is a different query per system:
37
+ * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.
38
+ * A plain field is drawn by the generic renderer. A field that
39
+ * needs a remote autocomplete comes in through `#filter.<name>`.
47
40
  */
48
41
  filterFields?: readonly MakeFilterOption[];
49
42
  /**
50
- * Saved filters, which are stored per user, so both are needed for the button to appear. cms
51
- * and dam have them on the list this replaces; the other three admins do not.
43
+ * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.
52
44
  */
53
45
  filterClient?: (() => AxiosInstance) | undefined;
54
46
  filterUserId?: IntegerIdNullable | undefined;
55
47
  /** Where the filter files its saved bookmarks. */
56
48
  filterStore?: FilterStoreIdentifier | undefined;
57
49
  };
58
- declare var __VLS_13: `filter.${string}`, __VLS_14: {
59
- itemConfig: import('../../filters/composables/filterFactory').FilterField;
60
- }, __VLS_56: {
61
- ids: number[];
62
- }, __VLS_74: {
63
- column: string;
64
- user: AnzuUser;
65
- }, __VLS_82: {
66
- id: IntegerIdNullable;
67
- }, __VLS_90: {
68
- id: IntegerIdNullable;
69
- }, __VLS_115: {
70
- user: AnzuUser;
71
- };
72
- type __VLS_Slots = {} & {
73
- [K in NonNullable<typeof __VLS_13>]?: (props: typeof __VLS_14) => any;
74
- } & {
75
- permissionGroups?: (props: typeof __VLS_56) => any;
76
- } & {
77
- systemColumns?: (props: typeof __VLS_74) => any;
78
- } & {
79
- createdBy?: (props: typeof __VLS_82) => any;
80
- } & {
81
- modifiedBy?: (props: typeof __VLS_90) => any;
82
- } & {
83
- rowActions?: (props: typeof __VLS_115) => any;
50
+ declare const __VLS_template: () => {
51
+ __VLS_Slots: {
52
+ [x: `filter.${string}`]: ((props: {
53
+ itemConfig: import('../../filters/composables/filterFactory').FilterField;
54
+ }) => any) | undefined;
55
+ } & {
56
+ permissionGroups?: (props: {
57
+ ids: number[];
58
+ }) => any;
59
+ } & {
60
+ systemColumns?: (props: {
61
+ column: string;
62
+ user: AnzuUser;
63
+ }) => any;
64
+ } & {
65
+ createdBy?: (props: {
66
+ id: IntegerIdNullable;
67
+ }) => any;
68
+ } & {
69
+ modifiedBy?: (props: {
70
+ id: IntegerIdNullable;
71
+ }) => any;
72
+ } & {
73
+ rowActions?: (props: {
74
+ user: AnzuUser;
75
+ }) => any;
76
+ };
84
77
  };
78
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
85
79
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
86
80
  refresh: import('@vueuse/shared').UseDebounceFnReturn<() => Promise<void>>;
87
81
  resetFilter: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","AAnzuUserFilter","_unref","_isRef","_createSlots","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_component_VDataTableServer","ABooleanValue","_Fragment","_createBlock","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","_createCommentVNode","ATableCopyIdButton","_component_VBtn","_withModifiers","ADatatablePagination","ABooleanValue_default","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","AAnzuUserFilter_default","_hoisted_1","_hoisted_2","FILTER_SLOT_PREFIX","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","PERMISSION_GROUP_ENDPOINT","__expose","__emit","props","__props","emit","useI18n","useAnzuUserListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","useAnzuUserActions","usePermissionConfigActions","useCachedPermissionGroups","useFilterHelpers","anzuUserFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","column","datatableHiddenColumns","ANZU_USER_ENTITY","getList","useDebounceFn","fetchAnzuUserList","anzuUserList","users","addToCachedPermissionGroups","user","fetchCachedPermissionGroups","systemColumnKeys","computed","slots","useSlots","filterSlotNames","name","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelAnzuUserList","openBlock","createElementBlock","createVNode","unref","columnsHidden","_cache","isRef","$event","createSlots","renderList","withCtx","renderSlot","_ctx","normalizeProps","guardReactiveProps","slotProps","createElementVNode","VSpacer","columnsAll","VDataTableServer","columnsVisible","loadingAnzuUserList","Fragment","createBlock","VChip","role","createTextVNode","toDisplayString","translatePermission","permissionGroupId","getCachedPermissionGroup","createCommentVNode","VBtn","t","withModifiers"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n *\n * A bare key takes its header from the library's own `common.anzuUser.model.*`, which holds\n * eight keys and none of any system's -- so a system column passes its title already\n * translated, out of the namespace that has it.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Signing in as somebody else, as a switchable feature.\n *\n * A callback rather than a path, because there is more than one mechanism: cms posts to\n * `/adm/users/{id}/impersonate` and gets a JWT with an impersonation claim, blog opens the\n * public site through `window.open`. Only the cms one reaches a shared component -- blog's\n * hangs off its product user, which is a different view -- so one prop is enough for now.\n * Left unset, nothing is drawn.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n *\n * A parameter and not part of the shared list, because the same filter is not the same query\n * everywhere: cms asks for permission groups with `memberOf`, dam with `custom`, and\n * `allowedSites` exists only in cms. A plain field needs nothing more -- the generic renderer\n * draws it -- while one that wants a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters, which are stored per user, so both are needed for the button to appear. cms\n * and dam have them on the list this replaces; the other three admins do not.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n *\n * Drawn here rather than left to a slot: a group is a group in every admin, the library already\n * has the cache -- keyed per system, because id 42 in weather and id 42 in blog are different rows\n * -- and leaving it to the call sites is how the column ends up empty in every one of them. An app\n * that wants its own chip still overrides through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the filter, which is the name\n// `AFilterWrapper` renders a field's own widget under. The prefix is what keeps a field slot apart\n// from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","AAnzuUserFilter","_unref","_isRef","_createSlots","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_component_VDataTableServer","ABooleanValue","_Fragment","_createBlock","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","_createCommentVNode","ATableCopyIdButton","_component_VBtn","_withModifiers","ADatatablePagination","ABooleanValue_default","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","AAnzuUserFilter_default","_hoisted_1","_hoisted_2","FILTER_SLOT_PREFIX","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","PERMISSION_GROUP_ENDPOINT","__expose","__emit","props","__props","emit","useI18n","useAnzuUserListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","useAnzuUserActions","usePermissionConfigActions","useCachedPermissionGroups","useFilterHelpers","anzuUserFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","column","datatableHiddenColumns","ANZU_USER_ENTITY","getList","useDebounceFn","fetchAnzuUserList","anzuUserList","users","addToCachedPermissionGroups","user","fetchCachedPermissionGroups","systemColumnKeys","computed","slots","useSlots","filterSlotNames","name","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelAnzuUserList","openBlock","createElementBlock","createVNode","unref","columnsHidden","_cache","isRef","$event","createSlots","renderList","withCtx","renderSlot","_ctx","normalizeProps","guardReactiveProps","slotProps","createElementVNode","VSpacer","columnsAll","VDataTableServer","columnsVisible","loadingAnzuUserList","Fragment","createBlock","VChip","role","createTextVNode","toDisplayString","translatePermission","permissionGroupId","getCachedPermissionGroup","createCommentVNode","VBtn","t","withModifiers"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n * A bare key takes its header from `common.anzuUser.model.*`, which has\n * no system keys. So a system column passes its title already translated.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Optional impersonation. Left unset, nothing is drawn.\n * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and\n * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n * Not part of the shared list because the same filter is a different query per system:\n * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.\n * A plain field is drawn by the generic renderer. A field that\n * needs a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n * Drawn here rather than left to a slot, so the column is not left empty in every app.\n * The cache is keyed per system because the same id is a different group in each backend.\n * An app can still override the chip through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the\n// filter. That is the name `AFilterWrapper` renders a field's widget under.\n// The prefix keeps field slots apart from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AAnzuUserFilter.js","names":["_sfc_main","AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","AAnzuUserFilter_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport type { AxiosInstance } from 'axios'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterWrapper from '@/domains/filters/components/AFilterWrapper.vue'\nimport type { FilterStoreIdentifier } from '@/domains/filters/composables/filterFactory'\nimport { FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { isUndefined } from '@/shared/utils/common'\n\nwithDefaults(\n defineProps<{\n /**\n * Both are what switches the bookmark UI on in `AFilterWrapper`, and both have to be there for\n * it to appear -- bookmarks are stored per user. Left unset, the filter is drawn without them,\n * which is what admin-inhouse, blog and forum have.\n */\n client?: (() => AxiosInstance) | undefined\n userId?: IntegerIdNullable | undefined\n /**\n * What the saved bookmarks are filed under on the server.\n *\n * Left unset it is the filter's own `common` / `anzuUser`. cms overrides it with the pair its\n * old list used, so the bookmarks operators already have keep showing up -- the field names are\n * the same, and a new key would simply orphan them.\n */\n store?: FilterStoreIdentifier | undefined\n }>(),\n {\n client: undefined,\n userId: undefined,\n store: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n}>()\n\n/** The column set a bookmark restores along with the filter values. */\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[AAnzuUserFilter] Incorrect provide/inject config.')\n}\n</script>\n\n<template>\n <AFilterWrapper\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :user-id=\"userId\"\n :store=\"store ?? true\"\n @submit=\"emit('submit')\"\n @reset=\"emit('reset')\"\n @bookmark-load-after=\"emit('submit')\"\n >\n <template #search>\n <AFilterString name=\"email\" />\n </template>\n <!--\n Every other slot straight through, so a system's own field can bring its own widget: the\n generic renderer draws a plain input, and a permission group or a site is a remote\n autocomplete that only the app can build.\n -->\n <template\n v-for=\"(_, name) in $slots\"\n :key=\"name\"\n #[name]=\"slotProps\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AFilterWrapper>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AAnzuUserFilter.js","names":["_sfc_main","AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","AAnzuUserFilter_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport type { AxiosInstance } from 'axios'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterWrapper from '@/domains/filters/components/AFilterWrapper.vue'\nimport type { FilterStoreIdentifier } from '@/domains/filters/composables/filterFactory'\nimport { FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { isUndefined } from '@/shared/utils/common'\n\nwithDefaults(\n defineProps<{\n /**\n * Both are needed to switch on the bookmark UI in `AFilterWrapper`, because\n * bookmarks are stored per user. Left unset, the filter has no bookmarks.\n */\n client?: (() => AxiosInstance) | undefined\n userId?: IntegerIdNullable | undefined\n /**\n * What the saved bookmarks are filed under on the server. Defaults to `common` / `anzuUser`.\n * cms overrides it with the pair its old list used, so existing\n * bookmarks keep showing up. A new key would orphan them.\n */\n store?: FilterStoreIdentifier | undefined\n }>(),\n {\n client: undefined,\n userId: undefined,\n store: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n}>()\n\n/** The column set a bookmark restores along with the filter values. */\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[AAnzuUserFilter] Incorrect provide/inject config.')\n}\n</script>\n\n<template>\n <AFilterWrapper\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :user-id=\"userId\"\n :store=\"store ?? true\"\n @submit=\"emit('submit')\"\n @reset=\"emit('reset')\"\n @bookmark-load-after=\"emit('submit')\"\n >\n <template #search>\n <AFilterString name=\"email\" />\n </template>\n <!--\n Pass every other slot through, so a system field can bring its own widget.\n The generic renderer draws a plain input. A permission group or\n site needs a remote autocomplete that only the app can build.\n -->\n <template\n v-for=\"(_, name) in $slots\"\n :key=\"name\"\n #[name]=\"slotProps\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AFilterWrapper>\n</template>\n"],"mappings":""}
@@ -3,18 +3,15 @@ import { FilterStoreIdentifier } from '../../filters/composables/filterFactory';
3
3
  import { IntegerIdNullable } from '../../../shared/types/common';
4
4
  type __VLS_Props = {
5
5
  /**
6
- * Both are what switches the bookmark UI on in `AFilterWrapper`, and both have to be there for
7
- * it to appear -- bookmarks are stored per user. Left unset, the filter is drawn without them,
8
- * which is what admin-inhouse, blog and forum have.
6
+ * Both are needed to switch on the bookmark UI in `AFilterWrapper`, because
7
+ * bookmarks are stored per user. Left unset, the filter has no bookmarks.
9
8
  */
10
9
  client?: (() => AxiosInstance) | undefined;
11
10
  userId?: IntegerIdNullable | undefined;
12
11
  /**
13
- * What the saved bookmarks are filed under on the server.
14
- *
15
- * Left unset it is the filter's own `common` / `anzuUser`. cms overrides it with the pair its
16
- * old list used, so the bookmarks operators already have keep showing up -- the field names are
17
- * the same, and a new key would simply orphan them.
12
+ * What the saved bookmarks are filed under on the server. Defaults to `common` / `anzuUser`.
13
+ * cms overrides it with the pair its old list used, so existing
14
+ * bookmarks keep showing up. A new key would orphan them.
18
15
  */
19
16
  store?: FilterStoreIdentifier | undefined;
20
17
  };
@@ -23,12 +20,14 @@ type __VLS_ModelProps = {
23
20
  'datatableHiddenColumns'?: string[] | undefined;
24
21
  };
25
22
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
26
- declare var __VLS_20: string, __VLS_21: {
27
- itemConfig: import('../../filters/composables/filterFactory').FilterField;
28
- };
29
- type __VLS_Slots = {} & {
30
- [K in NonNullable<typeof __VLS_20>]?: (props: typeof __VLS_21) => any;
23
+ declare const __VLS_template: () => {
24
+ __VLS_Slots: {
25
+ [x: string]: ((props: {
26
+ itemConfig: import('../../filters/composables/filterFactory').FilterField;
27
+ }) => any) | undefined;
28
+ };
31
29
  };
30
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
32
31
  declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
33
32
  "update:datatableHiddenColumns": (value: string[] | undefined) => any;
34
33
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","AFilterWrapper","_createSlots","_withCtx","_createVNode","AFilterString","_renderList","_renderSlot","_normalizeProps","_guardReactiveProps","AFilterString_default","AFilterWrapper_default","AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","__emit","emit","datatableHiddenColumns","useModel","__props","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","openBlock","createBlock","_cache","$event","createSlots","withCtx","createVNode","renderList","_ctx","renderSlot","name","normalizeProps","guardReactiveProps","slotProps"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport type { AxiosInstance } from 'axios'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterWrapper from '@/domains/filters/components/AFilterWrapper.vue'\nimport type { FilterStoreIdentifier } from '@/domains/filters/composables/filterFactory'\nimport { FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { isUndefined } from '@/shared/utils/common'\n\nwithDefaults(\n defineProps<{\n /**\n * Both are what switches the bookmark UI on in `AFilterWrapper`, and both have to be there for\n * it to appear -- bookmarks are stored per user. Left unset, the filter is drawn without them,\n * which is what admin-inhouse, blog and forum have.\n */\n client?: (() => AxiosInstance) | undefined\n userId?: IntegerIdNullable | undefined\n /**\n * What the saved bookmarks are filed under on the server.\n *\n * Left unset it is the filter's own `common` / `anzuUser`. cms overrides it with the pair its\n * old list used, so the bookmarks operators already have keep showing up -- the field names are\n * the same, and a new key would simply orphan them.\n */\n store?: FilterStoreIdentifier | undefined\n }>(),\n {\n client: undefined,\n userId: undefined,\n store: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n}>()\n\n/** The column set a bookmark restores along with the filter values. */\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[AAnzuUserFilter] Incorrect provide/inject config.')\n}\n</script>\n\n<template>\n <AFilterWrapper\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :user-id=\"userId\"\n :store=\"store ?? true\"\n @submit=\"emit('submit')\"\n @reset=\"emit('reset')\"\n @bookmark-load-after=\"emit('submit')\"\n >\n <template #search>\n <AFilterString name=\"email\" />\n </template>\n <!--\n Every other slot straight through, so a system's own field can bring its own widget: the\n generic renderer draws a plain input, and a permission group or a site is a remote\n autocomplete that only the app can build.\n -->\n <template\n v-for=\"(_, name) in $slots\"\n :key=\"name\"\n #[name]=\"slotProps\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AFilterWrapper>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAmCA,IAAMmB,IAAOD,GAMPE,IAAyBnB,EAAiCqB,GAAC,wBAGhE,GAEKC,IAAeC,EAAOC,CAAe,GACrCC,IAAaF,EAAOG,CAAa;EACvC,IAAIC,EAAYL,CAAY,KAAKK,EAAYF,CAAU,GACrD,MAAU,MAAM,oDAAoD;E,kBAKpExB,EAAA,GAAAC,EA2BiBC,GAAA;GA1BP,4BAA0BgB,EAAA;GAAA,mCAAA,AAAAW,EAAA,QAAA,MAAA,EAAsB,QAAAC;GACvD,QAAQV,EAAA;GACR,WAASA,EAAA;GACT,OAAOA,EAAA,SAAK;GACZ,UAAM,AAAAS,EAAA,QAAA,MAAEZ,EAAI,QAAA;GACZ,SAAK,AAAAY,EAAA,QAAA,MAAEZ,EAAI,OAAA;GACX,qBAAmB,AAAAY,EAAA,QAAA,MAAEZ,EAAI,QAAA;;GAEf,QAAMb,QACe,CAA9BC,EAA8BC,GAAA,EAAf,MAAK,QAAO,CAAA,C;;E,IAQPR,EAAAA,EAAAA,SAAZ,GAAG,O;GAEV;GAED,IAAAM,GAFS,MAAS,CAElBI,EAGE2B,EAAA,QAFOE,GAAI5B,EAAAC,EACH8B,KAAS,CAAA,CAAA,CAAA,CAAA,C"}
1
+ {"version":3,"file":"AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","AFilterWrapper","_createSlots","_withCtx","_createVNode","AFilterString","_renderList","_renderSlot","_normalizeProps","_guardReactiveProps","AFilterString_default","AFilterWrapper_default","AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","__emit","emit","datatableHiddenColumns","useModel","__props","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","openBlock","createBlock","_cache","$event","createSlots","withCtx","createVNode","renderList","_ctx","renderSlot","name","normalizeProps","guardReactiveProps","slotProps"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport type { AxiosInstance } from 'axios'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterWrapper from '@/domains/filters/components/AFilterWrapper.vue'\nimport type { FilterStoreIdentifier } from '@/domains/filters/composables/filterFactory'\nimport { FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { isUndefined } from '@/shared/utils/common'\n\nwithDefaults(\n defineProps<{\n /**\n * Both are needed to switch on the bookmark UI in `AFilterWrapper`, because\n * bookmarks are stored per user. Left unset, the filter has no bookmarks.\n */\n client?: (() => AxiosInstance) | undefined\n userId?: IntegerIdNullable | undefined\n /**\n * What the saved bookmarks are filed under on the server. Defaults to `common` / `anzuUser`.\n * cms overrides it with the pair its old list used, so existing\n * bookmarks keep showing up. A new key would orphan them.\n */\n store?: FilterStoreIdentifier | undefined\n }>(),\n {\n client: undefined,\n userId: undefined,\n store: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n}>()\n\n/** The column set a bookmark restores along with the filter values. */\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[AAnzuUserFilter] Incorrect provide/inject config.')\n}\n</script>\n\n<template>\n <AFilterWrapper\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :user-id=\"userId\"\n :store=\"store ?? true\"\n @submit=\"emit('submit')\"\n @reset=\"emit('reset')\"\n @bookmark-load-after=\"emit('submit')\"\n >\n <template #search>\n <AFilterString name=\"email\" />\n </template>\n <!--\n Pass every other slot through, so a system field can bring its own widget.\n The generic renderer draws a plain input. A permission group or\n site needs a remote autocomplete that only the app can build.\n -->\n <template\n v-for=\"(_, name) in $slots\"\n :key=\"name\"\n #[name]=\"slotProps\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AFilterWrapper>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAgCA,IAAMmB,IAAOD,GAMPE,IAAyBnB,EAAiCqB,GAAC,wBAGhE,GAEKC,IAAeC,EAAOC,CAAe,GACrCC,IAAaF,EAAOG,CAAa;EACvC,IAAIC,EAAYL,CAAY,KAAKK,EAAYF,CAAU,GACrD,MAAU,MAAM,oDAAoD;E,kBAKpExB,EAAA,GAAAC,EA2BiBC,GAAA;GA1BP,4BAA0BgB,EAAA;GAAA,mCAAA,AAAAW,EAAA,QAAA,MAAA,EAAsB,QAAAC;GACvD,QAAQV,EAAA;GACR,WAASA,EAAA;GACT,OAAOA,EAAA,SAAK;GACZ,UAAM,AAAAS,EAAA,QAAA,MAAEZ,EAAI,QAAA;GACZ,SAAK,AAAAY,EAAA,QAAA,MAAEZ,EAAI,OAAA;GACX,qBAAmB,AAAAY,EAAA,QAAA,MAAEZ,EAAI,QAAA;;GAEf,QAAMb,QACe,CAA9BC,EAA8BC,GAAA,EAAf,MAAK,QAAO,CAAA,C;;E,IAQPR,EAAAA,EAAAA,SAAZ,GAAG,O;GAEV;GAED,IAAAM,GAFS,MAAS,CAElBI,EAGE2B,EAAA,QAFOE,GAAI5B,EAAAC,EACH8B,KAAS,CAAA,CAAA,CAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"AAnzuUserForm.js","names":["_sfc_main","AAnzuUserForm_vue_vue_type_script_setup_true_lang_default","AAnzuUserForm_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport AUserEnabledSwitch from '@/domains/anzuUser/components/AUserEnabledSwitch.vue'\nimport AUserMetadataForm from '@/domains/anzuUser/components/AUserMetadataForm.vue'\nimport AAnzuUserRoleAutocomplete from '@/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport APermissionEditor from '@/domains/permission/components/APermissionEditor.vue'\nimport { usePermissionActions } from '@/domains/permission/composables/permissionActions'\nimport APermissionGroupRemoteAutocomplete from '@/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n /**\n * The permission-group endpoint, which is not the user one.\n *\n * There is deliberately no `entity` prop here. `entity` names a *resource*, not a system, and\n * it is what a server validation failure is filed under -- so the group autocomplete, the role\n * list and the permission editor each use their own, and passing the user's down would file a\n * group's error under the user's labels.\n */\n permissionGroupEndPoint?: string\n /**\n * One component for detail and edit (decision 27). Two parallel components drift: a field\n * added to the editable one and forgotten in the other is a silent divergence with nothing to\n * fail.\n */\n readonly?: boolean\n isEdit?: boolean\n /** From the system's descriptor. */\n requiredMetadata?: boolean\n idInput?: boolean\n randomColor?: boolean\n enabledNote?: string | undefined\n metadataNote?: string | undefined\n }>(),\n {\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n readonly: false,\n isEdit: false,\n requiredMetadata: false,\n idInput: true,\n randomColor: false,\n enabledNote: undefined,\n metadataNote: undefined,\n }\n)\n\nconst user = defineModel<AnzuUser>('user', { required: true })\n\nconst { t } = useI18n()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { resolvePermissions } = usePermissionActions({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n})\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\n/**\n * What the account would end up with if saved now: the grants of the groups currently ticked, plus\n * the ones set on the user. Recomputed locally so ticking a group shows its effect without a round\n * trip -- the server's own `resolvedPermissions` describes the record as it was loaded.\n */\nconst resolvedPermissions = computed(() => resolvePermissions(user.value))\n</script>\n\n<template>\n <ASystemEntityScope\n system=\"common\"\n :subject=\"ANZU_USER_ENTITY\"\n >\n <VRow>\n <VCol cols=\"12\">\n <AUserEnabledSwitch\n v-model=\"user.enabled\"\n :readonly=\"readonly\"\n :note=\"enabledNote\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AUserMetadataForm\n v-model:user=\"user\"\n :required=\"requiredMetadata\"\n :id-input=\"idInput\"\n :is-edit=\"isEdit\"\n :readonly=\"readonly\"\n :random-color=\"randomColor\"\n :note=\"metadataNote\"\n />\n </VCol>\n <VCol\n v-if=\"isEdit && !readonly && $slots.copyPermissions\"\n cols=\"12\"\n >\n <!-- Copying roles and grants from another account. Only cms offers it today. -->\n <slot name=\"copyPermissions\" />\n </VCol>\n <VCol\n v-if=\"$slots.systemFields\"\n cols=\"12\"\n >\n <!--\n The system's own fields: autocompletes over that backend's entities, which the library\n cannot build. The same `readonly` reaches them, so the app swaps its autocompletes for\n chips inside.\n -->\n <slot\n name=\"systemFields\"\n :readonly=\"readonly\"\n :is-edit=\"isEdit\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AAnzuUserRoleAutocomplete\n v-model=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionGroupRemoteAutocomplete\n v-model=\"user.permissionGroups\"\n :client=\"client\"\n :system=\"system\"\n :end-point=\"permissionGroupEndPoint\"\n :label=\"t('common.anzuUser.model.permissionGroups')\"\n :readonly=\"readonly\"\n multiple\n clearable\n />\n </VCol>\n <VCol\n v-if=\"$slots.actions\"\n cols=\"12\"\n >\n <!-- Impersonation and anything else the app hangs off this form. -->\n <slot\n name=\"actions\"\n :user=\"user\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionEditor\n v-model=\"user.permissions\"\n :resolved-permissions=\"resolvedPermissions\"\n :roles=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n </VRow>\n </ASystemEntityScope>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AAnzuUserForm.js","names":["_sfc_main","AAnzuUserForm_vue_vue_type_script_setup_true_lang_default","AAnzuUserForm_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport AUserEnabledSwitch from '@/domains/anzuUser/components/AUserEnabledSwitch.vue'\nimport AUserMetadataForm from '@/domains/anzuUser/components/AUserMetadataForm.vue'\nimport AAnzuUserRoleAutocomplete from '@/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport APermissionEditor from '@/domains/permission/components/APermissionEditor.vue'\nimport { usePermissionActions } from '@/domains/permission/composables/permissionActions'\nimport APermissionGroupRemoteAutocomplete from '@/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n /**\n * The permission-group endpoint, which is not the user one.\n * There is deliberately no `entity` prop. `entity` names the resource that server validation\n * errors are filed under. Passing the user's down would file group errors under user labels.\n */\n permissionGroupEndPoint?: string\n /**\n * One component for detail and edit (decision 27). Two components drift:\n * a field added to one and forgotten in the other fails silently.\n */\n readonly?: boolean\n isEdit?: boolean\n /** From the system's descriptor. */\n requiredMetadata?: boolean\n idInput?: boolean\n randomColor?: boolean\n enabledNote?: string | undefined\n metadataNote?: string | undefined\n }>(),\n {\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n readonly: false,\n isEdit: false,\n requiredMetadata: false,\n idInput: true,\n randomColor: false,\n enabledNote: undefined,\n metadataNote: undefined,\n }\n)\n\nconst user = defineModel<AnzuUser>('user', { required: true })\n\nconst { t } = useI18n()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { resolvePermissions } = usePermissionActions({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n})\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\n/**\n * Grants the account would have if saved now: those of the ticked groups plus the user's own.\n * Computed locally so ticking a group shows its effect without a round\n * trip. The server's `resolvedPermissions` reflects the record as loaded.\n */\nconst resolvedPermissions = computed(() => resolvePermissions(user.value))\n</script>\n\n<template>\n <ASystemEntityScope\n system=\"common\"\n :subject=\"ANZU_USER_ENTITY\"\n >\n <VRow>\n <VCol cols=\"12\">\n <AUserEnabledSwitch\n v-model=\"user.enabled\"\n :readonly=\"readonly\"\n :note=\"enabledNote\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AUserMetadataForm\n v-model:user=\"user\"\n :required=\"requiredMetadata\"\n :id-input=\"idInput\"\n :is-edit=\"isEdit\"\n :readonly=\"readonly\"\n :random-color=\"randomColor\"\n :note=\"metadataNote\"\n />\n </VCol>\n <VCol\n v-if=\"isEdit && !readonly && $slots.copyPermissions\"\n cols=\"12\"\n >\n <!-- Copying roles and grants from another account. Only cms offers it today. -->\n <slot name=\"copyPermissions\" />\n </VCol>\n <VCol\n v-if=\"$slots.systemFields\"\n cols=\"12\"\n >\n <!--\n The system's own fields: autocompletes over that backend's entities, which the library\n cannot build. They get the same `readonly`, so the app can swap autocompletes for chips.\n -->\n <slot\n name=\"systemFields\"\n :readonly=\"readonly\"\n :is-edit=\"isEdit\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AAnzuUserRoleAutocomplete\n v-model=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionGroupRemoteAutocomplete\n v-model=\"user.permissionGroups\"\n :client=\"client\"\n :system=\"system\"\n :end-point=\"permissionGroupEndPoint\"\n :label=\"t('common.anzuUser.model.permissionGroups')\"\n :readonly=\"readonly\"\n multiple\n clearable\n />\n </VCol>\n <VCol\n v-if=\"$slots.actions\"\n cols=\"12\"\n >\n <slot\n name=\"actions\"\n :user=\"user\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionEditor\n v-model=\"user.permissions\"\n :resolved-permissions=\"resolvedPermissions\"\n :roles=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n </VRow>\n </ASystemEntityScope>\n</template>\n"],"mappings":""}
@@ -5,17 +5,13 @@ type __VLS_Props = {
5
5
  system: string;
6
6
  /**
7
7
  * The permission-group endpoint, which is not the user one.
8
- *
9
- * There is deliberately no `entity` prop here. `entity` names a *resource*, not a system, and
10
- * it is what a server validation failure is filed under -- so the group autocomplete, the role
11
- * list and the permission editor each use their own, and passing the user's down would file a
12
- * group's error under the user's labels.
8
+ * There is deliberately no `entity` prop. `entity` names the resource that server validation
9
+ * errors are filed under. Passing the user's down would file group errors under user labels.
13
10
  */
14
11
  permissionGroupEndPoint?: string;
15
12
  /**
16
- * One component for detail and edit (decision 27). Two parallel components drift: a field
17
- * added to the editable one and forgotten in the other is a silent divergence with nothing to
18
- * fail.
13
+ * One component for detail and edit (decision 27). Two components drift:
14
+ * a field added to one and forgotten in the other fails silently.
19
15
  */
20
16
  readonly?: boolean;
21
17
  isEdit?: boolean;
@@ -30,19 +26,21 @@ type __VLS_ModelProps = {
30
26
  'user': AnzuUser;
31
27
  };
32
28
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
33
- declare var __VLS_41: {}, __VLS_49: {
34
- readonly: boolean;
35
- isEdit: boolean;
36
- }, __VLS_79: {
37
- user: AnzuUser;
38
- };
39
- type __VLS_Slots = {} & {
40
- copyPermissions?: (props: typeof __VLS_41) => any;
41
- } & {
42
- systemFields?: (props: typeof __VLS_49) => any;
43
- } & {
44
- actions?: (props: typeof __VLS_79) => any;
29
+ declare const __VLS_template: () => {
30
+ __VLS_Slots: {
31
+ copyPermissions?: (props: {}) => any;
32
+ } & {
33
+ systemFields?: (props: {
34
+ readonly: boolean;
35
+ isEdit: boolean;
36
+ }) => any;
37
+ } & {
38
+ actions?: (props: {
39
+ user: AnzuUser;
40
+ }) => any;
41
+ };
45
42
  };
43
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
46
44
  declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
47
45
  "update:user": (value: AnzuUser) => any;
48
46
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{