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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/README.md +1 -1
  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.vue.d.ts +17 -15
  424. package/dist/domains/filters/components/AFilterWrapperSidebar.vue.d.ts +5 -3
  425. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  426. package/dist/domains/filters/components/FiltersSelected.vue_vue_type_script_setup_true_lang.js.map +1 -1
  427. package/dist/domains/filters/composables/filterFactory.d.ts +16 -26
  428. package/dist/domains/filters/composables/filterFactory.js +38 -31
  429. package/dist/domains/filters/composables/filterFactory.js.map +1 -1
  430. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  431. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js +3 -1
  432. package/dist/domains/filters/datatable/components/ADatatableOrdering.vue_vue_type_script_setup_true_lang.js.map +1 -1
  433. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  434. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js +2 -4
  435. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  436. package/dist/domains/filters/utils/filterInjectionKeys.js.map +1 -1
  437. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  438. package/dist/domains/form/components/AFormDatetimePicker.vue.d.ts +7 -5
  439. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  440. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  441. package/dist/domains/form/components/AFormFlagDatetimePicker.vue.d.ts +7 -5
  442. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  443. package/dist/domains/form/components/AFormSwitch.vue.d.ts +7 -5
  444. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  445. package/dist/domains/form/components/AFormTextField.vue.d.ts +9 -7
  446. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  447. package/dist/domains/form/components/AFormTextarea.vue.d.ts +13 -11
  448. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue.d.ts +7 -5
  449. package/dist/domains/form/components/ASystemEntityScope.vue.d.ts +5 -3
  450. package/dist/domains/job/api/jobApi.js.map +1 -1
  451. package/dist/domains/job/components/AJobDetailCommon.vue.d.ts +5 -3
  452. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  453. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  454. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  455. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue.d.ts +2 -3
  456. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  457. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  458. package/dist/domains/listEditor/components/ASortableListEditor.vue.d.ts +2 -3
  459. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  460. package/dist/domains/listEditor/composables/useListEditorController.d.ts +4 -5
  461. package/dist/domains/listEditor/composables/useListEditorController.js.map +1 -1
  462. package/dist/domains/listEditor/composables/useNestedListEditor.d.ts +3 -4
  463. package/dist/domains/listEditor/composables/useNestedListEditor.js.map +1 -1
  464. package/dist/domains/listEditor/composables/useNestedListEditorController.d.ts +5 -4
  465. package/dist/domains/listEditor/composables/useNestedListEditorController.js.map +1 -1
  466. package/dist/domains/listEditor/composables/useReorderMode.js.map +1 -1
  467. package/dist/domains/listEditor/types/listEditorTypes.d.ts +2 -2
  468. package/dist/domains/listEditor/utils/listEditorLoader.d.ts +5 -5
  469. package/dist/domains/listEditor/utils/listEditorLoader.js.map +1 -1
  470. package/dist/domains/listEditor/utils/resolveCompactText.js.map +1 -1
  471. package/dist/domains/log/api/logApi.d.ts +2 -3
  472. package/dist/domains/log/api/logApi.js.map +1 -1
  473. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  474. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  475. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  476. package/dist/domains/log/components/ALogDetailView.vue.d.ts +1 -1
  477. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  478. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  479. package/dist/domains/log/components/ALogFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  480. package/dist/domains/log/components/ALogListView.js.map +1 -1
  481. package/dist/domains/log/components/ALogListView.vue.d.ts +1 -1
  482. package/dist/domains/log/components/ALogListView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  483. package/dist/domains/log/composables/logActions.d.ts +4 -5
  484. package/dist/domains/log/composables/logActions.js.map +1 -1
  485. package/dist/domains/log/composables/logType.d.ts +6 -7
  486. package/dist/domains/log/composables/logType.js.map +1 -1
  487. package/dist/domains/log/filter/logFilter.d.ts +8 -11
  488. package/dist/domains/log/filter/logFilter.js.map +1 -1
  489. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  490. package/dist/domains/permission/components/APermissionEditor.vue.d.ts +4 -4
  491. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  492. package/dist/domains/permission/composables/permissionActions.d.ts +3 -6
  493. package/dist/domains/permission/composables/permissionActions.js.map +1 -1
  494. package/dist/domains/permission/config/api/permissionConfigApi.d.ts +2 -2
  495. package/dist/domains/permission/config/api/permissionConfigApi.js.map +1 -1
  496. package/dist/domains/permission/config/composables/permissionConfigActions.d.ts +3 -7
  497. package/dist/domains/permission/config/composables/permissionConfigActions.js.map +1 -1
  498. package/dist/domains/permission/config/store/permissionConfigStore.d.ts +2 -4
  499. package/dist/domains/permission/config/store/permissionConfigStore.js.map +1 -1
  500. package/dist/domains/permission/group/api/permissionGroupApi.d.ts +8 -10
  501. package/dist/domains/permission/group/api/permissionGroupApi.js.map +1 -1
  502. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  503. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue.d.ts +12 -10
  504. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  505. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  506. package/dist/domains/permission/group/components/APermissionGroupDetail.vue.d.ts +21 -22
  507. package/dist/domains/permission/group/components/APermissionGroupDetail.vue_vue_type_script_setup_true_lang.js.map +1 -1
  508. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  509. package/dist/domains/permission/group/components/APermissionGroupManage.vue.d.ts +21 -22
  510. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  511. package/dist/domains/permission/group/composables/cachedPermissionGroups.js.map +1 -1
  512. package/dist/domains/permission/group/composables/permissionGroupActions.d.ts +6 -8
  513. package/dist/domains/permission/group/composables/permissionGroupActions.js.map +1 -1
  514. package/dist/domains/permission/group/composables/permissionGroupValidations.d.ts +2 -3
  515. package/dist/domains/permission/group/composables/permissionGroupValidations.js.map +1 -1
  516. package/dist/domains/permission/group/filter/permissionGroupFilter.d.ts +2 -3
  517. package/dist/domains/permission/group/filter/permissionGroupFilter.js.map +1 -1
  518. package/dist/domains/permission/group/store/permissionGroupStore.d.ts +3 -6
  519. package/dist/domains/permission/group/store/permissionGroupStore.js.map +1 -1
  520. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  521. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  522. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  523. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  524. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  525. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  526. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue.d.ts +5 -3
  527. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.d.ts +11 -13
  528. package/dist/domains/remoteAutocomplete/composables/createRemoteAutocomplete.js.map +1 -1
  529. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue.d.ts +13 -11
  530. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  531. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  532. package/dist/domains/subjectSelect/composables/useSubjectSelect.js +53 -51
  533. package/dist/domains/subjectSelect/composables/useSubjectSelect.js.map +1 -1
  534. package/dist/domains/system/appShell/components/AActionbar.vue.d.ts +7 -5
  535. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  536. package/dist/domains/system/appShell/components/ALayoutSwitch.vue.d.ts +7 -5
  537. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  538. package/dist/domains/system/appShell/composables/teleportSlot.d.ts +0 -1
  539. package/dist/domains/system/appShell/composables/teleportSlot.js.map +1 -1
  540. package/dist/domains/system/components/AAlerts.js.map +1 -1
  541. package/dist/domains/system/components/AAlerts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  542. package/dist/domains/system/composables/alerts.js.map +1 -1
  543. package/dist/domains/system/composables/breadcrumbs.d.ts +3 -3
  544. package/dist/domains/system/composables/breadcrumbs.js.map +1 -1
  545. package/dist/domains/system/composables/languageSettings.js.map +1 -1
  546. package/dist/domains/system/composables/loginStatus.js.map +1 -1
  547. package/dist/domains/system/composables/navigationError.d.ts +6 -8
  548. package/dist/domains/system/composables/navigationError.js.map +1 -1
  549. package/dist/domains/system/composables/pageNavigation.d.ts +9 -10
  550. package/dist/domains/system/composables/pageNavigation.js.map +1 -1
  551. package/dist/domains/system/composables/recordActions.d.ts +14 -22
  552. package/dist/domains/system/composables/recordActions.js.map +1 -1
  553. package/dist/domains/system/composables/recordPage.d.ts +23 -38
  554. package/dist/domains/system/composables/recordPage.js.map +1 -1
  555. package/dist/domains/system/composables/routeHistory.d.ts +4 -5
  556. package/dist/domains/system/composables/routeHistory.js.map +1 -1
  557. package/dist/domains/system/composables/sentry.js.map +1 -1
  558. package/dist/domains/system/composables/useDebugFeatures.d.ts +3 -6
  559. package/dist/domains/system/composables/useDebugFeatures.js.map +1 -1
  560. package/dist/domains/system/store/datatablePageStore.d.ts +8 -1
  561. package/dist/domains/system/store/datatablePageStore.js +10 -3
  562. package/dist/domains/system/store/datatablePageStore.js.map +1 -1
  563. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  564. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  565. package/dist/domains/system/systemBar/utils/appReload.d.ts +5 -5
  566. package/dist/domains/system/systemBar/utils/appReload.js.map +1 -1
  567. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  568. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue.d.ts +2 -3
  569. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.vue_vue_type_script_setup_true_lang.js.map +1 -1
  570. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  571. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  572. package/dist/domains/ui/buttons/components/ABtnSplit.vue.d.ts +9 -7
  573. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  574. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  575. package/dist/domains/ui/components/ACard.js.map +1 -1
  576. package/dist/domains/ui/components/ACard.vue.d.ts +7 -3
  577. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js +6 -2
  578. package/dist/domains/ui/components/ACard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  579. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  580. package/dist/domains/ui/components/ACardLoader.vue.d.ts +1 -0
  581. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js +13 -7
  582. package/dist/domains/ui/components/ACardLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  583. package/dist/domains/ui/components/AChipNoLink.vue.d.ts +5 -3
  584. package/dist/domains/ui/components/ACopyText.vue.d.ts +9 -7
  585. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  586. package/dist/domains/ui/components/ACreateDialog.vue.d.ts +11 -9
  587. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  588. package/dist/domains/ui/components/ADialogToolbar.vue.d.ts +5 -3
  589. package/dist/domains/ui/components/ARow.vue.d.ts +5 -3
  590. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  591. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  592. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  593. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue.d.ts +3 -5
  594. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  595. package/dist/domains/ui/datetime/components/ADatetimePicker.js +1 -1
  596. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  597. package/dist/domains/ui/datetime/components/ADatetimePicker.vue.d.ts +5 -3
  598. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  599. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  600. package/dist/domains/ui/file/components/AFileDropzone.vue.d.ts +1 -1
  601. package/dist/domains/ui/file/components/AFileDropzone.vue_vue_type_script_setup_true_lang.js.map +1 -1
  602. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  603. package/dist/domains/ui/file/components/AFileInput.vue.d.ts +9 -7
  604. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  605. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  606. package/dist/domains/ui/file/components/AFileInputDialog.vue.d.ts +9 -7
  607. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  608. package/dist/domains/ui/file/composables/dropzone.js.map +1 -1
  609. package/dist/domains/ui/file/composables/formatAndSizeCheck.js.map +1 -1
  610. package/dist/domains/ui/view/components/AGenericView.vue.d.ts +7 -5
  611. package/dist/domains/ui/view/components/ALoginView.js +1 -1
  612. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  613. package/dist/domains/ui/view/components/ALoginView.vue.d.ts +5 -3
  614. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  615. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  616. package/dist/domains/ui/view/components/ALogoutView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  617. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  618. package/dist/domains/ui/view/components/ANotFoundView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  619. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.d.ts +6 -7
  620. package/dist/domains/unsavedGuard/composables/useUnsavedChangesGuard.js.map +1 -1
  621. package/dist/lib.d.ts +2 -2
  622. package/dist/plugins/commonVuetifyConfig.d.ts +3 -3
  623. package/dist/plugins/commonVuetifyConfig.js.map +1 -1
  624. package/dist/plugins/i18n.d.ts +4 -5
  625. package/dist/plugins/i18n.js.map +1 -1
  626. package/dist/plugins/pluginOptions.d.ts +4 -2
  627. package/dist/plugins/pluginOptions.js.map +1 -1
  628. package/dist/plugins/webfontloader.js.map +1 -1
  629. package/dist/shared/error/AnzuApiCancelledError.d.ts +5 -8
  630. package/dist/shared/error/AnzuApiCancelledError.js.map +1 -1
  631. package/dist/shared/error/AnzuError.d.ts +3 -5
  632. package/dist/shared/error/AnzuError.js.map +1 -1
  633. package/dist/shared/error/AuthUnavailableError.d.ts +3 -3
  634. package/dist/shared/error/AuthUnavailableError.js.map +1 -1
  635. package/dist/shared/error/isInCauseChain.d.ts +2 -2
  636. package/dist/shared/error/isInCauseChain.js.map +1 -1
  637. package/dist/shared/types/UserAndTimeTracking.d.ts +5 -5
  638. package/dist/shared/types/Validation.d.ts +4 -5
  639. package/dist/shared/types/common.d.ts +1 -3
  640. package/dist/shared/types/globalComponents.d.ts +5 -6
  641. package/dist/shared/utils/common.js.map +1 -1
  642. package/dist/shared/utils/datetime.d.ts +0 -1
  643. package/dist/shared/utils/datetime.js.map +1 -1
  644. package/dist/shared/utils/datetimePickerValue.d.ts +4 -7
  645. package/dist/shared/utils/datetimePickerValue.js.map +1 -1
  646. package/dist/shared/utils/development.d.ts +3 -3
  647. package/dist/shared/utils/development.js.map +1 -1
  648. package/dist/shared/utils/envConfig.d.ts +4 -4
  649. package/dist/shared/utils/envConfig.js.map +1 -1
  650. package/dist/shared/utils/json.d.ts +1 -1
  651. package/dist/shared/utils/json.js.map +1 -1
  652. package/dist/shared/utils/userAndTimeTracking.d.ts +5 -7
  653. package/dist/shared/utils/userAndTimeTracking.js.map +1 -1
  654. package/dist/shared/validators/vuelidate/common/useValidateHexColor.d.ts +3 -5
  655. package/dist/shared/validators/vuelidate/common/useValidateHexColor.js.map +1 -1
  656. package/dist/testing/appShell.d.ts +11 -11
  657. package/dist/testing/appShell.js.map +1 -1
  658. package/dist/testing/closeButtons.d.ts +9 -11
  659. package/dist/testing/closeButtons.js.map +1 -1
  660. package/dist/testing/declaredDependencies.d.ts +7 -7
  661. package/dist/testing/declaredDependencies.js.map +1 -1
  662. package/dist/testing/generatedRoutes.d.ts +6 -11
  663. package/dist/testing/generatedRoutes.js.map +1 -1
  664. package/dist/testing/routeHistory.d.ts +5 -12
  665. package/dist/testing/routeHistory.js.map +1 -1
  666. package/dist/testing/sortableLists.d.ts +16 -21
  667. package/dist/testing/sortableLists.js.map +1 -1
  668. package/dist/testing/typedRouter.d.ts +0 -1
  669. package/dist/testing/typedRouter.js.map +1 -1
  670. package/package.json +26 -26
  671. package/src/eslint/adminConfig.mjs +19 -27
  672. package/src/eslint/globalComponentNames.mjs +3 -4
  673. package/src/eslint/oxlint.mjs +7 -20
  674. package/src/eslint/plugin.d.mts +2 -4
  675. package/src/eslint/plugin.mjs +18 -34
  676. package/src/eslint/validRouteName.mjs +6 -7
  677. package/src/vite/devWatch.mjs +30 -43
  678. package/src/vite/index.d.mts +5 -5
  679. package/src/vite/sentry.mjs +7 -12
  680. package/src/vite/sourcemaps.mjs +4 -8
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterTimeInterval.js","names":["_sfc_main","_plugin_vue_export_helper_default","AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","AFilterTimeInterval_default"],"sources":["../../../../src/domains/filters/components/AFilterTimeInterval.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref, watch } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n TimeIntervalSpecialOptions,\n type TimeIntervalToolsValue,\n useFilterTimeIntervalValidators,\n useTimeIntervalOptions,\n} from '@/domains/filters/composables/filterTimeIntervalTools'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AFormDatetimePicker from '@/domains/form/components/AFormDatetimePicker.vue'\nimport type { DatetimeUTCNullable } from '@/shared/types/common'\nimport ARow from '@/domains/ui/components/ARow.vue'\nimport { dateTimeNow, dateTimePretty, isDatetimeUTC } from '@/shared/utils/datetime'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nconst props = withDefaults(\n defineProps<{\n nameFrom: string\n nameUntil: string\n allowed?: TimeIntervalToolsValue[]\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n allowed: undefined,\n placeholder: undefined,\n dataCy: 'filter-time-interval',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameUntil]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameUntil])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.nameFrom]\n },\n set(newValue) {\n filterData[props.nameFrom] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n nextTick(() => {\n emit('change')\n })\n },\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { timeIntervalOptions, getTimeIntervalOption } = useTimeIntervalOptions(props.allowed)\nconst modelInternal = ref<TimeIntervalToolsValue>(null)\nconst dialogCustom = ref(false)\nconst dialogData = ref<{ from: DatetimeUTCNullable; until: DatetimeUTCNullable }>({\n from: null,\n until: dateTimeNow(),\n})\nconst displayFromTo = ref(false)\n\nconst { v$ } = useFilterTimeIntervalValidators(dialogData)\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.nameFrom]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\nconst { showValidationError } = useAlerts()\n\nconst onClear = () => {\n clearField()\n // Clearing means \"back to the default\", which is not always \"everything\" - a pair with an\n // absolute default keeps its window. Since the value then does not change, neither watcher runs,\n // so the display and the chip are re-derived here. Showing \"everything\" while the query still\n // carries the old window would make the control lie about what the list contains.\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n}\n\nconst onDialogConfirm = () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n displayFromTo.value = true\n dialogCustom.value = false\n filterData[props.nameUntil] = dialogData.value.until\n modelValue.value = dialogData.value.from\n}\n\ndefineExpose({ onClear })\n\nconst onDialogClose = () => {\n dialogCustom.value = false\n modelInternal.value = null\n}\n\nconst clearField = () => {\n clearOne(props.nameFrom, filterData, filterConfig)\n clearOne(props.nameUntil, filterData, filterConfig)\n filterSelected.value.delete(props.nameFrom)\n}\n\nconst updateSelected = (fromValue: AllowedFilterValues) => {\n if (isArray(fromValue) || isBoolean(fromValue)) return\n if (isNull(fromValue) || isUndefined(fromValue)) {\n filterSelected.value.delete(props.nameFrom)\n return\n }\n const found = getTimeIntervalOption(fromValue as TimeIntervalToolsValue)\n if (!found && isDatetimeUTC(fromValue)) {\n const customOption = getTimeIntervalOption(TimeIntervalSpecialOptions.Custom)!\n filterSelected.value.set(props.nameFrom, [\n {\n title:\n customOption.title +\n ': ' +\n dateTimePretty(dialogData.value.from) +\n ' - ' +\n dateTimePretty(dialogData.value.until),\n value: fromValue,\n },\n ])\n return\n }\n if (!found) return\n filterSelected.value.set(props.nameFrom, [{ title: found.title, value: fromValue }])\n}\n\nconst onEditInterval = (clear = false) => {\n v$.value.$reset()\n if (clear) {\n dialogData.value.from = null\n dialogData.value.until = dateTimeNow()\n }\n dialogCustom.value = true\n}\n\n/** What the control shows is derived from the value, never assumed. */\nconst syncDisplayToValue = (newValue: AllowedFilterValues) => {\n if (isArray(newValue) || isBoolean(newValue)) return\n displayFromTo.value = false\n if (isUndefined(newValue) || isNull(newValue)) {\n modelInternal.value = null\n return\n }\n const found = getTimeIntervalOption(newValue as TimeIntervalToolsValue)\n const filterDataUntil = filterData[props.nameUntil]\n if (!found && isDatetimeUTC(newValue) && isDatetimeUTC(filterDataUntil)) {\n modelInternal.value = TimeIntervalSpecialOptions.Custom\n dialogData.value.from = newValue\n dialogData.value.until = filterDataUntil\n displayFromTo.value = true\n }\n if (found) {\n modelInternal.value = found.value\n }\n}\n\nwatch(modelValue, syncDisplayToValue, { immediate: true })\n\n// Reset clears every field back to its default and wipes the chips. For a pair whose default is\n// null that is the whole story, but an absolute default survives the reset - the value does not\n// change, so no watcher runs, and the control would keep showing a range with no chip beside it.\n// The wrapper bumps this counter after clearing, which is the one signal that a reset happened.\nwatch(submitResetCounter, () => {\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n})\n\nwatch(\n [() => filterData[props.nameFrom], () => filterData[props.nameUntil]],\n ([fromNewValue, untilNewValue], [fromOldValue, untilOldValue]) => {\n if (fromNewValue === fromOldValue && untilNewValue === untilOldValue) return\n updateSelected(fromNewValue)\n },\n { immediate: true }\n)\n\nconst onInternalItemChange = (item: ValueObjectOption<TimeIntervalToolsValue>) => {\n if (item.value === TimeIntervalSpecialOptions.Custom) {\n onEditInterval(true)\n return\n }\n filterData[props.nameUntil] = null\n modelValue.value = item.value\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"displayFromTo\"\n :label=\"label\"\n :model-value=\"dateTimePretty(dialogData.from) + ' - ' + dateTimePretty(dialogData.until)\"\n readonly\n rows=\"1\"\n auto-grow\n hide-details\n append-inner-icon=\"mdi-menu-down\"\n clearable\n class=\"cursor-pointer\"\n @click:clear.stop=\"onClear\"\n @click.stop=\"onEditInterval()\"\n />\n <VSelect\n v-else\n v-model=\"modelInternal\"\n item-title=\"title\"\n item-value=\"value\"\n :label=\"label\"\n :clearable=\"!isNull(modelInternal)\"\n no-filter\n :data-cy=\"dataCy\"\n :items=\"timeIntervalOptions\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"onClear\"\n >\n <template #item=\"{ props: itemProps, internalItem }\">\n <VListItem\n v-bind=\"itemProps\"\n @click=\"onInternalItemChange(internalItem)\"\n />\n </template>\n </VSelect>\n <VDialog\n v-if=\"dialogCustom\"\n :model-value=\"true\"\n width=\"auto\"\n :min-width=\"360\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"onDialogClose\">\n <slot name=\"title\">\n {{ label }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.from\"\n :v=\"v$.dialogData.from\"\n :label=\"t('common.filter.timeInterval.from')\"\n required\n />\n </ARow>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.until\"\n :v=\"v$.dialogData.until\"\n :label=\"t('common.filter.timeInterval.until')\"\n required\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-cancel\"\n @click.stop=\"onDialogClose\"\n >\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <ABtnPrimary\n data-cy=\"button-confirm\"\n @click.stop=\"onDialogConfirm\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.v-text-field.cursor-pointer {\n ::v-deep(.v-field),\n ::v-deep(.v-field__input) {\n cursor: pointer;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterTimeInterval.js","names":["_sfc_main","_plugin_vue_export_helper_default","AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","AFilterTimeInterval_default"],"sources":["../../../../src/domains/filters/components/AFilterTimeInterval.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref, watch } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n TimeIntervalSpecialOptions,\n type TimeIntervalToolsValue,\n useFilterTimeIntervalValidators,\n useTimeIntervalOptions,\n} from '@/domains/filters/composables/filterTimeIntervalTools'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AFormDatetimePicker from '@/domains/form/components/AFormDatetimePicker.vue'\nimport type { DatetimeUTCNullable } from '@/shared/types/common'\nimport ARow from '@/domains/ui/components/ARow.vue'\nimport { dateTimeNow, dateTimePretty, isDatetimeUTC } from '@/shared/utils/datetime'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nconst props = withDefaults(\n defineProps<{\n nameFrom: string\n nameUntil: string\n allowed?: TimeIntervalToolsValue[]\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n allowed: undefined,\n placeholder: undefined,\n dataCy: 'filter-time-interval',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameUntil]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameUntil])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.nameFrom]\n },\n set(newValue) {\n filterData[props.nameFrom] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n nextTick(() => {\n emit('change')\n })\n },\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { timeIntervalOptions, getTimeIntervalOption } = useTimeIntervalOptions(props.allowed)\nconst modelInternal = ref<TimeIntervalToolsValue>(null)\nconst dialogCustom = ref(false)\nconst dialogData = ref<{ from: DatetimeUTCNullable; until: DatetimeUTCNullable }>({\n from: null,\n until: dateTimeNow(),\n})\nconst displayFromTo = ref(false)\n\nconst { v$ } = useFilterTimeIntervalValidators(dialogData)\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.nameFrom]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\nconst { showValidationError } = useAlerts()\n\nconst onClear = () => {\n clearField()\n // Clearing restores the default, and an absolute default keeps\n // its window. The value does not change, so no watcher runs.\n // Re-derive the display and the chip here, or the control shows \"everything\" while the query still has the window.\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n}\n\nconst onDialogConfirm = () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n displayFromTo.value = true\n dialogCustom.value = false\n filterData[props.nameUntil] = dialogData.value.until\n modelValue.value = dialogData.value.from\n}\n\ndefineExpose({ onClear })\n\nconst onDialogClose = () => {\n dialogCustom.value = false\n modelInternal.value = null\n}\n\nconst clearField = () => {\n clearOne(props.nameFrom, filterData, filterConfig)\n clearOne(props.nameUntil, filterData, filterConfig)\n filterSelected.value.delete(props.nameFrom)\n}\n\nconst updateSelected = (fromValue: AllowedFilterValues) => {\n if (isArray(fromValue) || isBoolean(fromValue)) return\n if (isNull(fromValue) || isUndefined(fromValue)) {\n filterSelected.value.delete(props.nameFrom)\n return\n }\n const found = getTimeIntervalOption(fromValue as TimeIntervalToolsValue)\n if (!found && isDatetimeUTC(fromValue)) {\n const customOption = getTimeIntervalOption(TimeIntervalSpecialOptions.Custom)!\n filterSelected.value.set(props.nameFrom, [\n {\n title:\n customOption.title +\n ': ' +\n dateTimePretty(dialogData.value.from) +\n ' - ' +\n dateTimePretty(dialogData.value.until),\n value: fromValue,\n },\n ])\n return\n }\n if (!found) return\n filterSelected.value.set(props.nameFrom, [{ title: found.title, value: fromValue }])\n}\n\nconst onEditInterval = (clear = false) => {\n v$.value.$reset()\n if (clear) {\n dialogData.value.from = null\n dialogData.value.until = dateTimeNow()\n }\n dialogCustom.value = true\n}\n\n/** What the control shows is derived from the value, never assumed. */\nconst syncDisplayToValue = (newValue: AllowedFilterValues) => {\n if (isArray(newValue) || isBoolean(newValue)) return\n displayFromTo.value = false\n if (isUndefined(newValue) || isNull(newValue)) {\n modelInternal.value = null\n return\n }\n const found = getTimeIntervalOption(newValue as TimeIntervalToolsValue)\n const filterDataUntil = filterData[props.nameUntil]\n if (!found && isDatetimeUTC(newValue) && isDatetimeUTC(filterDataUntil)) {\n modelInternal.value = TimeIntervalSpecialOptions.Custom\n dialogData.value.from = newValue\n dialogData.value.until = filterDataUntil\n displayFromTo.value = true\n }\n if (found) {\n modelInternal.value = found.value\n }\n}\n\nwatch(modelValue, syncDisplayToValue, { immediate: true })\n\n// Reset restores defaults and wipes chips. For an absolute default the value\n// does not change, so no watcher runs and the range would show without a chip.\n// The wrapper bumps this counter after clearing. It is the only signal that a reset happened.\nwatch(submitResetCounter, () => {\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n})\n\nwatch(\n [() => filterData[props.nameFrom], () => filterData[props.nameUntil]],\n ([fromNewValue, untilNewValue], [fromOldValue, untilOldValue]) => {\n if (fromNewValue === fromOldValue && untilNewValue === untilOldValue) return\n updateSelected(fromNewValue)\n },\n { immediate: true }\n)\n\nconst onInternalItemChange = (item: ValueObjectOption<TimeIntervalToolsValue>) => {\n if (item.value === TimeIntervalSpecialOptions.Custom) {\n onEditInterval(true)\n return\n }\n filterData[props.nameUntil] = null\n modelValue.value = item.value\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"displayFromTo\"\n :label=\"label\"\n :model-value=\"dateTimePretty(dialogData.from) + ' - ' + dateTimePretty(dialogData.until)\"\n readonly\n rows=\"1\"\n auto-grow\n hide-details\n append-inner-icon=\"mdi-menu-down\"\n clearable\n class=\"cursor-pointer\"\n @click:clear.stop=\"onClear\"\n @click.stop=\"onEditInterval()\"\n />\n <VSelect\n v-else\n v-model=\"modelInternal\"\n item-title=\"title\"\n item-value=\"value\"\n :label=\"label\"\n :clearable=\"!isNull(modelInternal)\"\n no-filter\n :data-cy=\"dataCy\"\n :items=\"timeIntervalOptions\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"onClear\"\n >\n <template #item=\"{ props: itemProps, internalItem }\">\n <VListItem\n v-bind=\"itemProps\"\n @click=\"onInternalItemChange(internalItem)\"\n />\n </template>\n </VSelect>\n <VDialog\n v-if=\"dialogCustom\"\n :model-value=\"true\"\n width=\"auto\"\n :min-width=\"360\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"onDialogClose\">\n <slot name=\"title\">\n {{ label }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.from\"\n :v=\"v$.dialogData.from\"\n :label=\"t('common.filter.timeInterval.from')\"\n required\n />\n </ARow>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.until\"\n :v=\"v$.dialogData.until\"\n :label=\"t('common.filter.timeInterval.until')\"\n required\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-cancel\"\n @click.stop=\"onDialogClose\"\n >\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <ABtnPrimary\n data-cy=\"button-confirm\"\n @click.stop=\"onDialogConfirm\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.v-text-field.cursor-pointer {\n ::v-deep(.v-field),\n ::v-deep(.v-field__input) {\n cursor: pointer;\n }\n}\n</style>\n"],"mappings":""}
@@ -6,10 +6,12 @@ type __VLS_Props = {
6
6
  placeholder?: string | undefined;
7
7
  dataCy?: string;
8
8
  };
9
- declare var __VLS_45: {};
10
- type __VLS_Slots = {} & {
11
- title?: (props: typeof __VLS_45) => any;
9
+ declare const __VLS_template: () => {
10
+ __VLS_Slots: {
11
+ title?: (props: {}) => any;
12
+ };
12
13
  };
14
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
13
15
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
14
16
  onClear: () => void;
15
17
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","_component_VTextarea","_unref","_withModifiers","_component_VSelect","_withCtx","_createVNode","_component_VListItem","_mergeProps","_component_VDialog","_component_VCard","ADialogToolbar","_renderSlot","_createTextVNode","_toDisplayString","_component_VCardText","ARow","AFormDatetimePicker","_component_VCardActions","_component_VSpacer","_createCommentVNode","ARow_default","ADialogToolbar_default","AFormDatetimePicker_default","AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","isUndefined","modelValue","computed","newValue","updateSelected","nextTick","useTimeIntervalOptions","modelInternal","ref","dialogCustom","dialogData","dateTimeNow","displayFromTo","useFilterTimeIntervalValidators","filterConfigCurrent","useI18n","label","t","useFilterClearHelpers","useAlerts","onClear","clearField","syncDisplayToValue","onDialogConfirm","v$","showValidationError","onDialogClose","clearOne","isArray","fromValue","isBoolean","isNull","found","getTimeIntervalOption","isDatetimeUTC","customOption","TimeIntervalSpecialOptions","dateTimePretty","onEditInterval","clear","filterDataUntil","watch","fromNewValue","untilNewValue","fromOldValue","untilOldValue","onInternalItemChange","item","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createElementBlock","Fragment","createBlock","VTextarea","unref","withModifiers","_cache","VSelect","$event","timeIntervalOptions","withCtx","itemProps","createVNode","VListItem","mergeProps","internalItem","VDialog","VCard","renderSlot","_ctx","createTextVNode","toDisplayString","VCardText","VCardActions","VSpacer","createCommentVNode"],"sources":["../../../../src/domains/filters/components/AFilterTimeInterval.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref, watch } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n TimeIntervalSpecialOptions,\n type TimeIntervalToolsValue,\n useFilterTimeIntervalValidators,\n useTimeIntervalOptions,\n} from '@/domains/filters/composables/filterTimeIntervalTools'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AFormDatetimePicker from '@/domains/form/components/AFormDatetimePicker.vue'\nimport type { DatetimeUTCNullable } from '@/shared/types/common'\nimport ARow from '@/domains/ui/components/ARow.vue'\nimport { dateTimeNow, dateTimePretty, isDatetimeUTC } from '@/shared/utils/datetime'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nconst props = withDefaults(\n defineProps<{\n nameFrom: string\n nameUntil: string\n allowed?: TimeIntervalToolsValue[]\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n allowed: undefined,\n placeholder: undefined,\n dataCy: 'filter-time-interval',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameUntil]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameUntil])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.nameFrom]\n },\n set(newValue) {\n filterData[props.nameFrom] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n nextTick(() => {\n emit('change')\n })\n },\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { timeIntervalOptions, getTimeIntervalOption } = useTimeIntervalOptions(props.allowed)\nconst modelInternal = ref<TimeIntervalToolsValue>(null)\nconst dialogCustom = ref(false)\nconst dialogData = ref<{ from: DatetimeUTCNullable; until: DatetimeUTCNullable }>({\n from: null,\n until: dateTimeNow(),\n})\nconst displayFromTo = ref(false)\n\nconst { v$ } = useFilterTimeIntervalValidators(dialogData)\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.nameFrom]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\nconst { showValidationError } = useAlerts()\n\nconst onClear = () => {\n clearField()\n // Clearing means \"back to the default\", which is not always \"everything\" - a pair with an\n // absolute default keeps its window. Since the value then does not change, neither watcher runs,\n // so the display and the chip are re-derived here. Showing \"everything\" while the query still\n // carries the old window would make the control lie about what the list contains.\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n}\n\nconst onDialogConfirm = () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n displayFromTo.value = true\n dialogCustom.value = false\n filterData[props.nameUntil] = dialogData.value.until\n modelValue.value = dialogData.value.from\n}\n\ndefineExpose({ onClear })\n\nconst onDialogClose = () => {\n dialogCustom.value = false\n modelInternal.value = null\n}\n\nconst clearField = () => {\n clearOne(props.nameFrom, filterData, filterConfig)\n clearOne(props.nameUntil, filterData, filterConfig)\n filterSelected.value.delete(props.nameFrom)\n}\n\nconst updateSelected = (fromValue: AllowedFilterValues) => {\n if (isArray(fromValue) || isBoolean(fromValue)) return\n if (isNull(fromValue) || isUndefined(fromValue)) {\n filterSelected.value.delete(props.nameFrom)\n return\n }\n const found = getTimeIntervalOption(fromValue as TimeIntervalToolsValue)\n if (!found && isDatetimeUTC(fromValue)) {\n const customOption = getTimeIntervalOption(TimeIntervalSpecialOptions.Custom)!\n filterSelected.value.set(props.nameFrom, [\n {\n title:\n customOption.title +\n ': ' +\n dateTimePretty(dialogData.value.from) +\n ' - ' +\n dateTimePretty(dialogData.value.until),\n value: fromValue,\n },\n ])\n return\n }\n if (!found) return\n filterSelected.value.set(props.nameFrom, [{ title: found.title, value: fromValue }])\n}\n\nconst onEditInterval = (clear = false) => {\n v$.value.$reset()\n if (clear) {\n dialogData.value.from = null\n dialogData.value.until = dateTimeNow()\n }\n dialogCustom.value = true\n}\n\n/** What the control shows is derived from the value, never assumed. */\nconst syncDisplayToValue = (newValue: AllowedFilterValues) => {\n if (isArray(newValue) || isBoolean(newValue)) return\n displayFromTo.value = false\n if (isUndefined(newValue) || isNull(newValue)) {\n modelInternal.value = null\n return\n }\n const found = getTimeIntervalOption(newValue as TimeIntervalToolsValue)\n const filterDataUntil = filterData[props.nameUntil]\n if (!found && isDatetimeUTC(newValue) && isDatetimeUTC(filterDataUntil)) {\n modelInternal.value = TimeIntervalSpecialOptions.Custom\n dialogData.value.from = newValue\n dialogData.value.until = filterDataUntil\n displayFromTo.value = true\n }\n if (found) {\n modelInternal.value = found.value\n }\n}\n\nwatch(modelValue, syncDisplayToValue, { immediate: true })\n\n// Reset clears every field back to its default and wipes the chips. For a pair whose default is\n// null that is the whole story, but an absolute default survives the reset - the value does not\n// change, so no watcher runs, and the control would keep showing a range with no chip beside it.\n// The wrapper bumps this counter after clearing, which is the one signal that a reset happened.\nwatch(submitResetCounter, () => {\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n})\n\nwatch(\n [() => filterData[props.nameFrom], () => filterData[props.nameUntil]],\n ([fromNewValue, untilNewValue], [fromOldValue, untilOldValue]) => {\n if (fromNewValue === fromOldValue && untilNewValue === untilOldValue) return\n updateSelected(fromNewValue)\n },\n { immediate: true }\n)\n\nconst onInternalItemChange = (item: ValueObjectOption<TimeIntervalToolsValue>) => {\n if (item.value === TimeIntervalSpecialOptions.Custom) {\n onEditInterval(true)\n return\n }\n filterData[props.nameUntil] = null\n modelValue.value = item.value\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"displayFromTo\"\n :label=\"label\"\n :model-value=\"dateTimePretty(dialogData.from) + ' - ' + dateTimePretty(dialogData.until)\"\n readonly\n rows=\"1\"\n auto-grow\n hide-details\n append-inner-icon=\"mdi-menu-down\"\n clearable\n class=\"cursor-pointer\"\n @click:clear.stop=\"onClear\"\n @click.stop=\"onEditInterval()\"\n />\n <VSelect\n v-else\n v-model=\"modelInternal\"\n item-title=\"title\"\n item-value=\"value\"\n :label=\"label\"\n :clearable=\"!isNull(modelInternal)\"\n no-filter\n :data-cy=\"dataCy\"\n :items=\"timeIntervalOptions\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"onClear\"\n >\n <template #item=\"{ props: itemProps, internalItem }\">\n <VListItem\n v-bind=\"itemProps\"\n @click=\"onInternalItemChange(internalItem)\"\n />\n </template>\n </VSelect>\n <VDialog\n v-if=\"dialogCustom\"\n :model-value=\"true\"\n width=\"auto\"\n :min-width=\"360\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"onDialogClose\">\n <slot name=\"title\">\n {{ label }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.from\"\n :v=\"v$.dialogData.from\"\n :label=\"t('common.filter.timeInterval.from')\"\n required\n />\n </ARow>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.until\"\n :v=\"v$.dialogData.until\"\n :label=\"t('common.filter.timeInterval.until')\"\n required\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-cancel\"\n @click.stop=\"onDialogClose\"\n >\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <ABtnPrimary\n data-cy=\"button-confirm\"\n @click.stop=\"onDialogConfirm\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.v-text-field.cursor-pointer {\n ::v-deep(.v-field),\n ::v-deep(.v-field__input) {\n cursor: pointer;\n }\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js","names":["_resolveComponent","_openBlock","_createElementBlock","_Fragment","_createBlock","_component_VTextarea","_unref","_withModifiers","_component_VSelect","_withCtx","_createVNode","_component_VListItem","_mergeProps","_component_VDialog","_component_VCard","ADialogToolbar","_renderSlot","_createTextVNode","_toDisplayString","_component_VCardText","ARow","AFormDatetimePicker","_component_VCardActions","_component_VSpacer","_createCommentVNode","ARow_default","ADialogToolbar_default","AFormDatetimePicker_default","AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","isUndefined","modelValue","computed","newValue","updateSelected","nextTick","useTimeIntervalOptions","modelInternal","ref","dialogCustom","dialogData","dateTimeNow","displayFromTo","useFilterTimeIntervalValidators","filterConfigCurrent","useI18n","label","t","useFilterClearHelpers","useAlerts","onClear","clearField","syncDisplayToValue","onDialogConfirm","v$","showValidationError","onDialogClose","clearOne","isArray","fromValue","isBoolean","isNull","found","getTimeIntervalOption","isDatetimeUTC","customOption","TimeIntervalSpecialOptions","dateTimePretty","onEditInterval","clear","filterDataUntil","watch","fromNewValue","untilNewValue","fromOldValue","untilOldValue","onInternalItemChange","item","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createElementBlock","Fragment","createBlock","VTextarea","unref","withModifiers","_cache","VSelect","$event","timeIntervalOptions","withCtx","itemProps","createVNode","VListItem","mergeProps","internalItem","VDialog","VCard","renderSlot","_ctx","createTextVNode","toDisplayString","VCardText","VCardActions","VSpacer","createCommentVNode"],"sources":["../../../../src/domains/filters/components/AFilterTimeInterval.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref, watch } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n TimeIntervalSpecialOptions,\n type TimeIntervalToolsValue,\n useFilterTimeIntervalValidators,\n useTimeIntervalOptions,\n} from '@/domains/filters/composables/filterTimeIntervalTools'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AFormDatetimePicker from '@/domains/form/components/AFormDatetimePicker.vue'\nimport type { DatetimeUTCNullable } from '@/shared/types/common'\nimport ARow from '@/domains/ui/components/ARow.vue'\nimport { dateTimeNow, dateTimePretty, isDatetimeUTC } from '@/shared/utils/datetime'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\n\nconst props = withDefaults(\n defineProps<{\n nameFrom: string\n nameUntil: string\n allowed?: TimeIntervalToolsValue[]\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n allowed: undefined,\n placeholder: undefined,\n dataCy: 'filter-time-interval',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.nameUntil]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameFrom]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.nameUntil])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.nameFrom]\n },\n set(newValue) {\n filterData[props.nameFrom] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n nextTick(() => {\n emit('change')\n })\n },\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { timeIntervalOptions, getTimeIntervalOption } = useTimeIntervalOptions(props.allowed)\nconst modelInternal = ref<TimeIntervalToolsValue>(null)\nconst dialogCustom = ref(false)\nconst dialogData = ref<{ from: DatetimeUTCNullable; until: DatetimeUTCNullable }>({\n from: null,\n until: dateTimeNow(),\n})\nconst displayFromTo = ref(false)\n\nconst { v$ } = useFilterTimeIntervalValidators(dialogData)\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.nameFrom]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\nconst { showValidationError } = useAlerts()\n\nconst onClear = () => {\n clearField()\n // Clearing restores the default, and an absolute default keeps\n // its window. The value does not change, so no watcher runs.\n // Re-derive the display and the chip here, or the control shows \"everything\" while the query still has the window.\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n}\n\nconst onDialogConfirm = () => {\n v$.value.$touch()\n if (v$.value.$invalid) {\n showValidationError()\n return\n }\n displayFromTo.value = true\n dialogCustom.value = false\n filterData[props.nameUntil] = dialogData.value.until\n modelValue.value = dialogData.value.from\n}\n\ndefineExpose({ onClear })\n\nconst onDialogClose = () => {\n dialogCustom.value = false\n modelInternal.value = null\n}\n\nconst clearField = () => {\n clearOne(props.nameFrom, filterData, filterConfig)\n clearOne(props.nameUntil, filterData, filterConfig)\n filterSelected.value.delete(props.nameFrom)\n}\n\nconst updateSelected = (fromValue: AllowedFilterValues) => {\n if (isArray(fromValue) || isBoolean(fromValue)) return\n if (isNull(fromValue) || isUndefined(fromValue)) {\n filterSelected.value.delete(props.nameFrom)\n return\n }\n const found = getTimeIntervalOption(fromValue as TimeIntervalToolsValue)\n if (!found && isDatetimeUTC(fromValue)) {\n const customOption = getTimeIntervalOption(TimeIntervalSpecialOptions.Custom)!\n filterSelected.value.set(props.nameFrom, [\n {\n title:\n customOption.title +\n ': ' +\n dateTimePretty(dialogData.value.from) +\n ' - ' +\n dateTimePretty(dialogData.value.until),\n value: fromValue,\n },\n ])\n return\n }\n if (!found) return\n filterSelected.value.set(props.nameFrom, [{ title: found.title, value: fromValue }])\n}\n\nconst onEditInterval = (clear = false) => {\n v$.value.$reset()\n if (clear) {\n dialogData.value.from = null\n dialogData.value.until = dateTimeNow()\n }\n dialogCustom.value = true\n}\n\n/** What the control shows is derived from the value, never assumed. */\nconst syncDisplayToValue = (newValue: AllowedFilterValues) => {\n if (isArray(newValue) || isBoolean(newValue)) return\n displayFromTo.value = false\n if (isUndefined(newValue) || isNull(newValue)) {\n modelInternal.value = null\n return\n }\n const found = getTimeIntervalOption(newValue as TimeIntervalToolsValue)\n const filterDataUntil = filterData[props.nameUntil]\n if (!found && isDatetimeUTC(newValue) && isDatetimeUTC(filterDataUntil)) {\n modelInternal.value = TimeIntervalSpecialOptions.Custom\n dialogData.value.from = newValue\n dialogData.value.until = filterDataUntil\n displayFromTo.value = true\n }\n if (found) {\n modelInternal.value = found.value\n }\n}\n\nwatch(modelValue, syncDisplayToValue, { immediate: true })\n\n// Reset restores defaults and wipes chips. For an absolute default the value\n// does not change, so no watcher runs and the range would show without a chip.\n// The wrapper bumps this counter after clearing. It is the only signal that a reset happened.\nwatch(submitResetCounter, () => {\n syncDisplayToValue(filterData[props.nameFrom])\n updateSelected(filterData[props.nameFrom])\n})\n\nwatch(\n [() => filterData[props.nameFrom], () => filterData[props.nameUntil]],\n ([fromNewValue, untilNewValue], [fromOldValue, untilOldValue]) => {\n if (fromNewValue === fromOldValue && untilNewValue === untilOldValue) return\n updateSelected(fromNewValue)\n },\n { immediate: true }\n)\n\nconst onInternalItemChange = (item: ValueObjectOption<TimeIntervalToolsValue>) => {\n if (item.value === TimeIntervalSpecialOptions.Custom) {\n onEditInterval(true)\n return\n }\n filterData[props.nameUntil] = null\n modelValue.value = item.value\n}\n</script>\n\n<template>\n <VTextarea\n v-if=\"displayFromTo\"\n :label=\"label\"\n :model-value=\"dateTimePretty(dialogData.from) + ' - ' + dateTimePretty(dialogData.until)\"\n readonly\n rows=\"1\"\n auto-grow\n hide-details\n append-inner-icon=\"mdi-menu-down\"\n clearable\n class=\"cursor-pointer\"\n @click:clear.stop=\"onClear\"\n @click.stop=\"onEditInterval()\"\n />\n <VSelect\n v-else\n v-model=\"modelInternal\"\n item-title=\"title\"\n item-value=\"value\"\n :label=\"label\"\n :clearable=\"!isNull(modelInternal)\"\n no-filter\n :data-cy=\"dataCy\"\n :items=\"timeIntervalOptions\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"onClear\"\n >\n <template #item=\"{ props: itemProps, internalItem }\">\n <VListItem\n v-bind=\"itemProps\"\n @click=\"onInternalItemChange(internalItem)\"\n />\n </template>\n </VSelect>\n <VDialog\n v-if=\"dialogCustom\"\n :model-value=\"true\"\n width=\"auto\"\n :min-width=\"360\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"onDialogClose\">\n <slot name=\"title\">\n {{ label }}\n </slot>\n </ADialogToolbar>\n <VCardText>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.from\"\n :v=\"v$.dialogData.from\"\n :label=\"t('common.filter.timeInterval.from')\"\n required\n />\n </ARow>\n <ARow>\n <AFormDatetimePicker\n v-model=\"dialogData.until\"\n :v=\"v$.dialogData.until\"\n :label=\"t('common.filter.timeInterval.until')\"\n required\n />\n </ARow>\n </VCardText>\n <VCardActions>\n <VSpacer />\n <ABtnTertiary\n data-cy=\"button-cancel\"\n @click.stop=\"onDialogClose\"\n >\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <ABtnPrimary\n data-cy=\"button-confirm\"\n @click.stop=\"onDialogConfirm\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.v-text-field.cursor-pointer {\n ::v-deep(.v-field),\n ::v-deep(.v-field__input) {\n cursor: pointer;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAM+B,IAAQC,GAcRC,IAAOH,IAIPI,IAAqBC,EAAOC,EAA2B,GACvDC,IAAiBF,EAAOG,EAAiB,GACzCC,IAAeJ,EAAOK,EAAe,GACrCC,IAAaN,EAAOO,CAAa;EAEvC,IACEC,EAAYT,CAAkB,KAC9BS,EAAYN,CAAc,KAC1BM,EAAYJ,CAAY,KAExBI,EAAYJ,EAAa,OAAOR,EAAM,SAAS,KAE/CY,EAAYJ,EAAa,OAAOR,EAAM,UAAU,KAChDY,EAAYF,CAAU,KAEtBE,EAAYF,EAAWV,EAAM,SAAS,KAEtCY,EAAYF,EAAWV,EAAM,UAAU,GAEvC,MAAU,MAAM,kCAAkC;EAGpD,IAAMa,IAAaC,EAAS;GAC1B,MAAM;IACJ,OAAOJ,EAAWV,EAAM;GAC1B;GACA,IAAI,GAAU;IAIZ,AAHA,EAAWA,EAAM,YAAYe,GAC7BC,EAAeD,CAAQ,GACvB,EAAa,UAAU,IACvBE,SAAe;KACb,EAAK,QAAQ;IACf,CAAC;GACH;EACF,CAAC,GAGK,EAAE,yBAAqB,6BAA0BC,GAAuBlB,EAAM,OAAO,GACrFmB,IAAgBC,EAA4B,IAAI,GAChDC,IAAeD,EAAI,EAAK,GACxBE,IAAaF,EAA+D;GAChF,MAAM;GACN,OAAOG,EAAY;EACrB,CAAC,GACKC,IAAgBJ,EAAI,EAAK,GAEzB,EAAE,UAAOK,GAAgCH,CAAU,GAGnDI,IAAsBZ,QAAeN,EAAa,OAAOR,EAAM,SAAU,GAEzE,EAAE,SAAM2B,GAAQ,GAEhBC,IAAQd,QACLY,EAAoB,MAAM,SAASG,EAAEH,EAAoB,MAAM,MAAM,IAAI,KAAA,CACjF,GAEK,EAAE,gBAAaI,EAAsB,GACrC,EAAE,4BAAwBC,EAAU,GAEpCC,UAAgB;GAMpB,AALAC,GAAW,GAIXC,EAAmBxB,EAAWV,EAAM,SAAS,GAC7CgB,EAAeN,EAAWV,EAAM,SAAS;EAC3C,GAEMmC,WAAwB;GAE5B,AADAC,EAAG,MAAM,OAAO,GACZA,EAAG,MAAM,WACXC,GAAoB,KAGtB,EAAc,QAAQ,IACtB,EAAa,QAAQ,IACrB,EAAWrC,EAAM,aAAasB,EAAW,MAAM,OAC/C,EAAW,QAAQA,EAAW,MAAM;EACtC;EAEA,EAAa,EAAE,WAAQ,CAAC;EAExB,IAAMgB,UAAsB;GAE1B,AADA,EAAa,QAAQ,IACrB,EAAc,QAAQ;EACxB,GAEML,WAAmB;GAGvB,AAFAM,EAASvC,EAAM,UAAUU,GAAYF,CAAY,GACjD+B,EAASvC,EAAM,WAAWU,GAAYF,CAAY,GAClDF,EAAe,MAAM,OAAON,EAAM,QAAQ;EAC5C,GAEMgB,KAAkB,MAAmC;GACzD,IAAIwB,EAAQC,CAAS,KAAKC,EAAUD,CAAS,GAAG;GAChD,IAAIE,EAAOF,CAAS,KAAK7B,EAAY6B,CAAS,GAAG;IAC/C,EAAe,MAAM,OAAOzC,EAAM,QAAQ;IAC1C;GACF;GACA,IAAM4C,IAAQC,EAAsBJ,CAAmC;GACvE,IAAI,CAACG,KAASE,EAAcL,CAAS,GAAG;IACtC,IAAMM,IAAeF,EAAsBG,EAA2B,MAAM;IAC5E,EAAe,MAAM,IAAIhD,EAAM,UAAU,CACvC;KACE,OACE+C,EAAa,QACb,OACAE,EAAe3B,EAAW,MAAM,IAAI,IACpC,QACA2B,EAAe3B,EAAW,MAAM,KAAK;KACvC,OAAOmB;IACT,CACF,CAAC;GAEH,OACA,AAAKG,KACLtC,EAAe,MAAM,IAAIN,EAAM,UAAU,CAAC;IAAE,OAAO4C,EAAM;IAAO,OAAOH;GAAU,CAAC,CAAC;EACrF,GAEMS,KAAkB,IAAQ,OAAU;GAMxC,AALAd,EAAG,MAAM,OAAO,GACZe,MACF,EAAW,MAAM,OAAO,MACxB,EAAW,MAAM,QAAQ5B,EAAY,IAEvC,EAAa,QAAQ;EACvB,GAGMW,KAAsB,MAAkC;GAC5D,IAAIM,EAAQzB,CAAQ,KAAK2B,EAAU3B,CAAQ,GAAG;GAE9C,IADA,EAAc,QAAQ,IAClBH,EAAYG,CAAQ,KAAK4B,EAAO5B,CAAQ,GAAG;IAC7C,EAAc,QAAQ;IACtB;GACF;GACA,IAAM6B,IAAQC,EAAsB9B,CAAkC,GAChEqC,IAAkB1C,EAAWV,EAAM;GAOzC,AANI,CAAC4C,KAASE,EAAc/B,CAAQ,KAAK+B,EAAcM,CAAe,MACpE,EAAc,QAAQJ,EAA2B,QACjD,EAAW,MAAM,OAAOjC,GACxB,EAAW,MAAM,QAAQqC,GACzB,EAAc,QAAQ,KAEpBR,MACF,EAAc,QAAQA,EAAM;EAEhC;EAYA,AAVAS,EAAMxC,GAAYqB,GAAoB,EAAE,WAAW,GAAK,CAAC,GAKzDmB,EAAMlD,SAA0B;GAE9B,AADA+B,EAAmBxB,EAAWV,EAAM,SAAS,GAC7CgB,EAAeN,EAAWV,EAAM,SAAS;EAC3C,CAAC,GAEDqD,EACE,OAAO3C,EAAWV,EAAM,iBAAiBU,EAAWV,EAAM,UAAU,IACnE,CAACsD,GAAcC,IAAgB,CAACC,GAAcC,OAAmB;GAChE,CAAIH,MAAiBE,KAAgBD,MAAkBE,MACvDzC,EAAesC,CAAY;EAC7B,GACA,EAAE,WAAW,GAAK,CACpB;EAEA,IAAMI,MAAwB,MAAoD;GAChF,AAAIC,EAAK,UAAUX,EAA2B,SAC5CE,EAAe,EAAI,KAGrB,EAAWlD,EAAM,aAAa,MAC9B,EAAW,QAAQ2D,EAAK;EAC1B;;;G,yBAKUnC,EAAA,SADRtD,EAAA,GAAAG,EAaEC,IAAA;;IAXC,OAAOsD,EAAA;IACP,eAAarD,EAAA0E,CAAA,CAAc,CAAC3B,EAAA,MAAW,IAAI,IAAA,QAAY/C,EAAA0E,CAAA,CAAc,CAAC3B,EAAA,MAAW,KAAK;IACvF,UAAA;IACA,MAAK;IACL,aAAA;IACA,gBAAA;IACA,qBAAkB;IAClB,WAAA;IACA,OAAM;IACL,iBAAW9C,EAAOwD,GAAO,CAAA,MAAA,CAAA;IACzB,SAAK,AAAAsC,EAAA,OAAA9F,GAAA,MAAO0E,EAAc,GAAA,CAAA,MAAA,CAAA;G,0CAE7BhF,EAAA,GAAAG,EAoBUI,IAAA;;IAlBC,YAAA0C,EAAA;IAAA,uBAAA,AAAAmD,EAAA,QAAA,MAAA,EAAa,QAAAE;IACtB,cAAW;IACX,cAAW;IACV,OAAO5C,EAAA;IACP,WAAS,CAAGrD,EAAAoE,CAAA,CAAM,CAACxB,EAAA,KAAa;IACjC,aAAA;IACC,WAASlB,EAAA;IACT,OAAO1B,EAAAkG,EAAA;IACR,gBAAA;IACA,cAAa;IACZ,iBAAWjG,EAAOwD,GAAO,CAAA,MAAA,CAAA;;IAEf,MAAItD,GAIX,EAAA,OAJsBiG,GAAW,sBAAY,CAC/ChG,EAGEC,IAHFC,GACU8F,GAAS,EAChB,UAAK,MAAEjB,GAAqBqB,CAAY,E;;;;;;;;G,KAKvC1D,EAAA,SADRnD,EAAA,GAAAG,EA8CUS,IAAA;;IA5CP,eAAa;IACd,OAAM;IACL,aAAW;;IAEZ,SAAAJ,QAuCQ,CAvCRC,EAuCQI,GAAA,MAAA;KAtCN,SAAAL,QAIiB;MAJjBC,EAIiBK,GAAA,EAJA,UAAQsD,EAAa,GAAA;OACpC,SAAA5D,QAEO,CAFPO,GAEOkG,EAAA,QAAA,SAAA,CAAA,SAAA,CADFjG,EAAAC,EAAAyC,EAAA,KAAK,GAAA,CAAA,C;;;MAGZjD,EAiBYS,GAAA,MAAA;OAhBV,SAAAV,QAOO,CAPPC,EAOOU,GAAA,MAAA;QANL,SAAAX,QAKE,CALFC,EAKEW,GAAA;SAJS,YAAAgC,EAAA,MAAW;SAAX,uBAAA,AAAAgD,EAAA,QAAA,MAAA,EAAA,MAAW,OAAIE;SACvB,GAAGjG,EAAA6D,CAAA,CAAE,CAAC,WAAW;SACjB,OAAO7D,EAAAsD,CAAA,CAAC,CAAA,iCAAA;SACT,UAAA;;;;;;;O,IAGJlD,EAOOU,GAAA,MAAA;QANL,SAAAX,QAKE,CALFC,EAKEW,GAAA;SAJS,YAAAgC,EAAA,MAAW;SAAX,uBAAA,AAAAgD,EAAA,QAAA,MAAA,EAAA,MAAW,QAAKE;SACxB,GAAGjG,EAAA6D,CAAA,CAAE,CAAC,WAAW;SACjB,OAAO7D,EAAAsD,CAAA,CAAC,CAAA,kCAAA;SACT,UAAA;;;;;;;;;;MAINlD,EAceY,IAAA,MAAA;OAbb,SAAAb,QAAW;QAAXC,EAAWa,EAAA;QACXb,EAKeiF,GAAA;SAJb,WAAQ;SACP,SAAKpF,EAAO8D,GAAa,CAAA,MAAA,CAAA;;SAE1B,SAAA5D,QAA+B,CAA5BQ,EAAAC,EAAAZ,EAAAsD,CAAA,CAAC,CAAA,sBAAA,CAAA,GAAA,CAAA,C;;;QAENlD,EAKcmF,GAAA;SAJZ,WAAQ;SACP,SAAKtF,EAAO2D,IAAe,CAAA,MAAA,CAAA;;SAE5B,SAAAzD,QAAgC,CAA7BQ,EAAAC,EAAAZ,EAAAsD,CAAA,CAAC,CAAA,uBAAA,CAAA,GAAA,CAAA,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterValueObjectOptionsSelect.js","names":["_sfc_main","AFilterValueObjectOptionsSelect_vue_vue_type_script_setup_true_lang_default","AFilterValueObjectOptionsSelect_default"],"sources":["../../../../src/domains/filters/components/AFilterValueObjectOptionsSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { computed, inject, watch, getCurrentInstance } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n items: ValueObjectOption<string | number>[]\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-value',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nconst componentName = getCurrentInstance()?.type.__name\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterData) ||\n isUndefined(filterConfig)\n) {\n throw new Error(`[${componentName}] Incorrect provide/inject config.`)\n}\n\nif (\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error(\n `[${componentName}] Incorrect filter config. ` +\n `Name is '${props.name}' and available options are ${Object.keys(filterData).join(', ')}.`\n )\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n emit('change')\n },\n})\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = (newValue: AllowedFilterValues) => {\n // `null` reaches here when the filter is reset from outside - loading a hash clears every field\n // before applying it, and the chip has to go with the value. Falling through to `items.find`\n // would find nothing and leave the previous chip in place, naming a value the query no longer\n // carries.\n if (isNull(newValue) || isUndefined(newValue) || (isArray(newValue) && newValue.length === 0)) {\n filterSelected.value.delete(props.name)\n return\n }\n if (isArray(newValue)) {\n filterSelected.value.set(\n props.name,\n newValue.map((modelItemValue) => {\n const found = props.items.find((item) => item.value === modelItemValue)\n if (found) return { title: found.title, value: found.value }\n return { title: modelItemValue as string, value: modelItemValue as string }\n })\n )\n return\n }\n const found = props.items.find((item) => item.value === newValue)\n if (found) {\n filterSelected.value.set(props.name, [{ title: found.title as string, value: found.value as string }])\n }\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected(newValue)\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VAutocomplete\n v-model=\"modelValue\"\n :items=\"items\"\n :chips=\"filterConfigCurrent.multiple\"\n :label=\"label\"\n :multiple=\"filterConfigCurrent.multiple\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterValueObjectOptionsSelect.js","names":["_sfc_main","AFilterValueObjectOptionsSelect_vue_vue_type_script_setup_true_lang_default","AFilterValueObjectOptionsSelect_default"],"sources":["../../../../src/domains/filters/components/AFilterValueObjectOptionsSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { computed, inject, watch, getCurrentInstance } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n items: ValueObjectOption<string | number>[]\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-value',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nconst componentName = getCurrentInstance()?.type.__name\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterData) ||\n isUndefined(filterConfig)\n) {\n throw new Error(`[${componentName}] Incorrect provide/inject config.`)\n}\n\nif (\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error(\n `[${componentName}] Incorrect filter config. ` +\n `Name is '${props.name}' and available options are ${Object.keys(filterData).join(', ')}.`\n )\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n emit('change')\n },\n})\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = (newValue: AllowedFilterValues) => {\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // Falling through to `items.find` finds nothing and leaves the old chip naming a value the query no longer has.\n if (isNull(newValue) || isUndefined(newValue) || (isArray(newValue) && newValue.length === 0)) {\n filterSelected.value.delete(props.name)\n return\n }\n if (isArray(newValue)) {\n filterSelected.value.set(\n props.name,\n newValue.map((modelItemValue) => {\n const found = props.items.find((item) => item.value === modelItemValue)\n if (found) return { title: found.title, value: found.value }\n return { title: modelItemValue as string, value: modelItemValue as string }\n })\n )\n return\n }\n const found = props.items.find((item) => item.value === newValue)\n if (found) {\n filterSelected.value.set(props.name, [{ title: found.title as string, value: found.value as string }])\n }\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected(newValue)\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VAutocomplete\n v-model=\"modelValue\"\n :items=\"items\"\n :chips=\"filterConfigCurrent.multiple\"\n :label=\"label\"\n :multiple=\"filterConfigCurrent.multiple\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VAutocomplete","_withModifiers","AFilterValueObjectOptionsSelect_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","componentName","getCurrentInstance","isUndefined","modelValue","computed","newValue","updateSelected","filterConfigCurrent","useI18n","label","t","useFilterClearHelpers","clearField","clearOne","isNull","isArray","found","item","modelItemValue","watch","oldValue","isBoolean","openBlock","createBlock","VAutocomplete","_cache","$event","withModifiers"],"sources":["../../../../src/domains/filters/components/AFilterValueObjectOptionsSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { computed, inject, watch, getCurrentInstance } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n items: ValueObjectOption<string | number>[]\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-value',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nconst componentName = getCurrentInstance()?.type.__name\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterData) ||\n isUndefined(filterConfig)\n) {\n throw new Error(`[${componentName}] Incorrect provide/inject config.`)\n}\n\nif (\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error(\n `[${componentName}] Incorrect filter config. ` +\n `Name is '${props.name}' and available options are ${Object.keys(filterData).join(', ')}.`\n )\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n emit('change')\n },\n})\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = (newValue: AllowedFilterValues) => {\n // `null` reaches here when the filter is reset from outside - loading a hash clears every field\n // before applying it, and the chip has to go with the value. Falling through to `items.find`\n // would find nothing and leave the previous chip in place, naming a value the query no longer\n // carries.\n if (isNull(newValue) || isUndefined(newValue) || (isArray(newValue) && newValue.length === 0)) {\n filterSelected.value.delete(props.name)\n return\n }\n if (isArray(newValue)) {\n filterSelected.value.set(\n props.name,\n newValue.map((modelItemValue) => {\n const found = props.items.find((item) => item.value === modelItemValue)\n if (found) return { title: found.title, value: found.value }\n return { title: modelItemValue as string, value: modelItemValue as string }\n })\n )\n return\n }\n const found = props.items.find((item) => item.value === newValue)\n if (found) {\n filterSelected.value.set(props.name, [{ title: found.title as string, value: found.value as string }])\n }\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected(newValue)\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VAutocomplete\n v-model=\"modelValue\"\n :items=\"items\"\n :chips=\"filterConfigCurrent.multiple\"\n :label=\"label\"\n :multiple=\"filterConfigCurrent.multiple\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAaA,IAAMM,IAAQC,GAURC,IAAOH,GAIPI,IAAqBC,EAAOC,CAA2B,GACvDC,IAAiBF,EAAOG,CAAiB,GACzCC,IAAeJ,EAAOK,CAAe,GACrCC,IAAaN,EAAOO,CAAa,GAEjCC,IAAgBC,EAAmB,CAAC,EAAE,KAAK;EAEjD,IACEC,EAAYX,CAAkB,KAC9BW,EAAYR,CAAc,KAC1BQ,EAAYJ,CAAU,KACtBI,EAAYN,CAAY,GAExB,MAAU,MAAM,IAAII,EAAc,mCAAmC;EAGvE,IAEEE,EAAYN,EAAa,OAAOR,EAAM,KAAK,KAE3Cc,EAAYJ,EAAWV,EAAM,KAAK,GAElC,MAAU,MACR,IAAIY,EAAc,sCACJZ,EAAM,KAAK,8BAA8B,OAAO,KAAKU,CAAU,CAAC,CAAC,KAAK,IAAI,EAAE,EAC5F;EAGF,IAAMK,IAAaC,EAAS;GAC1B,MAAM;IACJ,OAAON,EAAWV,EAAM;GAC1B;GACA,IAAI,GAAU;IAIZ,AAHA,EAAWA,EAAM,QAAQiB,GACzBC,EAAeD,CAAQ,GACvB,EAAa,UAAU,IACvBf,EAAK,QAAQ;GACf;EACF,CAAC,GAGKiB,IAAsBH,QAAeR,EAAa,OAAOR,EAAM,KAAM,GAErE,EAAE,SAAMoB,EAAQ,GAEhBC,IAAQL,QACLG,EAAoB,MAAM,SAASG,EAAEH,EAAoB,MAAM,MAAM,IAAI,KAAA,CACjF,GAEK,EAAE,gBAAaI,EAAsB,GAErCC,UAAmB;GAEvB,AADAC,EAASzB,EAAM,MAAMU,GAAYF,CAAY,GAC7CF,EAAe,MAAM,OAAON,EAAM,IAAI;EACxC,GAEMkB,KAAkB,MAAkC;GAKxD,IAAIQ,EAAOT,CAAQ,KAAKH,EAAYG,CAAQ,KAAMU,EAAQV,CAAQ,KAAKA,EAAS,WAAW,GAAI;IAC7F,EAAe,MAAM,OAAOjB,EAAM,IAAI;IACtC;GACF;GACA,IAAI2B,EAAQV,CAAQ,GAAG;IACrB,EAAe,MAAM,IACnBjB,EAAM,MACNiB,EAAS,KAAK,MAAmB;KAC/B,IAAMW,IAAQ5B,EAAM,MAAM,MAAM,MAAS6B,EAAK,UAAUC,CAAc;KAEtE,OADIF,IAAc;MAAE,OAAOA,EAAM;MAAO,OAAOA,EAAM;KAAM,IACpD;MAAE,OAAOE;MAA0B,OAAOA;KAAyB;IAC5E,CAAC,CACH;IACA;GACF;GACA,IAAMF,IAAQ5B,EAAM,MAAM,MAAM,MAAS6B,EAAK,UAAUZ,CAAQ;GAChE,AAAIW,KACFtB,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAO4B,EAAM;IAAiB,OAAOA,EAAM;GAAgB,CAAC,CAAC;EAEzG;E,OAEAG,QACQrB,EAAWV,EAAM,QACtB,GAAU,MAAa;GACtB,AAAIiB,MAAae,KAAYC,EAAUhB,CAAQ,KAC/CC,EAAeD,CAAQ;EACzB,GACA,EAAE,WAAW,GAAK,CACpB,I,UAIEvB,EAAA,GAAAC,EAWEC,GAAA;GAVS,YAAAmB,EAAA;GAAA,uBAAA,AAAAsB,EAAA,QAAA,MAAA,EAAU,QAAAC;GAClB,OAAOrC,EAAA;GACP,OAAOkB,EAAA,MAAoB;GAC3B,OAAOE,EAAA;GACP,UAAUF,EAAA,MAAoB;GAC9B,WAAS,CAAGA,EAAA,MAAoB;GAChC,WAASlB,EAAA;GACV,gBAAA;GACA,cAAa;GACZ,iBAAWJ,EAAO2B,GAAU,CAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"AFilterValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VAutocomplete","_withModifiers","AFilterValueObjectOptionsSelect_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","componentName","getCurrentInstance","isUndefined","modelValue","computed","newValue","updateSelected","filterConfigCurrent","useI18n","label","t","useFilterClearHelpers","clearField","clearOne","isNull","isArray","found","item","modelItemValue","watch","oldValue","isBoolean","openBlock","createBlock","VAutocomplete","_cache","$event","withModifiers"],"sources":["../../../../src/domains/filters/components/AFilterValueObjectOptionsSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { computed, inject, watch, getCurrentInstance } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isBoolean, isNull, isUndefined } from '@/shared/utils/common'\nimport { type AllowedFilterValues, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n items: ValueObjectOption<string | number>[]\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-value',\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\n\nconst componentName = getCurrentInstance()?.type.__name\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterData) ||\n isUndefined(filterConfig)\n) {\n throw new Error(`[${componentName}] Incorrect provide/inject config.`)\n}\n\nif (\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name]) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error(\n `[${componentName}] Incorrect filter config. ` +\n `Name is '${props.name}' and available options are ${Object.keys(filterData).join(', ')}.`\n )\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = newValue\n updateSelected(newValue)\n filterConfig.touched = true\n emit('change')\n },\n})\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst { t } = useI18n()\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = (newValue: AllowedFilterValues) => {\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // Falling through to `items.find` finds nothing and leaves the old chip naming a value the query no longer has.\n if (isNull(newValue) || isUndefined(newValue) || (isArray(newValue) && newValue.length === 0)) {\n filterSelected.value.delete(props.name)\n return\n }\n if (isArray(newValue)) {\n filterSelected.value.set(\n props.name,\n newValue.map((modelItemValue) => {\n const found = props.items.find((item) => item.value === modelItemValue)\n if (found) return { title: found.title, value: found.value }\n return { title: modelItemValue as string, value: modelItemValue as string }\n })\n )\n return\n }\n const found = props.items.find((item) => item.value === newValue)\n if (found) {\n filterSelected.value.set(props.name, [{ title: found.title as string, value: found.value as string }])\n }\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected(newValue)\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VAutocomplete\n v-model=\"modelValue\"\n :items=\"items\"\n :chips=\"filterConfigCurrent.multiple\"\n :label=\"label\"\n :multiple=\"filterConfigCurrent.multiple\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAaA,IAAMM,IAAQC,GAURC,IAAOH,GAIPI,IAAqBC,EAAOC,CAA2B,GACvDC,IAAiBF,EAAOG,CAAiB,GACzCC,IAAeJ,EAAOK,CAAe,GACrCC,IAAaN,EAAOO,CAAa,GAEjCC,IAAgBC,EAAmB,CAAC,EAAE,KAAK;EAEjD,IACEC,EAAYX,CAAkB,KAC9BW,EAAYR,CAAc,KAC1BQ,EAAYJ,CAAU,KACtBI,EAAYN,CAAY,GAExB,MAAU,MAAM,IAAII,EAAc,mCAAmC;EAGvE,IAEEE,EAAYN,EAAa,OAAOR,EAAM,KAAK,KAE3Cc,EAAYJ,EAAWV,EAAM,KAAK,GAElC,MAAU,MACR,IAAIY,EAAc,sCACJZ,EAAM,KAAK,8BAA8B,OAAO,KAAKU,CAAU,CAAC,CAAC,KAAK,IAAI,EAAE,EAC5F;EAGF,IAAMK,IAAaC,EAAS;GAC1B,MAAM;IACJ,OAAON,EAAWV,EAAM;GAC1B;GACA,IAAI,GAAU;IAIZ,AAHA,EAAWA,EAAM,QAAQiB,GACzBC,EAAeD,CAAQ,GACvB,EAAa,UAAU,IACvBf,EAAK,QAAQ;GACf;EACF,CAAC,GAGKiB,IAAsBH,QAAeR,EAAa,OAAOR,EAAM,KAAM,GAErE,EAAE,SAAMoB,EAAQ,GAEhBC,IAAQL,QACLG,EAAoB,MAAM,SAASG,EAAEH,EAAoB,MAAM,MAAM,IAAI,KAAA,CACjF,GAEK,EAAE,gBAAaI,EAAsB,GAErCC,UAAmB;GAEvB,AADAC,EAASzB,EAAM,MAAMU,GAAYF,CAAY,GAC7CF,EAAe,MAAM,OAAON,EAAM,IAAI;EACxC,GAEMkB,KAAkB,MAAkC;GAGxD,IAAIQ,EAAOT,CAAQ,KAAKH,EAAYG,CAAQ,KAAMU,EAAQV,CAAQ,KAAKA,EAAS,WAAW,GAAI;IAC7F,EAAe,MAAM,OAAOjB,EAAM,IAAI;IACtC;GACF;GACA,IAAI2B,EAAQV,CAAQ,GAAG;IACrB,EAAe,MAAM,IACnBjB,EAAM,MACNiB,EAAS,KAAK,MAAmB;KAC/B,IAAMW,IAAQ5B,EAAM,MAAM,MAAM,MAAS6B,EAAK,UAAUC,CAAc;KAEtE,OADIF,IAAc;MAAE,OAAOA,EAAM;MAAO,OAAOA,EAAM;KAAM,IACpD;MAAE,OAAOE;MAA0B,OAAOA;KAAyB;IAC5E,CAAC,CACH;IACA;GACF;GACA,IAAMF,IAAQ5B,EAAM,MAAM,MAAM,MAAS6B,EAAK,UAAUZ,CAAQ;GAChE,AAAIW,KACFtB,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAO4B,EAAM;IAAiB,OAAOA,EAAM;GAAgB,CAAC,CAAC;EAEzG;E,OAEAG,QACQrB,EAAWV,EAAM,QACtB,GAAU,MAAa;GACtB,AAAIiB,MAAae,KAAYC,EAAUhB,CAAQ,KAC/CC,EAAeD,CAAQ;EACzB,GACA,EAAE,WAAW,GAAK,CACpB,I,UAIEvB,EAAA,GAAAC,EAWEC,GAAA;GAVS,YAAAmB,EAAA;GAAA,uBAAA,AAAAsB,EAAA,QAAA,MAAA,EAAU,QAAAC;GAClB,OAAOrC,EAAA;GACP,OAAOkB,EAAA,MAAoB;GAC3B,OAAOE,EAAA;GACP,UAAUF,EAAA,MAAoB;GAC9B,WAAS,CAAGA,EAAA,MAAoB;GAChC,WAASlB,EAAA;GACV,gBAAA;GACA,cAAa;GACZ,iBAAWJ,EAAO2B,GAAU,CAAA,MAAA,CAAA"}
@@ -16,22 +16,24 @@ type __VLS_ModelProps = {
16
16
  'showDetail'?: boolean;
17
17
  };
18
18
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
19
- declare var __VLS_21: {}, __VLS_35: {}, __VLS_69: {}, __VLS_82: {}, __VLS_107: {}, __VLS_123: string, __VLS_124: {
20
- itemConfig: import('../composables/filterFactory').FilterField;
21
- };
22
- type __VLS_Slots = {} & {
23
- [K in NonNullable<typeof __VLS_123>]?: (props: typeof __VLS_124) => any;
24
- } & {
25
- top?: (props: typeof __VLS_21) => any;
26
- } & {
27
- bookmarks?: (props: typeof __VLS_35) => any;
28
- } & {
29
- search?: (props: typeof __VLS_69) => any;
30
- } & {
31
- buttons?: (props: typeof __VLS_82) => any;
32
- } & {
33
- detail?: (props: typeof __VLS_107) => any;
19
+ declare const __VLS_template: () => {
20
+ __VLS_Slots: {
21
+ [x: string]: ((props: {
22
+ itemConfig: import('../composables/filterFactory').FilterField;
23
+ }) => any) | undefined;
24
+ } & {
25
+ top?: (props: {}) => any;
26
+ } & {
27
+ bookmarks?: (props: {}) => any;
28
+ } & {
29
+ search?: (props: {}) => any;
30
+ } & {
31
+ buttons?: (props: {}) => any;
32
+ } & {
33
+ detail?: (props: {}) => any;
34
+ };
34
35
  };
36
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
35
37
  declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {
36
38
  submit: () => void;
37
39
  reset: () => void;
@@ -1,10 +1,12 @@
1
1
  type __VLS_Props = {
2
2
  formName?: string;
3
3
  };
4
- declare var __VLS_10: {};
5
- type __VLS_Slots = {} & {
6
- default?: (props: typeof __VLS_10) => any;
4
+ declare const __VLS_template: () => {
5
+ __VLS_Slots: {
6
+ default?: (props: {}) => any;
7
+ };
7
8
  };
9
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
8
10
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
9
11
  resetFilter: () => void;
10
12
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
@@ -1 +1 @@
1
- {"version":3,"file":"FiltersSelected.js","names":["_sfc_main","FiltersSelected_vue_vue_type_script_setup_true_lang_default","FiltersSelected_default"],"sources":["../../../../src/domains/filters/components/FiltersSelected.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { FilterConfigKey, FilterDataKey, FilterSelectedKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst getTitleFromConfig = (name: string) => {\n const titleT = filterConfig.fields?.[name]?.titleT\n if (titleT) return t(titleT)\n return name\n}\n\nconst selectedArray = computed(() => {\n const fieldOrder = Object.keys(filterConfig.fields)\n return Array.from(filterSelected.value)\n .filter(([key]) => filterConfig.fields?.[key]?.render?.selected !== false)\n .map(([key, valueArray]) => ({\n name: key,\n title: getTitleFromConfig(key),\n options: valueArray,\n }))\n .sort((a, b) => fieldOrder.indexOf(a.name) - fieldOrder.indexOf(b.name))\n})\n\nconst { clearOneFilterSelected, isClearable } = useFilterClearHelpers()\n\n/**\n * Clearing means \"back to the default\", so on a field already holding its default there is\n * nothing to clear and the close button would do nothing at all - it would drop the chip, write\n * the same value back, and the chip would come straight back. Only fields with a non-null default\n * can reach that state; an array is different, because closing one chip removes one option.\n */\nconst canClear = (name: string) => {\n if (!isClearable(name, filterConfig)) return false\n // `isClearable` has just read this same config, so it is there.\n const config = filterConfig.fields[name]!\n // A time interval is a pair sharing one chip, and clearing writes the default into both. Only\n // `until` may differ - the custom dialog opens prefilled, so shortening just the upper bound\n // leaves `from` at its default - and the button still has work to do then.\n if (config.type === 'timeInterval' && config.related) {\n // `createFilter` checked that the related field is configured.\n const related = filterConfig.fields[config.related]!\n if (filterData[config.related] !== related.default) return true\n }\n const value = filterData[name]\n if (isArray(value)) return true\n return value !== config.default\n}\n\nconst clickClose = (name: string, optionValue: number | string) => {\n clearOneFilterSelected(name, optionValue, filterData, filterConfig, filterSelected)\n filterConfig.touched = true\n}\n</script>\n\n<template>\n <div\n v-for=\"item in selectedArray\"\n :key=\"item.name\"\n class=\"a-selected-filters\"\n >\n <div class=\"a-selected-filters__label text-body-small\">{{ item.title }}:</div>\n <div\n v-for=\"option in item.options\"\n :key=\"option.value\"\n class=\"a-selected-filters__chips\"\n >\n <VChip\n v-if=\"canClear(item.name)\"\n closable\n close-label=\"common.button.remove\"\n size=\"small\"\n class=\"a-selected-filters__chip\"\n @click:close.stop=\"clickClose(item.name, option.value)\"\n >\n <template #close>\n <VIcon\n size=\"16\"\n icon=\"mdi-close-circle\"\n />\n </template>\n {{ option.title }}\n </VChip>\n <VChip\n v-else\n size=\"small\"\n class=\"a-selected-filters__chip\"\n >\n {{ option.title }}\n </VChip>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.a-selected-filters {\n display: inline-flex;\n align-items: center;\n background: #f5f5f5;\n border-radius: 20px;\n padding: 4px 4px 4px 12px;\n margin: 0 4px 2px 0;\n gap: 8px;\n max-width: 100%;\n\n &__label {\n white-space: nowrap;\n }\n\n &__chips {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n &__chip {\n background: white;\n box-shadow: none;\n\n .v-chip__content {\n max-width: 40vw;\n }\n\n &:hover .v-chip__close {\n opacity: 0.8;\n }\n }\n\n .v-chip__close {\n opacity: 0.3;\n transition: opacity 0.2s;\n }\n}\n\n// Values above are hardcoded light, which renders white-on-white in dark theme.\n.v-theme--dark .a-selected-filters {\n background: rgb(var(--v-theme-on-surface), 0.08);\n\n .a-selected-filters__chip {\n background: rgb(var(--v-theme-on-surface), 0.16);\n color: rgb(var(--v-theme-on-surface));\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"FiltersSelected.js","names":["_sfc_main","FiltersSelected_vue_vue_type_script_setup_true_lang_default","FiltersSelected_default"],"sources":["../../../../src/domains/filters/components/FiltersSelected.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { FilterConfigKey, FilterDataKey, FilterSelectedKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst getTitleFromConfig = (name: string) => {\n const titleT = filterConfig.fields?.[name]?.titleT\n if (titleT) return t(titleT)\n return name\n}\n\nconst selectedArray = computed(() => {\n const fieldOrder = Object.keys(filterConfig.fields)\n return Array.from(filterSelected.value)\n .filter(([key]) => filterConfig.fields?.[key]?.render?.selected !== false)\n .map(([key, valueArray]) => ({\n name: key,\n title: getTitleFromConfig(key),\n options: valueArray,\n }))\n .sort((a, b) => fieldOrder.indexOf(a.name) - fieldOrder.indexOf(b.name))\n})\n\nconst { clearOneFilterSelected, isClearable } = useFilterClearHelpers()\n\n/**\n * Clearing restores the default. On a field already at its non-null default, the close\n * button would drop the chip, write the same value, and the chip would come back.\n * Arrays differ: closing one chip removes one option.\n */\nconst canClear = (name: string) => {\n if (!isClearable(name, filterConfig)) return false\n // `isClearable` has just read this same config, so it is there.\n const config = filterConfig.fields[name]!\n // A time interval is a pair sharing one chip, and clearing writes the default into both.\n // Only `until` may differ, because the custom dialog opens prefilled. The button still has work then.\n if (config.type === 'timeInterval' && config.related) {\n // `createFilter` checked that the related field is configured.\n const related = filterConfig.fields[config.related]!\n if (filterData[config.related] !== related.default) return true\n }\n const value = filterData[name]\n if (isArray(value)) return true\n return value !== config.default\n}\n\nconst clickClose = (name: string, optionValue: number | string) => {\n clearOneFilterSelected(name, optionValue, filterData, filterConfig, filterSelected)\n filterConfig.touched = true\n}\n</script>\n\n<template>\n <div\n v-for=\"item in selectedArray\"\n :key=\"item.name\"\n class=\"a-selected-filters\"\n >\n <div class=\"a-selected-filters__label text-body-small\">{{ item.title }}:</div>\n <div\n v-for=\"option in item.options\"\n :key=\"option.value\"\n class=\"a-selected-filters__chips\"\n >\n <VChip\n v-if=\"canClear(item.name)\"\n closable\n close-label=\"common.button.remove\"\n size=\"small\"\n class=\"a-selected-filters__chip\"\n @click:close.stop=\"clickClose(item.name, option.value)\"\n >\n <template #close>\n <VIcon\n size=\"16\"\n icon=\"mdi-close-circle\"\n />\n </template>\n {{ option.title }}\n </VChip>\n <VChip\n v-else\n size=\"small\"\n class=\"a-selected-filters__chip\"\n >\n {{ option.title }}\n </VChip>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.a-selected-filters {\n display: inline-flex;\n align-items: center;\n background: #f5f5f5;\n border-radius: 20px;\n padding: 4px 4px 4px 12px;\n margin: 0 4px 2px 0;\n gap: 8px;\n max-width: 100%;\n\n &__label {\n white-space: nowrap;\n }\n\n &__chips {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n &__chip {\n background: white;\n box-shadow: none;\n\n .v-chip__content {\n max-width: 40vw;\n }\n\n &:hover .v-chip__close {\n opacity: 0.8;\n }\n }\n\n .v-chip__close {\n opacity: 0.3;\n transition: opacity 0.2s;\n }\n}\n\n// Values above are hardcoded light, which renders white-on-white in dark theme.\n.v-theme--dark .a-selected-filters {\n background: rgb(var(--v-theme-on-surface), 0.08);\n\n .a-selected-filters__chip {\n background: rgb(var(--v-theme-on-surface), 0.16);\n color: rgb(var(--v-theme-on-surface));\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"FiltersSelected.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString","_createBlock","_component_VChip","_withModifiers","_withCtx","_createVNode","_component_VIcon","_createTextVNode","_hoisted_1","FiltersSelected_vue_vue_type_script_setup_true_lang_default","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","filterSelected","FilterSelectedKey","isUndefined","useI18n","getTitleFromConfig","titleT","name","t","selectedArray","computed","fieldOrder","key","valueArray","a","b","useFilterClearHelpers","canClear","isClearable","config","related","value","isArray","clickClose","clearOneFilterSelected","optionValue","openBlock","createElementBlock","Fragment","renderList","item","createElementVNode","toDisplayString","option","createBlock","VChip","withModifiers","withCtx","createVNode","VIcon","createTextVNode"],"sources":["../../../../src/domains/filters/components/FiltersSelected.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { FilterConfigKey, FilterDataKey, FilterSelectedKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst getTitleFromConfig = (name: string) => {\n const titleT = filterConfig.fields?.[name]?.titleT\n if (titleT) return t(titleT)\n return name\n}\n\nconst selectedArray = computed(() => {\n const fieldOrder = Object.keys(filterConfig.fields)\n return Array.from(filterSelected.value)\n .filter(([key]) => filterConfig.fields?.[key]?.render?.selected !== false)\n .map(([key, valueArray]) => ({\n name: key,\n title: getTitleFromConfig(key),\n options: valueArray,\n }))\n .sort((a, b) => fieldOrder.indexOf(a.name) - fieldOrder.indexOf(b.name))\n})\n\nconst { clearOneFilterSelected, isClearable } = useFilterClearHelpers()\n\n/**\n * Clearing means \"back to the default\", so on a field already holding its default there is\n * nothing to clear and the close button would do nothing at all - it would drop the chip, write\n * the same value back, and the chip would come straight back. Only fields with a non-null default\n * can reach that state; an array is different, because closing one chip removes one option.\n */\nconst canClear = (name: string) => {\n if (!isClearable(name, filterConfig)) return false\n // `isClearable` has just read this same config, so it is there.\n const config = filterConfig.fields[name]!\n // A time interval is a pair sharing one chip, and clearing writes the default into both. Only\n // `until` may differ - the custom dialog opens prefilled, so shortening just the upper bound\n // leaves `from` at its default - and the button still has work to do then.\n if (config.type === 'timeInterval' && config.related) {\n // `createFilter` checked that the related field is configured.\n const related = filterConfig.fields[config.related]!\n if (filterData[config.related] !== related.default) return true\n }\n const value = filterData[name]\n if (isArray(value)) return true\n return value !== config.default\n}\n\nconst clickClose = (name: string, optionValue: number | string) => {\n clearOneFilterSelected(name, optionValue, filterData, filterConfig, filterSelected)\n filterConfig.touched = true\n}\n</script>\n\n<template>\n <div\n v-for=\"item in selectedArray\"\n :key=\"item.name\"\n class=\"a-selected-filters\"\n >\n <div class=\"a-selected-filters__label text-body-small\">{{ item.title }}:</div>\n <div\n v-for=\"option in item.options\"\n :key=\"option.value\"\n class=\"a-selected-filters__chips\"\n >\n <VChip\n v-if=\"canClear(item.name)\"\n closable\n close-label=\"common.button.remove\"\n size=\"small\"\n class=\"a-selected-filters__chip\"\n @click:close.stop=\"clickClose(item.name, option.value)\"\n >\n <template #close>\n <VIcon\n size=\"16\"\n icon=\"mdi-close-circle\"\n />\n </template>\n {{ option.title }}\n </VChip>\n <VChip\n v-else\n size=\"small\"\n class=\"a-selected-filters__chip\"\n >\n {{ option.title }}\n </VChip>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.a-selected-filters {\n display: inline-flex;\n align-items: center;\n background: #f5f5f5;\n border-radius: 20px;\n padding: 4px 4px 4px 12px;\n margin: 0 4px 2px 0;\n gap: 8px;\n max-width: 100%;\n\n &__label {\n white-space: nowrap;\n }\n\n &__chips {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n &__chip {\n background: white;\n box-shadow: none;\n\n .v-chip__content {\n max-width: 40vw;\n }\n\n &:hover .v-chip__close {\n opacity: 0.8;\n }\n }\n\n .v-chip__close {\n opacity: 0.3;\n transition: opacity 0.2s;\n }\n}\n\n// Values above are hardcoded light, which renders white-on-white in dark theme.\n.v-theme--dark .a-selected-filters {\n background: rgb(var(--v-theme-on-surface), 0.08);\n\n .a-selected-filters__chip {\n background: rgb(var(--v-theme-on-surface), 0.16);\n color: rgb(var(--v-theme-on-surface));\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;EAOA,IAAMe,IAAeC,EAAOC,CAAe,GACrCC,IAAaF,EAAOG,CAAa,GACjCC,IAAiBJ,EAAOK,CAAiB;EAE/C,IAAIC,EAAYP,CAAY,KAAKO,EAAYJ,CAAU,KAAKI,EAAYF,CAAc,GACpF,MAAU,MAAM,kCAAkC;EAGpD,IAAM,EAAE,SAAMG,EAAQ,GAEhBC,KAAsB,MAAiB;GAC3C,IAAMC,IAASV,EAAa,SAASW,EAAK,EAAE;GAE5C,OADID,IAAeE,EAAEF,CAAM,IACpBC;EACT,GAEME,IAAgBC,QAAe;GACnC,IAAMC,IAAa,OAAO,KAAKf,EAAa,MAAM;GAClD,OAAO,MAAM,KAAKK,EAAe,KAAK,CAAA,CACnC,QAAQ,CAACW,OAAShB,EAAa,SAASgB,EAAI,EAAE,QAAQ,aAAa,EAAK,CAAA,CACxE,KAAK,CAACA,GAAKC,QAAiB;IAC3B,MAAMD;IACN,OAAOP,EAAmBO,CAAG;IAC7B,SAASC;GACX,EAAE,CAAA,CACD,MAAM,GAAG,MAAMF,EAAW,QAAQG,EAAE,IAAI,IAAIH,EAAW,QAAQI,EAAE,IAAI,CAAC;EAC3E,CAAC,GAEK,EAAE,2BAAwB,mBAAgBC,EAAsB,GAQhEC,KAAY,MAAiB;GACjC,IAAI,CAACC,EAAYX,GAAMX,CAAY,GAAG,OAAO;GAE7C,IAAMuB,IAASvB,EAAa,OAAOW;GAInC,IAAIY,EAAO,SAAS,kBAAkBA,EAAO,SAAS;IAEpD,IAAMC,IAAUxB,EAAa,OAAOuB,EAAO;IAC3C,IAAIpB,EAAWoB,EAAO,aAAaC,EAAQ,SAAS,OAAO;GAC7D;GACA,IAAMC,IAAQtB,EAAWQ;GAEzB,OADIe,EAAQD,CAAK,IAAU,KACpBA,MAAUF,EAAO;EAC1B,GAEMI,KAAc,GAAc,MAAiC;GAEjE,AADAC,EAAuBjB,GAAMkB,GAAa1B,GAAYH,GAAcK,CAAc,GAClF,EAAa,UAAU;EACzB;E,kBAIEpB,EAAA,EAAA,GAAAC,EAmCMC,GAAA,MAAAC,EAlCWyB,EAAA,QAAR,OADT5B,EAAA,GAAAC,EAmCM,OAAA;GAjCH,KAAKgD,EAAK;GACX,OAAM;E,IAEN7C,EAA8E,OAA9ES,GAA8ER,EAApB4C,EAAK,KAAK,IAAG,KAAC,CAAA,IACxEjD,EAAA,EAAA,GAAAC,EA4BMC,GAAA,MAAAC,EA3Ba8C,EAAK,UAAf,OADTjD,EAAA,GAAAC,EA4BM,OAAA;GA1BH,KAAKmD,EAAO;GACb,OAAM;E,IAGEhB,EAASa,EAAK,IAAI,KAD1BjD,EAAA,GAAAM,EAeQC,GAAA;;GAbN,UAAA;GACA,eAAY;GACZ,MAAK;GACL,OAAM;GACL,iBAAWC,GAAA,MAAOkC,EAAWO,EAAK,MAAMG,EAAO,KAAK,GAAA,CAAA,MAAA,CAAA;;GAE1C,OAAK3C,QAIZ,CAHFC,EAGEC,GAAA;IAFA,MAAK;IACL,MAAK;;GAEE,SAAAF,QACX,CADWG,EAAA,MACXP,EAAG+C,EAAO,KAAK,GAAA,CAAA,C;;E,gCAEjBpD,EAAA,GAAAM,EAMQC,GAAA;;GAJN,MAAK;GACL,OAAM;;GAEN,SAAAE,QAAkB,CAAfG,EAAAP,EAAA+C,EAAO,KAAK,GAAA,CAAA,C"}
1
+ {"version":3,"file":"FiltersSelected.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString","_createBlock","_component_VChip","_withModifiers","_withCtx","_createVNode","_component_VIcon","_createTextVNode","_hoisted_1","FiltersSelected_vue_vue_type_script_setup_true_lang_default","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","filterSelected","FilterSelectedKey","isUndefined","useI18n","getTitleFromConfig","titleT","name","t","selectedArray","computed","fieldOrder","key","valueArray","a","b","useFilterClearHelpers","canClear","isClearable","config","related","value","isArray","clickClose","clearOneFilterSelected","optionValue","openBlock","createElementBlock","Fragment","renderList","item","createElementVNode","toDisplayString","option","createBlock","VChip","withModifiers","withCtx","createVNode","VIcon","createTextVNode"],"sources":["../../../../src/domains/filters/components/FiltersSelected.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { FilterConfigKey, FilterDataKey, FilterSelectedKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { isArray, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst getTitleFromConfig = (name: string) => {\n const titleT = filterConfig.fields?.[name]?.titleT\n if (titleT) return t(titleT)\n return name\n}\n\nconst selectedArray = computed(() => {\n const fieldOrder = Object.keys(filterConfig.fields)\n return Array.from(filterSelected.value)\n .filter(([key]) => filterConfig.fields?.[key]?.render?.selected !== false)\n .map(([key, valueArray]) => ({\n name: key,\n title: getTitleFromConfig(key),\n options: valueArray,\n }))\n .sort((a, b) => fieldOrder.indexOf(a.name) - fieldOrder.indexOf(b.name))\n})\n\nconst { clearOneFilterSelected, isClearable } = useFilterClearHelpers()\n\n/**\n * Clearing restores the default. On a field already at its non-null default, the close\n * button would drop the chip, write the same value, and the chip would come back.\n * Arrays differ: closing one chip removes one option.\n */\nconst canClear = (name: string) => {\n if (!isClearable(name, filterConfig)) return false\n // `isClearable` has just read this same config, so it is there.\n const config = filterConfig.fields[name]!\n // A time interval is a pair sharing one chip, and clearing writes the default into both.\n // Only `until` may differ, because the custom dialog opens prefilled. The button still has work then.\n if (config.type === 'timeInterval' && config.related) {\n // `createFilter` checked that the related field is configured.\n const related = filterConfig.fields[config.related]!\n if (filterData[config.related] !== related.default) return true\n }\n const value = filterData[name]\n if (isArray(value)) return true\n return value !== config.default\n}\n\nconst clickClose = (name: string, optionValue: number | string) => {\n clearOneFilterSelected(name, optionValue, filterData, filterConfig, filterSelected)\n filterConfig.touched = true\n}\n</script>\n\n<template>\n <div\n v-for=\"item in selectedArray\"\n :key=\"item.name\"\n class=\"a-selected-filters\"\n >\n <div class=\"a-selected-filters__label text-body-small\">{{ item.title }}:</div>\n <div\n v-for=\"option in item.options\"\n :key=\"option.value\"\n class=\"a-selected-filters__chips\"\n >\n <VChip\n v-if=\"canClear(item.name)\"\n closable\n close-label=\"common.button.remove\"\n size=\"small\"\n class=\"a-selected-filters__chip\"\n @click:close.stop=\"clickClose(item.name, option.value)\"\n >\n <template #close>\n <VIcon\n size=\"16\"\n icon=\"mdi-close-circle\"\n />\n </template>\n {{ option.title }}\n </VChip>\n <VChip\n v-else\n size=\"small\"\n class=\"a-selected-filters__chip\"\n >\n {{ option.title }}\n </VChip>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.a-selected-filters {\n display: inline-flex;\n align-items: center;\n background: #f5f5f5;\n border-radius: 20px;\n padding: 4px 4px 4px 12px;\n margin: 0 4px 2px 0;\n gap: 8px;\n max-width: 100%;\n\n &__label {\n white-space: nowrap;\n }\n\n &__chips {\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n &__chip {\n background: white;\n box-shadow: none;\n\n .v-chip__content {\n max-width: 40vw;\n }\n\n &:hover .v-chip__close {\n opacity: 0.8;\n }\n }\n\n .v-chip__close {\n opacity: 0.3;\n transition: opacity 0.2s;\n }\n}\n\n// Values above are hardcoded light, which renders white-on-white in dark theme.\n.v-theme--dark .a-selected-filters {\n background: rgb(var(--v-theme-on-surface), 0.08);\n\n .a-selected-filters__chip {\n background: rgb(var(--v-theme-on-surface), 0.16);\n color: rgb(var(--v-theme-on-surface));\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;EAOA,IAAMe,IAAeC,EAAOC,CAAe,GACrCC,IAAaF,EAAOG,CAAa,GACjCC,IAAiBJ,EAAOK,CAAiB;EAE/C,IAAIC,EAAYP,CAAY,KAAKO,EAAYJ,CAAU,KAAKI,EAAYF,CAAc,GACpF,MAAU,MAAM,kCAAkC;EAGpD,IAAM,EAAE,SAAMG,EAAQ,GAEhBC,KAAsB,MAAiB;GAC3C,IAAMC,IAASV,EAAa,SAASW,EAAK,EAAE;GAE5C,OADID,IAAeE,EAAEF,CAAM,IACpBC;EACT,GAEME,IAAgBC,QAAe;GACnC,IAAMC,IAAa,OAAO,KAAKf,EAAa,MAAM;GAClD,OAAO,MAAM,KAAKK,EAAe,KAAK,CAAA,CACnC,QAAQ,CAACW,OAAShB,EAAa,SAASgB,EAAI,EAAE,QAAQ,aAAa,EAAK,CAAA,CACxE,KAAK,CAACA,GAAKC,QAAiB;IAC3B,MAAMD;IACN,OAAOP,EAAmBO,CAAG;IAC7B,SAASC;GACX,EAAE,CAAA,CACD,MAAM,GAAG,MAAMF,EAAW,QAAQG,EAAE,IAAI,IAAIH,EAAW,QAAQI,EAAE,IAAI,CAAC;EAC3E,CAAC,GAEK,EAAE,2BAAwB,mBAAgBC,EAAsB,GAOhEC,KAAY,MAAiB;GACjC,IAAI,CAACC,EAAYX,GAAMX,CAAY,GAAG,OAAO;GAE7C,IAAMuB,IAASvB,EAAa,OAAOW;GAGnC,IAAIY,EAAO,SAAS,kBAAkBA,EAAO,SAAS;IAEpD,IAAMC,IAAUxB,EAAa,OAAOuB,EAAO;IAC3C,IAAIpB,EAAWoB,EAAO,aAAaC,EAAQ,SAAS,OAAO;GAC7D;GACA,IAAMC,IAAQtB,EAAWQ;GAEzB,OADIe,EAAQD,CAAK,IAAU,KACpBA,MAAUF,EAAO;EAC1B,GAEMI,KAAc,GAAc,MAAiC;GAEjE,AADAC,EAAuBjB,GAAMkB,GAAa1B,GAAYH,GAAcK,CAAc,GAClF,EAAa,UAAU;EACzB;E,kBAIEpB,EAAA,EAAA,GAAAC,EAmCMC,GAAA,MAAAC,EAlCWyB,EAAA,QAAR,OADT5B,EAAA,GAAAC,EAmCM,OAAA;GAjCH,KAAKgD,EAAK;GACX,OAAM;E,IAEN7C,EAA8E,OAA9ES,GAA8ER,EAApB4C,EAAK,KAAK,IAAG,KAAC,CAAA,IACxEjD,EAAA,EAAA,GAAAC,EA4BMC,GAAA,MAAAC,EA3Ba8C,EAAK,UAAf,OADTjD,EAAA,GAAAC,EA4BM,OAAA;GA1BH,KAAKmD,EAAO;GACb,OAAM;E,IAGEhB,EAASa,EAAK,IAAI,KAD1BjD,EAAA,GAAAM,EAeQC,GAAA;;GAbN,UAAA;GACA,eAAY;GACZ,MAAK;GACL,OAAM;GACL,iBAAWC,GAAA,MAAOkC,EAAWO,EAAK,MAAMG,EAAO,KAAK,GAAA,CAAA,MAAA,CAAA;;GAE1C,OAAK3C,QAIZ,CAHFC,EAGEC,GAAA;IAFA,MAAK;IACL,MAAK;;GAEE,SAAAF,QACX,CADWG,EAAA,MACXP,EAAG+C,EAAO,KAAK,GAAA,CAAA,C;;E,gCAEjBpD,EAAA,GAAAM,EAMQC,GAAA;;GAJN,MAAK;GACL,OAAM;;GAEN,SAAAE,QAAkB,CAAfG,EAAAP,EAAA+C,EAAO,KAAK,GAAA,CAAA,C"}
@@ -8,13 +8,10 @@ export type FilterStoreIdentifier = {
8
8
  subject: string;
9
9
  };
10
10
  /**
11
- * Hash for a filter link, with values equal to their default left out.
12
- *
13
- * Pair it with `router.push({ name, hash })`, which needs the leading `#` — without it vue-router
14
- * glues the value onto the path instead. A hash still containing `%` (diacritics, `&`, `=`) does
15
- * not survive that trip; check with `isRouterSafeHash` and fall back to assigning
16
- * `window.location.hash` after navigating. Returns an empty string when nothing differs from
17
- * the defaults.
11
+ * Hash for a filter link, leaving out values equal to their default. Returns an empty string when nothing differs.
12
+ * Use with `router.push({ name, hash })`. The hash needs the leading `#`, or vue-router appends it to the path.
13
+ * A hash containing `%` (diacritics, `&`, `=`) does not survive the push. Check
14
+ * `isRouterSafeHash` and fall back to setting `window.location.hash` after navigating.
18
15
  */
19
16
  export declare function buildFilterHash<F extends readonly MakeFilterOption<string>[]>(filterConfig: FilterConfig<F>, filters: Partial<Record<keyof FilterData<F> & string, AllowedFilterValues>>, sortBy?: DatatableSortBy): string;
20
17
  /** Whether `router.push({ hash })` would leave the hash intact — see `buildFilterHash`. */
@@ -34,6 +31,7 @@ export declare function useFilterClearHelpers<F extends readonly MakeFilterOptio
34
31
  export interface FilterHelpersMoreOptions {
35
32
  storeFiltersLocalStorage: string | boolean;
36
33
  populateUrlParams: boolean;
34
+ pageStoreKey?: string;
37
35
  }
38
36
  export declare function useFilterHelpers<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[]>(filterData: FilterData<F>, filterConfig: FilterConfig<F>, moreOptions?: Partial<FilterHelpersMoreOptions>): {
39
37
  loadStoredFilters: (pagination: Ref<Pagination>, callback?: AnyFn) => boolean;
@@ -46,28 +44,20 @@ export declare function useFilterHelpers<F extends readonly MakeFilterOption<str
46
44
  } | null;
47
45
  };
48
46
  /**
49
- * Provides the filter (`FilterConfigKey`, `FilterDataKey`) and `pagination` (`DatatablePaginationKey`) to the filter
50
- * bar and `ADatatablePagination` below this component, and wires the list to them: `getList` is
51
- * `fetchList(pagination, filterData, filterConfig)` debounced and resolves once that has (a refresh button can wait for
52
- * it; a call that a newer one replaces within the debounce resolves at once, without a load of its own), submit, reset
53
- * and sort go through `useFilterHelpers` (with `filterHelpersOptions`), and on mount the stored filter and the
54
- * remembered page are restored before the first load.
55
- *
56
- * Only for a datatable that is the parent of its filter bar and does exactly this. Write the wiring out when the first
57
- * load skips the stored filter, `getList` checks or adds anything, the sort is handled by hand, `fetchList` takes more
58
- * than the list's three arguments, or a parent renders the filter bar (the parent provides then).
59
- *
60
- * ```ts
47
+ * Provides the filter (`FilterConfigKey`, `FilterDataKey`) and `pagination` (`DatatablePaginationKey`)
48
+ * to the filter bar and `ADatatablePagination` below, and wires the list to them.
49
+ * `getList` is a debounced `fetchList(pagination, filterData, filterConfig)` that resolves when
50
+ * the load finishes. A call superseded within the debounce resolves at once without loading.
51
+ * Submit, reset and sort go through `useFilterHelpers` (with `filterHelpersOptions`).
52
+ * On mount the stored filter and remembered page are restored before the first load.
53
+ * Use only for a datatable that is the parent of its filter bar. Wire it by hand when the first load skips the stored
54
+ * filter, `getList` adds logic, sort is custom, `fetchList` takes other arguments, or a parent renders the filter bar.
55
+ * @example
61
56
  * const { filterData, filterConfig } = useFaqListFilter()
62
57
  * const { fetchList, listItems } = useFaqListActions()
63
58
  * const { pagination } = usePagination(SORT_BY_ID)
64
- * const { getList, sortByChange, submitFilterAction, resetFilterAction } = useDatatableList(
65
- * filterData,
66
- * filterConfig,
67
- * pagination,
68
- * fetchList
69
- * )
70
- * ```
59
+ * const { getList, sortByChange, submitFilterAction, resetFilterAction
60
+ * } = useDatatableList(filterData, filterConfig, pagination, fetchList)
71
61
  */
72
62
  export declare function useDatatableList<F extends readonly MakeFilterOption<string>[] = readonly MakeFilterOption<string>[], R = unknown>(filterData: FilterData<F>, filterConfig: FilterConfig<F>, pagination: Ref<Pagination>, fetchList: (pagination: Ref<Pagination>, filterData: FilterData<F>, filterConfig: FilterConfig<F>) => R, filterHelpersOptions?: Partial<FilterHelpersMoreOptions>): {
73
63
  getList: import('@vueuse/shared').UseDebounceFnReturn<() => R>;
@@ -140,16 +140,21 @@ function z(e, t, o = {}) {
140
140
  ...o
141
141
  }, g;
142
142
  c(h.storeFiltersLocalStorage) ? g = h.storeFiltersLocalStorage : n(h.storeFiltersLocalStorage) && !0 === h.storeFiltersLocalStorage && c(t.general.system) && c(t.general.subject) && (g = "tableFilter_" + t.general.system + "_" + t.general.subject);
143
- let _ = c(h.storeFiltersLocalStorage) ? h.storeFiltersLocalStorage : f(t.general.system, t.general.subject);
143
+ let _ = h.pageStoreKey ?? (c(h.storeFiltersLocalStorage) ? h.storeFiltersLocalStorage : f(t.general.system, t.general.subject));
144
144
  y() && x(m, _);
145
- let { clearAll: b } = L(), S = () => {
145
+ let { consumeStoredPage: b, getStoredRowsPerPage: S, getStoredView: C, setStoredPage: w } = p(), D = (e) => A(F(), e), O = (e) => w(_, e.value.page, e.value.rowsPerPage, D(e.value.sortBy)), j = h.populateUrlParams || !l(g), M = (e) => {
146
+ let t = b(_);
147
+ if (t === null || j) return t;
148
+ let n = C(_);
149
+ return n === null || n === D(e) ? t : null;
150
+ }, N = (e, t) => t === null ? e.value.rowsPerPage : S(_) ?? e.value.rowsPerPage, { clearAll: P } = L(), F = () => {
146
151
  let n = {};
147
152
  for (let i in e) try {
148
153
  let o = i, s = e[o];
149
154
  l(s) || a(s) || r(s) || k(s, t.fields[o].default) || (n[i] = s);
150
155
  } catch {}
151
156
  return n;
152
- }, C = (e, t, n) => A(e, n ? t.value.sortBy : void 0), w = (e) => {
157
+ }, I = (e, t, n) => A(e, n ? t.value.sortBy : void 0), z = (e) => {
153
158
  if (!e) return null;
154
159
  e.startsWith("#") && (e = e.substring(1));
155
160
  let n = e.indexOf(E);
@@ -175,37 +180,38 @@ function z(e, t, o = {}) {
175
180
  filters: o,
176
181
  sortBy: s
177
182
  };
178
- }, D = (e) => {
183
+ }, B = (e) => {
179
184
  let t = window.location.pathname + window.location.search + e, n = window.history.state, r = s(n) && c(n.current) ? {
180
185
  ...n,
181
186
  current: (n.current.split("#")[0] ?? "") + e
182
187
  } : n;
183
188
  window.history.replaceState(r, "", t);
184
- }, O = (e) => {
185
- h.populateUrlParams !== !1 && D("#" + e);
186
- }, j = () => {
187
- h.populateUrlParams !== !1 && D("");
188
- }, M = () => h.populateUrlParams === !1 ? null : w(window.location.hash), N = (e) => {
189
+ }, V = (e) => {
190
+ h.populateUrlParams !== !1 && B("#" + e);
191
+ }, H = () => {
192
+ h.populateUrlParams !== !1 && B("");
193
+ }, U = () => h.populateUrlParams === !1 ? null : z(window.location.hash), W = (e) => {
189
194
  g && localStorage && localStorage.setItem(g, e);
190
- }, P = () => {
195
+ }, G = () => {
191
196
  if (!g || !localStorage) return null;
192
197
  let e = localStorage.getItem(g);
193
- return !e || !c(e) ? null : w(e);
198
+ return !e || !c(e) ? null : z(e);
194
199
  };
195
200
  return {
196
201
  loadStoredFilters: (n, r) => {
197
- let { consumeStoredPage: o } = p(), s = "hash", f = M();
198
- if (a(f) && (s = "localStorage", f = P()), a(f) || i(f.filters) && a(f.sortBy)) {
199
- let e = o(_);
202
+ let o = "hash", s = U();
203
+ if (a(s) && (o = "localStorage", s = G()), a(s) || i(s.filters) && a(s.sortBy)) {
204
+ let e = M(n.value.sortBy);
200
205
  return e !== null && (n.value = {
201
206
  ...n.value,
202
- page: e
203
- }), r && r(), !1;
207
+ page: e,
208
+ rowsPerPage: N(n, e)
209
+ }), O(n), r && r(), !1;
204
210
  }
205
- let m = s === "hash" && !i(f.filters);
206
- m && b(e, t);
211
+ let f = o === "hash" && !i(s.filters);
212
+ f && P(e, t);
207
213
  for (let t in e) {
208
- let n = t, r = f.filters[n];
214
+ let n = t, r = s.filters[n];
209
215
  if (!l(r)) {
210
216
  if (c(r)) {
211
217
  let e = d(r);
@@ -218,32 +224,33 @@ function z(e, t, o = {}) {
218
224
  e[n] = r;
219
225
  }
220
226
  }
221
- if (s === "localStorage" && g && localStorage) {
227
+ if (o === "localStorage" && g && localStorage) {
222
228
  let e = localStorage.getItem(g);
223
- e && O(e);
229
+ e && V(e);
224
230
  }
225
- let h = o(_);
231
+ let p = s.sortBy ?? n.value.sortBy, m = M(p);
226
232
  return n.value = {
227
233
  ...n.value,
228
- sortBy: f.sortBy ?? n.value.sortBy,
229
- page: h ?? (s === "hash" ? 1 : n.value.page)
230
- }, m && N(C(S(), n, !0)), r && r(), !0;
234
+ sortBy: p,
235
+ page: m ?? (o === "hash" ? 1 : n.value.page),
236
+ rowsPerPage: N(n, m)
237
+ }, O(n), f && W(I(F(), n, !0)), r && r(), !0;
231
238
  },
232
239
  resetFilter: (e, n) => {
233
240
  e.value = {
234
241
  ...e.value,
235
242
  page: 1
236
- }, g && localStorage && localStorage.removeItem(g), j(), t.touched = !1, n && n();
243
+ }, O(e), g && localStorage && localStorage.removeItem(g), H(), t.touched = !1, n && n();
237
244
  },
238
245
  submitFilter: (e, n) => {
239
- let r = S(), i = C(r, e, !0);
240
- O(i), N(i), e.value = {
246
+ let r = F(), i = I(r, e, !0);
247
+ V(i), W(i), e.value = {
241
248
  ...e.value,
242
249
  page: 1
243
- }, t.touched = !1, n && n();
250
+ }, O(e), t.touched = !1, n && n();
244
251
  },
245
- serializeFilters: C,
246
- deserializeFilters: w
252
+ serializeFilters: I,
253
+ deserializeFilters: z
247
254
  };
248
255
  }
249
256
  function B(e, t, n, r, i = {}) {