@anzusystems/common-admin 2.0.0-rc.11 → 2.0.0-rc.12

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 (457) hide show
  1. package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
  2. package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  3. package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
  4. package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
  6. package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
  8. package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
  9. package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
  11. package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
  13. package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
  15. package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
  17. package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
  18. package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
  20. package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
  22. package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
  23. package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
  25. package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
  27. package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
  28. package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/domains/auth/components/Acl.js.map +1 -1
  30. package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/domains/cached/components/ACachedChip.js.map +1 -1
  32. package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
  34. package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/domains/collab/components/ACollabCountdown.js.map +1 -1
  36. package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
  38. package/dist/domains/collab/components/ACollabManagement.js.map +1 -1
  39. package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
  41. package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
  43. package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
  44. package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
  45. package/dist/domains/dam/assetDetail/components/AColorBox.js.map +1 -1
  46. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
  47. package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
  49. package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
  51. package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js.map +1 -1
  53. package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js.map +1 -1
  54. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js.map +1 -1
  55. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js.map +1 -1
  56. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
  58. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
  60. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  61. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
  62. package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js.map +1 -1
  64. package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  65. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
  66. package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/domains/dam/assetDetail/components/AssetFileRotate.js.map +1 -1
  68. package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
  70. package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
  72. package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
  74. package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
  76. package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js.map +1 -1
  78. package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js.map +1 -1
  79. package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
  80. package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
  82. package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  83. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
  84. package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
  86. package/dist/domains/dam/assetSelect/components/AssetImagePreview.js.map +1 -1
  87. package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js.map +1 -1
  89. package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js.map +1 -1
  91. package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
  93. package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js.map +1 -1
  95. package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js.map +1 -1
  97. package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
  99. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js.map +1 -1
  100. package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  101. package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js.map +1 -1
  102. package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
  103. package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
  105. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
  107. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
  109. package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
  111. package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
  113. package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
  114. package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
  116. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js.map +1 -1
  118. package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
  120. package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
  122. package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  123. package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
  124. package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
  125. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
  126. package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  127. package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js.map +1 -1
  128. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js.map +1 -1
  129. package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js.map +1 -1
  131. package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
  133. package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  134. package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
  135. package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
  137. package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
  139. package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
  141. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
  143. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
  145. package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js.map +1 -1
  147. package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
  149. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
  150. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  151. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
  152. package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
  154. package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
  156. package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  157. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js.map +1 -1
  158. package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js.map +1 -1
  159. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
  160. package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
  162. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
  164. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
  165. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
  167. package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
  169. package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
  171. package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  172. package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js.map +1 -1
  173. package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js.map +1 -1
  174. package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js.map +1 -1
  175. package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
  176. package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js.map +1 -1
  177. package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
  178. package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js.map +1 -1
  179. package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
  180. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js.map +1 -1
  181. package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  182. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
  183. package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/domains/filters/bookmarks/components/FilterBookmarks.js.map +1 -1
  185. package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js.map +1 -1
  186. package/dist/domains/filters/components/AFilterAdvancedButton.js.map +1 -1
  187. package/dist/domains/filters/components/AFilterBooleanSelect.js.map +1 -1
  188. package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
  189. package/dist/domains/filters/components/AFilterEmpty.js.map +1 -1
  190. package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
  191. package/dist/domains/filters/components/AFilterResetButton.js.map +1 -1
  192. package/dist/domains/filters/components/AFilterString.js.map +1 -1
  193. package/dist/domains/filters/components/AFilterString.vue.d.ts +3 -0
  194. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js +8 -2
  195. package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
  196. package/dist/domains/filters/components/AFilterSubmitButton.js.map +1 -1
  197. package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
  198. package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
  200. package/dist/domains/filters/components/AFilterWrapper.js.map +1 -1
  201. package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  202. package/dist/domains/filters/components/AFilterWrapperSidebar.js.map +1 -1
  203. package/dist/domains/filters/components/FilterDetailItem.js.map +1 -1
  204. package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
  205. package/dist/domains/filters/datatable/components/ADatatableConfigButton.js.map +1 -1
  206. package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
  207. package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
  208. package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  209. package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
  210. package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
  212. package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  213. package/dist/domains/form/components/AFormRemoteCheckbox.js.map +1 -1
  214. package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  215. package/dist/domains/form/components/AFormRemoteSwitch.js.map +1 -1
  216. package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/domains/form/components/AFormSwitch.js.map +1 -1
  218. package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/domains/form/components/AFormTextField.js.map +1 -1
  220. package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/domains/form/components/AFormTextarea.js.map +1 -1
  222. package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/domains/form/components/AFormValueObjectOptionsSelect.js.map +1 -1
  224. package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/domains/form/components/ASystemEntityScope.js.map +1 -1
  226. package/dist/domains/job/components/AJobBaseCreateForm.js.map +1 -1
  227. package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
  228. package/dist/domains/job/components/AJobDetailCommon.js.map +1 -1
  229. package/dist/domains/job/components/AJobPriorityChip.js.map +1 -1
  230. package/dist/domains/job/components/AJobStatusChip.js.map +1 -1
  231. package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
  232. package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  233. package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
  234. package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
  236. package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js.map +1 -1
  238. package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  239. package/dist/domains/listEditor/components/internal/LeDeleteDialog.js.map +1 -1
  240. package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/domains/listEditor/components/internal/LeDragHandle.js.map +1 -1
  242. package/dist/domains/listEditor/components/internal/LeEmptyState.js.map +1 -1
  243. package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  244. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js.map +1 -1
  245. package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  246. package/dist/domains/listEditor/components/internal/LeNestedRow.js.map +1 -1
  247. package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  248. package/dist/domains/listEditor/components/internal/LeStatus.js.map +1 -1
  249. package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js.map +1 -1
  250. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js.map +1 -1
  251. package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  252. package/dist/domains/log/components/ALogDatatable.js.map +1 -1
  253. package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  254. package/dist/domains/log/components/ALogDetail.js.map +1 -1
  255. package/dist/domains/log/components/ALogDetailView.js.map +1 -1
  256. package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/domains/log/components/ALogFilter.js.map +1 -1
  258. package/dist/domains/log/components/ALogLevelChip.js.map +1 -1
  259. package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  260. package/dist/domains/log/components/ALogListView.js.map +1 -1
  261. package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
  262. package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
  263. package/dist/domains/permission/components/APermissionGrantEditor.js.map +1 -1
  264. package/dist/domains/permission/components/APermissionValueChip.js.map +1 -1
  265. package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  266. package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
  267. package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
  269. package/dist/domains/permission/group/components/APermissionGroupFilter.js.map +1 -1
  270. package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
  271. package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  272. package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js.map +1 -1
  273. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
  274. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  275. package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
  276. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
  277. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  278. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js.map +1 -1
  279. package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js.map +1 -1
  281. package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  282. package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
  283. package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  284. package/dist/domains/system/appShell/components/AActionbar.js.map +1 -1
  285. package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  286. package/dist/domains/system/appShell/components/AActionbarTarget.js.map +1 -1
  287. package/dist/domains/system/appShell/components/ALayoutLoader.js.map +1 -1
  288. package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
  289. package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  290. package/dist/domains/system/components/AAdminSwitcher.js.map +1 -1
  291. package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/dist/domains/system/components/AAlerts.js.map +1 -1
  293. package/dist/domains/system/components/ALanguageSelect.js.map +1 -1
  294. package/dist/domains/system/components/AThemeSelect.js.map +1 -1
  295. package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  296. package/dist/domains/system/flags/components/FlagCountry.js.map +1 -1
  297. package/dist/domains/system/flags/components/FlagEn.js.map +1 -1
  298. package/dist/domains/system/flags/components/FlagSk.js.map +1 -1
  299. package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
  300. package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  301. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js.map +1 -1
  302. package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  303. package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
  304. package/dist/domains/ui/buttons/action/components/AActionCreateButton.js.map +1 -1
  305. package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
  307. package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  308. package/dist/domains/ui/buttons/action/components/AActionEditButton.js.map +1 -1
  309. package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js.map +1 -1
  311. package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  312. package/dist/domains/ui/buttons/action/components/AActionSaveButton.js.map +1 -1
  313. package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  314. package/dist/domains/ui/buttons/components/ABtnSplit.js.map +1 -1
  315. package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js.map +1 -1
  316. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js.map +1 -1
  317. package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  318. package/dist/domains/ui/buttons/table/components/ATableDetailButton.js.map +1 -1
  319. package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  320. package/dist/domains/ui/buttons/table/components/ATableEditButton.js.map +1 -1
  321. package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  322. package/dist/domains/ui/components/AAnzuUserAvatar.js.map +1 -1
  323. package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  324. package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
  325. package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  326. package/dist/domains/ui/components/ABooleanSelect.js.map +1 -1
  327. package/dist/domains/ui/components/ABooleanValue.js.map +1 -1
  328. package/dist/domains/ui/components/ACard.js.map +1 -1
  329. package/dist/domains/ui/components/ACardLoader.js.map +1 -1
  330. package/dist/domains/ui/components/AChipNoLink.js.map +1 -1
  331. package/dist/domains/ui/components/ACopyText.js.map +1 -1
  332. package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js.map +1 -1
  333. package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
  334. package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  335. package/dist/domains/ui/components/ACurrentUserDropdown.js.map +1 -1
  336. package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
  337. package/dist/domains/ui/components/ADialogToolbar.js.map +1 -1
  338. package/dist/domains/ui/components/AIconGroup.js.map +1 -1
  339. package/dist/domains/ui/components/AProgress.js.map +1 -1
  340. package/dist/domains/ui/components/ARow.js.map +1 -1
  341. package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
  343. package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  344. package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
  345. package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/domains/ui/datetime/components/ADatetime.js.map +1 -1
  347. package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
  348. package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/dist/domains/ui/datetime/components/TimePicker.js.map +1 -1
  350. package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
  351. package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
  352. package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
  354. package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/dist/domains/ui/view/components/AGenericView.js.map +1 -1
  356. package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  357. package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
  358. package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  359. package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
  360. package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
  361. package/dist/domains/ui/view/components/AUnauthorizedView.js.map +1 -1
  362. package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  363. package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js.map +1 -1
  364. package/dist/locales/cs/common/alert.js.map +1 -1
  365. package/dist/locales/cs/common/anzuUser.js.map +1 -1
  366. package/dist/locales/cs/common/assetSelect.js.map +1 -1
  367. package/dist/locales/cs/common/button.js.map +1 -1
  368. package/dist/locales/cs/common/collab.js.map +1 -1
  369. package/dist/locales/cs/common/confirmDialog.js.map +1 -1
  370. package/dist/locales/cs/common/customForm.js.map +1 -1
  371. package/dist/locales/cs/common/customFormElement.js.map +1 -1
  372. package/dist/locales/cs/common/damImage.js.map +1 -1
  373. package/dist/locales/cs/common/dayOfWeek.js.map +1 -1
  374. package/dist/locales/cs/common/filter.js.map +1 -1
  375. package/dist/locales/cs/common/job.js.map +1 -1
  376. package/dist/locales/cs/common/linkDto.js.map +1 -1
  377. package/dist/locales/cs/common/listItemDto.js.map +1 -1
  378. package/dist/locales/cs/common/log.js.map +1 -1
  379. package/dist/locales/cs/common/model.js.map +1 -1
  380. package/dist/locales/cs/common/permission.js.map +1 -1
  381. package/dist/locales/cs/common/permissionEditor.js.map +1 -1
  382. package/dist/locales/cs/common/permissionGroup.js.map +1 -1
  383. package/dist/locales/cs/common/routeSettings.js.map +1 -1
  384. package/dist/locales/cs/common/sortable.js.map +1 -1
  385. package/dist/locales/cs/common/subjectSelect.js.map +1 -1
  386. package/dist/locales/cs/common/system.js.map +1 -1
  387. package/dist/locales/cs/common/time.js.map +1 -1
  388. package/dist/locales/cs/common/userSystem.js.map +1 -1
  389. package/dist/locales/cs/error/apiDependencyExists.js.map +1 -1
  390. package/dist/locales/cs/error/apiForbiddenOperation.js.map +1 -1
  391. package/dist/locales/cs/error/apiTimedOut.js.map +1 -1
  392. package/dist/locales/cs/error/apiValidation.js.map +1 -1
  393. package/dist/locales/cs/error/jsValidation.js.map +1 -1
  394. package/dist/locales/cs/vuetify.js.map +1 -1
  395. package/dist/locales/en/common/alert.js.map +1 -1
  396. package/dist/locales/en/common/anzuUser.js.map +1 -1
  397. package/dist/locales/en/common/assetSelect.js.map +1 -1
  398. package/dist/locales/en/common/button.js.map +1 -1
  399. package/dist/locales/en/common/collab.js.map +1 -1
  400. package/dist/locales/en/common/confirmDialog.js.map +1 -1
  401. package/dist/locales/en/common/customForm.js.map +1 -1
  402. package/dist/locales/en/common/customFormElement.js.map +1 -1
  403. package/dist/locales/en/common/damImage.js.map +1 -1
  404. package/dist/locales/en/common/dayOfWeek.js.map +1 -1
  405. package/dist/locales/en/common/filter.js.map +1 -1
  406. package/dist/locales/en/common/job.js.map +1 -1
  407. package/dist/locales/en/common/linkDto.js.map +1 -1
  408. package/dist/locales/en/common/listItemDto.js.map +1 -1
  409. package/dist/locales/en/common/log.js.map +1 -1
  410. package/dist/locales/en/common/model.js.map +1 -1
  411. package/dist/locales/en/common/permission.js.map +1 -1
  412. package/dist/locales/en/common/permissionEditor.js.map +1 -1
  413. package/dist/locales/en/common/permissionGroup.js.map +1 -1
  414. package/dist/locales/en/common/routeSettings.js.map +1 -1
  415. package/dist/locales/en/common/sortable.js.map +1 -1
  416. package/dist/locales/en/common/subjectSelect.js.map +1 -1
  417. package/dist/locales/en/common/system.js.map +1 -1
  418. package/dist/locales/en/common/time.js.map +1 -1
  419. package/dist/locales/en/common/userSystem.js.map +1 -1
  420. package/dist/locales/en/error/apiDependencyExists.js.map +1 -1
  421. package/dist/locales/en/error/apiForbiddenOperation.js.map +1 -1
  422. package/dist/locales/en/error/apiTimedOut.js.map +1 -1
  423. package/dist/locales/en/error/apiValidation.js.map +1 -1
  424. package/dist/locales/en/error/jsValidation.js.map +1 -1
  425. package/dist/locales/en/vuetify.js.map +1 -1
  426. package/dist/locales/sk/common/alert.js.map +1 -1
  427. package/dist/locales/sk/common/anzuUser.js.map +1 -1
  428. package/dist/locales/sk/common/assetSelect.js.map +1 -1
  429. package/dist/locales/sk/common/button.js.map +1 -1
  430. package/dist/locales/sk/common/collab.js.map +1 -1
  431. package/dist/locales/sk/common/confirmDialog.js.map +1 -1
  432. package/dist/locales/sk/common/customForm.js.map +1 -1
  433. package/dist/locales/sk/common/customFormElement.js.map +1 -1
  434. package/dist/locales/sk/common/damImage.js.map +1 -1
  435. package/dist/locales/sk/common/dayOfWeek.js.map +1 -1
  436. package/dist/locales/sk/common/filter.js.map +1 -1
  437. package/dist/locales/sk/common/job.js.map +1 -1
  438. package/dist/locales/sk/common/linkDto.js.map +1 -1
  439. package/dist/locales/sk/common/listItemDto.js.map +1 -1
  440. package/dist/locales/sk/common/log.js.map +1 -1
  441. package/dist/locales/sk/common/model.js.map +1 -1
  442. package/dist/locales/sk/common/permission.js.map +1 -1
  443. package/dist/locales/sk/common/permissionEditor.js.map +1 -1
  444. package/dist/locales/sk/common/permissionGroup.js.map +1 -1
  445. package/dist/locales/sk/common/routeSettings.js.map +1 -1
  446. package/dist/locales/sk/common/sortable.js.map +1 -1
  447. package/dist/locales/sk/common/subjectSelect.js.map +1 -1
  448. package/dist/locales/sk/common/system.js.map +1 -1
  449. package/dist/locales/sk/common/time.js.map +1 -1
  450. package/dist/locales/sk/common/userSystem.js.map +1 -1
  451. package/dist/locales/sk/error/apiDependencyExists.js.map +1 -1
  452. package/dist/locales/sk/error/apiForbiddenOperation.js.map +1 -1
  453. package/dist/locales/sk/error/apiTimedOut.js.map +1 -1
  454. package/dist/locales/sk/error/apiValidation.js.map +1 -1
  455. package/dist/locales/sk/error/jsValidation.js.map +1 -1
  456. package/dist/locales/sk/vuetify.js.map +1 -1
  457. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBookmarks.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_Fragment","_renderList","_createVNode","_component_VBtn","_withCtx","_createTextVNode","_toDisplayString","_createBlock","_component_VMenu","_mergeProps","_unref","_component_VList","_component_VListItem","_component_VListItemTitle","_createCommentVNode","_hoisted_1","THREE_DOTS_WIDTH","FilterBookmarks_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","__emit","props","__props","emit","useI18n","datatableHiddenColumns","useModel","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","pagination","DatatablePaginationKey","filterSelected","FilterSelectedKey","isUndefined","loading","ref","toolbarRef","useTemplateRef","toolbarWidth","visibleItemsCount","filterBookmarkStore","useFilterBookmarkStore","useUserAdminConfigApi","systemResource","loadBookmarks","UserAdminConfigLayoutType","useFetchUserAdminConfigList","force","useFilterHelpers","onItemClick","config","item","isDefined","deserialized","deserializeFilters","filterName","key","value","cloneDeep","isString","tryConvertNumber","stringToNumber","isNull","tryConvertBoolean","stringToBooleanExact","calculateVisible","container","nextTick","cumulativeWidth","visible","childWidth","totalWidth","useResizeObserver","entries","watchThrottled","newValue","oldValue","items","computed","itemsComputed","watch","newLoading","onMounted","openBlock","createElementBlock","Fragment","renderList","createVNode","VBtn","withCtx","createTextVNode","toDisplayString","createBlock","VMenu","activatorProps","mergeProps","unref","t","VList","VListItem","VListItemTitle","createCommentVNode"],"sources":["../../../../../src/domains/filters/bookmarks/components/FilterBookmarks.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, inject, nextTick, onMounted, ref, useTemplateRef, watch } from 'vue'\nimport { useFilterBookmarkStore } from '@/domains/filters/bookmarks/store/bookmarksStore'\nimport { useUserAdminConfigApi } from '@/domains/filters/bookmarks/api/userAdminConfigApi'\nimport type { AxiosInstance } from 'axios'\nimport {\n type UserAdminConfig,\n type UserAdminConfigDataFilterBookmark,\n UserAdminConfigLayoutType,\n} from '@/domains/filters/bookmarks/types/UserAdminConfig'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useResizeObserver, watchThrottled } from '@vueuse/core'\nimport { cloneDeep, isDefined, isNull, isString, isUndefined } from '@/shared/utils/common'\nimport {\n DatatablePaginationKey,\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { type FilterData, useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { stringToBooleanExact, stringToNumber } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n client: () => AxiosInstance\n userId: IntegerId\n system: string\n subject: string\n }>(),\n {}\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst { t } = useI18n()\n\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: true,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst pagination = inject(DatatablePaginationKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(pagination) || isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst loading = ref(false)\nconst toolbarRef = useTemplateRef('toolbar')\nconst toolbarWidth = ref(300)\nconst visibleItemsCount = ref(1000)\n\nconst filterBookmarkStore = useFilterBookmarkStore()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { useFetchUserAdminConfigList } = useUserAdminConfigApi(props.client, props.system)\n\nconst systemResource = props.system + '_' + props.subject\n\nconst loadBookmarks = async (force = false) => {\n loading.value = true\n await filterBookmarkStore.getBookmarks(\n {\n user: props.userId,\n layoutType: UserAdminConfigLayoutType.Desktop,\n systemResource: systemResource,\n },\n useFetchUserAdminConfigList,\n force\n )\n loading.value = false\n}\n\nconst { deserializeFilters } = useFilterHelpers(filterData, filterConfig)\n\nconst onItemClick = (item: UserAdminConfig) => {\n const config = item.data as UserAdminConfigDataFilterBookmark\n if (isDefined(config.datatableHiddenColumns) && isDefined(datatableHiddenColumns.value)) {\n datatableHiddenColumns.value = config.datatableHiddenColumns\n }\n if (isDefined(config.sortBy)) {\n pagination.value = {\n ...pagination.value,\n sortBy: { key: config.sortBy!.key, order: config.sortBy!.order },\n }\n }\n const deserialized = deserializeFilters(config.filter)\n if (isNull(deserialized)) return\n for (const filterName in filterData) {\n const key = filterName as keyof FilterData\n let value = deserialized.filters[key]\n if (isUndefined(value) && filterConfig.fields[key]?.clearable) {\n filterData[key] = cloneDeep(filterConfig.fields[key].default)\n filterSelected.value.delete(key)\n continue\n }\n if (isString(value)) {\n const tryConvertNumber = stringToNumber(value)\n // Only a canonical number: '0905' or '007' are codes and stay strings, as in the url hash.\n if (!isNull(tryConvertNumber) && String(tryConvertNumber) === value) {\n value = tryConvertNumber\n } else {\n // If not a number, try to convert to boolean\n const tryConvertBoolean = stringToBooleanExact(value)\n if (!isNull(tryConvertBoolean)) {\n value = tryConvertBoolean\n }\n }\n }\n filterData[key] = value\n }\n emit('submit')\n}\n\nconst THREE_DOTS_WIDTH = 32\n\nconst calculateVisible = async (totalWidth: number) => {\n const container = toolbarRef.value\n if (isNull(container)) return\n visibleItemsCount.value = 1000\n await nextTick()\n let cumulativeWidth = 0\n let visible = 0\n for (let i = 0; i < container.children.length; i++) {\n const child = container.children[i] as HTMLElement\n const childWidth = child.offsetWidth\n cumulativeWidth += childWidth\n if (cumulativeWidth >= totalWidth - THREE_DOTS_WIDTH) {\n break\n }\n visible++\n }\n visibleItemsCount.value = visible\n}\n\nuseResizeObserver(toolbarRef, (entries) => {\n if (entries[0]) {\n toolbarWidth.value = entries[0].contentRect.width\n }\n})\n\nwatchThrottled(\n toolbarWidth,\n (newValue, oldValue) => {\n if (newValue === oldValue) return\n calculateVisible(newValue)\n },\n { throttle: 1000 }\n)\n\nconst items = computed(() => {\n const key = filterBookmarkStore.generateKey(UserAdminConfigLayoutType.Desktop, systemResource)\n const result = filterBookmarkStore.bookmarks.get(key)\n return result?.items ?? []\n})\n\nconst itemsComputed = computed(() => {\n const visible = visibleItemsCount.value\n return {\n visible: items.value.slice(0, visible),\n hidden: items.value.slice(visible),\n }\n})\n\nwatch([loading, () => items.value.length], ([newLoading]) => {\n if (newLoading === true || isNull(toolbarRef.value)) return\n toolbarWidth.value = toolbarRef.value.clientWidth\n nextTick(() => {\n calculateVisible(toolbarWidth.value)\n })\n})\n\nonMounted(() => {\n loadBookmarks()\n})\n</script>\n\n<template>\n <div\n ref=\"toolbar\"\n :key=\"items.length\"\n class=\"w-100 d-flex overflow-hidden align-center mb-1\"\n >\n <div v-if=\"loading\" />\n <template v-else>\n <div\n v-for=\"item in itemsComputed.visible\"\n :key=\"item.id\"\n class=\"white-space-nowrap\"\n >\n <VBtn\n variant=\"text\"\n prepend-icon=\"mdi-bookmark-outline\"\n size=\"small\"\n class=\"mr-1 mb-1 bg-grey-lighten-4 text-grey-darken-3\"\n @click=\"onItemClick(item)\"\n >\n {{ item.customName }}\n </VBtn>\n </div>\n <VMenu\n v-if=\"itemsComputed.hidden.length > 0\"\n location=\"bottom\"\n >\n <template #activator=\"{ props: activatorProps }\">\n <VBtn\n icon=\"mdi-menu-down\"\n :aria-label=\"t('common.filter.bookmark.more')\"\n size=\"x-small\"\n :width=\"28\"\n :height=\"28\"\n v-bind=\"activatorProps\"\n />\n </template>\n <VList density=\"compact\">\n <VListItem\n v-for=\"item in itemsComputed.hidden\"\n :key=\"item.id\"\n @click=\"onItemClick(item)\"\n >\n <VListItemTitle>{{ item.customName }}</VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterBookmarks.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_Fragment","_renderList","_createVNode","_component_VBtn","_withCtx","_createTextVNode","_toDisplayString","_createBlock","_component_VMenu","_mergeProps","_unref","_component_VList","_component_VListItem","_component_VListItemTitle","_hoisted_1","THREE_DOTS_WIDTH","FilterBookmarks_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","__emit","props","__props","emit","useI18n","datatableHiddenColumns","useModel","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","pagination","DatatablePaginationKey","filterSelected","FilterSelectedKey","isUndefined","loading","ref","toolbarRef","useTemplateRef","toolbarWidth","visibleItemsCount","filterBookmarkStore","useFilterBookmarkStore","useUserAdminConfigApi","systemResource","loadBookmarks","UserAdminConfigLayoutType","useFetchUserAdminConfigList","force","useFilterHelpers","onItemClick","config","item","isDefined","deserialized","deserializeFilters","filterName","key","value","cloneDeep","isString","tryConvertNumber","stringToNumber","isNull","tryConvertBoolean","stringToBooleanExact","calculateVisible","container","nextTick","cumulativeWidth","visible","childWidth","totalWidth","useResizeObserver","entries","watchThrottled","newValue","oldValue","items","computed","itemsComputed","watch","newLoading","onMounted","openBlock","createElementBlock","Fragment","renderList","createVNode","VBtn","withCtx","createTextVNode","toDisplayString","createBlock","VMenu","activatorProps","mergeProps","unref","t","VList","VListItem","VListItemTitle","createCommentVNode"],"sources":["../../../../../src/domains/filters/bookmarks/components/FilterBookmarks.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, inject, nextTick, onMounted, ref, useTemplateRef, watch } from 'vue'\nimport { useFilterBookmarkStore } from '@/domains/filters/bookmarks/store/bookmarksStore'\nimport { useUserAdminConfigApi } from '@/domains/filters/bookmarks/api/userAdminConfigApi'\nimport type { AxiosInstance } from 'axios'\nimport {\n type UserAdminConfig,\n type UserAdminConfigDataFilterBookmark,\n UserAdminConfigLayoutType,\n} from '@/domains/filters/bookmarks/types/UserAdminConfig'\nimport type { IntegerId } from '@/shared/types/common'\nimport { useResizeObserver, watchThrottled } from '@vueuse/core'\nimport { cloneDeep, isDefined, isNull, isString, isUndefined } from '@/shared/utils/common'\nimport {\n DatatablePaginationKey,\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { type FilterData, useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { stringToBooleanExact, stringToNumber } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n client: () => AxiosInstance\n userId: IntegerId\n system: string\n subject: string\n }>(),\n {}\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst { t } = useI18n()\n\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: true,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst pagination = inject(DatatablePaginationKey)\nconst filterSelected = inject(FilterSelectedKey)\n\nif (isUndefined(pagination) || isUndefined(filterConfig) || isUndefined(filterData) || isUndefined(filterSelected)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst loading = ref(false)\nconst toolbarRef = useTemplateRef('toolbar')\nconst toolbarWidth = ref(300)\nconst visibleItemsCount = ref(1000)\n\nconst filterBookmarkStore = useFilterBookmarkStore()\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { useFetchUserAdminConfigList } = useUserAdminConfigApi(props.client, props.system)\n\nconst systemResource = props.system + '_' + props.subject\n\nconst loadBookmarks = async (force = false) => {\n loading.value = true\n await filterBookmarkStore.getBookmarks(\n {\n user: props.userId,\n layoutType: UserAdminConfigLayoutType.Desktop,\n systemResource: systemResource,\n },\n useFetchUserAdminConfigList,\n force\n )\n loading.value = false\n}\n\nconst { deserializeFilters } = useFilterHelpers(filterData, filterConfig)\n\nconst onItemClick = (item: UserAdminConfig) => {\n const config = item.data as UserAdminConfigDataFilterBookmark\n if (isDefined(config.datatableHiddenColumns) && isDefined(datatableHiddenColumns.value)) {\n datatableHiddenColumns.value = config.datatableHiddenColumns\n }\n if (isDefined(config.sortBy)) {\n pagination.value = {\n ...pagination.value,\n sortBy: { key: config.sortBy!.key, order: config.sortBy!.order },\n }\n }\n const deserialized = deserializeFilters(config.filter)\n if (isNull(deserialized)) return\n for (const filterName in filterData) {\n const key = filterName as keyof FilterData\n let value = deserialized.filters[key]\n if (isUndefined(value) && filterConfig.fields[key]?.clearable) {\n filterData[key] = cloneDeep(filterConfig.fields[key].default)\n filterSelected.value.delete(key)\n continue\n }\n if (isString(value)) {\n const tryConvertNumber = stringToNumber(value)\n // Only a canonical number: '0905' or '007' are codes and stay strings, as in the url hash.\n if (!isNull(tryConvertNumber) && String(tryConvertNumber) === value) {\n value = tryConvertNumber\n } else {\n // If not a number, try to convert to boolean\n const tryConvertBoolean = stringToBooleanExact(value)\n if (!isNull(tryConvertBoolean)) {\n value = tryConvertBoolean\n }\n }\n }\n filterData[key] = value\n }\n emit('submit')\n}\n\nconst THREE_DOTS_WIDTH = 32\n\nconst calculateVisible = async (totalWidth: number) => {\n const container = toolbarRef.value\n if (isNull(container)) return\n visibleItemsCount.value = 1000\n await nextTick()\n let cumulativeWidth = 0\n let visible = 0\n for (let i = 0; i < container.children.length; i++) {\n const child = container.children[i] as HTMLElement\n const childWidth = child.offsetWidth\n cumulativeWidth += childWidth\n if (cumulativeWidth >= totalWidth - THREE_DOTS_WIDTH) {\n break\n }\n visible++\n }\n visibleItemsCount.value = visible\n}\n\nuseResizeObserver(toolbarRef, (entries) => {\n if (entries[0]) {\n toolbarWidth.value = entries[0].contentRect.width\n }\n})\n\nwatchThrottled(\n toolbarWidth,\n (newValue, oldValue) => {\n if (newValue === oldValue) return\n calculateVisible(newValue)\n },\n { throttle: 1000 }\n)\n\nconst items = computed(() => {\n const key = filterBookmarkStore.generateKey(UserAdminConfigLayoutType.Desktop, systemResource)\n const result = filterBookmarkStore.bookmarks.get(key)\n return result?.items ?? []\n})\n\nconst itemsComputed = computed(() => {\n const visible = visibleItemsCount.value\n return {\n visible: items.value.slice(0, visible),\n hidden: items.value.slice(visible),\n }\n})\n\nwatch([loading, () => items.value.length], ([newLoading]) => {\n if (newLoading === true || isNull(toolbarRef.value)) return\n toolbarWidth.value = toolbarRef.value.clientWidth\n nextTick(() => {\n calculateVisible(toolbarWidth.value)\n })\n})\n\nonMounted(() => {\n loadBookmarks()\n})\n</script>\n\n<template>\n <div\n ref=\"toolbar\"\n :key=\"items.length\"\n class=\"w-100 d-flex overflow-hidden align-center mb-1\"\n >\n <div v-if=\"loading\" />\n <template v-else>\n <div\n v-for=\"item in itemsComputed.visible\"\n :key=\"item.id\"\n class=\"white-space-nowrap\"\n >\n <VBtn\n variant=\"text\"\n prepend-icon=\"mdi-bookmark-outline\"\n size=\"small\"\n class=\"mr-1 mb-1 bg-grey-lighten-4 text-grey-darken-3\"\n @click=\"onItemClick(item)\"\n >\n {{ item.customName }}\n </VBtn>\n </div>\n <VMenu\n v-if=\"itemsComputed.hidden.length > 0\"\n location=\"bottom\"\n >\n <template #activator=\"{ props: activatorProps }\">\n <VBtn\n icon=\"mdi-menu-down\"\n :aria-label=\"t('common.filter.bookmark.more')\"\n size=\"x-small\"\n :width=\"28\"\n :height=\"28\"\n v-bind=\"activatorProps\"\n />\n </template>\n <VList density=\"compact\">\n <VListItem\n v-for=\"item in itemsComputed.hidden\"\n :key=\"item.id\"\n @click=\"onItemClick(item)\"\n >\n <VListItemTitle>{{ item.customName }}</VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </template>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterAdvancedButton.js","names":["_sfc_main","AFilterAdvancedButton_vue_vue_type_script_setup_true_lang_default","AFilterAdvancedButton_default"],"sources":["../../../../src/domains/filters/components/AFilterAdvancedButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref } from 'vue'\nimport { eventClickBlur } from '@/shared/utils/event'\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n tooltipT?: string\n buttonClass?: string\n dataCy?: string\n }>(),\n {\n tooltipT: 'common.button.advancedFilters',\n buttonClass: 'mt-1',\n dataCy: 'filter-advanced',\n }\n)\nconst emit = defineEmits<{\n (e: 'advancedFilter'): void\n}>()\n\nconst active = ref(false)\n\nconst onClick = (event: Event) => {\n eventClickBlur(event)\n active.value = !active.value\n emit('advancedFilter')\n}\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <VBtn\n :aria-label=\"t(tooltipT)\"\n :class=\"buttonClass\"\n :data-cy=\"dataCy\"\n icon\n size=\"x-small\"\n variant=\"text\"\n @click.stop=\"onClick\"\n >\n <VIcon icon=\"mdi-filter-variant\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t(tooltipT) }}\n </VTooltip>\n </VBtn>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterAdvancedButton.js","names":["AFilterAdvancedButton_vue_vue_type_script_setup_true_lang_default","AFilterAdvancedButton_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterBooleanSelect.js","names":["_sfc_main","AFilterBooleanSelect_vue_vue_type_script_setup_true_lang_default","AFilterBooleanSelect_default"],"sources":["../../../../src/domains/filters/components/AFilterBooleanSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { computed, inject } from 'vue'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\ninterface BooleanSelectOption {\n value: 0 | 1 | -1\n title: string\n}\n\nconst props = withDefaults(\n defineProps<{\n name: string\n allT?: string\n trueT?: string\n falseT?: string\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-boolean',\n allT: 'common.model.all',\n trueT: 'common.model.boolean.true',\n falseT: 'common.model.boolean.false',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get(): BooleanSelectOption {\n if (isUndefined(filterData[props.name]) || isNull(filterData[props.name]))\n return {\n value: -1,\n title: t(props.allT),\n }\n return filterData[props.name] ? { value: 1, title: t(props.trueT) } : { value: 0, title: t(props.falseT) }\n },\n set(newValue: BooleanSelectOption) {\n let returnValue: null | boolean = null\n if (newValue?.value === 1) returnValue = true\n if (newValue?.value === 0) returnValue = false\n filterData[props.name] = returnValue\n updateSelected()\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 items = computed<BooleanSelectOption[]>(() => {\n return [\n { value: -1, title: t(props.allT) },\n { value: 1, title: t(props.trueT) },\n { value: 0, title: t(props.falseT) },\n ]\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = () => {\n if (modelValue.value.value === -1) {\n filterSelected.value.delete(props.name)\n return\n }\n filterSelected.value.set(props.name, [{ title: modelValue.value.title, value: modelValue.value.value }])\n}\n</script>\n\n<template>\n <VSelect\n v-model=\"modelValue\"\n :data-cy=\"dataCy\"\n :label=\"label\"\n :items=\"items\"\n :clearable=\"!filterConfigCurrent.mandatory && modelValue.value !== -1\"\n return-object\n hide-details\n autocomplete=\"off\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterBooleanSelect.js","names":["AFilterBooleanSelect_vue_vue_type_script_setup_true_lang_default","AFilterBooleanSelect_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterDatetimePicker.js","names":["_sfc_main","AFilterDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFilterDatetimePicker_default"],"sources":["../../../../src/domains/filters/components/AFilterDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { isString, isUndefined } from '@/shared/utils/common'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport type { DatetimeUTCNullable } from '@/shared/types/common'\nimport { dateTimePretty } from '@/shared/utils/datetime'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n dataCy?: string\n }>(),\n {\n dataCy: 'filter-datepicker',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name] as DatetimeUTCNullable\n },\n set(newValue: DatetimeUTCNullable) {\n filterData[props.name] = newValue\n updateSelected()\n filterConfig.touched = true\n emit('change')\n },\n})\n\nconst { t } = useI18n()\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\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 // `clearOne` writes the value the picker was about to emit, so the picker skips its emit as unchanged.\n // The model setter never runs, so the bookkeeping happens here.\n filterConfig.touched = true\n emit('change')\n}\n\nconst updateSelected = () => {\n // This component has no watcher on `filterData`, so `updateSelected` runs only from the model setter.\n // `ADatetimePicker` suppresses that for programmatic changes, so deleting the chip here would be dead code.\n // Known gap: a datetime restored from a hash or local storage shows no chip.\n // Adding the watcher makes `clearField` recreate the chip for a non-empty\n // default and adds datetime chips to eight lists that have none.\n if (!isString(modelValue.value) || modelValue.value.length === 0) return\n filterSelected.value.set(props.name, [{ title: dateTimePretty(modelValue.value), value: modelValue.value }])\n}\n</script>\n\n<template>\n <ADatetimePicker\n v-model=\"modelValue\"\n :data-cy=\"dataCy\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :default-value=\"filterConfigCurrent.default as DatetimeUTCNullable\"\n :label=\"label\"\n v-bind=\"$attrs\"\n @after-clear=\"clearField\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterDatetimePicker.js","names":["AFilterDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFilterDatetimePicker_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterEmpty.js","names":["_sfc_main","AFilterEmpty_vue_vue_type_script_setup_true_lang_default","AFilterEmpty_default"],"sources":["../../../../src/domains/filters/components/AFilterEmpty.vue"],"sourcesContent":["<script setup lang=\"ts\">\nconst props = withDefaults(\n defineProps<{\n name: string\n }>(),\n {}\n)\n</script>\n\n<template>\n <div>{{ props.name }}</div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterEmpty.js","names":["AFilterEmpty_vue_vue_type_script_setup_true_lang_default","AFilterEmpty_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterInteger.js","names":["_sfc_main","AFilterInteger_vue_vue_type_script_setup_true_lang_default","AFilterInteger_default"],"sources":["../../../../src/domains/filters/components/AFilterInteger.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport { computed, inject, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { isBoolean, isNumber, isString, isUndefined } from '@/shared/utils/common'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n placeholder: undefined,\n dataCy: 'filter-integer',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = 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 placeholderComputed = computed(() => {\n if (!isUndefined(props.placeholder)) return props.placeholder\n if (filterConfigCurrent.value.variant === 'startsWith') return t('common.model.filterPlaceholder.startsWith')\n if (filterConfigCurrent.value.variant === 'eq') return t('common.model.filterPlaceholder.eq')\n if (filterConfigCurrent.value.variant === 'search') return t('common.model.filterPlaceholder.contains')\n return ''\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = () => {\n if (isNumber(modelValue.value)) {\n filterSelected.value.set(props.name, [{ title: modelValue.value + '', value: modelValue.value }])\n return\n }\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // The chip must be removed too, or it names a value the query no longer has.\n if (!isString(modelValue.value) || modelValue.value.length === 0) {\n filterSelected.value.delete(props.name)\n return\n }\n filterSelected.value.set(props.name, [{ title: modelValue.value, value: modelValue.value }])\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VTextField\n v-model=\"modelValue\"\n :label=\"label\"\n :placeholder=\"placeholderComputed\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @blur=\"updateSelected\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterInteger.js","names":["AFilterInteger_vue_vue_type_script_setup_true_lang_default","AFilterInteger_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterResetButton.js","names":["_sfc_main","AFilterResetButton_vue_vue_type_script_setup_true_lang_default","AFilterResetButton_default"],"sources":["../../../../src/domains/filters/components/AFilterResetButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { eventClickBlur } from '@/shared/utils/event'\nimport { useI18n } from 'vue-i18n'\n\nwithDefaults(\n defineProps<{\n tooltipT?: string\n buttonClass?: string\n dataCy?: string\n }>(),\n {\n tooltipT: 'common.button.resetFilter',\n buttonClass: 'ml-2',\n dataCy: 'filter-reset',\n }\n)\nconst emit = defineEmits<{\n (e: 'reset'): void\n}>()\n\nconst onClick = (event: Event) => {\n eventClickBlur(event)\n emit('reset')\n}\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <VBtn\n :class=\"buttonClass\"\n :aria-label=\"t(tooltipT)\"\n :data-cy=\"dataCy\"\n class=\"text-medium-emphasis px-2\"\n min-width=\"36px\"\n variant=\"flat\"\n @click.stop=\"onClick\"\n >\n <VIcon\n color=\"grey-darken-1\"\n icon=\"mdi-filter-remove-outline\"\n />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t(tooltipT) }}\n </VTooltip>\n </VBtn>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterResetButton.js","names":["AFilterResetButton_vue_vue_type_script_setup_true_lang_default","AFilterResetButton_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterString.js","names":["_sfc_main","AFilterString_vue_vue_type_script_setup_true_lang_default","AFilterString_default"],"sources":["../../../../src/domains/filters/components/AFilterString.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { isBoolean, isNumber, isString, isUndefined } from '@/shared/utils/common'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n placeholder: undefined,\n dataCy: 'filter-string',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = 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 placeholderComputed = computed(() => {\n if (!isUndefined(props.placeholder)) return props.placeholder\n if (filterConfigCurrent.value.variant === 'startsWith') return t('common.model.filterPlaceholder.startsWith')\n if (filterConfigCurrent.value.variant === 'eq') return t('common.model.filterPlaceholder.eq')\n if (filterConfigCurrent.value.variant === 'search') return t('common.model.filterPlaceholder.contains')\n return ''\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = () => {\n if (isNumber(modelValue.value)) {\n filterSelected.value.set(props.name, [{ title: modelValue.value + '', value: modelValue.value }])\n return\n }\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // The chip must be removed too, or it names a value the query no longer has.\n if (!isString(modelValue.value) || modelValue.value.length === 0) {\n filterSelected.value.delete(props.name)\n return\n }\n filterSelected.value.set(props.name, [{ title: modelValue.value, value: modelValue.value }])\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VTextField\n v-model=\"modelValue\"\n :label=\"label\"\n :placeholder=\"placeholderComputed\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @blur=\"updateSelected\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterString.js","names":["AFilterString_vue_vue_type_script_setup_true_lang_default","AFilterString_default"],"sources":[],"mappings":""}
@@ -1,6 +1,8 @@
1
1
  type __VLS_Props = {
2
2
  name: string;
3
3
  placeholder?: string | undefined;
4
+ /** Shown under the field for as long as it is given, e.g. while the value changes what the other filters do. */
5
+ hint?: string | undefined;
4
6
  dataCy?: string;
5
7
  };
6
8
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
@@ -8,6 +10,7 @@ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {
8
10
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
11
  onChange?: (() => any) | undefined;
10
12
  }>, {
13
+ hint: string;
11
14
  placeholder: string;
12
15
  dataCy: string;
13
16
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -10,6 +10,7 @@ var v = /*@__PURE__*/ d({
10
10
  props: {
11
11
  name: {},
12
12
  placeholder: { default: void 0 },
13
+ hint: { default: void 0 },
13
14
  dataCy: { default: "filter-string" }
14
15
  },
15
16
  emits: ["change"],
@@ -43,7 +44,9 @@ var v = /*@__PURE__*/ d({
43
44
  placeholder: k.value,
44
45
  clearable: !E.value.mandatory,
45
46
  "data-cy": d.dataCy,
46
- "hide-details": "",
47
+ hint: d.hint,
48
+ "persistent-hint": !!d.hint,
49
+ "hide-details": !d.hint,
47
50
  autocomplete: "off",
48
51
  onBlur: M,
49
52
  "onClick:clear": h(j, ["stop"])
@@ -52,7 +55,10 @@ var v = /*@__PURE__*/ d({
52
55
  "label",
53
56
  "placeholder",
54
57
  "clearable",
55
- "data-cy"
58
+ "data-cy",
59
+ "hint",
60
+ "persistent-hint",
61
+ "hide-details"
56
62
  ]));
57
63
  }
58
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterString.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VTextField","_withModifiers","AFilterString_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","isUndefined","modelValue","computed","newValue","filterConfigCurrent","useI18n","label","t","placeholderComputed","useFilterClearHelpers","clearField","clearOne","updateSelected","isNumber","isString","watch","oldValue","isBoolean","openBlock","createBlock","VTextField","_cache","$event","withModifiers"],"sources":["../../../../src/domains/filters/components/AFilterString.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { isBoolean, isNumber, isString, isUndefined } from '@/shared/utils/common'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n placeholder?: string | undefined\n dataCy?: string\n }>(),\n {\n placeholder: undefined,\n dataCy: 'filter-string',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = 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 placeholderComputed = computed(() => {\n if (!isUndefined(props.placeholder)) return props.placeholder\n if (filterConfigCurrent.value.variant === 'startsWith') return t('common.model.filterPlaceholder.startsWith')\n if (filterConfigCurrent.value.variant === 'eq') return t('common.model.filterPlaceholder.eq')\n if (filterConfigCurrent.value.variant === 'search') return t('common.model.filterPlaceholder.contains')\n return ''\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = () => {\n if (isNumber(modelValue.value)) {\n filterSelected.value.set(props.name, [{ title: modelValue.value + '', value: modelValue.value }])\n return\n }\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // The chip must be removed too, or it names a value the query no longer has.\n if (!isString(modelValue.value) || modelValue.value.length === 0) {\n filterSelected.value.delete(props.name)\n return\n }\n filterSelected.value.set(props.name, [{ title: modelValue.value, value: modelValue.value }])\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VTextField\n v-model=\"modelValue\"\n :label=\"label\"\n :placeholder=\"placeholderComputed\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n hide-details\n autocomplete=\"off\"\n @blur=\"updateSelected\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAYA,IAAMM,IAAQC,GAWRC,IAAOH,GAIPI,IAAqBC,EAAOC,CAA2B,GACvDC,IAAiBF,EAAOG,CAAiB,GACzCC,IAAeJ,EAAOK,CAAe,GACrCC,IAAaN,EAAOO,CAAa;EAEvC,IACEC,EAAYT,CAAkB,KAC9BS,EAAYN,CAAc,KAC1BM,EAAYJ,CAAY,KAExBI,EAAYJ,EAAa,OAAOR,EAAM,KAAK,KAC3CY,EAAYF,CAAU,KAEtBE,EAAYF,EAAWV,EAAM,KAAK,GAElC,MAAU,MAAM,kCAAkC;EAGpD,IAAMa,IAAaC,EAAS;GAC1B,MAAM;IACJ,OAAOJ,EAAWV,EAAM;GAC1B;GACA,IAAI,GAAU;IAGZ,AAFA,EAAWA,EAAM,QAAQe,GACzB,EAAa,UAAU,IACvBb,EAAK,QAAQ;GACf;EACF,CAAC,GAGKc,IAAsBF,QAAeN,EAAa,OAAOR,EAAM,KAAM,GAErE,EAAE,SAAMiB,EAAQ,GAEhBC,IAAQJ,QACLE,EAAoB,MAAM,SAASG,EAAEH,EAAoB,MAAM,MAAM,IAAI,KAAA,CACjF,GAEKI,IAAsBN,QACrBF,EAAYZ,EAAM,WAAW,IAC9BgB,EAAoB,MAAM,YAAY,eAAqBG,EAAE,2CAA2C,IACxGH,EAAoB,MAAM,YAAY,OAAaG,EAAE,mCAAmC,IACxFH,EAAoB,MAAM,YAAY,WAAiBG,EAAE,yCAAyC,IAC/F,KAJqCnB,EAAM,WAKnD,GAEK,EAAE,gBAAaqB,EAAsB,GAErCC,UAAmB;GAEvB,AADAC,EAASvB,EAAM,MAAMU,GAAYF,CAAY,GAC7CF,EAAe,MAAM,OAAON,EAAM,IAAI;EACxC,GAEMwB,UAAuB;GAC3B,AAAIC,EAASZ,EAAW,KAAK,IAC3BP,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAOa,EAAW,QAAQ;IAAI,OAAOA,EAAW;GAAM,CAAC,CAAC,IAK9F,CAACa,EAASb,EAAW,KAAK,KAAKA,EAAW,MAAM,WAAW,IAC7DP,EAAe,MAAM,OAAON,EAAM,IAAI,IAGxCM,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAOa,EAAW;IAAO,OAAOA,EAAW;GAAM,CAAC,CAAC;EAC7F;E,OAEAc,QACQjB,EAAWV,EAAM,QACtB,GAAU,MAAa;GACtB,AAAIe,MAAaa,KAAYC,EAAUd,CAAQ,KAC/CS,EAAe;EACjB,GACA,EAAE,WAAW,GAAK,CACpB,I,UAIE9B,EAAA,GAAAC,EAUEC,GAAA;GATS,YAAAiB,EAAA;GAAA,uBAAA,AAAAoB,EAAA,QAAA,MAAA,EAAU,QAAAC;GAClB,OAAOhB,EAAA;GACP,aAAaE,EAAA;GACb,WAAS,CAAGJ,EAAA,MAAoB;GAChC,WAASf,EAAA;GACV,gBAAA;GACA,cAAa;GACZ,QAAMuB;GACN,iBAAW3B,EAAOyB,GAAU,CAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"AFilterString.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VTextField","_withModifiers","AFilterString_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","submitResetCounter","inject","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","filterConfig","FilterConfigKey","filterData","FilterDataKey","isUndefined","modelValue","computed","newValue","filterConfigCurrent","useI18n","label","t","placeholderComputed","useFilterClearHelpers","clearField","clearOne","updateSelected","isNumber","isString","watch","oldValue","isBoolean","openBlock","createBlock","VTextField","_cache","$event","withModifiers"],"sources":["../../../../src/domains/filters/components/AFilterString.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { isBoolean, isNumber, isString, isUndefined } from '@/shared/utils/common'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n placeholder?: string | undefined\n /** Shown under the field for as long as it is given, e.g. while the value changes what the other filters do. */\n hint?: string | undefined\n dataCy?: string\n }>(),\n {\n placeholder: undefined,\n hint: undefined,\n dataCy: 'filter-string',\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.name]) ||\n isUndefined(filterData) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterData[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst modelValue = computed({\n get() {\n return filterData[props.name]\n },\n set(newValue) {\n filterData[props.name] = 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 placeholderComputed = computed(() => {\n if (!isUndefined(props.placeholder)) return props.placeholder\n if (filterConfigCurrent.value.variant === 'startsWith') return t('common.model.filterPlaceholder.startsWith')\n if (filterConfigCurrent.value.variant === 'eq') return t('common.model.filterPlaceholder.eq')\n if (filterConfigCurrent.value.variant === 'search') return t('common.model.filterPlaceholder.contains')\n return ''\n})\n\nconst { clearOne } = useFilterClearHelpers()\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\nconst updateSelected = () => {\n if (isNumber(modelValue.value)) {\n filterSelected.value.set(props.name, [{ title: modelValue.value + '', value: modelValue.value }])\n return\n }\n // `null` arrives when the filter is reset from outside. Loading a hash clears every field first.\n // The chip must be removed too, or it names a value the query no longer has.\n if (!isString(modelValue.value) || modelValue.value.length === 0) {\n filterSelected.value.delete(props.name)\n return\n }\n filterSelected.value.set(props.name, [{ title: modelValue.value, value: modelValue.value }])\n}\n\nwatch(\n () => filterData[props.name],\n (newValue, oldValue) => {\n if (newValue === oldValue || isBoolean(newValue)) return\n updateSelected()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VTextField\n v-model=\"modelValue\"\n :label=\"label\"\n :placeholder=\"placeholderComputed\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :data-cy=\"dataCy\"\n :hint=\"hint\"\n :persistent-hint=\"!!hint\"\n :hide-details=\"!hint\"\n autocomplete=\"off\"\n @blur=\"updateSelected\"\n @click:clear.stop=\"clearField\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAYA,IAAMM,IAAQC,GAcRC,IAAOH,GAIPI,IAAqBC,EAAOC,CAA2B,GACvDC,IAAiBF,EAAOG,CAAiB,GACzCC,IAAeJ,EAAOK,CAAe,GACrCC,IAAaN,EAAOO,CAAa;EAEvC,IACEC,EAAYT,CAAkB,KAC9BS,EAAYN,CAAc,KAC1BM,EAAYJ,CAAY,KAExBI,EAAYJ,EAAa,OAAOR,EAAM,KAAK,KAC3CY,EAAYF,CAAU,KAEtBE,EAAYF,EAAWV,EAAM,KAAK,GAElC,MAAU,MAAM,kCAAkC;EAGpD,IAAMa,IAAaC,EAAS;GAC1B,MAAM;IACJ,OAAOJ,EAAWV,EAAM;GAC1B;GACA,IAAI,GAAU;IAGZ,AAFA,EAAWA,EAAM,QAAQe,GACzB,EAAa,UAAU,IACvBb,EAAK,QAAQ;GACf;EACF,CAAC,GAGKc,IAAsBF,QAAeN,EAAa,OAAOR,EAAM,KAAM,GAErE,EAAE,SAAMiB,EAAQ,GAEhBC,IAAQJ,QACLE,EAAoB,MAAM,SAASG,EAAEH,EAAoB,MAAM,MAAM,IAAI,KAAA,CACjF,GAEKI,IAAsBN,QACrBF,EAAYZ,EAAM,WAAW,IAC9BgB,EAAoB,MAAM,YAAY,eAAqBG,EAAE,2CAA2C,IACxGH,EAAoB,MAAM,YAAY,OAAaG,EAAE,mCAAmC,IACxFH,EAAoB,MAAM,YAAY,WAAiBG,EAAE,yCAAyC,IAC/F,KAJqCnB,EAAM,WAKnD,GAEK,EAAE,gBAAaqB,EAAsB,GAErCC,UAAmB;GAEvB,AADAC,EAASvB,EAAM,MAAMU,GAAYF,CAAY,GAC7CF,EAAe,MAAM,OAAON,EAAM,IAAI;EACxC,GAEMwB,UAAuB;GAC3B,AAAIC,EAASZ,EAAW,KAAK,IAC3BP,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAOa,EAAW,QAAQ;IAAI,OAAOA,EAAW;GAAM,CAAC,CAAC,IAK9F,CAACa,EAASb,EAAW,KAAK,KAAKA,EAAW,MAAM,WAAW,IAC7DP,EAAe,MAAM,OAAON,EAAM,IAAI,IAGxCM,EAAe,MAAM,IAAIN,EAAM,MAAM,CAAC;IAAE,OAAOa,EAAW;IAAO,OAAOA,EAAW;GAAM,CAAC,CAAC;EAC7F;E,OAEAc,QACQjB,EAAWV,EAAM,QACtB,GAAU,MAAa;GACtB,AAAIe,MAAaa,KAAYC,EAAUd,CAAQ,KAC/CS,EAAe;EACjB,GACA,EAAE,WAAW,GAAK,CACpB,I,UAIE9B,EAAA,GAAAC,EAYEC,GAAA;GAXS,YAAAiB,EAAA;GAAA,uBAAA,AAAAoB,EAAA,QAAA,MAAA,EAAU,QAAAC;GAClB,OAAOhB,EAAA;GACP,aAAaE,EAAA;GACb,WAAS,CAAGJ,EAAA,MAAoB;GAChC,WAASf,EAAA;GACT,MAAMA,EAAA;GACN,mBAAe,CAAA,CAAIA,EAAA;GACnB,gBAAY,CAAGA,EAAA;GAChB,cAAa;GACZ,QAAMuB;GACN,iBAAW3B,EAAOyB,GAAU,CAAA,MAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterSubmitButton.js","names":["_sfc_main","AFilterSubmitButton_vue_vue_type_script_setup_true_lang_default","AFilterSubmitButton_default"],"sources":["../../../../src/domains/filters/components/AFilterSubmitButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport { eventClickBlur } from '@/shared/utils/event'\n\nwithDefaults(\n defineProps<{\n buttonT?: string\n buttonClass?: string\n dataCy?: string\n touched?: boolean\n }>(),\n {\n buttonT: 'common.button.submitFilter',\n buttonClass: '',\n dataCy: 'filter-submit',\n touched: true,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst { t } = useI18n()\n\nconst onClick = (event: Event) => {\n eventClickBlur(event)\n emit('submit')\n}\n</script>\n\n<template>\n <VBtn\n :class=\"buttonClass\"\n :data-cy=\"dataCy\"\n color=\"primary\"\n type=\"submit\"\n :variant=\"touched ? 'flat' : 'text'\"\n @click=\"onClick\"\n >\n {{ t(buttonT) }}\n </VBtn>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterSubmitButton.js","names":["AFilterSubmitButton_vue_vue_type_script_setup_true_lang_default","AFilterSubmitButton_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterTimeInterval.js","names":["_sfc_main","AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","_plugin_vue_export_helper_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":""}
1
+ {"version":3,"file":"AFilterTimeInterval.js","names":["AFilterTimeInterval_vue_vue_type_script_setup_true_lang_default","_plugin_vue_export_helper_default","AFilterTimeInterval_default"],"sources":[],"mappings":""}
@@ -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","ADialogToolbar_default","AFormDatetimePicker_default","ARow_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":"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"}
1
+ {"version":3,"file":"AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_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","ADialogToolbar_default","AFormDatetimePicker_default","ARow_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":"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"}
@@ -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` 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
+ {"version":3,"file":"AFilterValueObjectOptionsSelect.js","names":["AFilterValueObjectOptionsSelect_vue_vue_type_script_setup_true_lang_default","AFilterValueObjectOptionsSelect_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterWrapper.js","names":["_sfc_main","AFilterWrapper_vue_vue_type_script_setup_true_lang_default","AFilterWrapper_default"],"sources":["../../../../src/domains/filters/components/AFilterWrapper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AFilterAdvancedButton from '@/domains/filters/components/AFilterAdvancedButton.vue'\nimport AFilterSubmitButton from '@/domains/filters/components/AFilterSubmitButton.vue'\nimport AFilterResetButton from '@/domains/filters/components/AFilterResetButton.vue'\nimport { computed, inject, nextTick, provide, ref } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport FiltersSelected from '@/domains/filters/components/FiltersSelected.vue'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { isBoolean, isDefined, isUndefined } from '@/shared/utils/common'\nimport { type FilterStoreIdentifier, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport { datatableSlotName } from '@/domains/filters/datatable/utils/datatable'\nimport FilterDetailItem from '@/domains/filters/components/FilterDetailItem.vue'\nimport AFilterBookmarkButton from '@/domains/filters/bookmarks/components/AFilterBookmarkButton.vue'\nimport FilterBookmarks from '@/domains/filters/bookmarks/components/FilterBookmarks.vue'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { type AxiosInstance } from 'axios'\nimport { VSlideYTransition } from 'vuetify/components/transitions'\n\nconst props = withDefaults(\n defineProps<{\n enableTop?: boolean\n hideButtons?: boolean\n formName?: string\n userId?: IntegerIdNullable | undefined\n client?: (() => AxiosInstance) | undefined\n store?: FilterStoreIdentifier | boolean // false to disable, FilterStoreIdentifier to custom store key\n alwaysVisible?: boolean\n hideMore?: boolean\n }>(),\n {\n enableTop: false,\n hideButtons: false,\n formName: 'search',\n userId: undefined,\n client: undefined,\n store: true,\n alwaysVisible: false,\n hideMore: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n (e: 'bookmarkLoadAfter'): void\n}>()\n\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\nconst showDetail = defineModel<boolean>('showDetail', { default: false, required: false })\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('Incorrect provide/inject config.')\n}\nconst identifier = ref<Partial<FilterStoreIdentifier>>({\n system: filterConfig.general.system,\n subject: filterConfig.general.subject,\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (!isBoolean(props.store)) {\n identifier.value.system = props.store.system\n identifier.value.subject = props.store.subject\n} else if (false === props.store) {\n identifier.value.system = undefined\n identifier.value.subject = undefined\n}\nconst submitResetCounter = ref(0)\nprovide(FilterSubmitResetCounterKey, submitResetCounter)\nconst filterSelected = ref<Map<string, ValueObjectOption<string | number>[]>>(new Map())\nprovide(FilterSelectedKey, filterSelected)\n\nconst submitFilter = () => {\n submitResetCounter.value++\n nextTick(() => {\n emit('submit')\n })\n}\n\nconst { clearAll, clearAllFilterSelected } = useFilterClearHelpers()\n\nconst submitFilterBookmark = () => {\n nextTick(() => {\n submitResetCounter.value++\n emit('bookmarkLoadAfter')\n })\n}\n\nconst resetFilter = () => {\n clearAll(filterData, filterConfig)\n clearAllFilterSelected(filterData, filterConfig, filterSelected)\n nextTick(() => {\n submitResetCounter.value++\n emit('reset')\n })\n}\n\nconst toggleFilterDetail = () => {\n showDetail.value = !showDetail.value\n}\n\nconst touched = computed(() => {\n return filterConfig.touched\n})\n\n// Names of `filterConfig.fields` itself, so the template's lookups by them always hit.\nconst renderedFieldNames = computed(() => {\n return Object.entries(filterConfig.fields)\n .filter(([, field]) => !field.render.skip)\n .map(([fieldName]) => fieldName)\n})\n\nif (props.alwaysVisible) {\n showDetail.value = true\n}\n\ndefineExpose({\n submit: submitFilter,\n reset: resetFilter,\n})\n</script>\n\n<template>\n <VForm\n :name=\"formName\"\n @submit.prevent=\"submitFilter\"\n >\n <VRow\n v-if=\"enableTop\"\n density=\"compact\"\n >\n <VCol>\n <slot name=\"top\" />\n </VCol>\n </VRow>\n <VRow density=\"compact\">\n <VCol v-if=\"store && userId && isDefined(client)\">\n <slot name=\"bookmarks\">\n <div class=\"d-flex flex-wrap align-center\">\n <FilterBookmarks\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :user-id=\"userId\"\n @submit=\"submitFilterBookmark\"\n />\n </div>\n </slot>\n </VCol>\n </VRow>\n <VRow\n v-if=\"!alwaysVisible\"\n density=\"compact\"\n >\n <VCol\n v-if=\"!hideMore\"\n cols=\"auto\"\n >\n <AFilterAdvancedButton\n :button-active=\"showDetail\"\n @advanced-filter=\"toggleFilterDetail\"\n />\n </VCol>\n <VCol>\n <div class=\"a-filter__container\">\n <div class=\"a-filter__search\">\n <slot name=\"search\" />\n </div>\n <FiltersSelected />\n </div>\n </VCol>\n <VCol\n v-if=\"!hideButtons\"\n class=\"text-right\"\n cols=\"auto\"\n >\n <slot name=\"buttons\">\n <AFilterSubmitButton :touched=\"touched\" />\n <AFilterResetButton @reset=\"resetFilter\" />\n <AFilterBookmarkButton\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n :client=\"client\"\n :user=\"userId\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :datatable-hidden-columns=\"datatableHiddenColumns\"\n />\n </slot>\n </VCol>\n </VRow>\n <div v-if=\"!hideMore\">\n <component :is=\"alwaysVisible ? 'div' : VSlideYTransition\">\n <div\n v-show=\"showDetail\"\n :class=\"{ 'mt-6 pa-4 border': !alwaysVisible }\"\n >\n <slot name=\"detail\">\n <VRow>\n <VCol\n v-for=\"fieldName in renderedFieldNames\"\n :key=\"fieldName\"\n :cols=\"filterConfig.fields[fieldName]!.render.xs || 12\"\n :sm=\"filterConfig.fields[fieldName]!.render.sm || 6\"\n :md=\"filterConfig.fields[fieldName]!.render.md || 4\"\n :lg=\"filterConfig.fields[fieldName]!.render.lg || 3\"\n :xl=\"filterConfig.fields[fieldName]!.render.xl || 2\"\n >\n <slot\n :name=\"datatableSlotName(fieldName)\"\n :item-config=\"filterConfig.fields[fieldName]!\"\n >\n <FilterDetailItem :name=\"fieldName\" />\n </slot>\n </VCol>\n </VRow>\n </slot>\n </div>\n </component>\n </div>\n </VForm>\n</template>\n\n<style lang=\"scss\">\n@use 'vuetify/tools' as *;\n\n.a-filter {\n &__container {\n width: 100%;\n }\n\n &__search {\n display: inline-flex;\n vertical-align: middle;\n min-width: 100%;\n height: 34px;\n\n @include media-breakpoint-up(sm) {\n min-width: 50%;\n margin-right: 8px;\n }\n\n @include media-breakpoint-up(md) {\n min-width: 40%;\n }\n\n @include media-breakpoint-up(lg) {\n min-width: 30%;\n }\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterWrapper.js","names":["AFilterWrapper_vue_vue_type_script_setup_true_lang_default","AFilterWrapper_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterWrapper.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","_component_VForm","_withModifiers","_withCtx","_component_VRow","_createVNode","_component_VCol","_renderSlot","_createCommentVNode","_unref","_createElementVNode","FilterBookmarks","AFilterAdvancedButton","FiltersSelected","AFilterSubmitButton","AFilterResetButton","AFilterBookmarkButton","_createElementBlock","_resolveDynamicComponent","_withDirectives","_normalizeClass","_Fragment","_renderList","FilterDetailItem","_vShow","AFilterAdvancedButton_default","AFilterSubmitButton_default","AFilterResetButton_default","FiltersSelected_default","FilterDetailItem_default","AFilterBookmarkButton_default","FilterBookmarks_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","AFilterWrapper_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","\"showDetail\"","\"showDetailModifiers\"","__expose","__emit","props","__props","emit","datatableHiddenColumns","useModel","showDetail","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","identifier","ref","isBoolean","submitResetCounter","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","submitFilter","nextTick","useFilterClearHelpers","submitFilterBookmark","resetFilter","clearAll","clearAllFilterSelected","toggleFilterDetail","touched","computed","renderedFieldNames","field","fieldName","openBlock","createBlock","VForm","withModifiers","withCtx","VRow","createVNode","VCol","renderSlot","_ctx","createCommentVNode","unref","isDefined","createElementVNode","_cache","$event","createElementBlock","resolveDynamicComponent","VSlideYTransition","withDirectives","normalizeClass","Fragment","renderList","datatableSlotName","vShow"],"sources":["../../../../src/domains/filters/components/AFilterWrapper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AFilterAdvancedButton from '@/domains/filters/components/AFilterAdvancedButton.vue'\nimport AFilterSubmitButton from '@/domains/filters/components/AFilterSubmitButton.vue'\nimport AFilterResetButton from '@/domains/filters/components/AFilterResetButton.vue'\nimport { computed, inject, nextTick, provide, ref } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport FiltersSelected from '@/domains/filters/components/FiltersSelected.vue'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { isBoolean, isDefined, isUndefined } from '@/shared/utils/common'\nimport { type FilterStoreIdentifier, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport { datatableSlotName } from '@/domains/filters/datatable/utils/datatable'\nimport FilterDetailItem from '@/domains/filters/components/FilterDetailItem.vue'\nimport AFilterBookmarkButton from '@/domains/filters/bookmarks/components/AFilterBookmarkButton.vue'\nimport FilterBookmarks from '@/domains/filters/bookmarks/components/FilterBookmarks.vue'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { type AxiosInstance } from 'axios'\nimport { VSlideYTransition } from 'vuetify/components/transitions'\n\nconst props = withDefaults(\n defineProps<{\n enableTop?: boolean\n hideButtons?: boolean\n formName?: string\n userId?: IntegerIdNullable | undefined\n client?: (() => AxiosInstance) | undefined\n store?: FilterStoreIdentifier | boolean // false to disable, FilterStoreIdentifier to custom store key\n alwaysVisible?: boolean\n hideMore?: boolean\n }>(),\n {\n enableTop: false,\n hideButtons: false,\n formName: 'search',\n userId: undefined,\n client: undefined,\n store: true,\n alwaysVisible: false,\n hideMore: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n (e: 'bookmarkLoadAfter'): void\n}>()\n\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\nconst showDetail = defineModel<boolean>('showDetail', { default: false, required: false })\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('Incorrect provide/inject config.')\n}\nconst identifier = ref<Partial<FilterStoreIdentifier>>({\n system: filterConfig.general.system,\n subject: filterConfig.general.subject,\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (!isBoolean(props.store)) {\n identifier.value.system = props.store.system\n identifier.value.subject = props.store.subject\n} else if (false === props.store) {\n identifier.value.system = undefined\n identifier.value.subject = undefined\n}\nconst submitResetCounter = ref(0)\nprovide(FilterSubmitResetCounterKey, submitResetCounter)\nconst filterSelected = ref<Map<string, ValueObjectOption<string | number>[]>>(new Map())\nprovide(FilterSelectedKey, filterSelected)\n\nconst submitFilter = () => {\n submitResetCounter.value++\n nextTick(() => {\n emit('submit')\n })\n}\n\nconst { clearAll, clearAllFilterSelected } = useFilterClearHelpers()\n\nconst submitFilterBookmark = () => {\n nextTick(() => {\n submitResetCounter.value++\n emit('bookmarkLoadAfter')\n })\n}\n\nconst resetFilter = () => {\n clearAll(filterData, filterConfig)\n clearAllFilterSelected(filterData, filterConfig, filterSelected)\n nextTick(() => {\n submitResetCounter.value++\n emit('reset')\n })\n}\n\nconst toggleFilterDetail = () => {\n showDetail.value = !showDetail.value\n}\n\nconst touched = computed(() => {\n return filterConfig.touched\n})\n\n// Names of `filterConfig.fields` itself, so the template's lookups by them always hit.\nconst renderedFieldNames = computed(() => {\n return Object.entries(filterConfig.fields)\n .filter(([, field]) => !field.render.skip)\n .map(([fieldName]) => fieldName)\n})\n\nif (props.alwaysVisible) {\n showDetail.value = true\n}\n\ndefineExpose({\n submit: submitFilter,\n reset: resetFilter,\n})\n</script>\n\n<template>\n <VForm\n :name=\"formName\"\n @submit.prevent=\"submitFilter\"\n >\n <VRow\n v-if=\"enableTop\"\n density=\"compact\"\n >\n <VCol>\n <slot name=\"top\" />\n </VCol>\n </VRow>\n <VRow density=\"compact\">\n <VCol v-if=\"store && userId && isDefined(client)\">\n <slot name=\"bookmarks\">\n <div class=\"d-flex flex-wrap align-center\">\n <FilterBookmarks\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :user-id=\"userId\"\n @submit=\"submitFilterBookmark\"\n />\n </div>\n </slot>\n </VCol>\n </VRow>\n <VRow\n v-if=\"!alwaysVisible\"\n density=\"compact\"\n >\n <VCol\n v-if=\"!hideMore\"\n cols=\"auto\"\n >\n <AFilterAdvancedButton\n :button-active=\"showDetail\"\n @advanced-filter=\"toggleFilterDetail\"\n />\n </VCol>\n <VCol>\n <div class=\"a-filter__container\">\n <div class=\"a-filter__search\">\n <slot name=\"search\" />\n </div>\n <FiltersSelected />\n </div>\n </VCol>\n <VCol\n v-if=\"!hideButtons\"\n class=\"text-right\"\n cols=\"auto\"\n >\n <slot name=\"buttons\">\n <AFilterSubmitButton :touched=\"touched\" />\n <AFilterResetButton @reset=\"resetFilter\" />\n <AFilterBookmarkButton\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n :client=\"client\"\n :user=\"userId\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :datatable-hidden-columns=\"datatableHiddenColumns\"\n />\n </slot>\n </VCol>\n </VRow>\n <div v-if=\"!hideMore\">\n <component :is=\"alwaysVisible ? 'div' : VSlideYTransition\">\n <div\n v-show=\"showDetail\"\n :class=\"{ 'mt-6 pa-4 border': !alwaysVisible }\"\n >\n <slot name=\"detail\">\n <VRow>\n <VCol\n v-for=\"fieldName in renderedFieldNames\"\n :key=\"fieldName\"\n :cols=\"filterConfig.fields[fieldName]!.render.xs || 12\"\n :sm=\"filterConfig.fields[fieldName]!.render.sm || 6\"\n :md=\"filterConfig.fields[fieldName]!.render.md || 4\"\n :lg=\"filterConfig.fields[fieldName]!.render.lg || 3\"\n :xl=\"filterConfig.fields[fieldName]!.render.xl || 2\"\n >\n <slot\n :name=\"datatableSlotName(fieldName)\"\n :item-config=\"filterConfig.fields[fieldName]!\"\n >\n <FilterDetailItem :name=\"fieldName\" />\n </slot>\n </VCol>\n </VRow>\n </slot>\n </div>\n </component>\n </div>\n </VForm>\n</template>\n\n<style lang=\"scss\">\n@use 'vuetify/tools' as *;\n\n.a-filter {\n &__container {\n width: 100%;\n }\n\n &__search {\n display: inline-flex;\n vertical-align: middle;\n min-width: 100%;\n height: 34px;\n\n @include media-breakpoint-up(sm) {\n min-width: 50%;\n margin-right: 8px;\n }\n\n @include media-breakpoint-up(md) {\n min-width: 40%;\n }\n\n @include media-breakpoint-up(lg) {\n min-width: 30%;\n }\n }\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFilterWrapper.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","_component_VForm","_withModifiers","_withCtx","_component_VRow","_createVNode","_component_VCol","_renderSlot","_unref","_createElementVNode","FilterBookmarks","AFilterAdvancedButton","FiltersSelected","AFilterSubmitButton","AFilterResetButton","AFilterBookmarkButton","_createElementBlock","_resolveDynamicComponent","_withDirectives","_normalizeClass","_Fragment","_renderList","FilterDetailItem","_vShow","AFilterAdvancedButton_default","AFilterSubmitButton_default","AFilterResetButton_default","FiltersSelected_default","FilterDetailItem_default","AFilterBookmarkButton_default","FilterBookmarks_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","AFilterWrapper_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","\"showDetail\"","\"showDetailModifiers\"","__expose","__emit","props","__props","emit","datatableHiddenColumns","useModel","showDetail","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","identifier","ref","isBoolean","submitResetCounter","FilterSubmitResetCounterKey","filterSelected","FilterSelectedKey","submitFilter","nextTick","useFilterClearHelpers","submitFilterBookmark","resetFilter","clearAll","clearAllFilterSelected","toggleFilterDetail","touched","computed","renderedFieldNames","field","fieldName","openBlock","createBlock","VForm","withModifiers","withCtx","VRow","createVNode","VCol","renderSlot","_ctx","createCommentVNode","unref","isDefined","createElementVNode","_cache","$event","createElementBlock","resolveDynamicComponent","VSlideYTransition","withDirectives","normalizeClass","Fragment","renderList","datatableSlotName","vShow"],"sources":["../../../../src/domains/filters/components/AFilterWrapper.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport AFilterAdvancedButton from '@/domains/filters/components/AFilterAdvancedButton.vue'\nimport AFilterSubmitButton from '@/domains/filters/components/AFilterSubmitButton.vue'\nimport AFilterResetButton from '@/domains/filters/components/AFilterResetButton.vue'\nimport { computed, inject, nextTick, provide, ref } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport FiltersSelected from '@/domains/filters/components/FiltersSelected.vue'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { isBoolean, isDefined, isUndefined } from '@/shared/utils/common'\nimport { type FilterStoreIdentifier, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport { datatableSlotName } from '@/domains/filters/datatable/utils/datatable'\nimport FilterDetailItem from '@/domains/filters/components/FilterDetailItem.vue'\nimport AFilterBookmarkButton from '@/domains/filters/bookmarks/components/AFilterBookmarkButton.vue'\nimport FilterBookmarks from '@/domains/filters/bookmarks/components/FilterBookmarks.vue'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { type AxiosInstance } from 'axios'\nimport { VSlideYTransition } from 'vuetify/components/transitions'\n\nconst props = withDefaults(\n defineProps<{\n enableTop?: boolean\n hideButtons?: boolean\n formName?: string\n userId?: IntegerIdNullable | undefined\n client?: (() => AxiosInstance) | undefined\n store?: FilterStoreIdentifier | boolean // false to disable, FilterStoreIdentifier to custom store key\n alwaysVisible?: boolean\n hideMore?: boolean\n }>(),\n {\n enableTop: false,\n hideButtons: false,\n formName: 'search',\n userId: undefined,\n client: undefined,\n store: true,\n alwaysVisible: false,\n hideMore: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n (e: 'bookmarkLoadAfter'): void\n}>()\n\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\nconst showDetail = defineModel<boolean>('showDetail', { default: false, required: false })\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('Incorrect provide/inject config.')\n}\nconst identifier = ref<Partial<FilterStoreIdentifier>>({\n system: filterConfig.general.system,\n subject: filterConfig.general.subject,\n})\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (!isBoolean(props.store)) {\n identifier.value.system = props.store.system\n identifier.value.subject = props.store.subject\n} else if (false === props.store) {\n identifier.value.system = undefined\n identifier.value.subject = undefined\n}\nconst submitResetCounter = ref(0)\nprovide(FilterSubmitResetCounterKey, submitResetCounter)\nconst filterSelected = ref<Map<string, ValueObjectOption<string | number>[]>>(new Map())\nprovide(FilterSelectedKey, filterSelected)\n\nconst submitFilter = () => {\n submitResetCounter.value++\n nextTick(() => {\n emit('submit')\n })\n}\n\nconst { clearAll, clearAllFilterSelected } = useFilterClearHelpers()\n\nconst submitFilterBookmark = () => {\n nextTick(() => {\n submitResetCounter.value++\n emit('bookmarkLoadAfter')\n })\n}\n\nconst resetFilter = () => {\n clearAll(filterData, filterConfig)\n clearAllFilterSelected(filterData, filterConfig, filterSelected)\n nextTick(() => {\n submitResetCounter.value++\n emit('reset')\n })\n}\n\nconst toggleFilterDetail = () => {\n showDetail.value = !showDetail.value\n}\n\nconst touched = computed(() => {\n return filterConfig.touched\n})\n\n// Names of `filterConfig.fields` itself, so the template's lookups by them always hit.\nconst renderedFieldNames = computed(() => {\n return Object.entries(filterConfig.fields)\n .filter(([, field]) => !field.render.skip)\n .map(([fieldName]) => fieldName)\n})\n\nif (props.alwaysVisible) {\n showDetail.value = true\n}\n\ndefineExpose({\n submit: submitFilter,\n reset: resetFilter,\n})\n</script>\n\n<template>\n <VForm\n :name=\"formName\"\n @submit.prevent=\"submitFilter\"\n >\n <VRow\n v-if=\"enableTop\"\n density=\"compact\"\n >\n <VCol>\n <slot name=\"top\" />\n </VCol>\n </VRow>\n <VRow density=\"compact\">\n <VCol v-if=\"store && userId && isDefined(client)\">\n <slot name=\"bookmarks\">\n <div class=\"d-flex flex-wrap align-center\">\n <FilterBookmarks\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :user-id=\"userId\"\n @submit=\"submitFilterBookmark\"\n />\n </div>\n </slot>\n </VCol>\n </VRow>\n <VRow\n v-if=\"!alwaysVisible\"\n density=\"compact\"\n >\n <VCol\n v-if=\"!hideMore\"\n cols=\"auto\"\n >\n <AFilterAdvancedButton\n :button-active=\"showDetail\"\n @advanced-filter=\"toggleFilterDetail\"\n />\n </VCol>\n <VCol>\n <div class=\"a-filter__container\">\n <div class=\"a-filter__search\">\n <slot name=\"search\" />\n </div>\n <FiltersSelected />\n </div>\n </VCol>\n <VCol\n v-if=\"!hideButtons\"\n class=\"text-right\"\n cols=\"auto\"\n >\n <slot name=\"buttons\">\n <AFilterSubmitButton :touched=\"touched\" />\n <AFilterResetButton @reset=\"resetFilter\" />\n <AFilterBookmarkButton\n v-if=\"identifier.system && identifier.subject && userId && isDefined(client)\"\n :client=\"client\"\n :user=\"userId\"\n :system=\"identifier.system\"\n :subject=\"identifier.subject\"\n :datatable-hidden-columns=\"datatableHiddenColumns\"\n />\n </slot>\n </VCol>\n </VRow>\n <div v-if=\"!hideMore\">\n <component :is=\"alwaysVisible ? 'div' : VSlideYTransition\">\n <div\n v-show=\"showDetail\"\n :class=\"{ 'mt-6 pa-4 border': !alwaysVisible }\"\n >\n <slot name=\"detail\">\n <VRow>\n <VCol\n v-for=\"fieldName in renderedFieldNames\"\n :key=\"fieldName\"\n :cols=\"filterConfig.fields[fieldName]!.render.xs || 12\"\n :sm=\"filterConfig.fields[fieldName]!.render.sm || 6\"\n :md=\"filterConfig.fields[fieldName]!.render.md || 4\"\n :lg=\"filterConfig.fields[fieldName]!.render.lg || 3\"\n :xl=\"filterConfig.fields[fieldName]!.render.xl || 2\"\n >\n <slot\n :name=\"datatableSlotName(fieldName)\"\n :item-config=\"filterConfig.fields[fieldName]!\"\n >\n <FilterDetailItem :name=\"fieldName\" />\n </slot>\n </VCol>\n </VRow>\n </slot>\n </div>\n </component>\n </div>\n </VForm>\n</template>\n\n<style lang=\"scss\">\n@use 'vuetify/tools' as *;\n\n.a-filter {\n &__container {\n width: 100%;\n }\n\n &__search {\n display: inline-flex;\n vertical-align: middle;\n min-width: 100%;\n height: 34px;\n\n @include media-breakpoint-up(sm) {\n min-width: 50%;\n margin-right: 8px;\n }\n\n @include media-breakpoint-up(md) {\n min-width: 40%;\n }\n\n @include media-breakpoint-up(lg) {\n min-width: 30%;\n }\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFilterWrapperSidebar.js","names":["_sfc_main","AFilterWrapperSidebar_vue_vue_type_script_setup_true_lang_default","AFilterWrapperSidebar_default"],"sources":["../../../../src/domains/filters/components/AFilterWrapperSidebar.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject, provide, ref } from 'vue'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { isUndefined } from '@/shared/utils/common'\nimport { useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\n\nwithDefaults(\n defineProps<{\n formName?: string\n }>(),\n {\n formName: 'search',\n }\n)\nconst emit = defineEmits<{\n (e: 'submit'): void\n}>()\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nprovide(FilterSubmitResetCounterKey, ref(0))\nconst filterSelected = ref<Map<string, ValueObjectOption<string | number>[]>>(new Map())\nprovide(FilterSelectedKey, filterSelected)\n\nconst { clearAll, clearAllFilterSelected } = useFilterClearHelpers()\n\nconst submitFilter = () => {\n emit('submit')\n}\n\n// AFilterWrapperSidebar has no reset button of its own (the consumer renders it, e.g. in the drawer\n// footer). Expose the same reset AFilterWrapper does so that button also clears the filter values and\n// the selected-filter chips.\nconst resetFilter = () => {\n clearAll(filterData, filterConfig)\n clearAllFilterSelected(filterData, filterConfig, filterSelected)\n}\n\ndefineExpose({ resetFilter })\n</script>\n\n<template>\n <VForm\n :name=\"formName\"\n @submit.prevent=\"submitFilter\"\n @keyup.enter=\"submitFilter\"\n >\n <slot />\n </VForm>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFilterWrapperSidebar.js","names":["AFilterWrapperSidebar_vue_vue_type_script_setup_true_lang_default","AFilterWrapperSidebar_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterDetailItem.js","names":["_sfc_main","FilterDetailItem_vue_vue_type_script_setup_true_lang_default","FilterDetailItem_default"],"sources":["../../../../src/domains/filters/components/FilterDetailItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { FilterConfigKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport AFilterEmpty from '@/domains/filters/components/AFilterEmpty.vue'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterBooleanSelect from '@/domains/filters/components/AFilterBooleanSelect.vue'\nimport AFilterDatetimePicker from '@/domains/filters/components/AFilterDatetimePicker.vue'\nimport AFilterInteger from '@/domains/filters/components/AFilterInteger.vue'\n\nconst props = withDefaults(\n defineProps<{\n name: string\n }>(),\n {}\n)\n\nconst filterConfig = inject(FilterConfigKey)\n\nif (\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name])\n) {\n throw new Error('Incorrect provide/inject config.')\n}\n\n// The setup above throws unless the field is configured.\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst componentComputed = computed(() => {\n if (filterConfigCurrent.value.render.skip) return AFilterEmpty\n switch (filterConfigCurrent.value.type) {\n case 'string':\n return AFilterString\n case 'datetime':\n return AFilterDatetimePicker\n case 'boolean':\n return AFilterBooleanSelect\n case 'integer':\n return AFilterInteger\n default:\n return AFilterEmpty\n }\n})\n</script>\n\n<template>\n <component\n :is=\"componentComputed\"\n :name=\"name\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"FilterDetailItem.js","names":["FilterDetailItem_vue_vue_type_script_setup_true_lang_default","FilterDetailItem_default"],"sources":[],"mappings":""}
@@ -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 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
+ {"version":3,"file":"FiltersSelected.js","names":["FiltersSelected_vue_vue_type_script_setup_true_lang_default","FiltersSelected_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ADatatableConfigButton.js","names":["_sfc_main","ADatatableConfigButton_vue_vue_type_script_setup_true_lang_default","ADatatableConfigButton_default"],"sources":["../../../../../src/domains/filters/datatable/components/ADatatableConfigButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport type { ColumnInternalValues } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { cloneDeep } from '@/shared/utils/common'\n\nconst props = withDefaults(\n defineProps<{\n columnsAll: ColumnInternalValues[]\n columnsHidden: Array<string>\n buttonT?: string\n buttonClass?: string\n dataCy?: string\n }>(),\n {\n buttonT: 'common.system.datatable.config',\n buttonClass: 'ml-1',\n dataCy: 'table-settings',\n }\n)\nconst emit = defineEmits<{\n (e: 'update:columnsHidden', data: Array<string>): void\n}>()\n\nconst { t } = useI18n()\n\nconst isVisible = (key: string) => {\n return !props.columnsHidden.includes(key)\n}\n\nconst toggleVisibility = (key: string) => {\n const cloned = cloneDeep(props.columnsHidden)\n const index = cloned.indexOf(key)\n if (index > -1) {\n cloned.splice(index, 1)\n emit('update:columnsHidden', cloned)\n return\n }\n cloned.push(key)\n emit('update:columnsHidden', cloned)\n}\n</script>\n\n<template>\n <VBtn\n :class=\"buttonClass\"\n :data-cy=\"dataCy\"\n class=\"text-medium-emphasis\"\n icon\n size=\"x-small\"\n variant=\"text\"\n :aria-label=\"t(buttonT)\"\n >\n <VIcon icon=\"mdi-cog\" />\n <VTooltip\n activator=\"parent\"\n location=\"bottom\"\n >\n {{ t(buttonT) }}\n </VTooltip>\n <VMenu\n :min-width=\"260\"\n activator=\"parent\"\n >\n <VCard>\n <VList density=\"compact\">\n <VListItem>\n <VListItemTitle>\n <strong>{{ t('common.system.datatable.displayCols') }}</strong>\n </VListItemTitle>\n </VListItem>\n <VListItem\n v-for=\"column in columnsAll\"\n :key=\"column.key\"\n @click.stop=\"toggleVisibility(column.key)\"\n >\n <VListItemTitle>\n <VIcon\n v-if=\"isVisible(column.key)\"\n class=\"mr-2\"\n icon=\"mdi-checkbox-marked\"\n />\n <VIcon\n v-else\n class=\"mr-2\"\n icon=\"mdi-checkbox-blank-outline\"\n />\n {{ column.title }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VCard>\n </VMenu>\n </VBtn>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ADatatableConfigButton.js","names":["ADatatableConfigButton_vue_vue_type_script_setup_true_lang_default","ADatatableConfigButton_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ADatatableOrdering.js","names":["_sfc_main","ADatatableOrdering_vue_vue_type_script_setup_true_lang_default","ADatatableOrdering_default"],"sources":["../../../../../src/domains/filters/datatable/components/ADatatableOrdering.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, type Ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport {\n type DatatableOrderingOption,\n type DatatableOrderingOptions,\n SORT_BY_SCORE,\n} from '@/domains/filters/datatable/utils/datatableColumns'\nimport { SortOrder } from '@/domains/api/types/SortOrder'\nimport { isUndefined } from '@/shared/utils/common'\nimport { DatatablePaginationKey } from '@/domains/filters/utils/filterInjectionKeys'\n\nimport type { Pagination } from '@/domains/api/composables/pagination'\n\nconst props = withDefaults(\n defineProps<{\n variant?: 'id' | 'createdAt' | 'most-relevant'\n customOptions?: undefined | DatatableOrderingOptions\n paginationUpdateCustomCb?: ((option: DatatableOrderingOption, pagination: Ref<Pagination>) => void) | undefined\n }>(),\n {\n variant: 'id',\n customOptions: undefined,\n paginationUpdateCustomCb: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'sortByChange', data: DatatableOrderingOption): void\n}>()\n\nconst modelValue = defineModel<number>('modelValue', {\n default: 1,\n required: false,\n})\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\n\nconst defaultItemsCreatedAt: DatatableOrderingOptions = [\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'createdAt', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'createdAt', order: SortOrder.Asc },\n },\n]\n\nconst defaultItemsId: DatatableOrderingOptions = [\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'id', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'id', order: SortOrder.Asc },\n },\n]\n\nconst defaultItemsMostRelevant: DatatableOrderingOptions = [\n {\n id: 3,\n titleT: 'common.system.datatable.ordering.mostRelevant',\n sortBy: { key: SORT_BY_SCORE, order: SortOrder.Desc },\n },\n {\n id: 1,\n titleT: 'common.system.datatable.ordering.mostRecent',\n sortBy: { key: 'createdAt', order: SortOrder.Desc },\n },\n {\n id: 2,\n titleT: 'common.system.datatable.ordering.oldest',\n sortBy: { key: 'createdAt', order: SortOrder.Asc },\n },\n]\n\nconst activeTitle = computed(() => {\n const found = options.value.find((item: any) => item.id === modelValue.value)\n if (found) return t(found.titleT)\n return ''\n})\n\nconst options = computed(() => {\n if (props.customOptions) return props.customOptions\n if (props.variant === 'most-relevant') return defaultItemsMostRelevant\n if (props.variant === 'id') return defaultItemsId\n return defaultItemsCreatedAt\n})\n\nconst onItemClick = (item: DatatableOrderingOption) => {\n modelValue.value = item.id\n}\n\nconst paginationUpdateDefault = (found: DatatableOrderingOption) => {\n if (!found.sortBy) {\n pagination.value = {\n ...pagination.value,\n sortBy: null,\n }\n emit('sortByChange', found)\n return\n }\n pagination.value.sortBy = found.sortBy\n emit('sortByChange', found)\n}\n\nwatch(modelValue, (newValue, oldValue) => {\n if (newValue === oldValue) return\n const found = options.value.find((option) => {\n return option.id === newValue\n })\n if (isUndefined(found)) {\n return\n }\n // Already the pagination's sort: the ordering only follows it (a loaded hash, `setSortBy`, an admin setting\n // the v-model with it). Applying it again made the list submit, which put a restored page back to 1.\n const current = pagination.value.sortBy\n if (current?.key === found.sortBy?.key && current?.order === found.sortBy?.order) {\n return\n }\n if (isUndefined(props.paginationUpdateCustomCb)) {\n paginationUpdateDefault(found)\n return\n }\n props.paginationUpdateCustomCb(found, pagination)\n})\n\n// A getter, not the ref. Admins set `pagination.value.sortBy` in place, which a shallow watch of the ref misses.\nwatch(\n () => ({ key: pagination.value.sortBy?.key, order: pagination.value.sortBy?.order }),\n (newValue, oldValue) => {\n if (newValue.key === oldValue?.key && newValue.order === oldValue?.order) {\n return\n }\n const found = options.value.find((option) => {\n return newValue.key === option.sortBy?.key && newValue.order === option.sortBy?.order\n })\n if (isUndefined(found)) {\n return\n }\n modelValue.value = found.id\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div class=\"d-flex align-center justify-center\">\n <div class=\"text-body-small mr-1\">{{ t('common.system.datatable.ordering.title') }}:</div>\n <VBtn\n variant=\"text\"\n rounded=\"xl\"\n size=\"small\"\n class=\"text-medium-emphasis\"\n append-icon=\"mdi-chevron-down\"\n >\n {{ activeTitle }}\n <VMenu\n activator=\"parent\"\n location=\"bottom\"\n close-on-content-click\n >\n <VList\n density=\"compact\"\n class=\"pa-0\"\n >\n <VListItem\n v-for=\"item in options\"\n :key=\"item.id\"\n @click=\"onItemClick(item)\"\n >\n <VListItemTitle :class=\"{ 'font-weight-bold': item.id === modelValue }\">\n {{ t(item.titleT) }}\n </VListItemTitle>\n </VListItem>\n </VList>\n </VMenu>\n </VBtn>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ADatatableOrdering.js","names":["ADatatableOrdering_vue_vue_type_script_setup_true_lang_default","ADatatableOrdering_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ADatatablePagination.js","names":["_sfc_main","ADatatablePagination_vue_vue_type_script_setup_true_lang_default","ADatatablePagination_default"],"sources":["../../../../../src/domains/filters/datatable/components/ADatatablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, inject, watch } from 'vue'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport {\n DatatablePageStoreKey,\n DatatablePaginationKey,\n FilterConfigKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport { useThrottleFn } from '@vueuse/core'\nimport { datatablePageKey, useDatatablePageStore } from '@/domains/system/store/datatablePageStore'\n\nwithDefaults(\n defineProps<{\n itemsPerPageOptions?: number[]\n hideRecordsPerPage?: boolean\n }>(),\n {\n itemsPerPageOptions: () => [10, 25, 50],\n hideRecordsPerPage: false,\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst pagination = inject(DatatablePaginationKey)\n\nif (isUndefined(pagination)) {\n throw new Error('Incorrect provide/inject config.')\n}\n\nconst { t } = useI18n()\nconst { setStoredPage } = useDatatablePageStore()\n\n// `useFilterHelpers` provides the key, so tables sharing a system/subject stay apart.\n// Both are optional. A datatable providing pagination without them uses the shared bucket.\nconst providedPageKey = inject(DatatablePageStoreKey, undefined)\nconst filterConfig = inject(FilterConfigKey, undefined)\nconst pageStoreKey = computed(\n () => providedPageKey ?? datatablePageKey(filterConfig?.general.system, filterConfig?.general.subject)\n)\n\nconst lastPage = computed(() => {\n return Math.ceil(pagination.value.totalCount / pagination.value.rowsPerPage)\n})\n\nconst displayedFrom = computed(() => {\n return pagination.value.page * pagination.value.rowsPerPage - pagination.value.rowsPerPage + 1\n})\n\nconst displayedTo = computed(() => {\n return (\n pagination.value.page * pagination.value.rowsPerPage -\n pagination.value.rowsPerPage +\n pagination.value.currentViewCount\n )\n})\n\nconst disabledFirstAndPrev = computed(() => {\n return pagination.value.page === 1\n})\n\n// `>=`, not `===`. An empty list has `lastPage` 0 while `page` is at least 1, so they never meet.\n// The same holds before the first request.\nconst disabledLast = computed(() => {\n return !isNull(pagination.value.hasNextPage) || pagination.value.page >= lastPage.value\n})\n\nconst disabledNext = computed(() => {\n return (\n (isNull(pagination.value.hasNextPage) && pagination.value.page >= lastPage.value) ||\n pagination.value.hasNextPage === false\n )\n})\n\nconst computedTotalCountText = computed(() => {\n if (!isNull(pagination.value.hasNextPage)) {\n return pagination.value.hasNextPage ? displayedTo.value + 1 + '+' : displayedTo.value\n }\n return pagination.value.totalCount\n})\n\n// One watcher for both. A restore after Close sets the page and the rows per page together, and a separate\n// rows watcher put that page back to 1. Rows per page changed alone (the toggle) still start on page 1.\nwatch(\n [() => pagination.value.page, () => pagination.value.rowsPerPage],\n ([page, rowsPerPage], [oldPage, oldRowsPerPage]) => {\n if (rowsPerPage !== oldRowsPerPage && page === oldPage && page !== 1) {\n // Runs this watcher again for the page, which stores it and emits once.\n pagination.value.page = 1\n return\n }\n setStoredPage(pageStoreKey.value, page, rowsPerPage)\n emit('change')\n }\n)\n\n// Leading edge only. The throttle guards against click spam.\n// VueUse 15 defaults `trailing` to true, which replays the last click and can step\n// past `lastPage`, because the queued callback does not recheck the disabled state.\nconst onClickFirst = useThrottleFn(\n () => {\n pagination.value.page = 1\n },\n 300,\n false\n)\n\nconst onClickLast = useThrottleFn(\n () => {\n pagination.value.page = lastPage.value\n },\n 300,\n false\n)\n\nconst onClickPrev = useThrottleFn(\n () => {\n pagination.value.page = pagination.value.page - 1\n },\n 300,\n false\n)\n\nconst onClickNext = useThrottleFn(\n () => {\n pagination.value.page = pagination.value.page + 1\n },\n 300,\n false\n)\n</script>\n\n<template>\n <div class=\"anzu-data-footer\">\n <div\n v-if=\"!hideRecordsPerPage\"\n class=\"anzu-data-footer__page-limit\"\n >\n {{ t('common.system.datatable.itemsPerPage') }}:\n <VBtnToggle\n v-model=\"pagination.rowsPerPage\"\n class=\"ml-2\"\n density=\"compact\"\n mandatory\n data-cy=\"table-size\"\n >\n <VBtn\n v-for=\"item in itemsPerPageOptions\"\n :key=\"item\"\n :color=\"item === pagination.rowsPerPage ? 'secondary' : ''\"\n :value=\"item\"\n density=\"compact\"\n size=\"small\"\n variant=\"text\"\n >\n {{ item }}\n </VBtn>\n </VBtnToggle>\n </div>\n <div class=\"anzu-data-footer__pagination\">\n {{ displayedFrom }} - {{ displayedTo }} {{ t('common.system.datatable.from') }}\n {{ computedTotalCountText }}\n </div>\n <div class=\"anzu-data-footer__icons-before\">\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-page-first\"\n :aria-label=\"t('$vuetify.pagination.ariaLabel.first')\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickFirst\"\n />\n <VBtn\n :disabled=\"disabledFirstAndPrev\"\n icon=\"mdi-chevron-left\"\n :aria-label=\"t('$vuetify.pagination.ariaLabel.previous')\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickPrev\"\n />\n </div>\n <div class=\"current-page\">\n <span>{{ pagination.page }}</span>\n </div>\n <div class=\"anzu-data-footer__icons-after\">\n <VBtn\n :disabled=\"disabledNext\"\n icon=\"mdi-chevron-right\"\n :aria-label=\"t('$vuetify.pagination.ariaLabel.next')\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickNext\"\n />\n <VBtn\n :disabled=\"disabledLast\"\n icon=\"mdi-page-last\"\n :aria-label=\"t('$vuetify.pagination.ariaLabel.last')\"\n size=\"small\"\n variant=\"text\"\n @click.stop=\"onClickLast\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.anzu-data-footer {\n margin-top: 10px;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n align-items: center;\n font-size: 0.75rem;\n padding: 0 8px;\n\n > div.current-page {\n padding-left: 10px;\n padding-right: 10px;\n user-select: none;\n min-width: 40px;\n display: flex;\n text-align: center;\n align-items: center;\n justify-content: center;\n }\n\n &__page-limit {\n display: flex;\n align-items: center;\n flex: 0 0 0;\n justify-content: flex-end;\n white-space: nowrap;\n margin-right: 14px;\n }\n\n &__pagination {\n display: block;\n text-align: center;\n margin: 0 32px 0 24px;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ADatatablePagination.js","names":["ADatatablePagination_vue_vue_type_script_setup_true_lang_default","ADatatablePagination_default"],"sources":[],"mappings":""}