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

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 (690) hide show
  1. package/README.md +4 -0
  2. package/dist/AnzuSystemsCommonAdmin.d.ts +42 -32
  3. package/dist/AnzuSystemsCommonAdmin.js.map +1 -1
  4. package/dist/common-admin.css +1 -1
  5. package/dist/common-admin.js +282 -282
  6. package/dist/domains/anzuUser/api/anzuUserApi.d.ts +9 -12
  7. package/dist/domains/anzuUser/api/anzuUserApi.js.map +1 -1
  8. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
  9. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue.d.ts +38 -44
  10. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
  12. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue.d.ts +12 -13
  13. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
  15. package/dist/domains/anzuUser/components/AAnzuUserForm.vue.d.ts +18 -20
  16. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
  18. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
  20. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
  22. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue.d.ts +2 -3
  23. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
  25. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue.d.ts +9 -15
  26. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
  28. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue.d.ts +8 -7
  29. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
  31. package/dist/domains/anzuUser/components/AUserManageButton.vue.d.ts +0 -1
  32. package/dist/domains/anzuUser/components/AUserManageButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
  34. package/dist/domains/anzuUser/components/AUserMetadataForm.vue.d.ts +8 -9
  35. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
  37. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
  39. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue.d.ts +1 -2
  40. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
  42. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
  44. package/dist/domains/anzuUser/components/AUserSystemPanel.vue.d.ts +2 -2
  45. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
  47. package/dist/domains/anzuUser/components/AUserSystemStatusChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
  49. package/dist/domains/anzuUser/components/AUserTabsShell.vue.d.ts +17 -22
  50. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/domains/anzuUser/composables/anzuUserActions.d.ts +5 -9
  52. package/dist/domains/anzuUser/composables/anzuUserActions.js.map +1 -1
  53. package/dist/domains/anzuUser/composables/anzuUserValidations.d.ts +4 -6
  54. package/dist/domains/anzuUser/composables/anzuUserValidations.js.map +1 -1
  55. package/dist/domains/anzuUser/composables/cachedAnzuUsers.d.ts +3 -3
  56. package/dist/domains/anzuUser/composables/cachedAnzuUsers.js.map +1 -1
  57. package/dist/domains/anzuUser/composables/userCrossSystemSearch.d.ts +2 -4
  58. package/dist/domains/anzuUser/composables/userCrossSystemSearch.js.map +1 -1
  59. package/dist/domains/anzuUser/composables/userCrossSystemWrites.d.ts +5 -11
  60. package/dist/domains/anzuUser/composables/userCrossSystemWrites.js.map +1 -1
  61. package/dist/domains/anzuUser/composables/userSystemDescriptor.d.ts +33 -57
  62. package/dist/domains/anzuUser/composables/userSystemDescriptor.js.map +1 -1
  63. package/dist/domains/anzuUser/composables/userSystemProbe.d.ts +7 -27
  64. package/dist/domains/anzuUser/composables/userSystemProbe.js.map +1 -1
  65. package/dist/domains/anzuUser/filter/anzuUserFilter.d.ts +6 -16
  66. package/dist/domains/anzuUser/filter/anzuUserFilter.js.map +1 -1
  67. package/dist/domains/anzuUser/store/anzuUserStore.d.ts +1 -5
  68. package/dist/domains/anzuUser/store/anzuUserStore.js.map +1 -1
  69. package/dist/domains/anzuUser/store/userCrossSystemStore.d.ts +3 -14
  70. package/dist/domains/anzuUser/store/userCrossSystemStore.js.map +1 -1
  71. package/dist/domains/anzuUser/utils/userMetadataDiff.d.ts +7 -19
  72. package/dist/domains/anzuUser/utils/userMetadataDiff.js.map +1 -1
  73. package/dist/domains/anzuUser/utils/userSystemState.d.ts +12 -30
  74. package/dist/domains/anzuUser/utils/userSystemState.js.map +1 -1
  75. package/dist/domains/anzuUser/utils/userTabs.d.ts +1 -3
  76. package/dist/domains/anzuUser/utils/userTabs.js.map +1 -1
  77. package/dist/domains/api/composables/defineApiClient.d.ts +4 -8
  78. package/dist/domains/api/composables/defineApiClient.js.map +1 -1
  79. package/dist/domains/api/composables/request.d.ts +18 -48
  80. package/dist/domains/api/composables/request.js.map +1 -1
  81. package/dist/domains/api/composables/useApiFetchByIds.d.ts +7 -21
  82. package/dist/domains/api/composables/useApiFetchByIds.js.map +1 -1
  83. package/dist/domains/api/composables/useApiFetchItems.d.ts +18 -57
  84. package/dist/domains/api/composables/useApiFetchItems.js.map +1 -1
  85. package/dist/domains/api/composables/useApiFetchList.d.ts +7 -23
  86. package/dist/domains/api/composables/useApiFetchList.js.map +1 -1
  87. package/dist/domains/api/composables/useApiFetchListBatch.d.ts +5 -22
  88. package/dist/domains/api/composables/useApiFetchListBatch.js.map +1 -1
  89. package/dist/domains/api/composables/useApiQueryBuilder.js.map +1 -1
  90. package/dist/domains/api/composables/useApiRequest.d.ts +16 -39
  91. package/dist/domains/api/composables/useApiRequest.js.map +1 -1
  92. package/dist/domains/api/utils/apiErrors.d.ts +28 -55
  93. package/dist/domains/api/utils/apiErrors.js.map +1 -1
  94. package/dist/domains/api/utils/listBody.d.ts +22 -43
  95. package/dist/domains/api/utils/listBody.js.map +1 -1
  96. package/dist/domains/auth/components/Acl.js.map +1 -1
  97. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/domains/auth/composables/aclAllowed.d.ts +2 -3
  99. package/dist/domains/auth/composables/aclAllowed.js.map +1 -1
  100. package/dist/domains/auth/composables/defineAuth.js.map +1 -1
  101. package/dist/domains/auth/composables/refreshSession.d.ts +10 -13
  102. package/dist/domains/auth/composables/refreshSession.js.map +1 -1
  103. package/dist/domains/cached/components/ACachedChip.js.map +1 -1
  104. package/dist/domains/cached/components/ACachedChip.vue.d.ts +13 -11
  105. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/domains/cached/components/ACachedUserChip.js +1 -1
  107. package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
  108. package/dist/domains/cached/components/ACachedUserChip.vue.d.ts +3 -3
  109. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.d.ts +9 -9
  111. package/dist/domains/cached/composables/createUserAndTimeTrackingFields.js.map +1 -1
  112. package/dist/domains/cached/composables/defineCached.d.ts +13 -11
  113. package/dist/domains/cached/composables/defineCached.js.map +1 -1
  114. package/dist/domains/cached/composables/useCachedItem.d.ts +7 -8
  115. package/dist/domains/cached/composables/useCachedItem.js.map +1 -1
  116. package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
  117. package/dist/domains/collab/components/ACollabLockedByUser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/domains/collab/composables/collabAnyDataChange.js.map +1 -1
  119. package/dist/domains/collab/composables/collabField.d.ts +5 -3
  120. package/dist/domains/collab/composables/collabField.js.map +1 -1
  121. package/dist/domains/collab/composables/collabInit.js +58 -54
  122. package/dist/domains/collab/composables/collabInit.js.map +1 -1
  123. package/dist/domains/collab/composables/collabRecovery.d.ts +49 -0
  124. package/dist/domains/collab/composables/collabRecovery.js +99 -0
  125. package/dist/domains/collab/composables/collabRecovery.js.map +1 -0
  126. package/dist/domains/collab/composables/collabRoom.js +106 -106
  127. package/dist/domains/collab/composables/collabRoom.js.map +1 -1
  128. package/dist/domains/collab/composables/collabState.d.ts +11 -4
  129. package/dist/domains/collab/composables/collabState.js +34 -25
  130. package/dist/domains/collab/composables/collabState.js.map +1 -1
  131. package/dist/domains/collab/composables/commonAdminCollabOptions.d.ts +4 -2
  132. package/dist/domains/collab/types/Collab.d.ts +31 -5
  133. package/dist/domains/collab/types/Collab.js +23 -11
  134. package/dist/domains/collab/types/Collab.js.map +1 -1
  135. package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
  136. package/dist/domains/customDataForm/components/ACustomDataForm.vue.d.ts +7 -5
  137. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
  139. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
  141. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue.d.ts +5 -3
  142. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  143. package/dist/domains/customDataForm/composables/useCustomDataForm.js.map +1 -1
  144. package/dist/domains/customDataForm/types/CustomDataForm.d.ts +4 -1
  145. package/dist/domains/dam/api/damAssetApi.d.ts +7 -7
  146. package/dist/domains/dam/api/damAssetApi.js.map +1 -1
  147. package/dist/domains/dam/api/damAssetLicenceApi.d.ts +1 -1
  148. package/dist/domains/dam/api/damAssetLicenceApi.js.map +1 -1
  149. package/dist/domains/dam/api/damConstants.js.map +1 -1
  150. package/dist/domains/dam/api/damEndPoints.js.map +1 -1
  151. package/dist/domains/dam/api/damImageApi.js.map +1 -1
  152. package/dist/domains/dam/api/uploadApi.js.map +1 -1
  153. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
  154. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue.d.ts +7 -5
  155. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
  157. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
  159. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue.d.ts +1 -1
  160. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue.d.ts +5 -3
  162. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
  163. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
  165. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
  167. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
  169. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue.d.ts +1 -1
  170. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
  172. package/dist/domains/dam/assetDetail/components/AssetImage.vue.d.ts +1 -1
  173. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
  175. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue.d.ts +2 -2
  176. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
  178. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  179. package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
  180. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.d.ts +5 -6
  182. package/dist/domains/dam/assetDetail/composables/assetDetailExtSystem.js.map +1 -1
  183. package/dist/domains/dam/assetDetail/composables/assetDetailView.d.ts +10 -10
  184. package/dist/domains/dam/assetDetail/composables/assetDetailView.js.map +1 -1
  185. package/dist/domains/dam/assetDetail/store/assetDetailStore.js.map +1 -1
  186. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.d.ts +4 -3
  187. package/dist/domains/dam/assetDetail/utils/assetMetadataMayStillChange.js.map +1 -1
  188. package/dist/domains/dam/assetSelect/api/damPodcastApi.js.map +1 -1
  189. package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
  190. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue.d.ts +789 -787
  191. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
  193. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue.d.ts +395 -393
  194. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
  196. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue.d.ts +14 -12
  197. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
  199. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  200. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
  201. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue.d.ts +9 -7
  202. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
  204. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/domains/dam/assetSelect/composables/assetSelectListActions.js.map +1 -1
  206. package/dist/domains/dam/assetSelect/store/assetSelectStore.js.map +1 -1
  207. package/dist/domains/dam/author/api/authorApi.js.map +1 -1
  208. package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
  209. package/dist/domains/dam/author/components/AuthorCreateButton.vue.d.ts +1 -1
  210. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
  212. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue.d.ts +9 -6
  213. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
  215. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  216. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js +1 -1
  217. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
  218. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue.d.ts +2 -2
  219. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
  221. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue.d.ts +1 -1
  222. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/domains/dam/author/composables/cachedAuthors.d.ts +5 -4
  224. package/dist/domains/dam/author/composables/cachedAuthors.js.map +1 -1
  225. package/dist/domains/dam/author/composables/cachedUsers.d.ts +5 -4
  226. package/dist/domains/dam/author/composables/cachedUsers.js.map +1 -1
  227. package/dist/domains/dam/author/composables/damAuthorConfig.d.ts +2 -2
  228. package/dist/domains/dam/author/composables/damAuthorConfig.js.map +1 -1
  229. package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
  230. package/dist/domains/dam/components/DamAdminAssetLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/domains/dam/composables/commonAdminCoreDamOptions.d.ts +10 -8
  232. package/dist/domains/dam/composables/commonAdminCoreDamOptions.js.map +1 -1
  233. package/dist/domains/dam/composables/damConfigName.d.ts +8 -9
  234. package/dist/domains/dam/composables/damConfigName.js.map +1 -1
  235. package/dist/domains/dam/composables/damNotifications.d.ts +9 -9
  236. package/dist/domains/dam/composables/damNotifications.js.map +1 -1
  237. package/dist/domains/dam/composables/damNotificationsConnection.d.ts +4 -4
  238. package/dist/domains/dam/composables/damNotificationsConnection.js.map +1 -1
  239. package/dist/domains/dam/composables/damNotificationsEventBus.d.ts +2 -2
  240. package/dist/domains/dam/composables/damNotificationsEventBus.js.map +1 -1
  241. package/dist/domains/dam/composables/extSystemIdForCached.d.ts +5 -4
  242. package/dist/domains/dam/composables/extSystemIdForCached.js.map +1 -1
  243. package/dist/domains/dam/config/api/damAssetCustomFormApi.js.map +1 -1
  244. package/dist/domains/dam/config/api/damConfigApi.js.map +1 -1
  245. package/dist/domains/dam/config/composables/damConfigState.d.ts +5 -5
  246. package/dist/domains/dam/config/composables/damConfigState.js.map +1 -1
  247. package/dist/domains/dam/config/store/damConfigStore.d.ts +5 -4
  248. package/dist/domains/dam/config/store/damConfigStore.js.map +1 -1
  249. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.d.ts +3 -1
  250. package/dist/domains/dam/config/utils/damFilterUserAllowedUploadConfigs.js.map +1 -1
  251. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  252. package/dist/domains/dam/cropper/components/ACropper.vue.d.ts +8 -16
  253. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  254. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
  255. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  256. package/dist/domains/dam/cropper/store/imageRoiStore.d.ts +9 -12
  257. package/dist/domains/dam/cropper/store/imageRoiStore.js.map +1 -1
  258. package/dist/domains/dam/cropper/utils/cropperGeometry.d.ts +24 -38
  259. package/dist/domains/dam/cropper/utils/cropperGeometry.js.map +1 -1
  260. package/dist/domains/dam/cropper/utils/cropperJsService.d.ts +3 -7
  261. package/dist/domains/dam/cropper/utils/cropperJsService.js +10 -3
  262. package/dist/domains/dam/cropper/utils/cropperJsService.js.map +1 -1
  263. package/dist/domains/dam/cropper/utils/cropperTypes.d.ts +3 -6
  264. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.d.ts +5 -5
  265. package/dist/domains/dam/cropper/utils/damAssetImageRoiSelectLoader.js.map +1 -1
  266. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
  267. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
  269. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  270. package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
  271. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
  273. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  274. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue.d.ts +43 -41
  275. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue.d.ts +31 -29
  276. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
  277. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue.d.ts +29 -27
  278. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  279. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
  280. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue.d.ts +1 -1
  281. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  282. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
  283. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue.d.ts +68 -66
  284. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  285. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
  286. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue.d.ts +402 -400
  287. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  288. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
  289. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue.d.ts +384 -382
  290. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  291. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
  292. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  293. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
  294. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  295. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue.d.ts +7 -5
  296. package/dist/domains/dam/imageWidget/composables/commonAdminImageOptions.js.map +1 -1
  297. package/dist/domains/dam/imageWidget/composables/imageApiCms.js.map +1 -1
  298. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.d.ts +11 -13
  299. package/dist/domains/dam/imageWidget/composables/imageDialogDamAuthors.js.map +1 -1
  300. package/dist/domains/dam/imageWidget/composables/useImageMassOperations.js.map +1 -1
  301. package/dist/domains/dam/imageWidget/store/imageMediaWidgetStore.js.map +1 -1
  302. package/dist/domains/dam/imageWidget/store/imageStore.js.map +1 -1
  303. package/dist/domains/dam/imageWidget/utils/damImage.d.ts +5 -6
  304. package/dist/domains/dam/imageWidget/utils/damImage.js.map +1 -1
  305. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.d.ts +1 -2
  306. package/dist/domains/dam/imageWidget/utils/fieldLockTurns.js.map +1 -1
  307. package/dist/domains/dam/imageWidget/utils/imageSaves.d.ts +10 -14
  308. package/dist/domains/dam/imageWidget/utils/imageSaves.js.map +1 -1
  309. package/dist/domains/dam/imageWidget/utils/metadataToImageMap.js.map +1 -1
  310. package/dist/domains/dam/imageWidget/utils/waitLimit.d.ts +4 -6
  311. package/dist/domains/dam/imageWidget/utils/waitLimit.js.map +1 -1
  312. package/dist/domains/dam/keyword/api/keywordApi.js.map +1 -1
  313. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
  314. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue.d.ts +1 -1
  315. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  316. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
  317. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue.d.ts +8 -5
  318. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  319. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js +1 -1
  320. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
  321. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue.d.ts +2 -2
  322. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  323. package/dist/domains/dam/keyword/composables/cachedKeywords.d.ts +5 -4
  324. package/dist/domains/dam/keyword/composables/cachedKeywords.js.map +1 -1
  325. package/dist/domains/dam/keyword/composables/damKeywordConfig.d.ts +2 -2
  326. package/dist/domains/dam/keyword/composables/damKeywordConfig.js.map +1 -1
  327. package/dist/domains/dam/types/Asset.d.ts +1 -1
  328. package/dist/domains/dam/types/Asset.js.map +1 -1
  329. package/dist/domains/dam/types/UploadQueue.d.ts +5 -4
  330. package/dist/domains/dam/types/UploadQueue.js.map +1 -1
  331. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
  332. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  333. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
  334. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue.d.ts +2 -2
  335. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  336. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
  337. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  338. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
  339. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  340. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
  341. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue.d.ts +6 -4
  342. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  343. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
  344. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue.d.ts +1 -1
  345. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
  347. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  348. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
  349. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue.d.ts +6 -6
  350. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  351. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
  352. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue.d.ts +13 -13
  353. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  354. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.d.ts +13 -13
  355. package/dist/domains/dam/uploadQueue/components/uploadQueueBindings.js.map +1 -1
  356. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.d.ts +2 -2
  357. package/dist/domains/dam/uploadQueue/composables/damUploadChunkSize.js.map +1 -1
  358. package/dist/domains/dam/uploadQueue/composables/uploadMeter.d.ts +12 -12
  359. package/dist/domains/dam/uploadQueue/composables/uploadMeter.js.map +1 -1
  360. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.d.ts +5 -5
  361. package/dist/domains/dam/uploadQueue/composables/uploadQueueItemRefresh.js.map +1 -1
  362. package/dist/domains/dam/uploadQueue/composables/uploadService.d.ts +2 -3
  363. package/dist/domains/dam/uploadQueue/composables/uploadService.js.map +1 -1
  364. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.d.ts +5 -4
  365. package/dist/domains/dam/uploadQueue/composables/useUploadQueueDialog.js.map +1 -1
  366. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.d.ts +3 -2
  367. package/dist/domains/dam/uploadQueue/core/uploadQueueCore.js.map +1 -1
  368. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.d.ts +8 -5
  369. package/dist/domains/dam/uploadQueue/core/uploadQueueCoreTypes.js.map +1 -1
  370. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.d.ts +3 -3
  371. package/dist/domains/dam/uploadQueue/core/uploadQueueFill.js.map +1 -1
  372. package/dist/domains/dam/uploadQueue/presets/queuePresets.d.ts +8 -5
  373. package/dist/domains/dam/uploadQueue/presets/queuePresets.js.map +1 -1
  374. package/dist/domains/dam/uploadQueue/presets/uploadPresets.d.ts +15 -13
  375. package/dist/domains/dam/uploadQueue/presets/uploadPresets.js.map +1 -1
  376. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.d.ts +7 -7
  377. package/dist/domains/dam/uploadQueue/settlement/uploadPollSchedule.js.map +1 -1
  378. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.d.ts +4 -4
  379. package/dist/domains/dam/uploadQueue/settlement/uploadPoller.js.map +1 -1
  380. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.d.ts +28 -30
  381. package/dist/domains/dam/uploadQueue/settlement/uploadSettle.js.map +1 -1
  382. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.d.ts +2 -2
  383. package/dist/domains/dam/uploadQueue/settlement/uploadSettlement.js.map +1 -1
  384. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.d.ts +2 -2
  385. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementRuntime.js.map +1 -1
  386. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.d.ts +63 -73
  387. package/dist/domains/dam/uploadQueue/settlement/uploadSettlementTypes.js.map +1 -1
  388. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.d.ts +8 -9
  389. package/dist/domains/dam/uploadQueue/store/uploadQueuesStore.js.map +1 -1
  390. package/dist/domains/dam/user/api/userApi.d.ts +2 -2
  391. package/dist/domains/dam/user/api/userApi.js.map +1 -1
  392. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
  393. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue.d.ts +1 -1
  394. package/dist/domains/dam/user/components/DamDistributionServiceSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  395. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
  396. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue.d.ts +1 -1
  397. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  398. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
  399. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue.d.ts +1 -1
  400. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  401. package/dist/domains/dam/user/composables/damUserSelectActions.d.ts +1 -1
  402. package/dist/domains/dam/user/composables/damUserSelectActions.js.map +1 -1
  403. package/dist/domains/dam/user/types/DamDistributionServiceType.d.ts +2 -2
  404. package/dist/domains/dam/user/types/DamDistributionServiceType.js.map +1 -1
  405. package/dist/domains/dam/user/types/DamExternalProviderAssetType.d.ts +1 -1
  406. package/dist/domains/dam/user/types/DamExternalProviderAssetType.js.map +1 -1
  407. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
  408. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  409. package/dist/domains/filters/bookmarks/store/bookmarksStore.d.ts +3 -3
  410. package/dist/domains/filters/bookmarks/store/bookmarksStore.js.map +1 -1
  411. package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
  412. package/dist/domains/filters/components/AFilterDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  413. package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
  414. package/dist/domains/filters/components/AFilterInteger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  415. package/dist/domains/filters/components/AFilterString.js.map +1 -1
  416. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
  417. package/dist/domains/filters/components/AFilterTimeInterval.js +1 -1
  418. package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
  419. package/dist/domains/filters/components/AFilterTimeInterval.vue.d.ts +5 -3
  420. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
  421. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
  422. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  423. package/dist/domains/filters/components/AFilterWrapper.js.map +1 -1
  424. package/dist/domains/filters/components/AFilterWrapper.vue.d.ts +17 -15
  425. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js +63 -62
  426. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  427. package/dist/domains/filters/components/AFilterWrapperSidebar.vue.d.ts +5 -3
  428. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  429. package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js.map +1 -1
  430. package/dist/domains/filters/composables/filterFactory.d.ts +16 -26
  431. package/dist/domains/filters/composables/filterFactory.js +38 -31
  432. package/dist/domains/filters/composables/filterFactory.js.map +1 -1
  433. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  434. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +3 -1
  435. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map +1 -1
  436. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  437. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +2 -4
  438. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  439. package/dist/domains/filters/utils/filterInjectionKeys.js.map +1 -1
  440. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  441. package/dist/domains/form/components/AFormDatetimePicker.vue.d.ts +7 -5
  442. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  443. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  444. package/dist/domains/form/components/AFormFlagDatetimePicker.vue.d.ts +7 -5
  445. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  446. package/dist/domains/form/components/AFormSwitch.vue.d.ts +7 -5
  447. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  448. package/dist/domains/form/components/AFormTextField.vue.d.ts +9 -7
  449. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  450. package/dist/domains/form/components/AFormTextarea.vue.d.ts +13 -11
  451. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue.d.ts +7 -5
  452. package/dist/domains/form/components/ASystemEntityScope.vue.d.ts +5 -3
  453. package/dist/domains/job/api/jobApi.js.map +1 -1
  454. package/dist/domains/job/components/AJobDetailCommon.vue.d.ts +5 -3
  455. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  456. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  457. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  458. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue.d.ts +2 -3
  459. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  460. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  461. package/dist/domains/listEditor/components/ASortableListEditor.vue.d.ts +2 -3
  462. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  463. package/dist/domains/listEditor/composables/useListEditorController.d.ts +4 -5
  464. package/dist/domains/listEditor/composables/useListEditorController.js.map +1 -1
  465. package/dist/domains/listEditor/composables/useNestedListEditor.d.ts +3 -4
  466. package/dist/domains/listEditor/composables/useNestedListEditor.js.map +1 -1
  467. package/dist/domains/listEditor/composables/useNestedListEditorController.d.ts +5 -4
  468. package/dist/domains/listEditor/composables/useNestedListEditorController.js.map +1 -1
  469. package/dist/domains/listEditor/composables/useReorderMode.js.map +1 -1
  470. package/dist/domains/listEditor/types/listEditorTypes.d.ts +2 -2
  471. package/dist/domains/listEditor/utils/listEditorLoader.d.ts +5 -5
  472. package/dist/domains/listEditor/utils/listEditorLoader.js.map +1 -1
  473. package/dist/domains/listEditor/utils/resolveCompactText.js.map +1 -1
  474. package/dist/domains/log/api/logApi.d.ts +2 -3
  475. package/dist/domains/log/api/logApi.js.map +1 -1
  476. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  477. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  478. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  479. package/dist/domains/log/components/ALogDetailView.vue.d.ts +1 -1
  480. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  481. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  482. package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  483. package/dist/domains/log/components/ALogListView.js.map +1 -1
  484. package/dist/domains/log/components/ALogListView.vue.d.ts +1 -1
  485. package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  486. package/dist/domains/log/composables/logActions.d.ts +4 -5
  487. package/dist/domains/log/composables/logActions.js.map +1 -1
  488. package/dist/domains/log/composables/logType.d.ts +6 -7
  489. package/dist/domains/log/composables/logType.js.map +1 -1
  490. package/dist/domains/log/filter/logFilter.d.ts +8 -11
  491. package/dist/domains/log/filter/logFilter.js.map +1 -1
  492. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  493. package/dist/domains/permission/components/APermissionEditor.vue.d.ts +4 -4
  494. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  495. package/dist/domains/permission/composables/permissionActions.d.ts +3 -6
  496. package/dist/domains/permission/composables/permissionActions.js.map +1 -1
  497. package/dist/domains/permission/config/api/permissionConfigApi.d.ts +2 -2
  498. package/dist/domains/permission/config/api/permissionConfigApi.js.map +1 -1
  499. package/dist/domains/permission/config/composables/permissionConfigActions.d.ts +3 -7
  500. package/dist/domains/permission/config/composables/permissionConfigActions.js.map +1 -1
  501. package/dist/domains/permission/config/store/permissionConfigStore.d.ts +2 -4
  502. package/dist/domains/permission/config/store/permissionConfigStore.js.map +1 -1
  503. package/dist/domains/permission/group/api/permissionGroupApi.d.ts +8 -10
  504. package/dist/domains/permission/group/api/permissionGroupApi.js.map +1 -1
  505. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  506. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue.d.ts +12 -10
  507. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  508. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  509. package/dist/domains/permission/group/components/APermissionGroupDetail.vue.d.ts +21 -22
  510. package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  511. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  512. package/dist/domains/permission/group/components/APermissionGroupManage.vue.d.ts +21 -22
  513. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  514. package/dist/domains/permission/group/composables/cachedPermissionGroups.js.map +1 -1
  515. package/dist/domains/permission/group/composables/permissionGroupActions.d.ts +6 -8
  516. package/dist/domains/permission/group/composables/permissionGroupActions.js.map +1 -1
  517. package/dist/domains/permission/group/composables/permissionGroupValidations.d.ts +2 -3
  518. package/dist/domains/permission/group/composables/permissionGroupValidations.js.map +1 -1
  519. package/dist/domains/permission/group/filter/permissionGroupFilter.d.ts +2 -3
  520. package/dist/domains/permission/group/filter/permissionGroupFilter.js.map +1 -1
  521. package/dist/domains/permission/group/store/permissionGroupStore.d.ts +3 -6
  522. package/dist/domains/permission/group/store/permissionGroupStore.js.map +1 -1
  523. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  524. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  525. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  526. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  527. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  528. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  529. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue.d.ts +5 -3
  530. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.d.ts +11 -13
  531. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js.map +1 -1
  532. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue.d.ts +13 -11
  533. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  534. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  535. package/dist/domains/subjectSelect/composables/useSubjectSelect.js +53 -51
  536. package/dist/domains/subjectSelect/composables/useSubjectSelect.js.map +1 -1
  537. package/dist/domains/system/appShell/components/AActionbar.vue.d.ts +7 -5
  538. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  539. package/dist/domains/system/appShell/components/ALayoutSwitch.vue.d.ts +7 -5
  540. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  541. package/dist/domains/system/appShell/composables/teleportSlot.d.ts +0 -1
  542. package/dist/domains/system/appShell/composables/teleportSlot.js.map +1 -1
  543. package/dist/domains/system/components/AAlerts.js.map +1 -1
  544. package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  545. package/dist/domains/system/composables/alerts.js.map +1 -1
  546. package/dist/domains/system/composables/breadcrumbs.d.ts +3 -3
  547. package/dist/domains/system/composables/breadcrumbs.js.map +1 -1
  548. package/dist/domains/system/composables/languageSettings.js.map +1 -1
  549. package/dist/domains/system/composables/loginStatus.js.map +1 -1
  550. package/dist/domains/system/composables/navigationError.d.ts +6 -8
  551. package/dist/domains/system/composables/navigationError.js.map +1 -1
  552. package/dist/domains/system/composables/pageNavigation.d.ts +9 -10
  553. package/dist/domains/system/composables/pageNavigation.js.map +1 -1
  554. package/dist/domains/system/composables/recordActions.d.ts +14 -22
  555. package/dist/domains/system/composables/recordActions.js.map +1 -1
  556. package/dist/domains/system/composables/recordPage.d.ts +23 -38
  557. package/dist/domains/system/composables/recordPage.js.map +1 -1
  558. package/dist/domains/system/composables/routeHistory.d.ts +4 -5
  559. package/dist/domains/system/composables/routeHistory.js.map +1 -1
  560. package/dist/domains/system/composables/sentry.js.map +1 -1
  561. package/dist/domains/system/composables/useDebugFeatures.d.ts +3 -6
  562. package/dist/domains/system/composables/useDebugFeatures.js.map +1 -1
  563. package/dist/domains/system/store/datatablePageStore.d.ts +8 -1
  564. package/dist/domains/system/store/datatablePageStore.js +10 -3
  565. package/dist/domains/system/store/datatablePageStore.js.map +1 -1
  566. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  567. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  568. package/dist/domains/system/systemBar/utils/appReload.d.ts +5 -5
  569. package/dist/domains/system/systemBar/utils/appReload.js.map +1 -1
  570. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  571. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue.d.ts +2 -3
  572. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js.map +1 -1
  573. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  574. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  575. package/dist/domains/ui/buttons/components/ABtnSplit.vue.d.ts +9 -7
  576. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  577. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  578. package/dist/domains/ui/components/ACard.js.map +1 -1
  579. package/dist/domains/ui/components/ACard.vue.d.ts +7 -3
  580. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +6 -2
  581. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  582. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  583. package/dist/domains/ui/components/ACardLoader.vue.d.ts +1 -0
  584. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +13 -7
  585. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  586. package/dist/domains/ui/components/AChipNoLink.vue.d.ts +5 -3
  587. package/dist/domains/ui/components/ACopyText.vue.d.ts +9 -7
  588. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  589. package/dist/domains/ui/components/ACreateDialog.vue.d.ts +11 -9
  590. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  591. package/dist/domains/ui/components/ADialogToolbar.vue.d.ts +5 -3
  592. package/dist/domains/ui/components/ARow.vue.d.ts +5 -3
  593. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  594. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  595. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  596. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue.d.ts +3 -5
  597. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  598. package/dist/domains/ui/datetime/components/ADatetimePicker.js +1 -1
  599. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  600. package/dist/domains/ui/datetime/components/ADatetimePicker.vue.d.ts +5 -3
  601. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  602. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  603. package/dist/domains/ui/file/components/AFileDropzone.vue.d.ts +1 -1
  604. package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js.map +1 -1
  605. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  606. package/dist/domains/ui/file/components/AFileInput.vue.d.ts +9 -7
  607. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  608. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  609. package/dist/domains/ui/file/components/AFileInputDialog.vue.d.ts +9 -7
  610. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  611. package/dist/domains/ui/file/composables/dropzone.js.map +1 -1
  612. package/dist/domains/ui/file/composables/formatAndSizeCheck.js.map +1 -1
  613. package/dist/domains/ui/view/components/AGenericView.vue.d.ts +7 -5
  614. package/dist/domains/ui/view/components/ALoginView.js +1 -1
  615. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  616. package/dist/domains/ui/view/components/ALoginView.vue.d.ts +5 -3
  617. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  618. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  619. package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  620. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  621. package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  622. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.d.ts +6 -7
  623. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js.map +1 -1
  624. package/dist/lib.d.ts +2 -2
  625. package/dist/plugins/commonVuetifyConfig.d.ts +3 -3
  626. package/dist/plugins/commonVuetifyConfig.js.map +1 -1
  627. package/dist/plugins/i18n.d.ts +4 -5
  628. package/dist/plugins/i18n.js.map +1 -1
  629. package/dist/plugins/pluginOptions.d.ts +4 -2
  630. package/dist/plugins/pluginOptions.js.map +1 -1
  631. package/dist/plugins/webfontloader.js.map +1 -1
  632. package/dist/shared/error/AnzuApiCancelledError.d.ts +5 -8
  633. package/dist/shared/error/AnzuApiCancelledError.js.map +1 -1
  634. package/dist/shared/error/AnzuError.d.ts +3 -5
  635. package/dist/shared/error/AnzuError.js.map +1 -1
  636. package/dist/shared/error/AuthUnavailableError.d.ts +3 -3
  637. package/dist/shared/error/AuthUnavailableError.js.map +1 -1
  638. package/dist/shared/error/isInCauseChain.d.ts +2 -2
  639. package/dist/shared/error/isInCauseChain.js.map +1 -1
  640. package/dist/shared/types/UserAndTimeTracking.d.ts +5 -5
  641. package/dist/shared/types/Validation.d.ts +4 -5
  642. package/dist/shared/types/common.d.ts +1 -3
  643. package/dist/shared/types/globalComponents.d.ts +5 -6
  644. package/dist/shared/utils/common.js.map +1 -1
  645. package/dist/shared/utils/datetime.d.ts +0 -1
  646. package/dist/shared/utils/datetime.js.map +1 -1
  647. package/dist/shared/utils/datetimePickerValue.d.ts +4 -7
  648. package/dist/shared/utils/datetimePickerValue.js.map +1 -1
  649. package/dist/shared/utils/development.d.ts +3 -3
  650. package/dist/shared/utils/development.js.map +1 -1
  651. package/dist/shared/utils/envConfig.d.ts +4 -4
  652. package/dist/shared/utils/envConfig.js.map +1 -1
  653. package/dist/shared/utils/json.d.ts +1 -1
  654. package/dist/shared/utils/json.js.map +1 -1
  655. package/dist/shared/utils/userAndTimeTracking.d.ts +5 -7
  656. package/dist/shared/utils/userAndTimeTracking.js.map +1 -1
  657. package/dist/shared/validators/vuelidate/common/useValidateHexColor.d.ts +3 -5
  658. package/dist/shared/validators/vuelidate/common/useValidateHexColor.js.map +1 -1
  659. package/dist/testing/appShell.d.ts +11 -11
  660. package/dist/testing/appShell.js.map +1 -1
  661. package/dist/testing/closeButtons.d.ts +9 -11
  662. package/dist/testing/closeButtons.js.map +1 -1
  663. package/dist/testing/declaredDependencies.d.ts +7 -7
  664. package/dist/testing/declaredDependencies.js.map +1 -1
  665. package/dist/testing/generatedRoutes.d.ts +6 -11
  666. package/dist/testing/generatedRoutes.js.map +1 -1
  667. package/dist/testing/routeHistory.d.ts +5 -12
  668. package/dist/testing/routeHistory.js.map +1 -1
  669. package/dist/testing/sortableLists.d.ts +16 -21
  670. package/dist/testing/sortableLists.js.map +1 -1
  671. package/dist/testing/typedRouter.d.ts +0 -1
  672. package/dist/testing/typedRouter.js.map +1 -1
  673. package/package.json +39 -29
  674. package/src/e2e/conventions.d.mts +4 -0
  675. package/src/e2e/conventions.mjs +15 -0
  676. package/src/e2e/index.d.mts +8 -0
  677. package/src/e2e/index.mjs +1 -0
  678. package/src/e2e/routeWalk.d.mts +43 -0
  679. package/src/e2e/routeWalk.mjs +606 -0
  680. package/src/e2e/types.d.mts +161 -0
  681. package/src/eslint/adminConfig.mjs +19 -27
  682. package/src/eslint/globalComponentNames.mjs +3 -4
  683. package/src/eslint/oxlint.mjs +7 -20
  684. package/src/eslint/plugin.d.mts +2 -4
  685. package/src/eslint/plugin.mjs +18 -34
  686. package/src/eslint/validRouteName.mjs +6 -7
  687. package/src/vite/devWatch.mjs +30 -43
  688. package/src/vite/index.d.mts +5 -5
  689. package/src/vite/sentry.mjs +7 -12
  690. package/src/vite/sourcemaps.mjs +4 -8
@@ -1,65 +1,67 @@
1
1
  import { isNull as e } from "../../../shared/utils/common.js";
2
2
  import { useAlerts as t } from "../../system/composables/alerts.js";
3
- import { useFilterHelpers as n } from "../../filters/composables/filterFactory.js";
4
- import { usePagination as r } from "../../api/composables/pagination.js";
5
- import { createDatatableColumnsConfig as i } from "../../filters/datatable/composables/createDatatableColumnsConfig.js";
6
- import { ref as a } from "vue";
7
- import { useDebounceFn as o } from "@vueuse/core";
3
+ import { datatablePageKey as n } from "../../system/store/datatablePageStore.js";
4
+ import { useFilterHelpers as r } from "../../filters/composables/filterFactory.js";
5
+ import { usePagination as i } from "../../api/composables/pagination.js";
6
+ import { createDatatableColumnsConfig as a } from "../../filters/datatable/composables/createDatatableColumnsConfig.js";
7
+ import { ref as o } from "vue";
8
+ import { useDebounceFn as s } from "@vueuse/core";
8
9
  // src/domains/subjectSelect/composables/useSubjectSelect.ts
9
- function s(s, c, l, u, d, f, p, m = null, h = void 0, g = !1) {
10
- let _ = a(!1), v = a([]), y = a([]), b = a(!1), { pagination: x, setSortBy: S, incrementPage: C } = r(e(m) ? null : m.key, m?.order), { resetFilter: w, submitFilter: T } = n(f, p, {
10
+ function c(c, l, u, d, f, p, m, h = null, g = void 0, _ = !1) {
11
+ let v = o(!1), y = o([]), b = o([]), x = o(!1), { pagination: S, setSortBy: C, incrementPage: w } = i(e(h) ? null : h.key, h?.order), { resetFilter: T, submitFilter: E } = r(p, m, {
11
12
  storeFiltersLocalStorage: !1,
12
- populateUrlParams: !1
13
- }), { showErrorsDefault: E } = t(), { columnsVisible: D, columnsAll: O, columnsHidden: k } = i(s, c, l, u, {
13
+ populateUrlParams: !1,
14
+ pageStoreKey: "subjectSelect_" + n(u, d)
15
+ }), { showErrorsDefault: D } = t(), { columnsVisible: O, columnsAll: k, columnsHidden: A } = a(c, l, u, d, {
14
16
  storeColumnsLocalStorage: !1,
15
- disableActions: !g
16
- }), A = () => {
17
- N(), x.value = {
18
- ...x.value,
17
+ disableActions: !_
18
+ }), j = () => {
19
+ P(), S.value = {
20
+ ...S.value,
19
21
  page: 1
20
- }, F();
21
- }, j = (e) => {
22
- S(e.sortBy), x.value = {
23
- ...x.value,
22
+ }, I();
23
+ }, M = (e) => {
24
+ C(e.sortBy), S.value = {
25
+ ...S.value,
24
26
  page: 1
25
- }, F();
26
- }, M = async () => {
27
- b.value = !0;
28
- let e = C();
27
+ }, I();
28
+ }, N = async () => {
29
+ x.value = !0;
30
+ let e = w();
29
31
  try {
30
- let e = await d(x, f, p, h);
31
- v.value.push(...e);
32
+ let e = await f(S, p, m, g);
33
+ y.value.push(...e);
32
34
  } catch (t) {
33
- x.value.page === e && (x.value = {
34
- ...x.value,
35
+ S.value.page === e && (S.value = {
36
+ ...S.value,
35
37
  page: e - 1
36
- }), E(t);
38
+ }), D(t);
37
39
  } finally {
38
- b.value = !1;
40
+ x.value = !1;
39
41
  }
40
- }, N = () => {
41
- v.value = [], y.value = [];
42
- }, P = async () => {
43
- b.value = !0;
42
+ }, P = () => {
43
+ y.value = [], b.value = [];
44
+ }, F = async () => {
45
+ x.value = !0;
44
46
  try {
45
- v.value = await d(x, f, p, h);
47
+ y.value = await f(S, p, m, g);
46
48
  } catch (e) {
47
- E(e);
49
+ D(e);
48
50
  } finally {
49
- b.value = !1;
51
+ x.value = !1;
50
52
  }
51
- }, F = o(async () => {
52
- await P();
53
+ }, I = s(async () => {
54
+ await F();
53
55
  });
54
56
  return {
55
- items: v,
56
- selected: y,
57
- pagination: x,
58
- columnsVisible: D,
59
- columnsHidden: k,
60
- columnsAll: O,
61
- filterTouched: _,
62
- loading: b,
57
+ items: y,
58
+ selected: b,
59
+ pagination: S,
60
+ columnsVisible: O,
61
+ columnsHidden: A,
62
+ columnsAll: k,
63
+ filterTouched: v,
64
+ loading: x,
63
65
  onRowClick: (e) => {
64
66
  let t = e.target;
65
67
  if (!t || t.tagName === "INPUT" && t.type === "checkbox") return;
@@ -70,14 +72,14 @@ function s(s, c, l, u, d, f, p, m = null, h = void 0, g = !1) {
70
72
  let i = r.querySelector("input");
71
73
  i && i.click();
72
74
  },
73
- onFetchNextPage: M,
74
- onOpen: A,
75
- sortByChange: j,
76
- getList: F,
77
- resetFilter: () => w(x, F),
78
- submitFilter: () => T(x, F)
75
+ onFetchNextPage: N,
76
+ onOpen: j,
77
+ sortByChange: M,
78
+ getList: I,
79
+ resetFilter: () => T(S, I),
80
+ submitFilter: () => E(S, I)
79
81
  };
80
82
  }
81
- export { s as useSubjectSelect };
83
+ export { c as useSubjectSelect };
82
84
 
83
85
  //# sourceMappingURL=useSubjectSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSubjectSelect.js","names":["useSubjectSelect","filterTouched","ref","items","selected","loading","usePagination","isNull","filterSortBy","useFilterHelpers","filterData","filterConfig","useAlerts","createDatatableColumnsConfig","datatableConfig","datatableHiddenColumns","system","subject","enableActions","onOpen","resetState","pagination","getListDebounced","sortByChange","setSortBy","option","onFetchNextPage","page","incrementPage","res","execute","fetchParams","e","showErrorsDefault","getList","useDebounceFn","eventTarget","event","parent","firstTd","input","resetFilter","submitFilter"],"sources":["../../../../src/domains/subjectSelect/composables/useSubjectSelect.ts"],"sourcesContent":["import { type DatatableOrderingOption, type DatatableSortBy } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { type FilterConfig, type FilterData, useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport { type Pagination, usePagination } from '@/domains/api/composables/pagination'\nimport type { FetchListParams } from '@/domains/api/composables/useApiFetchList'\nimport { useDebounceFn } from '@vueuse/core'\nimport { isNull } from '@/shared/utils/common'\n\nexport function useSubjectSelect<TItem>(\n datatableConfig: any,\n datatableHiddenColumns: any,\n system: string,\n subject: string,\n execute: (\n pagination: Ref<Pagination>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n params?: FetchListParams\n ) => Promise<TItem[]>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n filterSortBy: DatatableSortBy | null = null,\n fetchParams: FetchListParams | undefined = undefined,\n enableActions: boolean = false\n) {\n const filterTouched: Ref<boolean> = ref(false)\n const items: Ref<Array<TItem>> = ref([])\n const selected: Ref<Array<TItem>> = ref([])\n const loading = ref(false)\n const { pagination, setSortBy, incrementPage } = usePagination(\n isNull(filterSortBy) ? null : filterSortBy.key,\n filterSortBy?.order\n )\n\n const { resetFilter, submitFilter } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n })\n const { showErrorsDefault } = useAlerts()\n\n const { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n datatableConfig,\n datatableHiddenColumns,\n system,\n subject,\n { storeColumnsLocalStorage: false, disableActions: !enableActions }\n )\n\n const onOpen = () => {\n resetState()\n pagination.value = { ...pagination.value, page: 1 }\n getListDebounced()\n }\n\n const sortByChange = (option: DatatableOrderingOption) => {\n setSortBy(option.sortBy)\n pagination.value = { ...pagination.value, page: 1 }\n getListDebounced()\n }\n\n const onFetchNextPage = async () => {\n loading.value = true\n const page = incrementPage()\n try {\n const res = (await execute(pagination, filterData, filterConfig, fetchParams)) as TItem[]\n items.value.push(...res)\n } catch (e) {\n // Not when a reopen, sort change or filter submit reset the page meanwhile: that reset stands.\n if (pagination.value.page === page) pagination.value = { ...pagination.value, page: page - 1 }\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const resetState = () => {\n items.value = []\n selected.value = []\n }\n\n const getList = async () => {\n loading.value = true\n try {\n items.value = (await execute(pagination, filterData, filterConfig, fetchParams)) as TItem[]\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const getListDebounced = useDebounceFn(async () => {\n await getList()\n })\n\n const onRowClick = (event: Event) => {\n const eventTarget = event.target as HTMLElement | null\n if (!eventTarget || (eventTarget.tagName === 'INPUT' && (eventTarget as HTMLInputElement).type === 'checkbox')) {\n return\n }\n const parent = eventTarget.closest('.v-data-table__tr')\n if (!parent || !parent.classList.contains('v-data-table__tr')) return\n const firstTd = parent.firstElementChild\n if (!firstTd || !firstTd.classList.contains('v-data-table__td')) return\n const input = firstTd.querySelector('input')\n if (!input) return\n input.click()\n }\n\n return {\n items,\n selected,\n pagination,\n columnsVisible,\n columnsHidden,\n columnsAll,\n filterTouched,\n loading,\n onRowClick,\n onFetchNextPage,\n onOpen,\n sortByChange,\n getList: getListDebounced,\n resetFilter: () => resetFilter(pagination, getListDebounced),\n submitFilter: () => submitFilter(pagination, getListDebounced),\n }\n}\n"],"mappings":";;;;;;;;AAWA,SAAgBA,EACd,GACA,GACA,GACA,GACA,GAMA,GACA,GACA,IAAuC,MACvC,IAA2C,KAAA,GAC3C,IAAyB,IACzB;CACA,IAAMC,IAA8BC,EAAI,EAAK,GACvCC,IAA2BD,EAAI,CAAC,CAAC,GACjCE,IAA8BF,EAAI,CAAC,CAAC,GACpCG,IAAUH,EAAI,EAAK,GACnB,EAAE,eAAY,cAAW,qBAAkBI,EAC/CC,EAAOC,CAAY,IAAI,OAAOA,EAAa,KAC3CA,GAAc,KAChB,GAEM,EAAE,gBAAa,oBAAiBC,EAAiBC,GAAYC,GAAc;EAC/E,0BAA0B;EAC1B,mBAAmB;CACrB,CAAC,GACK,EAAE,yBAAsBC,EAAU,GAElC,EAAE,mBAAgB,eAAY,qBAAkBC,EACpDC,GACAC,GACAC,GACAC,GACA;EAAE,0BAA0B;EAAO,gBAAgB,CAACC;CAAc,CACpE,GAEMC,UAAe;EAGnB,AAFAC,EAAW,GACX,EAAW,QAAQ;GAAE,GAAGC,EAAW;GAAO,MAAM;EAAE,GAClDC,EAAiB;CACnB,GAEMC,KAAgB,MAAoC;EAGxD,AAFAC,EAAUC,EAAO,MAAM,GACvB,EAAW,QAAQ;GAAE,GAAGJ,EAAW;GAAO,MAAM;EAAE,GAClDC,EAAiB;CACnB,GAEMI,IAAkB,YAAY;EAClC,EAAQ,QAAQ;EAChB,IAAMC,IAAOC,EAAc;EAC3B,IAAI;GACF,IAAMC,IAAO,MAAMC,EAAQT,GAAYX,GAAYC,GAAcoB,CAAW;GAC5E,EAAM,MAAM,KAAK,GAAGF,CAAG;EACzB,SAASG,GAAG;GAGV,AADIX,EAAW,MAAM,SAASM,MAAM,EAAW,QAAQ;IAAE,GAAGN,EAAW;IAAO,MAAMM,IAAO;GAAE,IAC7FM,EAAkBD,CAAC;EACrB,UAAU;GACR,EAAQ,QAAQ;EAClB;CACF,GAEMZ,UAAmB;EAEvB,AADA,EAAM,QAAQ,CAAC,GACf,EAAS,QAAQ,CAAC;CACpB,GAEMc,IAAU,YAAY;EAC1B,EAAQ,QAAQ;EAChB,IAAI;GACF,EAAM,QAAS,MAAMJ,EAAQT,GAAYX,GAAYC,GAAcoB,CAAW;EAChF,SAAS,GAAG;GACV,EAAkB,CAAC;EACrB,UAAU;GACR,EAAQ,QAAQ;EAClB;CACF,GAEMT,IAAmBa,EAAc,YAAY;EACjD,MAAMD,EAAQ;CAChB,CAAC;CAgBD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAvBkB,MAAiB;GACnC,IAAME,IAAcC,EAAM;GAC1B,IAAI,CAACD,KAAgBA,EAAY,YAAY,WAAYA,EAAiC,SAAS,YACjG;GAEF,IAAME,IAASF,EAAY,QAAQ,mBAAmB;GACtD,IAAI,CAACE,KAAU,CAACA,EAAO,UAAU,SAAS,kBAAkB,GAAG;GAC/D,IAAMC,IAAUD,EAAO;GACvB,IAAI,CAACC,KAAW,CAACA,EAAQ,UAAU,SAAS,kBAAkB,GAAG;GACjE,IAAMC,IAAQD,EAAQ,cAAc,OAAO;GAC3C,AAAKC,KACLA,EAAM,MAAM;EACd;EAYE;EACA;EACA;EACA,SAASlB;EACT,mBAAmBmB,EAAYpB,GAAYC,CAAgB;EAC3D,oBAAoBoB,EAAarB,GAAYC,CAAgB;CAC/D;AACF"}
1
+ {"version":3,"file":"useSubjectSelect.js","names":["useSubjectSelect","filterTouched","ref","items","selected","loading","usePagination","isNull","filterSortBy","useFilterHelpers","filterData","filterConfig","datatablePageKey","system","subject","useAlerts","createDatatableColumnsConfig","datatableConfig","datatableHiddenColumns","enableActions","onOpen","resetState","pagination","getListDebounced","sortByChange","setSortBy","option","onFetchNextPage","page","incrementPage","res","execute","fetchParams","e","showErrorsDefault","getList","useDebounceFn","eventTarget","event","parent","firstTd","input","resetFilter","submitFilter"],"sources":["../../../../src/domains/subjectSelect/composables/useSubjectSelect.ts"],"sourcesContent":["import { type DatatableOrderingOption, type DatatableSortBy } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { Ref } from 'vue'\nimport { ref } from 'vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { type FilterConfig, type FilterData, useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport { type Pagination, usePagination } from '@/domains/api/composables/pagination'\nimport type { FetchListParams } from '@/domains/api/composables/useApiFetchList'\nimport { useDebounceFn } from '@vueuse/core'\nimport { isNull } from '@/shared/utils/common'\nimport { datatablePageKey } from '@/domains/system/store/datatablePageStore'\n\nexport function useSubjectSelect<TItem>(\n datatableConfig: any,\n datatableHiddenColumns: any,\n system: string,\n subject: string,\n execute: (\n pagination: Ref<Pagination>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n params?: FetchListParams\n ) => Promise<TItem[]>,\n filterData: FilterData<any>,\n filterConfig: FilterConfig<any>,\n filterSortBy: DatatableSortBy | null = null,\n fetchParams: FetchListParams | undefined = undefined,\n enableActions: boolean = false\n) {\n const filterTouched: Ref<boolean> = ref(false)\n const items: Ref<Array<TItem>> = ref([])\n const selected: Ref<Array<TItem>> = ref([])\n const loading = ref(false)\n const { pagination, setSortBy, incrementPage } = usePagination(\n isNull(filterSortBy) ? null : filterSortBy.key,\n filterSortBy?.order\n )\n\n const { resetFilter, submitFilter } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n // Its own page key: a dialog in an editor shared the list's, and Close from the editor reopened the list there.\n pageStoreKey: 'subjectSelect_' + datatablePageKey(system, subject),\n })\n const { showErrorsDefault } = useAlerts()\n\n const { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n datatableConfig,\n datatableHiddenColumns,\n system,\n subject,\n { storeColumnsLocalStorage: false, disableActions: !enableActions }\n )\n\n const onOpen = () => {\n resetState()\n pagination.value = { ...pagination.value, page: 1 }\n getListDebounced()\n }\n\n const sortByChange = (option: DatatableOrderingOption) => {\n setSortBy(option.sortBy)\n pagination.value = { ...pagination.value, page: 1 }\n getListDebounced()\n }\n\n const onFetchNextPage = async () => {\n loading.value = true\n const page = incrementPage()\n try {\n const res = (await execute(pagination, filterData, filterConfig, fetchParams)) as TItem[]\n items.value.push(...res)\n } catch (e) {\n // Not when a reopen, sort change or filter submit reset the page meanwhile: that reset stands.\n if (pagination.value.page === page) pagination.value = { ...pagination.value, page: page - 1 }\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const resetState = () => {\n items.value = []\n selected.value = []\n }\n\n const getList = async () => {\n loading.value = true\n try {\n items.value = (await execute(pagination, filterData, filterConfig, fetchParams)) as TItem[]\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n loading.value = false\n }\n }\n\n const getListDebounced = useDebounceFn(async () => {\n await getList()\n })\n\n const onRowClick = (event: Event) => {\n const eventTarget = event.target as HTMLElement | null\n if (!eventTarget || (eventTarget.tagName === 'INPUT' && (eventTarget as HTMLInputElement).type === 'checkbox')) {\n return\n }\n const parent = eventTarget.closest('.v-data-table__tr')\n if (!parent || !parent.classList.contains('v-data-table__tr')) return\n const firstTd = parent.firstElementChild\n if (!firstTd || !firstTd.classList.contains('v-data-table__td')) return\n const input = firstTd.querySelector('input')\n if (!input) return\n input.click()\n }\n\n return {\n items,\n selected,\n pagination,\n columnsVisible,\n columnsHidden,\n columnsAll,\n filterTouched,\n loading,\n onRowClick,\n onFetchNextPage,\n onOpen,\n sortByChange,\n getList: getListDebounced,\n resetFilter: () => resetFilter(pagination, getListDebounced),\n submitFilter: () => submitFilter(pagination, getListDebounced),\n }\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgBA,EACd,GACA,GACA,GACA,GACA,GAMA,GACA,GACA,IAAuC,MACvC,IAA2C,KAAA,GAC3C,IAAyB,IACzB;CACA,IAAMC,IAA8BC,EAAI,EAAK,GACvCC,IAA2BD,EAAI,CAAC,CAAC,GACjCE,IAA8BF,EAAI,CAAC,CAAC,GACpCG,IAAUH,EAAI,EAAK,GACnB,EAAE,eAAY,cAAW,qBAAkBI,EAC/CC,EAAOC,CAAY,IAAI,OAAOA,EAAa,KAC3CA,GAAc,KAChB,GAEM,EAAE,gBAAa,oBAAiBC,EAAiBC,GAAYC,GAAc;EAC/E,0BAA0B;EAC1B,mBAAmB;EAEnB,cAAc,mBAAmBC,EAAiBC,GAAQC,CAAO;CACnE,CAAC,GACK,EAAE,yBAAsBC,EAAU,GAElC,EAAE,mBAAgB,eAAY,qBAAkBC,EACpDC,GACAC,GACAL,GACAC,GACA;EAAE,0BAA0B;EAAO,gBAAgB,CAACK;CAAc,CACpE,GAEMC,UAAe;EAGnB,AAFAC,EAAW,GACX,EAAW,QAAQ;GAAE,GAAGC,EAAW;GAAO,MAAM;EAAE,GAClDC,EAAiB;CACnB,GAEMC,KAAgB,MAAoC;EAGxD,AAFAC,EAAUC,EAAO,MAAM,GACvB,EAAW,QAAQ;GAAE,GAAGJ,EAAW;GAAO,MAAM;EAAE,GAClDC,EAAiB;CACnB,GAEMI,IAAkB,YAAY;EAClC,EAAQ,QAAQ;EAChB,IAAMC,IAAOC,EAAc;EAC3B,IAAI;GACF,IAAMC,IAAO,MAAMC,EAAQT,GAAYZ,GAAYC,GAAcqB,CAAW;GAC5E,EAAM,MAAM,KAAK,GAAGF,CAAG;EACzB,SAASG,GAAG;GAGV,AADIX,EAAW,MAAM,SAASM,MAAM,EAAW,QAAQ;IAAE,GAAGN,EAAW;IAAO,MAAMM,IAAO;GAAE,IAC7FM,EAAkBD,CAAC;EACrB,UAAU;GACR,EAAQ,QAAQ;EAClB;CACF,GAEMZ,UAAmB;EAEvB,AADA,EAAM,QAAQ,CAAC,GACf,EAAS,QAAQ,CAAC;CACpB,GAEMc,IAAU,YAAY;EAC1B,EAAQ,QAAQ;EAChB,IAAI;GACF,EAAM,QAAS,MAAMJ,EAAQT,GAAYZ,GAAYC,GAAcqB,CAAW;EAChF,SAAS,GAAG;GACV,EAAkB,CAAC;EACrB,UAAU;GACR,EAAQ,QAAQ;EAClB;CACF,GAEMT,IAAmBa,EAAc,YAAY;EACjD,MAAMD,EAAQ;CAChB,CAAC;CAgBD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAvBkB,MAAiB;GACnC,IAAME,IAAcC,EAAM;GAC1B,IAAI,CAACD,KAAgBA,EAAY,YAAY,WAAYA,EAAiC,SAAS,YACjG;GAEF,IAAME,IAASF,EAAY,QAAQ,mBAAmB;GACtD,IAAI,CAACE,KAAU,CAACA,EAAO,UAAU,SAAS,kBAAkB,GAAG;GAC/D,IAAMC,IAAUD,EAAO;GACvB,IAAI,CAACC,KAAW,CAACA,EAAQ,UAAU,SAAS,kBAAkB,GAAG;GACjE,IAAMC,IAAQD,EAAQ,cAAc,OAAO;GAC3C,AAAKC,KACLA,EAAM,MAAM;EACd;EAYE;EACA;EACA;EACA,SAASlB;EACT,mBAAmBmB,EAAYpB,GAAYC,CAAgB;EAC3D,oBAAoBoB,EAAarB,GAAYC,CAAgB;CAC/D;AACF"}
@@ -11,12 +11,14 @@ type __VLS_Props = {
11
11
  /** Another teleport slot to render into. Default: the app bar's actionbar. */
12
12
  target?: TeleportSlot;
13
13
  };
14
- declare var __VLS_7: {}, __VLS_34: {};
15
- type __VLS_Slots = {} & {
16
- breadcrumbs?: (props: typeof __VLS_7) => any;
17
- } & {
18
- buttons?: (props: typeof __VLS_34) => any;
14
+ declare const __VLS_template: () => {
15
+ __VLS_Slots: {
16
+ breadcrumbs?: (props: {}) => any;
17
+ } & {
18
+ buttons?: (props: {}) => any;
19
+ };
19
20
  };
21
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
20
22
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
23
  target: TeleportSlot;
22
24
  breadcrumbs: Breadcrumbs;
@@ -1 +1 @@
1
- {"version":3,"file":"ALayoutSwitch.js","names":["_sfc_main","ALayoutSwitch_vue_vue_type_script_setup_true_lang_default","ALayoutSwitch_default"],"sources":["../../../../../src/domains/system/appShell/components/ALayoutSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type Component, computed, shallowRef, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport AAlerts from '@/domains/system/components/AAlerts.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The layouts by the name pages give in `definePage({ meta: { layout } })`. */\n layouts: Record<string, Component>\n /** Until the first route resolves, and for a route without `meta.layout`. */\n defaultLayout?: string\n }>(),\n {\n defaultLayout: 'AppLayoutLoader',\n }\n)\n\nconst route = useRoute()\n\n// Read on a change of the route's meta, not on the first render: until the first navigation resolves,\n// the default layout shows.\nconst routeLayout = shallowRef<string | undefined>(undefined)\n\nwatch(\n () => route.meta,\n (meta) => {\n routeLayout.value = (meta as { layout?: string }).layout\n }\n)\n\n// A name the map does not have renders the page without a layout, as an unregistered global\n// component did, rather than hiding it behind the loader.\nconst current = computed(() => {\n const name = routeLayout.value || props.defaultLayout\n const found = props.layouts[name]\n if (!found) console.error(`[ALayoutSwitch] Unknown layout '${name}'.`)\n return found\n})\n</script>\n\n<template>\n <!-- The one alerts host, outside the layout switch. A host inside a layout takes the alerts it is\n showing away with it when the route switches layouts: a start-up error raised while the loader\n was up vanished the moment the drawer replaced it. -->\n <AAlerts />\n <component\n :is=\"current\"\n v-if=\"current\"\n >\n <slot />\n </component>\n <slot v-else />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ALayoutSwitch.js","names":["_sfc_main","ALayoutSwitch_vue_vue_type_script_setup_true_lang_default","ALayoutSwitch_default"],"sources":["../../../../../src/domains/system/appShell/components/ALayoutSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type Component, computed, shallowRef, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport AAlerts from '@/domains/system/components/AAlerts.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The layouts by the name pages give in `definePage({ meta: { layout } })`. */\n layouts: Record<string, Component>\n /** Until the first route resolves, and for a route without `meta.layout`. */\n defaultLayout?: string\n }>(),\n {\n defaultLayout: 'AppLayoutLoader',\n }\n)\n\nconst route = useRoute()\n\n// Read on a change of the route's meta, not on the first render: until the first navigation resolves,\n// the default layout shows.\nconst routeLayout = shallowRef<string | undefined>(undefined)\n\nwatch(\n () => route.meta,\n (meta) => {\n routeLayout.value = (meta as { layout?: string }).layout\n }\n)\n\n// A name missing from the map renders the page without a layout, rather than hiding it behind the loader.\nconst current = computed(() => {\n const name = routeLayout.value || props.defaultLayout\n const found = props.layouts[name]\n if (!found) console.error(`[ALayoutSwitch] Unknown layout '${name}'.`)\n return found\n})\n</script>\n\n<template>\n <!--\n The single alerts host, outside the layout switch.\n A host inside a layout drops its alerts when the route switches layouts,\n e.g. a start-up error vanished when the drawer replaced the loader.\n -->\n <AAlerts />\n <component\n :is=\"current\"\n v-if=\"current\"\n >\n <slot />\n </component>\n <slot v-else />\n</template>\n"],"mappings":""}
@@ -5,12 +5,14 @@ type __VLS_Props = {
5
5
  /** Until the first route resolves, and for a route without `meta.layout`. */
6
6
  defaultLayout?: string;
7
7
  };
8
- declare var __VLS_12: {}, __VLS_14: {};
9
- type __VLS_Slots = {} & {
10
- default?: (props: typeof __VLS_12) => any;
11
- } & {
12
- default?: (props: typeof __VLS_14) => any;
8
+ declare const __VLS_template: () => {
9
+ __VLS_Slots: {
10
+ default?: (props: {}) => any;
11
+ } & {
12
+ default?: (props: {}) => any;
13
+ };
13
14
  };
15
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
14
16
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
17
  defaultLayout: string;
16
18
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"ALayoutSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createVNode","AAlerts","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","AAlerts_default","ALayoutSwitch_vue_vue_type_script_setup_true_lang_default","props","__props","route","useRoute","routeLayout","shallowRef","meta","current","computed","name","found","openBlock","createElementBlock","Fragment","createVNode","createBlock","resolveDynamicComponent","withCtx","renderSlot","_ctx"],"sources":["../../../../../src/domains/system/appShell/components/ALayoutSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type Component, computed, shallowRef, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport AAlerts from '@/domains/system/components/AAlerts.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The layouts by the name pages give in `definePage({ meta: { layout } })`. */\n layouts: Record<string, Component>\n /** Until the first route resolves, and for a route without `meta.layout`. */\n defaultLayout?: string\n }>(),\n {\n defaultLayout: 'AppLayoutLoader',\n }\n)\n\nconst route = useRoute()\n\n// Read on a change of the route's meta, not on the first render: until the first navigation resolves,\n// the default layout shows.\nconst routeLayout = shallowRef<string | undefined>(undefined)\n\nwatch(\n () => route.meta,\n (meta) => {\n routeLayout.value = (meta as { layout?: string }).layout\n }\n)\n\n// A name the map does not have renders the page without a layout, as an unregistered global\n// component did, rather than hiding it behind the loader.\nconst current = computed(() => {\n const name = routeLayout.value || props.defaultLayout\n const found = props.layouts[name]\n if (!found) console.error(`[ALayoutSwitch] Unknown layout '${name}'.`)\n return found\n})\n</script>\n\n<template>\n <!-- The one alerts host, outside the layout switch. A host inside a layout takes the alerts it is\n showing away with it when the route switches layouts: a start-up error raised while the loader\n was up vanished the moment the drawer replaced it. -->\n <AAlerts />\n <component\n :is=\"current\"\n v-if=\"current\"\n >\n <slot />\n </component>\n <slot v-else />\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,IAAMW,IAAQC,GAYRC,IAAQC,EAAS,GAIjBC,IAAcC,EAA+B,KAAA,CAAS;EAE5D,QACQH,EAAM,OACX,MAAS;GACR,EAAY,QAASI,EAA6B;EACpD,CACF;EAIA,IAAMC,IAAUC,QAAe;GAC7B,IAAMC,IAAOL,EAAY,SAASJ,EAAM,eAClCU,IAAQV,EAAM,QAAQS;GAE5B,OADKC,KAAO,QAAQ,MAAM,mCAAmCD,EAAK,GAAG,GAC9DC;EACT,CAAC;E,mCAOClB,EAAWC,CAAA,GAGHc,EAAA,SAFRlB,EAAA,GAAAK,EAKYC,EAJLY,EAAA,KAAO,GAAA,EAAA,KAAA,EAAA,GAAA;GAGZ,SAAAX,QAAQ,CAARC,EAAQsB,EAAA,QAAA,SAAA,C;;E,MAEVtB,EAAesB,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"ALayoutSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createVNode","AAlerts","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","AAlerts_default","ALayoutSwitch_vue_vue_type_script_setup_true_lang_default","props","__props","route","useRoute","routeLayout","shallowRef","meta","current","computed","name","found","openBlock","createElementBlock","Fragment","createVNode","createBlock","resolveDynamicComponent","withCtx","renderSlot","_ctx"],"sources":["../../../../../src/domains/system/appShell/components/ALayoutSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type Component, computed, shallowRef, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport AAlerts from '@/domains/system/components/AAlerts.vue'\n\nconst props = withDefaults(\n defineProps<{\n /** The layouts by the name pages give in `definePage({ meta: { layout } })`. */\n layouts: Record<string, Component>\n /** Until the first route resolves, and for a route without `meta.layout`. */\n defaultLayout?: string\n }>(),\n {\n defaultLayout: 'AppLayoutLoader',\n }\n)\n\nconst route = useRoute()\n\n// Read on a change of the route's meta, not on the first render: until the first navigation resolves,\n// the default layout shows.\nconst routeLayout = shallowRef<string | undefined>(undefined)\n\nwatch(\n () => route.meta,\n (meta) => {\n routeLayout.value = (meta as { layout?: string }).layout\n }\n)\n\n// A name missing from the map renders the page without a layout, rather than hiding it behind the loader.\nconst current = computed(() => {\n const name = routeLayout.value || props.defaultLayout\n const found = props.layouts[name]\n if (!found) console.error(`[ALayoutSwitch] Unknown layout '${name}'.`)\n return found\n})\n</script>\n\n<template>\n <!--\n The single alerts host, outside the layout switch.\n A host inside a layout drops its alerts when the route switches layouts,\n e.g. a start-up error vanished when the drawer replaced the loader.\n -->\n <AAlerts />\n <component\n :is=\"current\"\n v-if=\"current\"\n >\n <slot />\n </component>\n <slot v-else />\n</template>\n"],"mappings":";;;;;;;;;;;EAKA,IAAMW,IAAQC,GAYRC,IAAQC,EAAS,GAIjBC,IAAcC,EAA+B,KAAA,CAAS;EAE5D,QACQH,EAAM,OACX,MAAS;GACR,EAAY,QAASI,EAA6B;EACpD,CACF;EAGA,IAAMC,IAAUC,QAAe;GAC7B,IAAMC,IAAOL,EAAY,SAASJ,EAAM,eAClCU,IAAQV,EAAM,QAAQS;GAE5B,OADKC,KAAO,QAAQ,MAAM,mCAAmCD,EAAK,GAAG,GAC9DC;EACT,CAAC;E,mCASClB,EAAWC,CAAA,GAGHc,EAAA,SAFRlB,EAAA,GAAAK,EAKYC,EAJLY,EAAA,KAAO,GAAA,EAAA,KAAA,EAAA,GAAA;GAGZ,SAAAX,QAAQ,CAARC,EAAQsB,EAAA,QAAA,SAAA,C;;E,MAEVtB,EAAesB,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,C"}
@@ -4,7 +4,6 @@ export interface TeleportSlot {
4
4
  Target: Component;
5
5
  /** Teleports its default slot into the mounted target, and renders nothing while none is mounted. */
6
6
  Source: Component;
7
- /** Whether a target is mounted. */
8
7
  ready: Readonly<Ref<boolean>>;
9
8
  }
10
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"teleportSlot.js","names":["createTeleportSlot","target","shallowRef","defineComponent","name","el","onMounted","onBeforeUnmount","h","props","Teleport","slots","computed","actionbarSlot"],"sources":["../../../../../src/domains/system/appShell/composables/teleportSlot.ts"],"sourcesContent":["import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n type Component,\n type Ref,\n shallowRef,\n Teleport,\n} from 'vue'\n\nexport interface TeleportSlot {\n /** The element sources teleport into. The last one mounted wins; unmounting it clears the slot. */\n Target: Component\n /** Teleports its default slot into the mounted target, and renders nothing while none is mounted. */\n Source: Component\n /** Whether a target is mounted. */\n ready: Readonly<Ref<boolean>>\n}\n\n/**\n * A place one component renders into from anywhere else, such as the app bar's actionbar. The target\n * element itself is held rather than looked up by an `#id` selector: a source rendered before its\n * target, or on a page without one, waits instead of warning \"Failed to locate Teleport target\".\n */\nexport function createTeleportSlot(name: string): TeleportSlot {\n const target = shallowRef<HTMLElement | null>(null)\n\n const Target = defineComponent({\n name: `${name}Target`,\n props: { tag: { type: String, default: 'div' } },\n setup(props) {\n const el = shallowRef<HTMLElement | null>(null)\n onMounted(() => {\n target.value = el.value\n })\n onBeforeUnmount(() => {\n if (target.value === el.value) target.value = null\n })\n return () => h(props.tag, { ref: el })\n },\n })\n\n const Source = defineComponent({\n name: `${name}Source`,\n props: { disabled: { type: Boolean, default: false } },\n setup(props, { slots }) {\n return () =>\n target.value ? h(Teleport, { to: target.value, disabled: props.disabled }, slots.default?.() ?? []) : null\n },\n })\n\n return { Target, Source, ready: computed(() => target.value !== null) }\n}\n\n/** The actionbar in the app bar of an admin's drawer layout. */\nexport const actionbarSlot = createTeleportSlot('AActionbar')\n"],"mappings":";;AA0BA,SAAgBA,EAAmB,GAA4B;CAC7D,IAAMC,IAASC,EAA+B,IAAI;CA0BlD,OAAO;EAAE,QAxBMC,EAAgB;GAC7B,MAAM,GAAGC,EAAK;GACd,OAAO,EAAE,KAAK;IAAE,MAAM;IAAQ,SAAS;GAAM,EAAE;GAC/C,MAAM,GAAO;IACX,IAAMC,IAAKH,EAA+B,IAAI;IAO9C,OANAI,QAAgB;KACd,EAAO,QAAQD,EAAG;IACpB,CAAC,GACDE,QAAsB;KACpB,AAAIN,EAAO,UAAUI,EAAG,UAAO,EAAO,QAAQ;IAChD,CAAC,SACYG,EAAEC,EAAM,KAAK,EAAE,KAAKJ,EAAG,CAAC;GACvC;EACF,CAWS;EAAQ,QATFF,EAAgB;GAC7B,MAAM,GAAGC,EAAK;GACd,OAAO,EAAE,UAAU;IAAE,MAAM;IAAS,SAAS;GAAM,EAAE;GACrD,MAAM,GAAO,EAAE,YAAS;IACtB,aACEH,EAAO,QAAQO,EAAEE,GAAU;KAAE,IAAIT,EAAO;KAAO,UAAUQ,EAAM;IAAS,GAAGE,EAAM,UAAU,KAAK,CAAC,CAAC,IAAI;GAC1G;EACF,CAEiB;EAAQ,OAAOC,QAAeX,EAAO,UAAU,IAAI;CAAE;AACxE;AAGA,IAAaY,IAAgBb,EAAmB,YAAY"}
1
+ {"version":3,"file":"teleportSlot.js","names":["createTeleportSlot","target","shallowRef","defineComponent","name","el","onMounted","onBeforeUnmount","h","props","Teleport","slots","computed","actionbarSlot"],"sources":["../../../../../src/domains/system/appShell/composables/teleportSlot.ts"],"sourcesContent":["import {\n computed,\n defineComponent,\n h,\n onBeforeUnmount,\n onMounted,\n type Component,\n type Ref,\n shallowRef,\n Teleport,\n} from 'vue'\n\nexport interface TeleportSlot {\n /** The element sources teleport into. The last one mounted wins; unmounting it clears the slot. */\n Target: Component\n /** Teleports its default slot into the mounted target, and renders nothing while none is mounted. */\n Source: Component\n ready: Readonly<Ref<boolean>>\n}\n\n/**\n * A place one component renders into from anywhere else, such as the app bar's actionbar. The target\n * element itself is held rather than looked up by an `#id` selector: a source rendered before its\n * target, or on a page without one, waits instead of warning \"Failed to locate Teleport target\".\n */\nexport function createTeleportSlot(name: string): TeleportSlot {\n const target = shallowRef<HTMLElement | null>(null)\n\n const Target = defineComponent({\n name: `${name}Target`,\n props: { tag: { type: String, default: 'div' } },\n setup(props) {\n const el = shallowRef<HTMLElement | null>(null)\n onMounted(() => {\n target.value = el.value\n })\n onBeforeUnmount(() => {\n if (target.value === el.value) target.value = null\n })\n return () => h(props.tag, { ref: el })\n },\n })\n\n const Source = defineComponent({\n name: `${name}Source`,\n props: { disabled: { type: Boolean, default: false } },\n setup(props, { slots }) {\n return () =>\n target.value ? h(Teleport, { to: target.value, disabled: props.disabled }, slots.default?.() ?? []) : null\n },\n })\n\n return { Target, Source, ready: computed(() => target.value !== null) }\n}\n\n/** The actionbar in the app bar of an admin's drawer layout. */\nexport const actionbarSlot = createTeleportSlot('AActionbar')\n"],"mappings":";;AAyBA,SAAgBA,EAAmB,GAA4B;CAC7D,IAAMC,IAASC,EAA+B,IAAI;CA0BlD,OAAO;EAAE,QAxBMC,EAAgB;GAC7B,MAAM,GAAGC,EAAK;GACd,OAAO,EAAE,KAAK;IAAE,MAAM;IAAQ,SAAS;GAAM,EAAE;GAC/C,MAAM,GAAO;IACX,IAAMC,IAAKH,EAA+B,IAAI;IAO9C,OANAI,QAAgB;KACd,EAAO,QAAQD,EAAG;IACpB,CAAC,GACDE,QAAsB;KACpB,AAAIN,EAAO,UAAUI,EAAG,UAAO,EAAO,QAAQ;IAChD,CAAC,SACYG,EAAEC,EAAM,KAAK,EAAE,KAAKJ,EAAG,CAAC;GACvC;EACF,CAWS;EAAQ,QATFF,EAAgB;GAC7B,MAAM,GAAGC,EAAK;GACd,OAAO,EAAE,UAAU;IAAE,MAAM;IAAS,SAAS;GAAM,EAAE;GACrD,MAAM,GAAO,EAAE,YAAS;IACtB,aACEH,EAAO,QAAQO,EAAEE,GAAU;KAAE,IAAIT,EAAO;KAAO,UAAUQ,EAAM;IAAS,GAAGE,EAAM,UAAU,KAAK,CAAC,CAAC,IAAI;GAC1G;EACF,CAEiB;EAAQ,OAAOC,QAAeX,EAAO,UAAU,IAAI;CAAE;AACxE;AAGA,IAAaY,IAAgBb,EAAmB,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"AAlerts.js","names":["_sfc_main","AAlerts_vue_vue_type_script_setup_true_lang_default","AAlerts_default"],"sources":["../../../../src/domains/system/components/AAlerts.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { nextTick, onMounted } from 'vue'\nimport { type AlertMessage, useAlertsQueue } from '@/domains/system/composables/alertsQueue'\nimport { commonT } from '@/plugins/i18n'\n\nconst props = withDefaults(\n defineProps<{\n max?: number\n group?: string\n position?: string\n width?: string\n customClass?: string | undefined\n }>(),\n {\n max: 5,\n group: 'alerts',\n position: 'top center',\n width: '50%',\n customClass: undefined,\n }\n)\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst queue = useAlertsQueue(props.group)\n\n// The queue's own dismiss reaches only its `actions` slot. That slot stays hidden and hands it over\n// here, so the close icon inside the VAlert closes the alert the way the queue's button would.\nconst dismissers = new WeakMap<object, () => void>()\nconst registerDismiss = (item: object, dismiss: () => void) => {\n dismissers.set(item, dismiss)\n return ''\n}\nconst close = (item: object) => {\n dismissers.get(item)?.()\n}\n\n// VSnackbarQueue picks items up when the queue grows, not the ones already waiting when it mounts:\n// alerts raised while no host was on the page (e.g. during start-up) are handed over again.\nonMounted(() => {\n if (queue.value.length === 0) return\n const waiting = queue.value\n queue.value = []\n nextTick(() => {\n queue.value = [...waiting, ...queue.value]\n })\n})\n</script>\n\n<template>\n <!-- VAlert inside the snackbar keeps the markup the admins' e2e tests select (`.v-alert`,\n `.v-alert__close`, `data-cy=\"page-title\"`). Off Vuetify's overlay stack (a private prop, pinned\n by a test): on it, an alert becomes the top overlay and Esc no longer reaches an open dialog.\n Attributes, not a class, reach each snackbar (the queue drops `class`). -->\n <VSnackbarQueue\n v-model=\"queue\"\n :total-visible=\"max\"\n display-strategy=\"overflow\"\n :location=\"position as any\"\n :width=\"width\"\n max-width=\"none\"\n :gap=\"4\"\n variant=\"text\"\n :content-class=\"['a-alerts', customClass]\"\n data-a-alerts-host\n :_disable-global-stack=\"true\"\n >\n <template #text=\"{ item }\">\n <VAlert\n :type=\"(item as AlertMessage).color\"\n :text=\"(item as AlertMessage).text\"\n density=\"compact\"\n data-cy=\"page-title\"\n >\n <template #close>\n <VIcon\n icon=\"mdi-close\"\n :aria-label=\"commonT('common.button.close')\"\n @click.stop=\"close(item)\"\n />\n </template>\n </VAlert>\n </template>\n <template #actions=\"{ item, props: actionProps }\">{{ registerDismiss(item, actionProps.onClick) }}</template>\n </VSnackbarQueue>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:map';\n@use 'vuetify/lib/styles/settings/variables' as vars;\n\n// Above every dialog, also one opened after the alert, as the notifications before it were.\n.v-snackbar[data-a-alerts-host] {\n z-index: 5000 !important;\n}\n\n.a-alerts.v-snackbar__wrapper {\n .v-snackbar__content {\n padding: 0;\n }\n\n // Only there to hand over the dismiss (see the script); the close icon is in the VAlert.\n .v-snackbar__actions {\n display: none;\n }\n\n // Several lines (an API validation error lists one field per line) stay several lines.\n .v-alert__content {\n white-space: pre-line;\n }\n\n @media #{map.get(vars.$display-breakpoints, 'md-and-down')} {\n width: 96% !important;\n min-width: 0;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"AAlerts.js","names":["_sfc_main","AAlerts_vue_vue_type_script_setup_true_lang_default","AAlerts_default"],"sources":["../../../../src/domains/system/components/AAlerts.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { nextTick, onMounted } from 'vue'\nimport { type AlertMessage, useAlertsQueue } from '@/domains/system/composables/alertsQueue'\nimport { commonT } from '@/plugins/i18n'\n\nconst props = withDefaults(\n defineProps<{\n max?: number\n group?: string\n position?: string\n width?: string\n customClass?: string | undefined\n }>(),\n {\n max: 5,\n group: 'alerts',\n position: 'top center',\n width: '50%',\n customClass: undefined,\n }\n)\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst queue = useAlertsQueue(props.group)\n\n// The queue's own dismiss reaches only its `actions` slot. That slot stays hidden and hands it over\n// here, so the close icon inside the VAlert closes the alert the way the queue's button would.\nconst dismissers = new WeakMap<object, () => void>()\nconst registerDismiss = (item: object, dismiss: () => void) => {\n dismissers.set(item, dismiss)\n return ''\n}\nconst close = (item: object) => {\n dismissers.get(item)?.()\n}\n\n// VSnackbarQueue picks items up when the queue grows, not the ones already waiting when it mounts:\n// alerts raised while no host was on the page (e.g. during start-up) are handed over again.\nonMounted(() => {\n if (queue.value.length === 0) return\n const waiting = queue.value\n queue.value = []\n nextTick(() => {\n queue.value = [...waiting, ...queue.value]\n })\n})\n</script>\n\n<template>\n <!--\n VAlert inside the snackbar keeps the markup the admins' e2e tests\n select (`.v-alert`, `.v-alert__close`, `data-cy=\"page-title\"`).\n Kept off Vuetify's overlay stack (a private prop, pinned by a test). On it,\n an alert becomes the top overlay and Esc no longer reaches an open dialog.\n Attributes, not a class, reach each snackbar, because the queue drops `class`.\n -->\n <VSnackbarQueue\n v-model=\"queue\"\n :total-visible=\"max\"\n display-strategy=\"overflow\"\n :location=\"position as any\"\n :width=\"width\"\n max-width=\"none\"\n :gap=\"4\"\n variant=\"text\"\n :content-class=\"['a-alerts', customClass]\"\n data-a-alerts-host\n :_disable-global-stack=\"true\"\n >\n <template #text=\"{ item }\">\n <VAlert\n :type=\"(item as AlertMessage).color\"\n :text=\"(item as AlertMessage).text\"\n density=\"compact\"\n data-cy=\"page-title\"\n >\n <template #close>\n <VIcon\n icon=\"mdi-close\"\n :aria-label=\"commonT('common.button.close')\"\n @click.stop=\"close(item)\"\n />\n </template>\n </VAlert>\n </template>\n <template #actions=\"{ item, props: actionProps }\">{{ registerDismiss(item, actionProps.onClick) }}</template>\n </VSnackbarQueue>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:map';\n@use 'vuetify/lib/styles/settings/variables' as vars;\n\n// Above every dialog, including one opened after the alert.\n.v-snackbar[data-a-alerts-host] {\n z-index: 5000 !important;\n}\n\n.a-alerts.v-snackbar__wrapper {\n .v-snackbar__content {\n padding: 0;\n }\n\n // Only there to hand over the dismiss (see the script); the close icon is in the VAlert.\n .v-snackbar__actions {\n display: none;\n }\n\n // Several lines (an API validation error lists one field per line) stay several lines.\n .v-alert__content {\n white-space: pre-line;\n }\n\n @media #{map.get(vars.$display-breakpoints, 'md-and-down')} {\n width: 96% !important;\n min-width: 0;\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AAlerts.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createBlock","_component_VSnackbarQueue","_unref","_isRef","_withCtx","_createVNode","_component_VAlert","_component_VIcon","_withModifiers","_createTextVNode","_toDisplayString","AAlerts_vue_vue_type_script_setup_true_lang_default","queue","useAlertsQueue","__props","dismissers","registerDismiss","item","dismiss","close","onMounted","waiting","nextTick","openBlock","createBlock","VSnackbarQueue","unref","_cache","isRef","$event","withCtx","createVNode","VAlert","VIcon","commonT","withModifiers","actionProps","createTextVNode","toDisplayString"],"sources":["../../../../src/domains/system/components/AAlerts.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { nextTick, onMounted } from 'vue'\nimport { type AlertMessage, useAlertsQueue } from '@/domains/system/composables/alertsQueue'\nimport { commonT } from '@/plugins/i18n'\n\nconst props = withDefaults(\n defineProps<{\n max?: number\n group?: string\n position?: string\n width?: string\n customClass?: string | undefined\n }>(),\n {\n max: 5,\n group: 'alerts',\n position: 'top center',\n width: '50%',\n customClass: undefined,\n }\n)\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst queue = useAlertsQueue(props.group)\n\n// The queue's own dismiss reaches only its `actions` slot. That slot stays hidden and hands it over\n// here, so the close icon inside the VAlert closes the alert the way the queue's button would.\nconst dismissers = new WeakMap<object, () => void>()\nconst registerDismiss = (item: object, dismiss: () => void) => {\n dismissers.set(item, dismiss)\n return ''\n}\nconst close = (item: object) => {\n dismissers.get(item)?.()\n}\n\n// VSnackbarQueue picks items up when the queue grows, not the ones already waiting when it mounts:\n// alerts raised while no host was on the page (e.g. during start-up) are handed over again.\nonMounted(() => {\n if (queue.value.length === 0) return\n const waiting = queue.value\n queue.value = []\n nextTick(() => {\n queue.value = [...waiting, ...queue.value]\n })\n})\n</script>\n\n<template>\n <!-- VAlert inside the snackbar keeps the markup the admins' e2e tests select (`.v-alert`,\n `.v-alert__close`, `data-cy=\"page-title\"`). Off Vuetify's overlay stack (a private prop, pinned\n by a test): on it, an alert becomes the top overlay and Esc no longer reaches an open dialog.\n Attributes, not a class, reach each snackbar (the queue drops `class`). -->\n <VSnackbarQueue\n v-model=\"queue\"\n :total-visible=\"max\"\n display-strategy=\"overflow\"\n :location=\"position as any\"\n :width=\"width\"\n max-width=\"none\"\n :gap=\"4\"\n variant=\"text\"\n :content-class=\"['a-alerts', customClass]\"\n data-a-alerts-host\n :_disable-global-stack=\"true\"\n >\n <template #text=\"{ item }\">\n <VAlert\n :type=\"(item as AlertMessage).color\"\n :text=\"(item as AlertMessage).text\"\n density=\"compact\"\n data-cy=\"page-title\"\n >\n <template #close>\n <VIcon\n icon=\"mdi-close\"\n :aria-label=\"commonT('common.button.close')\"\n @click.stop=\"close(item)\"\n />\n </template>\n </VAlert>\n </template>\n <template #actions=\"{ item, props: actionProps }\">{{ registerDismiss(item, actionProps.onClick) }}</template>\n </VSnackbarQueue>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:map';\n@use 'vuetify/lib/styles/settings/variables' as vars;\n\n// Above every dialog, also one opened after the alert, as the notifications before it were.\n.v-snackbar[data-a-alerts-host] {\n z-index: 5000 !important;\n}\n\n.a-alerts.v-snackbar__wrapper {\n .v-snackbar__content {\n padding: 0;\n }\n\n // Only there to hand over the dismiss (see the script); the close icon is in the VAlert.\n .v-snackbar__actions {\n display: none;\n }\n\n // Several lines (an API validation error lists one field per line) stay several lines.\n .v-alert__content {\n white-space: pre-line;\n }\n\n @media #{map.get(vars.$display-breakpoints, 'md-and-down')} {\n width: 96% !important;\n min-width: 0;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAuBA,IAAMc,IAAQC,EAAef,EAAM,KAAK,GAIlCiB,oBAAa,IAAI,QAA4B,GAC7CC,KAAmB,GAAc,OACrCD,EAAW,IAAIE,GAAMC,CAAO,GACrB,KAEHC,KAAS,MAAiB;GAC9B,EAAW,IAAIF,CAAI,CAAC,GAAG;EACzB;E,OAIAG,QAAgB;GACd,IAAIR,EAAM,MAAM,WAAW,GAAG;GAC9B,IAAMS,IAAUT,EAAM;GAEtB,AADA,EAAM,QAAQ,CAAC,GACfU,QAAe;IACb,EAAM,QAAQ,CAAC,GAAGD,GAAS,GAAGT,EAAM,KAAK;GAC3C,CAAC;EACH,CAAC,I,UAQCb,EAAA,GAAAC,EA8BiBC,GAAA;GA7BN,YAAAC,EAAAU,CAAA;GAAA,uBAAA,AAAAe,EAAA,QAAA,MAAAxB,EAAAS,CAAA,IAAA,EAAK,QAAAiB,IAAA;GACb,iBAAef,EAAA;GAChB,oBAAiB;GAChB,UAAUA,EAAA;GACV,OAAOA,EAAA;GACR,aAAU;GACT,KAAK;GACN,SAAQ;GACP,iBAAa,CAAA,YAAeA,EAAA,WAAW;GACxC,sBAAA;GACC,yBAAuB;;GAEb,MAAIV,GAcJ,EAdQ,cAAI,CACrBC,EAaSC,GAAA;IAZN,MAAOW,EAAsB;IAC7B,MAAOA,EAAsB;IAC9B,SAAQ;IACR,WAAQ;;IAEG,OAAKb,QAKZ,CAJFC,EAIEE,GAAA;KAHA,MAAK;KACJ,cAAYL,EAAAgC,CAAA,CAAO,CAAA,qBAAA;KACnB,SAAK1B,GAAA,MAAOW,EAAMF,CAAI,GAAA,CAAA,MAAA,CAAA;;;;GAKpB,SAAOb,GAAgF,EAA5E,SAAI,OAASgC,QAAW,CAAO3B,EAAAC,EAAAM,EAAgBC,GAAMmB,EAAY,OAAO,CAAA,GAAA,CAAA,C"}
1
+ {"version":3,"file":"AAlerts.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createBlock","_component_VSnackbarQueue","_unref","_isRef","_withCtx","_createVNode","_component_VAlert","_component_VIcon","_withModifiers","_createTextVNode","_toDisplayString","AAlerts_vue_vue_type_script_setup_true_lang_default","queue","useAlertsQueue","__props","dismissers","registerDismiss","item","dismiss","close","onMounted","waiting","nextTick","openBlock","createBlock","VSnackbarQueue","unref","_cache","isRef","$event","withCtx","createVNode","VAlert","VIcon","commonT","withModifiers","actionProps","createTextVNode","toDisplayString"],"sources":["../../../../src/domains/system/components/AAlerts.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { nextTick, onMounted } from 'vue'\nimport { type AlertMessage, useAlertsQueue } from '@/domains/system/composables/alertsQueue'\nimport { commonT } from '@/plugins/i18n'\n\nconst props = withDefaults(\n defineProps<{\n max?: number\n group?: string\n position?: string\n width?: string\n customClass?: string | undefined\n }>(),\n {\n max: 5,\n group: 'alerts',\n position: 'top center',\n width: '50%',\n customClass: undefined,\n }\n)\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst queue = useAlertsQueue(props.group)\n\n// The queue's own dismiss reaches only its `actions` slot. That slot stays hidden and hands it over\n// here, so the close icon inside the VAlert closes the alert the way the queue's button would.\nconst dismissers = new WeakMap<object, () => void>()\nconst registerDismiss = (item: object, dismiss: () => void) => {\n dismissers.set(item, dismiss)\n return ''\n}\nconst close = (item: object) => {\n dismissers.get(item)?.()\n}\n\n// VSnackbarQueue picks items up when the queue grows, not the ones already waiting when it mounts:\n// alerts raised while no host was on the page (e.g. during start-up) are handed over again.\nonMounted(() => {\n if (queue.value.length === 0) return\n const waiting = queue.value\n queue.value = []\n nextTick(() => {\n queue.value = [...waiting, ...queue.value]\n })\n})\n</script>\n\n<template>\n <!--\n VAlert inside the snackbar keeps the markup the admins' e2e tests\n select (`.v-alert`, `.v-alert__close`, `data-cy=\"page-title\"`).\n Kept off Vuetify's overlay stack (a private prop, pinned by a test). On it,\n an alert becomes the top overlay and Esc no longer reaches an open dialog.\n Attributes, not a class, reach each snackbar, because the queue drops `class`.\n -->\n <VSnackbarQueue\n v-model=\"queue\"\n :total-visible=\"max\"\n display-strategy=\"overflow\"\n :location=\"position as any\"\n :width=\"width\"\n max-width=\"none\"\n :gap=\"4\"\n variant=\"text\"\n :content-class=\"['a-alerts', customClass]\"\n data-a-alerts-host\n :_disable-global-stack=\"true\"\n >\n <template #text=\"{ item }\">\n <VAlert\n :type=\"(item as AlertMessage).color\"\n :text=\"(item as AlertMessage).text\"\n density=\"compact\"\n data-cy=\"page-title\"\n >\n <template #close>\n <VIcon\n icon=\"mdi-close\"\n :aria-label=\"commonT('common.button.close')\"\n @click.stop=\"close(item)\"\n />\n </template>\n </VAlert>\n </template>\n <template #actions=\"{ item, props: actionProps }\">{{ registerDismiss(item, actionProps.onClick) }}</template>\n </VSnackbarQueue>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:map';\n@use 'vuetify/lib/styles/settings/variables' as vars;\n\n// Above every dialog, including one opened after the alert.\n.v-snackbar[data-a-alerts-host] {\n z-index: 5000 !important;\n}\n\n.a-alerts.v-snackbar__wrapper {\n .v-snackbar__content {\n padding: 0;\n }\n\n // Only there to hand over the dismiss (see the script); the close icon is in the VAlert.\n .v-snackbar__actions {\n display: none;\n }\n\n // Several lines (an API validation error lists one field per line) stay several lines.\n .v-alert__content {\n white-space: pre-line;\n }\n\n @media #{map.get(vars.$display-breakpoints, 'md-and-down')} {\n width: 96% !important;\n min-width: 0;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAuBA,IAAMc,IAAQC,EAAef,EAAM,KAAK,GAIlCiB,oBAAa,IAAI,QAA4B,GAC7CC,KAAmB,GAAc,OACrCD,EAAW,IAAIE,GAAMC,CAAO,GACrB,KAEHC,KAAS,MAAiB;GAC9B,EAAW,IAAIF,CAAI,CAAC,GAAG;EACzB;E,OAIAG,QAAgB;GACd,IAAIR,EAAM,MAAM,WAAW,GAAG;GAC9B,IAAMS,IAAUT,EAAM;GAEtB,AADA,EAAM,QAAQ,CAAC,GACfU,QAAe;IACb,EAAM,QAAQ,CAAC,GAAGD,GAAS,GAAGT,EAAM,KAAK;GAC3C,CAAC;EACH,CAAC,I,UAWCb,EAAA,GAAAC,EA8BiBC,GAAA;GA7BN,YAAAC,EAAAU,CAAA;GAAA,uBAAA,AAAAe,EAAA,QAAA,MAAAxB,EAAAS,CAAA,IAAA,EAAK,QAAAiB,IAAA;GACb,iBAAef,EAAA;GAChB,oBAAiB;GAChB,UAAUA,EAAA;GACV,OAAOA,EAAA;GACR,aAAU;GACT,KAAK;GACN,SAAQ;GACP,iBAAa,CAAA,YAAeA,EAAA,WAAW;GACxC,sBAAA;GACC,yBAAuB;;GAEb,MAAIV,GAcJ,EAdQ,cAAI,CACrBC,EAaSC,GAAA;IAZN,MAAOW,EAAsB;IAC7B,MAAOA,EAAsB;IAC9B,SAAQ;IACR,WAAQ;;IAEG,OAAKb,QAKZ,CAJFC,EAIEE,GAAA;KAHA,MAAK;KACJ,cAAYL,EAAAgC,CAAA,CAAO,CAAA,qBAAA;KACnB,SAAK1B,GAAA,MAAOW,EAAMF,CAAI,GAAA,CAAA,MAAA,CAAA;;;;GAKpB,SAAOb,GAAgF,EAA5E,SAAI,OAASgC,QAAW,CAAO3B,EAAAC,EAAAM,EAAgBC,GAAMmB,EAAY,OAAO,CAAA,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"alerts.js","names":["t","DEFAULT_DURATION_SECONDS","AUTH_UNAVAILABLE_QUIET_MS","authUnavailableShownAt","NEW_LINE_MARK","useAlerts","showSuccess","message","duration","showSuccessT","commonT","translation","showError","showErrorT","showInfo","showInfoT","showWarning","showWarningT","showValidationError","showRecordWas","variant","showApiValidationError","t","te","commonTe","texts","error","errors","fieldText","fieldIsTranslated","resolveListErrors","errorsTexts","code","showApiForbiddenOperationError","text","detail","pushAlert","showUnknownError","showForbiddenError","showAuthUnavailable","now","showErrorsDefault","isAnzuApiCancelledError","isInCauseChain","cause","SessionExpiredError","AuthUnavailableError","isAnzuApiForbiddenError","isAnzuApiValidationError","isAnzuApiDependencyExistsError","isAnzuApiForbiddenOperationError","isAnzuApiTimeoutError","isAnzuApiAxiosError","isAnzuFatalError","isAnzuApiResponseCodeError","parsedField","firstField","parsedSecond","indexNumber","secondField"],"sources":["../../../../src/domains/system/composables/alerts.ts"],"sourcesContent":["import { pushAlert } from '@/domains/system/composables/alertsQueue'\nimport { commonT, commonTe } from '@/plugins/i18n'\nimport { isAnzuFatalError } from '@/shared/error/AnzuFatalError'\nimport { isAnzuApiForbiddenError } from '@/shared/error/AnzuApiForbiddenError'\nimport { isAnzuApiValidationError, type ValidationError } from '@/shared/error/AnzuApiValidationError'\nimport { isAnzuApiResponseCodeError } from '@/shared/error/AnzuApiResponseCodeError'\nimport { isAnzuApiForbiddenOperationError } from '@/shared/error/AnzuApiForbiddenOperationError'\nimport { isAnzuApiDependencyExistsError } from '@/shared/error/AnzuApiDependencyExistsError'\nimport { isAnzuApiTimeoutError } from '@/shared/error/AnzuApiTimeoutError'\nimport { isAnzuApiAxiosError } from '@/shared/error/AnzuApiAxiosError'\nimport { isAnzuApiCancelledError } from '@/shared/error/AnzuApiCancelledError'\nimport { AuthUnavailableError } from '@/shared/error/AuthUnavailableError'\nimport { SessionExpiredError } from '@/shared/error/SessionExpiredError'\nimport { isInCauseChain } from '@/shared/error/isInCauseChain'\n\nconst DEFAULT_DURATION_SECONDS = 3\n// One \"sign-in server does not answer\" per outage: a page's requests all fail at once.\nconst AUTH_UNAVAILABLE_QUIET_MS = 30_000\nlet authUnavailableShownAt = -Infinity\n\nexport const NEW_LINE_MARK = '\\n'\n\nexport type RecordWasType = 'created' | 'deleted' | 'updated' | 'published' | 'unpublished' | 'enabled' | 'disabled'\n\nexport function useAlerts() {\n const showSuccess = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('success', message, duration * 1000)\n }\n\n const showSuccessT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showSuccess(t(translation), duration)\n }\n\n const showError = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('error', message, duration * 1000)\n }\n\n const showErrorT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showError(t(translation), duration)\n }\n\n const showInfo = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('info', message, duration * 1000)\n }\n\n const showInfoT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showInfo(t(translation), duration)\n }\n\n const showWarning = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('warning', message, duration * 1000)\n }\n\n const showWarningT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showWarning(t(translation), duration)\n }\n\n const showValidationError = (duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('error', t('common.alert.fixValidationErrors'), duration * 1000)\n }\n\n const showRecordWas = (variant: RecordWasType, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('success', t('common.alert.recordWas.' + variant), duration * 1000)\n }\n\n const showApiValidationError = (errors: ValidationError[], duration = -1, fieldIsTranslated = false) => {\n const t = commonT\n const te = commonTe\n const texts = [t('common.alert.fixApiValidationErrors')]\n\n for (const error of errors) {\n let fieldText = ''\n if (fieldIsTranslated) {\n fieldText += error.field\n } else if (te(error.field)) {\n fieldText += t(error.field)\n } else if (error.field.includes('[')) {\n fieldText += resolveListErrors(error.field)\n } else {\n fieldText += error.field.split('.').at(-1)\n }\n const errorsTexts = new Set<string>()\n for (const code of error.errors) {\n if (te('error.apiValidation.' + code)) {\n errorsTexts.add(t('error.apiValidation.' + code))\n continue\n }\n errorsTexts.add(t('error.apiValidation.noTranslation'))\n }\n if (fieldText.length > 0) {\n texts.push(fieldText + ': ' + Array.from(errorsTexts).join(', '))\n }\n }\n pushAlert('error', texts.join(NEW_LINE_MARK), duration * 1000)\n }\n\n const showApiForbiddenOperationError = (detail: string, duration = -1) => {\n const t = commonT\n const te = commonTe\n let text = t('error.apiForbiddenOperation.noTranslation')\n if (te('error.apiForbiddenOperation.' + detail)) {\n text = t('error.apiForbiddenOperation.' + detail)\n }\n pushAlert('error', text, duration * 1000)\n }\n\n const showUnknownError = (duration = -1) => {\n const t = commonT\n pushAlert('error', t('common.alert.unknownError'), duration * 1000)\n }\n\n const showForbiddenError = (duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('error', t('common.alert.forbiddenError'), duration * 1000)\n }\n\n const showAuthUnavailable = (duration = -1) => {\n const now = Date.now()\n if (now - authUnavailableShownAt < AUTH_UNAVAILABLE_QUIET_MS) return\n authUnavailableShownAt = now\n pushAlert('error', commonT('common.alert.authUnavailable'), duration * 1000)\n }\n\n const showErrorsDefault = (error: any, duration = -1) => {\n // A stopped request is not a failure to report: something newer asked for it to stop, or the\n // view it belonged to is gone. It returns `true` -- handled, nothing to show -- because the\n // callers that fall back on `if (!showErrorsDefault(e)) showUnknownError()` would otherwise toast\n // \"unknown error\" every time a user typed one more character into an autocomplete.\n if (isAnzuApiCancelledError(error)) return true\n // Stopped by the token refresh: the session is gone and the logout is already loading, or the\n // sign-in server did not answer -- said once, not for every request it stopped at the same time.\n if (isInCauseChain(error, (cause) => cause instanceof SessionExpiredError)) return true\n if (isInCauseChain(error, (cause) => cause instanceof AuthUnavailableError)) {\n showAuthUnavailable(duration)\n return true\n }\n if (isAnzuApiForbiddenError(error)) {\n showForbiddenError(duration)\n return true\n }\n if (isAnzuApiValidationError(error)) {\n showApiValidationError(error.fields, duration)\n return true\n }\n if (isAnzuApiDependencyExistsError(error)) {\n showErrorT('error.apiDependencyExists.message', duration)\n return true\n }\n if (isAnzuApiForbiddenOperationError(error)) {\n showApiForbiddenOperationError(error.detail, duration)\n return true\n }\n if (isAnzuApiTimeoutError(error)) {\n showErrorT('error.apiTimedOut.message', duration)\n return true\n }\n if (isAnzuApiAxiosError(error)) {\n showUnknownError(duration)\n return true\n }\n if (isAnzuFatalError(error)) {\n showUnknownError(duration)\n return true\n }\n if (isAnzuApiResponseCodeError(error)) {\n showUnknownError(duration)\n return true\n }\n return false\n }\n\n const resolveListErrors = (error: string) => {\n const t = commonT\n // Only called for a field that contains `[`, so the split has a second part.\n const parsedField = error.split('[')\n const firstField = parsedField[0]!.trim()\n const parsedSecond = parsedField[1]!.split(']')\n const indexNumber = parsedSecond[0]\n const secondField: string = parsedSecond[1] ?? ''\n\n return t(firstField) + '[' + indexNumber + ']: ' + t(firstField.slice(0, -1) + secondField)\n }\n\n return {\n showSuccess,\n showSuccessT,\n showError,\n showErrorT,\n showInfo,\n showInfoT,\n showWarning,\n showWarningT,\n showValidationError,\n showRecordWas,\n showApiValidationError,\n showApiForbiddenOperationError,\n showUnknownError,\n showForbiddenError,\n showErrorsDefault,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAMC,IAA2B,GAE3BC,IAA4B,KAC9BC,IAAyB,WAEhBC,IAAgB;AAI7B,SAAgBC,IAAY;CAC1B,IAAMC,KAAe,GAAiB,IAAWL,MAA6B;EAC5E,EAAU,WAAWM,GAASC,IAAW,GAAI;CAC/C,GAEMC,KAAgB,GAAqB,IAAWR,MAA6B;EAEjF,EAAYD,EAAEW,CAAW,GAAGH,CAAQ;CACtC,GAEMI,KAAa,GAAiB,IAAWX,MAA6B;EAC1E,EAAU,SAASM,GAASC,IAAW,GAAI;CAC7C,GAEMK,KAAc,GAAqB,IAAWZ,MAA6B;EAE/E,EAAUD,EAAEW,CAAW,GAAGH,CAAQ;CACpC,GAEMM,KAAY,GAAiB,IAAWb,MAA6B;EACzE,EAAU,QAAQM,GAASC,IAAW,GAAI;CAC5C,GAEMO,KAAa,GAAqB,IAAWd,MAA6B;EAE9E,EAASD,EAAEW,CAAW,GAAGH,CAAQ;CACnC,GAEMQ,KAAe,GAAiB,IAAWf,MAA6B;EAC5E,EAAU,WAAWM,GAASC,IAAW,GAAI;CAC/C,GAEMS,KAAgB,GAAqB,IAAWhB,MAA6B;EAEjF,EAAYD,EAAEW,CAAW,GAAGH,CAAQ;CACtC,GAEMU,KAAuB,IAAWjB,MAA6B;EAEnE,EAAU,SAASD,EAAE,kCAAkC,GAAGQ,IAAW,GAAI;CAC3E,GAEMW,KAAiB,GAAwB,IAAWlB,MAA6B;EAErF,EAAU,WAAWD,EAAE,4BAA4BoB,CAAO,GAAGZ,IAAW,GAAI;CAC9E,GAEMa,KAA0B,GAA2B,IAAW,IAAI,IAAoB,OAAU;EACtG,IAAMC,IAAIZ,GACJa,IAAKC,GACLC,IAAQ,CAACH,EAAE,qCAAqC,CAAC;EAEvD,KAAK,IAAMI,KAASC,GAAQ;GAC1B,IAAIC,IAAY;GAChB,AAAIC,IACF,KAAaH,EAAM,QACVH,EAAGG,EAAM,KAAK,IACvB,KAAaJ,EAAEI,EAAM,KAAK,IACjBA,EAAM,MAAM,SAAS,GAAG,IACjC,KAAaI,EAAkBJ,EAAM,KAAK,IAE1C,KAAaA,EAAM,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;GAE3C,IAAMK,oBAAc,IAAI,IAAY;GACpC,KAAK,IAAMC,KAAQN,EAAM,QACvB,AAAIH,EAAG,yBAAyBS,CAAI,IAClCD,EAAY,IAAIT,EAAE,yBAAyBU,CAAI,CAAC,IAGlDD,EAAY,IAAIT,EAAE,mCAAmC,CAAC;GAExD,AAAIM,EAAU,SAAS,KACrBH,EAAM,KAAKG,IAAY,OAAO,MAAM,KAAKG,CAAW,CAAC,CAAC,KAAK,IAAI,CAAC;EAEpE;EACA,EAAU,SAASN,EAAM,KAAA,IAAkB,GAAGjB,IAAW,GAAI;CAC/D,GAEMyB,KAAkC,GAAgB,IAAW,OAAO;EACxE,IAAMX,IAAIZ,GACJa,IAAKC,GACPU,IAAOZ,EAAE,2CAA2C;EAIxD,AAHIC,EAAG,iCAAiCY,CAAM,MAC5C,IAAOb,EAAE,iCAAiCa,CAAM,IAElDC,EAAU,SAASF,GAAM1B,IAAW,GAAI;CAC1C,GAEM6B,KAAoB,IAAW,OAAO;EAE1C,EAAU,SAASrC,EAAE,2BAA2B,GAAGQ,IAAW,GAAI;CACpE,GAEM8B,KAAsB,IAAWrC,MAA6B;EAElE,EAAU,SAASD,EAAE,6BAA6B,GAAGQ,IAAW,GAAI;CACtE,GAEM+B,KAAuB,IAAW,OAAO;EAC7C,IAAMC,IAAM,KAAK,IAAI;EACrB,AAAIA,IAAMrC,IAAyBD,MACnC,IAAyBsC,GACzBJ,EAAU,SAAS1B,EAAQ,8BAA8B,GAAGF,IAAW,GAAI;CAC7E,GAEMiC,KAAqB,GAAY,IAAW,OAK5CC,EAAwBhB,CAAK,KAG7BiB,EAAejB,IAAQ,MAAUkB,aAAiBC,CAAmB,IAAU,KAC/EF,EAAejB,IAAQ,MAAUkB,aAAiBE,CAAoB,KACxEP,EAAoB/B,CAAQ,GACrB,MAELuC,EAAwBrB,CAAK,KAC/BY,EAAmB9B,CAAQ,GACpB,MAELwC,EAAyBtB,CAAK,KAChCL,EAAuBK,EAAM,QAAQlB,CAAQ,GACtC,MAELyC,EAA+BvB,CAAK,KACtCb,EAAW,qCAAqCL,CAAQ,GACjD,MAEL0C,EAAiCxB,CAAK,KACxCO,EAA+BP,EAAM,QAAQlB,CAAQ,GAC9C,MAEL2C,EAAsBzB,CAAK,KAC7Bb,EAAW,6BAA6BL,CAAQ,GACzC,MAEL4C,EAAoB1B,CAAK,KAIzB2B,EAAiB3B,CAAK,KAItB4B,EAA2B5B,CAAK,KAClCW,EAAiB7B,CAAQ,GAClB,MAEF,IAGHsB,KAAqB,MAAkB;EAC3C,IAAMR,IAAIZ,GAEJ6C,IAAc7B,EAAM,MAAM,GAAG,GAC7B8B,IAAaD,EAAY,EAAE,CAAE,KAAK,GAClCE,IAAeF,EAAY,EAAE,CAAE,MAAM,GAAG,GACxCG,IAAcD,EAAa,IAC3BE,IAAsBF,EAAa,MAAM;EAE/C,OAAOnC,EAAEkC,CAAU,IAAI,MAAME,IAAc,QAAQpC,EAAEkC,EAAW,MAAM,GAAG,EAAE,IAAIG,CAAW;CAC5F;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"alerts.js","names":["t","DEFAULT_DURATION_SECONDS","AUTH_UNAVAILABLE_QUIET_MS","authUnavailableShownAt","NEW_LINE_MARK","useAlerts","showSuccess","message","duration","showSuccessT","commonT","translation","showError","showErrorT","showInfo","showInfoT","showWarning","showWarningT","showValidationError","showRecordWas","variant","showApiValidationError","t","te","commonTe","texts","error","errors","fieldText","fieldIsTranslated","resolveListErrors","errorsTexts","code","showApiForbiddenOperationError","text","detail","pushAlert","showUnknownError","showForbiddenError","showAuthUnavailable","now","showErrorsDefault","isAnzuApiCancelledError","isInCauseChain","cause","SessionExpiredError","AuthUnavailableError","isAnzuApiForbiddenError","isAnzuApiValidationError","isAnzuApiDependencyExistsError","isAnzuApiForbiddenOperationError","isAnzuApiTimeoutError","isAnzuApiAxiosError","isAnzuFatalError","isAnzuApiResponseCodeError","parsedField","firstField","parsedSecond","indexNumber","secondField"],"sources":["../../../../src/domains/system/composables/alerts.ts"],"sourcesContent":["import { pushAlert } from '@/domains/system/composables/alertsQueue'\nimport { commonT, commonTe } from '@/plugins/i18n'\nimport { isAnzuFatalError } from '@/shared/error/AnzuFatalError'\nimport { isAnzuApiForbiddenError } from '@/shared/error/AnzuApiForbiddenError'\nimport { isAnzuApiValidationError, type ValidationError } from '@/shared/error/AnzuApiValidationError'\nimport { isAnzuApiResponseCodeError } from '@/shared/error/AnzuApiResponseCodeError'\nimport { isAnzuApiForbiddenOperationError } from '@/shared/error/AnzuApiForbiddenOperationError'\nimport { isAnzuApiDependencyExistsError } from '@/shared/error/AnzuApiDependencyExistsError'\nimport { isAnzuApiTimeoutError } from '@/shared/error/AnzuApiTimeoutError'\nimport { isAnzuApiAxiosError } from '@/shared/error/AnzuApiAxiosError'\nimport { isAnzuApiCancelledError } from '@/shared/error/AnzuApiCancelledError'\nimport { AuthUnavailableError } from '@/shared/error/AuthUnavailableError'\nimport { SessionExpiredError } from '@/shared/error/SessionExpiredError'\nimport { isInCauseChain } from '@/shared/error/isInCauseChain'\n\nconst DEFAULT_DURATION_SECONDS = 3\n// One \"sign-in server does not answer\" per outage: a page's requests all fail at once.\nconst AUTH_UNAVAILABLE_QUIET_MS = 30_000\nlet authUnavailableShownAt = -Infinity\n\nexport const NEW_LINE_MARK = '\\n'\n\nexport type RecordWasType = 'created' | 'deleted' | 'updated' | 'published' | 'unpublished' | 'enabled' | 'disabled'\n\nexport function useAlerts() {\n const showSuccess = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('success', message, duration * 1000)\n }\n\n const showSuccessT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showSuccess(t(translation), duration)\n }\n\n const showError = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('error', message, duration * 1000)\n }\n\n const showErrorT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showError(t(translation), duration)\n }\n\n const showInfo = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('info', message, duration * 1000)\n }\n\n const showInfoT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showInfo(t(translation), duration)\n }\n\n const showWarning = (message: string, duration = DEFAULT_DURATION_SECONDS) => {\n pushAlert('warning', message, duration * 1000)\n }\n\n const showWarningT = (translation: string, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n showWarning(t(translation), duration)\n }\n\n const showValidationError = (duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('error', t('common.alert.fixValidationErrors'), duration * 1000)\n }\n\n const showRecordWas = (variant: RecordWasType, duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('success', t('common.alert.recordWas.' + variant), duration * 1000)\n }\n\n const showApiValidationError = (errors: ValidationError[], duration = -1, fieldIsTranslated = false) => {\n const t = commonT\n const te = commonTe\n const texts = [t('common.alert.fixApiValidationErrors')]\n\n for (const error of errors) {\n let fieldText = ''\n if (fieldIsTranslated) {\n fieldText += error.field\n } else if (te(error.field)) {\n fieldText += t(error.field)\n } else if (error.field.includes('[')) {\n fieldText += resolveListErrors(error.field)\n } else {\n fieldText += error.field.split('.').at(-1)\n }\n const errorsTexts = new Set<string>()\n for (const code of error.errors) {\n if (te('error.apiValidation.' + code)) {\n errorsTexts.add(t('error.apiValidation.' + code))\n continue\n }\n errorsTexts.add(t('error.apiValidation.noTranslation'))\n }\n if (fieldText.length > 0) {\n texts.push(fieldText + ': ' + Array.from(errorsTexts).join(', '))\n }\n }\n pushAlert('error', texts.join(NEW_LINE_MARK), duration * 1000)\n }\n\n const showApiForbiddenOperationError = (detail: string, duration = -1) => {\n const t = commonT\n const te = commonTe\n let text = t('error.apiForbiddenOperation.noTranslation')\n if (te('error.apiForbiddenOperation.' + detail)) {\n text = t('error.apiForbiddenOperation.' + detail)\n }\n pushAlert('error', text, duration * 1000)\n }\n\n const showUnknownError = (duration = -1) => {\n const t = commonT\n pushAlert('error', t('common.alert.unknownError'), duration * 1000)\n }\n\n const showForbiddenError = (duration = DEFAULT_DURATION_SECONDS) => {\n const t = commonT\n pushAlert('error', t('common.alert.forbiddenError'), duration * 1000)\n }\n\n const showAuthUnavailable = (duration = -1) => {\n const now = Date.now()\n if (now - authUnavailableShownAt < AUTH_UNAVAILABLE_QUIET_MS) return\n authUnavailableShownAt = now\n pushAlert('error', commonT('common.alert.authUnavailable'), duration * 1000)\n }\n\n const showErrorsDefault = (error: any, duration = -1) => {\n // A cancelled request is not a failure: something newer stopped it, or its view is gone.\n // Returns `true` because callers using `if (!showErrorsDefault(e)) showUnknownError()`\n // would otherwise show \"unknown error\" on every autocomplete keystroke.\n if (isAnzuApiCancelledError(error)) return true\n // Stopped by the token refresh. Either the session is gone and\n // logout is loading, or the sign-in server did not answer.\n // The latter is reported once, not for every request stopped at the same time.\n if (isInCauseChain(error, (cause) => cause instanceof SessionExpiredError)) return true\n if (isInCauseChain(error, (cause) => cause instanceof AuthUnavailableError)) {\n showAuthUnavailable(duration)\n return true\n }\n if (isAnzuApiForbiddenError(error)) {\n showForbiddenError(duration)\n return true\n }\n if (isAnzuApiValidationError(error)) {\n showApiValidationError(error.fields, duration)\n return true\n }\n if (isAnzuApiDependencyExistsError(error)) {\n showErrorT('error.apiDependencyExists.message', duration)\n return true\n }\n if (isAnzuApiForbiddenOperationError(error)) {\n showApiForbiddenOperationError(error.detail, duration)\n return true\n }\n if (isAnzuApiTimeoutError(error)) {\n showErrorT('error.apiTimedOut.message', duration)\n return true\n }\n if (isAnzuApiAxiosError(error)) {\n showUnknownError(duration)\n return true\n }\n if (isAnzuFatalError(error)) {\n showUnknownError(duration)\n return true\n }\n if (isAnzuApiResponseCodeError(error)) {\n showUnknownError(duration)\n return true\n }\n return false\n }\n\n const resolveListErrors = (error: string) => {\n const t = commonT\n // Only called for a field that contains `[`, so the split has a second part.\n const parsedField = error.split('[')\n const firstField = parsedField[0]!.trim()\n const parsedSecond = parsedField[1]!.split(']')\n const indexNumber = parsedSecond[0]\n const secondField: string = parsedSecond[1] ?? ''\n\n return t(firstField) + '[' + indexNumber + ']: ' + t(firstField.slice(0, -1) + secondField)\n }\n\n return {\n showSuccess,\n showSuccessT,\n showError,\n showErrorT,\n showInfo,\n showInfoT,\n showWarning,\n showWarningT,\n showValidationError,\n showRecordWas,\n showApiValidationError,\n showApiForbiddenOperationError,\n showUnknownError,\n showForbiddenError,\n showErrorsDefault,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAMC,IAA2B,GAE3BC,IAA4B,KAC9BC,IAAyB,WAEhBC,IAAgB;AAI7B,SAAgBC,IAAY;CAC1B,IAAMC,KAAe,GAAiB,IAAWL,MAA6B;EAC5E,EAAU,WAAWM,GAASC,IAAW,GAAI;CAC/C,GAEMC,KAAgB,GAAqB,IAAWR,MAA6B;EAEjF,EAAYD,EAAEW,CAAW,GAAGH,CAAQ;CACtC,GAEMI,KAAa,GAAiB,IAAWX,MAA6B;EAC1E,EAAU,SAASM,GAASC,IAAW,GAAI;CAC7C,GAEMK,KAAc,GAAqB,IAAWZ,MAA6B;EAE/E,EAAUD,EAAEW,CAAW,GAAGH,CAAQ;CACpC,GAEMM,KAAY,GAAiB,IAAWb,MAA6B;EACzE,EAAU,QAAQM,GAASC,IAAW,GAAI;CAC5C,GAEMO,KAAa,GAAqB,IAAWd,MAA6B;EAE9E,EAASD,EAAEW,CAAW,GAAGH,CAAQ;CACnC,GAEMQ,KAAe,GAAiB,IAAWf,MAA6B;EAC5E,EAAU,WAAWM,GAASC,IAAW,GAAI;CAC/C,GAEMS,KAAgB,GAAqB,IAAWhB,MAA6B;EAEjF,EAAYD,EAAEW,CAAW,GAAGH,CAAQ;CACtC,GAEMU,KAAuB,IAAWjB,MAA6B;EAEnE,EAAU,SAASD,EAAE,kCAAkC,GAAGQ,IAAW,GAAI;CAC3E,GAEMW,KAAiB,GAAwB,IAAWlB,MAA6B;EAErF,EAAU,WAAWD,EAAE,4BAA4BoB,CAAO,GAAGZ,IAAW,GAAI;CAC9E,GAEMa,KAA0B,GAA2B,IAAW,IAAI,IAAoB,OAAU;EACtG,IAAMC,IAAIZ,GACJa,IAAKC,GACLC,IAAQ,CAACH,EAAE,qCAAqC,CAAC;EAEvD,KAAK,IAAMI,KAASC,GAAQ;GAC1B,IAAIC,IAAY;GAChB,AAAIC,IACF,KAAaH,EAAM,QACVH,EAAGG,EAAM,KAAK,IACvB,KAAaJ,EAAEI,EAAM,KAAK,IACjBA,EAAM,MAAM,SAAS,GAAG,IACjC,KAAaI,EAAkBJ,EAAM,KAAK,IAE1C,KAAaA,EAAM,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;GAE3C,IAAMK,oBAAc,IAAI,IAAY;GACpC,KAAK,IAAMC,KAAQN,EAAM,QACvB,AAAIH,EAAG,yBAAyBS,CAAI,IAClCD,EAAY,IAAIT,EAAE,yBAAyBU,CAAI,CAAC,IAGlDD,EAAY,IAAIT,EAAE,mCAAmC,CAAC;GAExD,AAAIM,EAAU,SAAS,KACrBH,EAAM,KAAKG,IAAY,OAAO,MAAM,KAAKG,CAAW,CAAC,CAAC,KAAK,IAAI,CAAC;EAEpE;EACA,EAAU,SAASN,EAAM,KAAA,IAAkB,GAAGjB,IAAW,GAAI;CAC/D,GAEMyB,KAAkC,GAAgB,IAAW,OAAO;EACxE,IAAMX,IAAIZ,GACJa,IAAKC,GACPU,IAAOZ,EAAE,2CAA2C;EAIxD,AAHIC,EAAG,iCAAiCY,CAAM,MAC5C,IAAOb,EAAE,iCAAiCa,CAAM,IAElDC,EAAU,SAASF,GAAM1B,IAAW,GAAI;CAC1C,GAEM6B,KAAoB,IAAW,OAAO;EAE1C,EAAU,SAASrC,EAAE,2BAA2B,GAAGQ,IAAW,GAAI;CACpE,GAEM8B,KAAsB,IAAWrC,MAA6B;EAElE,EAAU,SAASD,EAAE,6BAA6B,GAAGQ,IAAW,GAAI;CACtE,GAEM+B,KAAuB,IAAW,OAAO;EAC7C,IAAMC,IAAM,KAAK,IAAI;EACrB,AAAIA,IAAMrC,IAAyBD,MACnC,IAAyBsC,GACzBJ,EAAU,SAAS1B,EAAQ,8BAA8B,GAAGF,IAAW,GAAI;CAC7E,GAEMiC,KAAqB,GAAY,IAAW,OAI5CC,EAAwBhB,CAAK,KAI7BiB,EAAejB,IAAQ,MAAUkB,aAAiBC,CAAmB,IAAU,KAC/EF,EAAejB,IAAQ,MAAUkB,aAAiBE,CAAoB,KACxEP,EAAoB/B,CAAQ,GACrB,MAELuC,EAAwBrB,CAAK,KAC/BY,EAAmB9B,CAAQ,GACpB,MAELwC,EAAyBtB,CAAK,KAChCL,EAAuBK,EAAM,QAAQlB,CAAQ,GACtC,MAELyC,EAA+BvB,CAAK,KACtCb,EAAW,qCAAqCL,CAAQ,GACjD,MAEL0C,EAAiCxB,CAAK,KACxCO,EAA+BP,EAAM,QAAQlB,CAAQ,GAC9C,MAEL2C,EAAsBzB,CAAK,KAC7Bb,EAAW,6BAA6BL,CAAQ,GACzC,MAEL4C,EAAoB1B,CAAK,KAIzB2B,EAAiB3B,CAAK,KAItB4B,EAA2B5B,CAAK,KAClCW,EAAiB7B,CAAQ,GAClB,MAEF,IAGHsB,KAAqB,MAAkB;EAC3C,IAAMR,IAAIZ,GAEJ6C,IAAc7B,EAAM,MAAM,GAAG,GAC7B8B,IAAaD,EAAY,EAAE,CAAE,KAAK,GAClCE,IAAeF,EAAY,EAAE,CAAE,MAAM,GAAG,GACxCG,IAAcD,EAAa,IAC3BE,IAAsBF,EAAa,MAAM;EAE/C,OAAOnC,EAAEkC,CAAU,IAAI,MAAME,IAAc,QAAQpC,EAAEkC,EAAW,MAAM,GAAG,EAAE,IAAIG,CAAW;CAC5F;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -15,8 +15,8 @@ export interface BreadcrumbOptions {
15
15
  }
16
16
  export declare const defaultOptions: BreadcrumbOptions;
17
17
  /**
18
- * The breadcrumbs of a page for `AActionbar`. `items` is a getter, wrapped in a `computed` here: read only when
19
- * the actionbar renders and again when what it reads changes, as `computed(() => [...])` written by the page.
20
- * A `ComputedRef` the page already has is kept as it is.
18
+ * Breadcrumbs of a page for `AActionbar`. A getter `items` is wrapped
19
+ * in a `computed`, so it is read only when the actionbar renders.
20
+ * An existing `ComputedRef` is kept as it is.
21
21
  */
22
22
  export declare function defineBreadcrumbs(items: (() => Array<BreadcrumbItem>) | ComputedRef<Array<BreadcrumbItem>>, options?: Partial<BreadcrumbOptions>): Breadcrumbs;
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.js","names":["defaultOptions","defineBreadcrumbs","items","computed","options"],"sources":["../../../../src/domains/system/composables/breadcrumbs.ts"],"sourcesContent":["import { computed, type ComputedRef } from 'vue'\nimport type { DocId, IntegerId } from '@/shared/types/common'\n\nexport interface BreadcrumbItem {\n title: string\n routeName: string\n id?: IntegerId | DocId\n routeParams?: any\n}\n\nexport interface Breadcrumbs {\n items: ComputedRef<Array<BreadcrumbItem>>\n options: BreadcrumbOptions\n}\n\nexport interface BreadcrumbOptions {\n linkLastItem: boolean\n}\n\nexport const defaultOptions: BreadcrumbOptions = {\n linkLastItem: false,\n}\n\n/**\n * The breadcrumbs of a page for `AActionbar`. `items` is a getter, wrapped in a `computed` here: read only when\n * the actionbar renders and again when what it reads changes, as `computed(() => [...])` written by the page.\n * A `ComputedRef` the page already has is kept as it is.\n */\nexport function defineBreadcrumbs(\n items: (() => Array<BreadcrumbItem>) | ComputedRef<Array<BreadcrumbItem>>,\n options: Partial<BreadcrumbOptions> = {}\n): Breadcrumbs {\n return {\n items: typeof items === 'function' ? computed(items) : items,\n options: {\n ...defaultOptions,\n ...options,\n },\n }\n}\n"],"mappings":";;AAmBA,IAAaA,IAAoC,EAC/C,cAAc,GAChB;AAOA,SAAgBC,EACd,GACA,IAAsC,CAAC,GAC1B;CACb,OAAO;EACL,OAAO,OAAOC,KAAU,aAAaC,EAASD,CAAK,IAAIA;EACvD,SAAS;GACP,GAAGF;GACH,GAAGI;EACL;CACF;AACF"}
1
+ {"version":3,"file":"breadcrumbs.js","names":["defaultOptions","defineBreadcrumbs","items","computed","options"],"sources":["../../../../src/domains/system/composables/breadcrumbs.ts"],"sourcesContent":["import { computed, type ComputedRef } from 'vue'\nimport type { DocId, IntegerId } from '@/shared/types/common'\n\nexport interface BreadcrumbItem {\n title: string\n routeName: string\n id?: IntegerId | DocId\n routeParams?: any\n}\n\nexport interface Breadcrumbs {\n items: ComputedRef<Array<BreadcrumbItem>>\n options: BreadcrumbOptions\n}\n\nexport interface BreadcrumbOptions {\n linkLastItem: boolean\n}\n\nexport const defaultOptions: BreadcrumbOptions = {\n linkLastItem: false,\n}\n\n/**\n * Breadcrumbs of a page for `AActionbar`. A getter `items` is wrapped\n * in a `computed`, so it is read only when the actionbar renders.\n * An existing `ComputedRef` is kept as it is.\n */\nexport function defineBreadcrumbs(\n items: (() => Array<BreadcrumbItem>) | ComputedRef<Array<BreadcrumbItem>>,\n options: Partial<BreadcrumbOptions> = {}\n): Breadcrumbs {\n return {\n items: typeof items === 'function' ? computed(items) : items,\n options: {\n ...defaultOptions,\n ...options,\n },\n }\n}\n"],"mappings":";;AAmBA,IAAaA,IAAoC,EAC/C,cAAc,GAChB;AAOA,SAAgBC,EACd,GACA,IAAsC,CAAC,GAC1B;CACb,OAAO;EACL,OAAO,OAAOC,KAAU,aAAaC,EAASD,CAAK,IAAIA;EACvD,SAAS;GACP,GAAGF;GACH,GAAGI;EACL;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"languageSettings.js","names":["ALL_LANGUAGES","storedSettings","useStorage","modifyLanguageSettings","i18n","i18nInstance","commonI18n","addMessages","language","messages","setLanguage","configAvailableLanguages","code","locale","configDefaultLanguage","readonly","useLanguageSettings"],"sources":["../../../../src/domains/system/composables/languageSettings.ts"],"sourcesContent":["import { useStorage } from '@vueuse/core'\nimport { readonly } from 'vue'\n// import { useLocale } from 'vuetify'\nimport { commonI18n } from '@/plugins/i18n'\n\n// use ISO 639-1 codes\nexport type LanguageCode = 'en' | 'sk' | 'cs' | 'xx'\n\nexport interface Language {\n code: LanguageCode\n title: string\n adminOnly?: boolean\n}\n\nexport const ALL_LANGUAGES = [\n {\n code: 'en',\n title: 'English',\n },\n {\n code: 'sk',\n title: 'Slovensky',\n },\n {\n code: 'cs',\n title: 'Česky',\n },\n {\n code: 'xx',\n title: 'Translation ID',\n adminOnly: true,\n },\n] as Language[]\n\nconst storedSettings = useStorage<LanguageCode | 'default'>('language', 'default')\n\nexport function modifyLanguageSettings(\n configAvailableLanguages: LanguageCode[],\n configDefaultLanguage: LanguageCode,\n i18nInstance?: any\n) {\n const i18n = i18nInstance || commonI18n()\n // const { current } = useLocale()\n\n function addMessages(language: LanguageCode, messages: any) {\n if (!i18n || !i18n.global) return\n // @ts-ignore\n i18n.global.setLocaleMessage(language, messages)\n // The language chosen before its messages arrived (see setLanguage) switches now.\n // @ts-ignore\n if (storedSettings.value === language) i18n.global.locale.value = language\n }\n\n const setLanguage = (code: LanguageCode) => {\n if (!i18n || !i18n.global) return false\n if (configAvailableLanguages.includes(code) || code === 'xx') {\n // current.value = code\n storedSettings.value = code\n // Only a language whose messages are loaded: the admins load one language at a time and reload\n // after a switch, and in between the page would show raw keys. addMessages switches it later.\n // Not `availableLocales`: it also lists the instance's starting locale, messages or not.\n // @ts-ignore\n if (code === 'xx' || Object.keys(i18n.global.getLocaleMessage(code) ?? {}).length > 0) {\n // @ts-ignore\n i18n.global.locale.value = code\n }\n\n return code\n }\n return false\n }\n\n const initializeLanguage = () => {\n if (!i18n || !i18n.global) return\n if (storedSettings.value === 'default') {\n // No explicit user preference in localStorage — use app default\n storedSettings.value = configDefaultLanguage\n // @ts-ignore\n i18n.global.locale.value = configDefaultLanguage\n return\n }\n if (configAvailableLanguages.includes(storedSettings.value) || storedSettings.value === 'xx') {\n // current.value = storedSettings.value\n // @ts-ignore\n i18n.global.locale.value = storedSettings.value\n return\n }\n storedSettings.value = configDefaultLanguage\n // current.value = configDefaultLanguage\n // @ts-ignore\n i18n.global.locale.value = configDefaultLanguage\n }\n\n const applyUserLocale = (locale: string | null) => {\n if (!locale) return false\n const code = locale as LanguageCode\n if (storedSettings.value !== 'default' && code === storedSettings.value) return false\n return setLanguage(code)\n }\n\n return {\n addMessages,\n applyUserLocale,\n initializeLanguage,\n currentLanguageCode: readonly(storedSettings),\n setLanguage,\n allLanguages: ALL_LANGUAGES,\n }\n}\n\nexport function useLanguageSettings() {\n return {\n currentLanguageCode: readonly(storedSettings),\n }\n}\n"],"mappings":";;;;AAcA,IAAaA,IAAgB;CAC3B;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;EACP,WAAW;CACb;AACF,GAEMC,IAAiBC,EAAqC,YAAY,SAAS;AAEjF,SAAgBC,EACd,GACA,GACA,GACA;CACA,IAAMC,IAAOC,KAAgBC,EAAW;CAGxC,SAASC,EAAY,GAAwB,GAAe;EAC1D,AAAKH,KAASA,EAAK,WAEnBA,EAAK,OAAO,iBAAiBI,GAAUC,CAAQ,GAG3CR,EAAe,UAAUO,MAAU,EAAK,OAAO,OAAO,QAAQA;CACpE;CAEA,IAAME,KAAe,MACf,CAACN,KAAQ,CAACA,EAAK,SAAe,KAC9BO,EAAyB,SAASC,CAAI,KAAKA,MAAS,QAEtD,EAAe,QAAQA,IAKnBA,MAAS,QAAQ,OAAO,KAAKR,EAAK,OAAO,iBAAiBQ,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,OAElF,EAAK,OAAO,OAAO,QAAQA,IAGtBA,KAEF;CA+BT,OAAO;EACL;EACA,kBATuB,MAA0B;GACjD,IAAI,CAACC,GAAQ,OAAO;GACpB,IAAMD,IAAOC;GAEb,OADIZ,EAAe,UAAU,aAAaW,MAASX,EAAe,QAAc,KACzES,EAAYE,CAAI;EACzB;EAKE,0BA/B+B;GAC/B,AAAKR,KAASA,EAAK,WACfH,EAAe,UAAU,aAE3B,EAAe,QAAQa,GAEvB,EAAK,OAAO,OAAO,QAAQA,KAGzBH,EAAyB,SAASV,EAAe,KAAK,KAAKA,EAAe,UAAU,OAGtF,EAAK,OAAO,OAAO,QAAQA,EAAe,SAG5C,EAAe,QAAQa,GAGvB,EAAK,OAAO,OAAO,QAAQA;EAC7B;EAaE,qBAAqBC,EAASd,CAAc;EAC5C;EACA,cAAcD;CAChB;AACF;AAEA,SAAgBgB,IAAsB;CACpC,OAAO,EACL,qBAAqBD,EAASd,CAAc,EAC9C;AACF"}
1
+ {"version":3,"file":"languageSettings.js","names":["ALL_LANGUAGES","storedSettings","useStorage","modifyLanguageSettings","i18n","i18nInstance","commonI18n","addMessages","language","messages","setLanguage","configAvailableLanguages","code","locale","configDefaultLanguage","readonly","useLanguageSettings"],"sources":["../../../../src/domains/system/composables/languageSettings.ts"],"sourcesContent":["import { useStorage } from '@vueuse/core'\nimport { readonly } from 'vue'\n// import { useLocale } from 'vuetify'\nimport { commonI18n } from '@/plugins/i18n'\n\n// use ISO 639-1 codes\nexport type LanguageCode = 'en' | 'sk' | 'cs' | 'xx'\n\nexport interface Language {\n code: LanguageCode\n title: string\n adminOnly?: boolean\n}\n\nexport const ALL_LANGUAGES = [\n {\n code: 'en',\n title: 'English',\n },\n {\n code: 'sk',\n title: 'Slovensky',\n },\n {\n code: 'cs',\n title: 'Česky',\n },\n {\n code: 'xx',\n title: 'Translation ID',\n adminOnly: true,\n },\n] as Language[]\n\nconst storedSettings = useStorage<LanguageCode | 'default'>('language', 'default')\n\nexport function modifyLanguageSettings(\n configAvailableLanguages: LanguageCode[],\n configDefaultLanguage: LanguageCode,\n i18nInstance?: any\n) {\n const i18n = i18nInstance || commonI18n()\n // const { current } = useLocale()\n\n function addMessages(language: LanguageCode, messages: any) {\n if (!i18n || !i18n.global) return\n // @ts-ignore\n i18n.global.setLocaleMessage(language, messages)\n // The language chosen before its messages arrived (see setLanguage) switches now.\n // @ts-ignore\n if (storedSettings.value === language) i18n.global.locale.value = language\n }\n\n const setLanguage = (code: LanguageCode) => {\n if (!i18n || !i18n.global) return false\n if (configAvailableLanguages.includes(code) || code === 'xx') {\n // current.value = code\n storedSettings.value = code\n // Only switch to a language whose messages are loaded. Admins load one language at\n // a time and reload after a switch, so the page would show raw keys in between.\n // `addMessages` switches it later. Not `availableLocales`: it\n // also lists the starting locale, with or without messages.\n // @ts-ignore\n if (code === 'xx' || Object.keys(i18n.global.getLocaleMessage(code) ?? {}).length > 0) {\n // @ts-ignore\n i18n.global.locale.value = code\n }\n\n return code\n }\n return false\n }\n\n const initializeLanguage = () => {\n if (!i18n || !i18n.global) return\n if (storedSettings.value === 'default') {\n // No explicit user preference in localStorage — use app default\n storedSettings.value = configDefaultLanguage\n // @ts-ignore\n i18n.global.locale.value = configDefaultLanguage\n return\n }\n if (configAvailableLanguages.includes(storedSettings.value) || storedSettings.value === 'xx') {\n // current.value = storedSettings.value\n // @ts-ignore\n i18n.global.locale.value = storedSettings.value\n return\n }\n storedSettings.value = configDefaultLanguage\n // current.value = configDefaultLanguage\n // @ts-ignore\n i18n.global.locale.value = configDefaultLanguage\n }\n\n const applyUserLocale = (locale: string | null) => {\n if (!locale) return false\n const code = locale as LanguageCode\n if (storedSettings.value !== 'default' && code === storedSettings.value) return false\n return setLanguage(code)\n }\n\n return {\n addMessages,\n applyUserLocale,\n initializeLanguage,\n currentLanguageCode: readonly(storedSettings),\n setLanguage,\n allLanguages: ALL_LANGUAGES,\n }\n}\n\nexport function useLanguageSettings() {\n return {\n currentLanguageCode: readonly(storedSettings),\n }\n}\n"],"mappings":";;;;AAcA,IAAaA,IAAgB;CAC3B;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;CACT;CACA;EACE,MAAM;EACN,OAAO;EACP,WAAW;CACb;AACF,GAEMC,IAAiBC,EAAqC,YAAY,SAAS;AAEjF,SAAgBC,EACd,GACA,GACA,GACA;CACA,IAAMC,IAAOC,KAAgBC,EAAW;CAGxC,SAASC,EAAY,GAAwB,GAAe;EAC1D,AAAKH,KAASA,EAAK,WAEnBA,EAAK,OAAO,iBAAiBI,GAAUC,CAAQ,GAG3CR,EAAe,UAAUO,MAAU,EAAK,OAAO,OAAO,QAAQA;CACpE;CAEA,IAAME,KAAe,MACf,CAACN,KAAQ,CAACA,EAAK,SAAe,KAC9BO,EAAyB,SAASC,CAAI,KAAKA,MAAS,QAEtD,EAAe,QAAQA,IAMnBA,MAAS,QAAQ,OAAO,KAAKR,EAAK,OAAO,iBAAiBQ,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,OAElF,EAAK,OAAO,OAAO,QAAQA,IAGtBA,KAEF;CA+BT,OAAO;EACL;EACA,kBATuB,MAA0B;GACjD,IAAI,CAACC,GAAQ,OAAO;GACpB,IAAMD,IAAOC;GAEb,OADIZ,EAAe,UAAU,aAAaW,MAASX,EAAe,QAAc,KACzES,EAAYE,CAAI;EACzB;EAKE,0BA/B+B;GAC/B,AAAKR,KAASA,EAAK,WACfH,EAAe,UAAU,aAE3B,EAAe,QAAQa,GAEvB,EAAK,OAAO,OAAO,QAAQA,KAGzBH,EAAyB,SAASV,EAAe,KAAK,KAAKA,EAAe,UAAU,OAGtF,EAAK,OAAO,OAAO,QAAQA,EAAe,SAG5C,EAAe,QAAQa,GAGvB,EAAK,OAAO,OAAO,QAAQA;EAC7B;EAaE,qBAAqBC,EAASd,CAAc;EAC5C;EACA,cAAcD;CAChB;AACF;AAEA,SAAgBgB,IAAsB;CACpC,OAAO,EACL,qBAAqBD,EAASd,CAAc,EAC9C;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"loginStatus.js","names":["LoginState","status","ref","serverTimestamp","localTimeShiftInSeconds","useLoginStatus","to","stringToInt","localTime","localTimeDiff","current","readonly","isNull"],"sources":["../../../../src/domains/system/composables/loginStatus.ts"],"sourcesContent":["import { readonly, ref } from 'vue'\nimport type { RouteLocationNormalized } from 'vue-router'\nimport { isNull } from '@/shared/utils/common'\nimport { stringToInt } from '@/shared/utils/string'\n\nexport const LoginState = {\n Success: 'success',\n FailureSsoCommunicationFailed: 'failure-sso-communication',\n FailureInternalError: 'failure-internal-error',\n FailureUnauthorized: 'failure-unauthorized',\n} as const\nexport type JobStatusType = (typeof LoginState)[keyof typeof LoginState]\n\nconst status = ref<string | null>(null)\nconst serverTimestamp = ref<number | null>(null)\nexport const localTimeShiftInSeconds = ref<number>(0)\n\nexport function useLoginStatus(to: RouteLocationNormalized) {\n if (to.query.loginState) {\n status.value = to.query.loginState.toString()\n serverTimestamp.value = stringToInt(to.query.timestamp)\n const localTime = Math.floor(Date.now() / 1000)\n if (serverTimestamp.value) {\n const localTimeDiff = serverTimestamp.value - localTime\n /**\n * If the server time is ahead of the user’s local time by more than the one-minute grace period,\n * we need to store that time shift so we can refresh the token sooner. Each login measures it\n * anew: a shift kept from an earlier one makes a valid JWT look expired.\n */\n localTimeShiftInSeconds.value = Math.max(0, localTimeDiff - 60)\n }\n } else {\n status.value = null\n serverTimestamp.value = null\n }\n\n // This navigation's verdict: the start-up reads it after its awaits, when another navigation may have\n // passed the guard and reset `status`.\n const current = status.value\n const isStatusNotDefined = () => isNull(current)\n const isStatusLoginSuccess = () => current === LoginState.Success\n const isStatusSsoCommunicationFailure = () => current === LoginState.FailureSsoCommunicationFailed\n const isStatusInternalErrorFailure = () => current === LoginState.FailureInternalError\n const isStatusUnauthorized = () => current === LoginState.FailureUnauthorized\n\n return {\n status: readonly(status),\n serverTimestamp: readonly(serverTimestamp),\n isStatusNotDefined,\n isStatusLoginSuccess,\n isStatusSsoCommunicationFailure,\n isStatusInternalErrorFailure,\n isStatusUnauthorized,\n }\n}\n"],"mappings":";;;;AAKA,IAAaA,IAAa;CACxB,SAAS;CACT,+BAA+B;CAC/B,sBAAsB;CACtB,qBAAqB;AACvB,GAGMC,IAASC,EAAmB,IAAI,GAChCC,IAAkBD,EAAmB,IAAI,GAClCE,IAA0BF,EAAY,CAAC;AAEpD,SAAgBG,EAAe,GAA6B;CAC1D,IAAIC,EAAG,MAAM,YAAY;EAEvB,AADA,EAAO,QAAQA,EAAG,MAAM,WAAW,SAAS,GAC5C,EAAgB,QAAQC,EAAYD,EAAG,MAAM,SAAS;EACtD,IAAME,IAAY,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;EAC9C,IAAIL,EAAgB,OAAO;GACzB,IAAMM,IAAgBN,EAAgB,QAAQK;GAM9C,EAAwB,QAAQ,KAAK,IAAI,GAAGC,IAAgB,EAAE;EAChE;CACF,OAEE,AADA,EAAO,QAAQ,MACf,EAAgB,QAAQ;CAK1B,IAAMC,IAAUT,EAAO;CAOvB,OAAO;EACL,QAAQU,EAASV,CAAM;EACvB,iBAAiBU,EAASR,CAAe;EACzC,0BAT+BS,EAAOF,CAAO;EAU7C,4BATiCA,MAAYV,EAAW;EAUxD,uCAT4CU,MAAYV,EAAW;EAUnE,oCATyCU,MAAYV,EAAW;EAUhE,4BATiCU,MAAYV,EAAW;CAU1D;AACF"}
1
+ {"version":3,"file":"loginStatus.js","names":["LoginState","status","ref","serverTimestamp","localTimeShiftInSeconds","useLoginStatus","to","stringToInt","localTime","localTimeDiff","current","readonly","isNull"],"sources":["../../../../src/domains/system/composables/loginStatus.ts"],"sourcesContent":["import { readonly, ref } from 'vue'\nimport type { RouteLocationNormalized } from 'vue-router'\nimport { isNull } from '@/shared/utils/common'\nimport { stringToInt } from '@/shared/utils/string'\n\nexport const LoginState = {\n Success: 'success',\n FailureSsoCommunicationFailed: 'failure-sso-communication',\n FailureInternalError: 'failure-internal-error',\n FailureUnauthorized: 'failure-unauthorized',\n} as const\nexport type JobStatusType = (typeof LoginState)[keyof typeof LoginState]\n\nconst status = ref<string | null>(null)\nconst serverTimestamp = ref<number | null>(null)\nexport const localTimeShiftInSeconds = ref<number>(0)\n\nexport function useLoginStatus(to: RouteLocationNormalized) {\n if (to.query.loginState) {\n status.value = to.query.loginState.toString()\n serverTimestamp.value = stringToInt(to.query.timestamp)\n const localTime = Math.floor(Date.now() / 1000)\n if (serverTimestamp.value) {\n const localTimeDiff = serverTimestamp.value - localTime\n /**\n * Stores how far the server time is ahead beyond the one-minute grace period, so the token refreshes sooner.\n * Measured anew on each login: a shift kept from an earlier login makes a valid JWT look expired.\n */\n localTimeShiftInSeconds.value = Math.max(0, localTimeDiff - 60)\n }\n } else {\n status.value = null\n serverTimestamp.value = null\n }\n\n // This navigation's verdict: the start-up reads it after its awaits, when another navigation may have\n // passed the guard and reset `status`.\n const current = status.value\n const isStatusNotDefined = () => isNull(current)\n const isStatusLoginSuccess = () => current === LoginState.Success\n const isStatusSsoCommunicationFailure = () => current === LoginState.FailureSsoCommunicationFailed\n const isStatusInternalErrorFailure = () => current === LoginState.FailureInternalError\n const isStatusUnauthorized = () => current === LoginState.FailureUnauthorized\n\n return {\n status: readonly(status),\n serverTimestamp: readonly(serverTimestamp),\n isStatusNotDefined,\n isStatusLoginSuccess,\n isStatusSsoCommunicationFailure,\n isStatusInternalErrorFailure,\n isStatusUnauthorized,\n }\n}\n"],"mappings":";;;;AAKA,IAAaA,IAAa;CACxB,SAAS;CACT,+BAA+B;CAC/B,sBAAsB;CACtB,qBAAqB;AACvB,GAGMC,IAASC,EAAmB,IAAI,GAChCC,IAAkBD,EAAmB,IAAI,GAClCE,IAA0BF,EAAY,CAAC;AAEpD,SAAgBG,EAAe,GAA6B;CAC1D,IAAIC,EAAG,MAAM,YAAY;EAEvB,AADA,EAAO,QAAQA,EAAG,MAAM,WAAW,SAAS,GAC5C,EAAgB,QAAQC,EAAYD,EAAG,MAAM,SAAS;EACtD,IAAME,IAAY,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;EAC9C,IAAIL,EAAgB,OAAO;GACzB,IAAMM,IAAgBN,EAAgB,QAAQK;GAK9C,EAAwB,QAAQ,KAAK,IAAI,GAAGC,IAAgB,EAAE;EAChE;CACF,OAEE,AADA,EAAO,QAAQ,MACf,EAAgB,QAAQ;CAK1B,IAAMC,IAAUT,EAAO;CAOvB,OAAO;EACL,QAAQU,EAASV,CAAM;EACvB,iBAAiBU,EAASR,CAAe;EACzC,0BAT+BS,EAAOF,CAAO;EAU7C,4BATiCA,MAAYV,EAAW;EAUxD,uCAT4CU,MAAYV,EAAW;EAUnE,oCATyCU,MAAYV,EAAW;EAUhE,4BATiCU,MAAYV,EAAW;CAU1D;AACF"}
@@ -3,9 +3,8 @@ export interface NavigationErrorHandlerOptions {
3
3
  /** Runs first on every failure, e.g. to drop an admin's navigation-pending overlay. */
4
4
  onError?: (error: unknown) => void;
5
5
  /**
6
- * The very first navigation failed, so nothing but the start-up loader is on screen. Called once per
7
- * handler. Without it -- and after it -- the page is reloaded, and the message stays up when that is
8
- * not possible.
6
+ * The very first navigation failed, so only the start-up loader is on screen. Called once per handler.
7
+ * Without it, and after it, the page is reloaded. The message stays up when a reload is not possible.
9
8
  */
10
9
  onFirstNavigationError?: (error: unknown) => void;
11
10
  /**
@@ -15,10 +14,9 @@ export interface NavigationErrorHandlerOptions {
15
14
  reloadOnChunkError?: boolean;
16
15
  }
17
16
  /**
18
- * For `router.onError`: a navigation that throws -- a guard raising, a route's chunk that does not
19
- * load -- otherwise only reaches the console, and the click does nothing the user can see.
20
- *
21
- * A chunk that does not load is usually an old tab after a deploy: the page is reloaded, at most
22
- * once per 30 s, and gets the new one. Anything else shows "the page could not be opened".
17
+ * For `router.onError`. A navigation that throws (a guard error,
18
+ * a chunk that does not load) otherwise only reaches the console.
19
+ * A failed chunk is usually an old tab after a deploy: the page reloads, at most once per 30 s.
20
+ * Anything else shows "the page could not be opened".
23
21
  */
24
22
  export declare const createNavigationErrorHandler: (router: Router, options?: NavigationErrorHandlerOptions) => (error: unknown) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"navigationError.js","names":["CHUNK_LOAD_MESSAGE","isChunkLoadError","error","safely","callback","callbackError","createNavigationErrorHandler","firstNavigationHandled","options","useSentry","requestAppReload","router","START_LOCATION"],"sources":["../../../../src/domains/system/composables/navigationError.ts"],"sourcesContent":["import { START_LOCATION, type Router } from 'vue-router'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { useSentry } from '@/domains/system/composables/sentry'\nimport { requestAppReload } from '@/domains/system/systemBar/utils/appReload'\n\nexport interface NavigationErrorHandlerOptions {\n /** Runs first on every failure, e.g. to drop an admin's navigation-pending overlay. */\n onError?: (error: unknown) => void\n /**\n * The very first navigation failed, so nothing but the start-up loader is on screen. Called once per\n * handler. Without it -- and after it -- the page is reloaded, and the message stays up when that is\n * not possible.\n */\n onFirstNavigationError?: (error: unknown) => void\n /**\n * `false` for an admin whose page holds work a reload would lose (DAM's running uploads): a chunk that\n * does not load then shows the message instead of reloading. Defaults to `true`.\n */\n reloadOnChunkError?: boolean\n}\n\n// What the browsers say when a route's chunk cannot be fetched (Chromium, Safari, Firefox), and what\n// Vite says when the route's stylesheet, loaded before its code, cannot be.\nconst CHUNK_LOAD_MESSAGE =\n /Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|Unable to preload CSS/i\n\nconst isChunkLoadError = (error: unknown) =>\n error instanceof Error && (error.name === 'ChunkLoadError' || CHUNK_LOAD_MESSAGE.test(error.message))\n\n// An admin's callback must not throw out of the handler: vue-router would skip the error listeners\n// after this one, `useRecordPage`'s among them.\nconst safely = (callback: ((error: unknown) => void) | undefined, error: unknown): boolean => {\n try {\n callback?.(error)\n return true\n } catch (callbackError) {\n console.error(callbackError)\n return false\n }\n}\n\n/**\n * For `router.onError`: a navigation that throws -- a guard raising, a route's chunk that does not\n * load -- otherwise only reaches the console, and the click does nothing the user can see.\n *\n * A chunk that does not load is usually an old tab after a deploy: the page is reloaded, at most\n * once per 30 s, and gets the new one. Anything else shows \"the page could not be opened\".\n */\nexport const createNavigationErrorHandler = (router: Router, options: NavigationErrorHandlerOptions = {}) => {\n // Once: a callback that sends the user to an error page would otherwise be called again when that\n // page fails as well.\n let firstNavigationHandled = false\n\n return (error: unknown) => {\n safely(options.onError, error)\n useSentry('router').logError(error instanceof Error ? error : new Error(String(error)))\n\n if (options.reloadOnChunkError !== false && isChunkLoadError(error) && requestAppReload()) return\n\n if (router.currentRoute.value === START_LOCATION) {\n if (options.onFirstNavigationError && !firstNavigationHandled) {\n firstNavigationHandled = true\n // One that throws has not left the loader: the reload or the message below still has to.\n if (safely(options.onFirstNavigationError, error)) return\n }\n if (requestAppReload()) return\n // Nothing but the start-up loader is on screen and the reload was just tried: the message stays.\n useAlerts().showErrorT('common.alert.navigationFailed', -1)\n return\n }\n\n useAlerts().showErrorT('common.alert.navigationFailed')\n }\n}\n"],"mappings":";;;;;AAuBA,IAAMA,IACJ,iJAEIC,KAAoB,MACxBC,aAAiB,UAAUA,EAAM,SAAS,oBAAoBF,EAAmB,KAAKE,EAAM,OAAO,IAI/FC,KAAU,GAAkD,MAA4B;CAC5F,IAAI;EAEF,OADAC,IAAWF,CAAK,GACT;CACT,SAASG,GAAe;EAEtB,OADA,QAAQ,MAAMA,CAAa,GACpB;CACT;AACF,GASaC,KAAgC,GAAgB,IAAyC,CAAC,MAAM;CAG3G,IAAIC,IAAyB;CAE7B,QAAQ,MAAmB;EAIzB,IAHAJ,EAAOK,EAAQ,SAASN,CAAK,GAC7BO,EAAU,QAAQ,CAAC,CAAC,SAASP,aAAiB,QAAQA,IAAY,MAAM,OAAOA,CAAK,CAAC,CAAC,GAElF,IAAQ,uBAAuB,MAASD,EAAiBC,CAAK,KAAKQ,EAAiB,IAExF;OAAIC,EAAO,aAAa,UAAUC,GAAgB;IAMhD,IALIJ,EAAQ,0BAA0B,CAACD,MACrC,IAAyB,IAErBJ,EAAOK,EAAQ,wBAAwBN,CAAK,MAE9CQ,EAAiB,GAAG;IAExB,EAAU,CAAC,CAAC,WAAW,iCAAiC,EAAE;GAE5D,OAEA,EAAU,CAAC,CAAC,WAAW,+BAA+B;EAFtD;CAGF;AACF"}
1
+ {"version":3,"file":"navigationError.js","names":["CHUNK_LOAD_MESSAGE","isChunkLoadError","error","safely","callback","callbackError","createNavigationErrorHandler","firstNavigationHandled","options","useSentry","requestAppReload","router","START_LOCATION"],"sources":["../../../../src/domains/system/composables/navigationError.ts"],"sourcesContent":["import { START_LOCATION, type Router } from 'vue-router'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { useSentry } from '@/domains/system/composables/sentry'\nimport { requestAppReload } from '@/domains/system/systemBar/utils/appReload'\n\nexport interface NavigationErrorHandlerOptions {\n /** Runs first on every failure, e.g. to drop an admin's navigation-pending overlay. */\n onError?: (error: unknown) => void\n /**\n * The very first navigation failed, so only the start-up loader is on screen. Called once per handler.\n * Without it, and after it, the page is reloaded. The message stays up when a reload is not possible.\n */\n onFirstNavigationError?: (error: unknown) => void\n /**\n * `false` for an admin whose page holds work a reload would lose (DAM's running uploads): a chunk that\n * does not load then shows the message instead of reloading. Defaults to `true`.\n */\n reloadOnChunkError?: boolean\n}\n\n// What the browsers say when a route's chunk cannot be fetched (Chromium, Safari, Firefox), and what\n// Vite says when the route's stylesheet, loaded before its code, cannot be.\nconst CHUNK_LOAD_MESSAGE =\n /Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|Unable to preload CSS/i\n\nconst isChunkLoadError = (error: unknown) =>\n error instanceof Error && (error.name === 'ChunkLoadError' || CHUNK_LOAD_MESSAGE.test(error.message))\n\n// An admin's callback must not throw out of the handler: vue-router would skip the error listeners\n// after this one, `useRecordPage`'s among them.\nconst safely = (callback: ((error: unknown) => void) | undefined, error: unknown): boolean => {\n try {\n callback?.(error)\n return true\n } catch (callbackError) {\n console.error(callbackError)\n return false\n }\n}\n\n/**\n * For `router.onError`. A navigation that throws (a guard error,\n * a chunk that does not load) otherwise only reaches the console.\n * A failed chunk is usually an old tab after a deploy: the page reloads, at most once per 30 s.\n * Anything else shows \"the page could not be opened\".\n */\nexport const createNavigationErrorHandler = (router: Router, options: NavigationErrorHandlerOptions = {}) => {\n // Runs once. Otherwise a callback that redirects to an error page runs again when that page fails too.\n let firstNavigationHandled = false\n\n return (error: unknown) => {\n safely(options.onError, error)\n useSentry('router').logError(error instanceof Error ? error : new Error(String(error)))\n\n if (options.reloadOnChunkError !== false && isChunkLoadError(error) && requestAppReload()) return\n\n if (router.currentRoute.value === START_LOCATION) {\n if (options.onFirstNavigationError && !firstNavigationHandled) {\n firstNavigationHandled = true\n // A callback that throws has not cleared the loader. The reload or the message below must still run.\n if (safely(options.onFirstNavigationError, error)) return\n }\n if (requestAppReload()) return\n // Only the start-up loader is on screen and the reload was just tried, so the message stays.\n useAlerts().showErrorT('common.alert.navigationFailed', -1)\n return\n }\n\n useAlerts().showErrorT('common.alert.navigationFailed')\n }\n}\n"],"mappings":";;;;;AAsBA,IAAMA,IACJ,iJAEIC,KAAoB,MACxBC,aAAiB,UAAUA,EAAM,SAAS,oBAAoBF,EAAmB,KAAKE,EAAM,OAAO,IAI/FC,KAAU,GAAkD,MAA4B;CAC5F,IAAI;EAEF,OADAC,IAAWF,CAAK,GACT;CACT,SAASG,GAAe;EAEtB,OADA,QAAQ,MAAMA,CAAa,GACpB;CACT;AACF,GAQaC,KAAgC,GAAgB,IAAyC,CAAC,MAAM;CAE3G,IAAIC,IAAyB;CAE7B,QAAQ,MAAmB;EAIzB,IAHAJ,EAAOK,EAAQ,SAASN,CAAK,GAC7BO,EAAU,QAAQ,CAAC,CAAC,SAASP,aAAiB,QAAQA,IAAY,MAAM,OAAOA,CAAK,CAAC,CAAC,GAElF,IAAQ,uBAAuB,MAASD,EAAiBC,CAAK,KAAKQ,EAAiB,IAExF;OAAIC,EAAO,aAAa,UAAUC,GAAgB;IAMhD,IALIJ,EAAQ,0BAA0B,CAACD,MACrC,IAAyB,IAErBJ,EAAOK,EAAQ,wBAAwBN,CAAK,MAE9CQ,EAAiB,GAAG;IAExB,EAAU,CAAC,CAAC,WAAW,iCAAiC,EAAE;GAE5D,OAEA,EAAU,CAAC,CAAC,WAAW,+BAA+B;EAFtD;CAGF;AACF"}
@@ -1,12 +1,10 @@
1
1
  import { RouteLocationRaw, Router } from 'vue-router';
2
2
  /**
3
- * Follows the user's navigation on `router`: whether one is on its way, and which page is shown.
4
- *
5
- * Register it as the router's first guard. A page that acts after an asynchronous step -- a load, a save, a socket
6
- * event -- asks `onPage()` first (`usePageNavigation`): while the user is navigating, or once the user has left, it
7
- * does nothing. Its redirect would cancel the user's navigation (in production a page's chunk is fetched on its first
8
- * visit), and its message would stay on the page the user went to.
9
- *
3
+ * Tracks the user's navigation on `router`: whether one is pending, and which page is shown.
4
+ * Register it as the router's first guard. A page that acts after an async step
5
+ * (load, save, socket event) checks `onPage()` first via `usePageNavigation`.
6
+ * While the user navigates or after leaving, it does nothing. A redirect would
7
+ * cancel the user's navigation, and a message would stay on the next page.
10
8
  * Returns the unregistration, for tests that create a router each.
11
9
  */
12
10
  export declare function trackNavigation(router: Router): () => void;
@@ -21,8 +19,9 @@ export interface UsePageNavigationReturn {
21
19
  replace: (to: RouteLocationRaw) => Promise<boolean>;
22
20
  }
23
21
  /**
24
- * For a page, or a composable it calls in its setup, that navigates after an asynchronous step: the redirect after a
25
- * save, a create or a delete, a load that forwards. The page is the one shown at setup; a later instance of the same
26
- * path (A, B, A again) is another page. A composable that is handed its router passes it on.
22
+ * For a page, or a composable in its setup, that navigates after
23
+ * an async step, such as a redirect after save, create or delete.
24
+ * The page is the one shown at setup. A later visit to the same path (A, B, A again) is another page.
25
+ * A composable that receives its router passes it on.
27
26
  */
28
27
  export declare function usePageNavigation(router?: Router | undefined): UsePageNavigationReturn;