@anzusystems/common-admin 2.0.0-rc.10 → 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 (465) 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
  458. package/src/e2e/env.d.mts +46 -0
  459. package/src/e2e/env.mjs +78 -0
  460. package/src/e2e/index.d.mts +3 -0
  461. package/src/e2e/index.mjs +2 -0
  462. package/src/e2e/routeWalk.mjs +2 -1
  463. package/src/e2e/routeWalkConfig.d.mts +16 -0
  464. package/src/e2e/routeWalkConfig.mjs +52 -0
  465. package/src/e2e/types.d.mts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ADatatablePagination.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","_component_VBtnToggle","_withCtx","_Fragment","_renderList","_createBlock","_component_VBtn","_createCommentVNode","_createElementVNode","_withModifiers","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ADatatablePagination_vue_vue_type_script_setup_true_lang_default","__emit","emit","pagination","inject","DatatablePaginationKey","isUndefined","useI18n","useDatatablePageStore","providedPageKey","DatatablePageStoreKey","filterConfig","FilterConfigKey","pageStoreKey","computed","datatablePageKey","lastPage","displayedFrom","displayedTo","disabledFirstAndPrev","disabledLast","isNull","disabledNext","computedTotalCountText","page","rowsPerPage","oldPage","oldRowsPerPage","setStoredPage","onClickFirst","useThrottleFn","onClickLast","onClickPrev","onClickNext","openBlock","createElementBlock","__props","createCommentVNode","createTextVNode","toDisplayString","unref","t","createVNode","VBtnToggle","_cache","$event","withCtx","Fragment","renderList","createBlock","VBtn","item","createElementVNode","withModifiers"],"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":"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"}
1
+ {"version":3,"file":"ADatatablePagination.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","_component_VBtnToggle","_withCtx","_Fragment","_renderList","_createBlock","_component_VBtn","_createElementVNode","_withModifiers","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","ADatatablePagination_vue_vue_type_script_setup_true_lang_default","__emit","emit","pagination","inject","DatatablePaginationKey","isUndefined","useI18n","useDatatablePageStore","providedPageKey","DatatablePageStoreKey","filterConfig","FilterConfigKey","pageStoreKey","computed","datatablePageKey","lastPage","displayedFrom","displayedTo","disabledFirstAndPrev","disabledLast","isNull","disabledNext","computedTotalCountText","page","rowsPerPage","oldPage","oldRowsPerPage","setStoredPage","onClickFirst","useThrottleFn","onClickLast","onClickPrev","onClickNext","openBlock","createElementBlock","__props","createCommentVNode","createTextVNode","toDisplayString","unref","t","createVNode","VBtnToggle","_cache","$event","withCtx","Fragment","renderList","createBlock","VBtn","item","createElementVNode","withModifiers"],"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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormDatetimePicker.js","names":["_sfc_main","AFormDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFormDatetimePicker_default"],"sources":["../../../../src/domains/form/components/AFormDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\nimport type { DatetimePickerType } from '@/shared/utils/datetimePickerValue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n type?: DatetimePickerType\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n readonly?: boolean\n }>(),\n {\n type: 'datetime',\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n collab: undefined,\n disabled: undefined,\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst isOpened = ref(false)\nconst isFocused = ref(false)\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :type=\"type\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :label=\"labelComputed\"\n :clearable=\"clearable\"\n v-bind=\"$attrs\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner>\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </ADatetimePicker>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormDatetimePicker.js","names":["AFormDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFormDatetimePicker_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_openBlock","_createBlock","ADatetimePicker","_mergeProps","_withCtx","_renderSlot","ACollabLockedByUser","_createCommentVNode","ACollabLockedByUser_default","ADatetimePicker_default","AFormDatetimePicker_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","modelValueComputed","computed","newValue","useCommonAdminCollabOptions","releaseFieldLock","ref","changeFieldData","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","changeCollabFieldData","acquireCollabFieldLock","watch","lockedByUser","isOpened","isFocused","onOpen","onClose","nextTick","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onBlur","isUndefined","onFocus","errorMessageComputed","unref","item","labelComputed","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","oldValue","openBlock","createBlock","mergeProps","_cache","$event","_ctx","withCtx","renderSlot","createCommentVNode"],"sources":["../../../../src/domains/form/components/AFormDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\nimport type { DatetimePickerType } from '@/shared/utils/datetimePickerValue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n type?: DatetimePickerType\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n readonly?: boolean\n }>(),\n {\n type: 'datetime',\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n collab: undefined,\n disabled: undefined,\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst isOpened = ref(false)\nconst isFocused = ref(false)\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :type=\"type\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :label=\"labelComputed\"\n :clearable=\"clearable\"\n v-bind=\"$attrs\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner>\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </ADatetimePicker>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_openBlock","_createBlock","ADatetimePicker","_mergeProps","_withCtx","_renderSlot","ACollabLockedByUser","ACollabLockedByUser_default","ADatetimePicker_default","AFormDatetimePicker_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","modelValueComputed","computed","newValue","useCommonAdminCollabOptions","releaseFieldLock","ref","changeFieldData","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","changeCollabFieldData","acquireCollabFieldLock","watch","lockedByUser","isOpened","isFocused","onOpen","onClose","nextTick","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onBlur","isUndefined","onFocus","errorMessageComputed","unref","item","labelComputed","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","oldValue","openBlock","createBlock","mergeProps","_cache","$event","_ctx","withCtx","renderSlot","createCommentVNode"],"sources":["../../../../src/domains/form/components/AFormDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\nimport type { DatetimePickerType } from '@/shared/utils/datetimePickerValue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n type?: DatetimePickerType\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n readonly?: boolean\n }>(),\n {\n type: 'datetime',\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n collab: undefined,\n disabled: undefined,\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst isOpened = ref(false)\nconst isFocused = ref(false)\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :type=\"type\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :label=\"labelComputed\"\n :clearable=\"clearable\"\n v-bind=\"$attrs\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner>\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </ADatetimePicker>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,IAAMY,IAAQC,GA2BRC,IAAOH,GAOPI,IAAqBC,EAAS;GAClC,MAAM;IACJ,OAAOJ,EAAM;GACf;GACA,IAAI,GAA2C;IAC7C,EAAK,qBAAqBK,CAAQ;GACpC;EACF,CAAC,GAGK,EAAE,qBAAkBC,EAA4B,GAEhDC,IAAmBC,GAAK,MAA0B,CAAC,CAAC,GAEpDC,IAAkBD,GAAK,MAA0B,CAAC,CAAC,GACnDE,IAAmBF,QAAU,CAAC,CAAC,GAC/BG,IAAoBH,EAAuB,IAAI;EAErD,IAAII,EAAc,MAAM,WAAWC,EAAUb,EAAM,MAAM,GAAG;GAC1D,IAAM,EAAE,2BAAwB,0BAAuB,2BAAwB,oBAAiBc,EAC9Fd,EAAM,OAAO,MACbA,EAAM,OAAO,OACb,IACA,EACF;GAIA,AAHA,EAAiB,QAAQe,GACzB,EAAgB,QAAQC,GACxB,EAAiB,QAAQC,GACzBC,EACEC,IACC,MAAa;IACZ,EAAkB,QAAQd;GAC5B,GACA,EAAE,WAAW,GAAK,CACpB;EACF;EAEA,IAAMe,IAAWZ,EAAI,EAAK,GACpBa,IAAYb,EAAI,EAAK,GAErBc,UAAe;GAEnB,AADA,EAAS,QAAQ,IACjBZ,EAAiB,MAAM;EACzB,GAEMa,UAAgB;GAGpB,AAFA,EAAS,QAAQ,IAEjBC,QAAe;IACb,EAAiB,MAAMxB,EAAM,UAAU;GACzC,CAAC;EACH,GAEM,EAAE,SAAMyB,EAAQ,GAEhBC,IAASC,EAA2BC,GAAgB,KAAA,CAAS,GAC7DC,IAAUF,EAA2BG,GAAiB,KAAA,CAAS,GAE/DC,UAAe;GAInB,AAHA/B,EAAM,GAAG,OAAO,GAGhBwB,QAAe;IAGb,AAFA,EAAU,QAAQ,IAClBtB,EAAK,QAAQ8B,EAAYhC,EAAM,UAAU,IAAI,OAAOA,EAAM,UAAU,GAChEoB,EAAS,UAAU,MAAOb,EAAiB,MAAMP,EAAM,UAAU;GACvE,CAAC;EACH,GAEMiC,UAAgB;GAGpB,AAFA,EAAU,QAAQ,IAClB/B,EAAK,SAASF,EAAM,UAAU,GAC9BU,EAAiB,MAAM;EACzB,GAEMwB,IAAuB9B,QACvBS,EAAUb,EAAM,YAAY,IAAU,CAACA,EAAM,YAAY,IACzDA,EAAM,GAAG,SAAS,SAAe,CAACA,EAAM,EAAE,QAAQ,KAAK,MAASmC,EAAMC,EAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAC5F,CAAC,CACT,GAEKC,IAAgBjC,QAAe;GACnC,IAAIS,EAAUb,EAAM,KAAK,GAAG,OAAOA,EAAM;GACzC,IAAIgC,EAAYN,CAAM,KAAKM,EAAYH,CAAO,KAAKG,EAAYhC,EAAM,GAAG,KAAK,GAAG,OAAO;GACvF,IAAM,EAAE,KAAKsC,MAASC,EAA6BvC,EAAM,GAAG,OAAO,GAAG;GACtE,OAAOwC,EAAEd,IAAS,MAAMG,IAAU,YAAYS,CAAI;EACpD,CAAC,GAEKG,IAAmBrC,QACnBS,EAAUb,EAAM,QAAQ,IAAUA,EAAM,YACvCA,EAAM,GAAG,SAAA,EAA0D,SAAS,SAAS,UAE3F,GAEK0C,IAAmBtC,QACnBS,EAAUb,EAAM,QAAQ,IAAUA,EAAM,WACrC,CAAC,CAACW,EAAkB,KAC5B;E,OAEDO,EAAMf,IAAqB,GAAU,MAAa;GAChD,AAAIE,MAAasC,KACb/B,EAAc,MAAM,YAAYS,EAAU,SAASD,EAAS,UAC9DX,EAAgB,MAAMJ,CAAQ;EAElC,CAAC,I,UAIChB,EAAA,GAAAC,EA4BkBC,GA5BlBC,EA4BkB;GA3BP,YAAAW,EAAA;GAAA,uBAAA,AAAA4C,EAAA,QAAA,MAAA,EAAkB,QAAAC;GAC1B,MAAM/C,EAAA;GACN,WAASA,EAAA;GACT,kBAAgBiC,EAAA;GAChB,UAAUO,EAAA;GACV,UAAUC,EAAA;GACV,UAAUzC,EAAA;GACV,OAAOoC,EAAA;GACP,WAAWpC,EAAA;EACJb,GAAAA,EAAAA,QAAM;GACP;GACC;GACD;GACC;;GAEG,gBAAYK,QAUd,CATPC,EASOuD,EAAA,QAAA,UAAA,EAPJ,QAAStC,EAAA,MAAiB,SAOtB,CAJGV,EAAA,UADRZ,EAAA,GAAAC,EAIEK,GAAA;;IAFC,IAAIgB,EAAA;IACJ,OAAOV,EAAA,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormFlagDatetimePicker.js","names":["_sfc_main","AFormFlagDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFormFlagDatetimePicker_default"],"sources":["../../../../src/domains/form/components/AFormFlagDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isFunction, isNull, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport { dateTimeNow } from '@/shared/utils/datetime'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n label?: string\n errorMessage?: string\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n defaultActivationValue?: DatetimeUTCNullable | 'now' | (() => DatetimeUTCNullable)\n collab?: CollabComponentConfig\n disabled?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n defaultActivationValue: 'now',\n collab: undefined,\n disabled: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null): void\n (e: 'blur', data: string | number | null): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst checkboxModel = ref(false)\nconst isFocused = ref(false)\nconst isOpened = ref(false)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n acquireFieldLock.value()\n}\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst errorMessageComputed = computed(() => {\n if (!isUndefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nwatch(\n modelValueComputed,\n (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (isNull(newValue) || isUndefined(newValue)) {\n checkboxModel.value = false\n return\n }\n checkboxModel.value = true\n },\n { immediate: true }\n)\n\n/**\n * @param oldValue state before click\n */\nconst onCheckboxClick = (oldValue: boolean) => {\n acquireFieldLock.value()\n setTimeout(() => {\n if (isFocused.value === false) releaseFieldLock.value(props.modelValue)\n }, 500)\n if (oldValue) {\n modelValueComputed.value = null\n return\n }\n if (props.defaultActivationValue === 'now') {\n modelValueComputed.value = dateTimeNow()\n return\n }\n if (isFunction(props.defaultActivationValue)) {\n modelValueComputed.value = props.defaultActivationValue()\n return\n }\n modelValueComputed.value = props.defaultActivationValue\n}\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <div class=\"d-flex justify-space-between\">\n <VCheckboxBtn\n v-model=\"checkboxModel\"\n :label=\"labelComputed\"\n :disabled=\"disabledComputed\"\n @click.stop=\"onCheckboxClick(checkboxModel)\"\n />\n <div style=\"opacity: 0.5\">\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </div>\n </div>\n <VExpandTransition>\n <div v-show=\"checkboxModel\">\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :clearable=\"clearable\"\n :disabled=\"disabledComputed\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner />\n </ADatetimePicker>\n </div>\n </VExpandTransition>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormFlagDatetimePicker.js","names":["AFormFlagDatetimePicker_vue_vue_type_script_setup_true_lang_default","AFormFlagDatetimePicker_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_Fragment","_createElementVNode","_createVNode","_component_VCheckboxBtn","_withModifiers","_renderSlot","_createBlock","ACollabLockedByUser","_createCommentVNode","_component_VExpandTransition","_withCtx","_withDirectives","ADatetimePicker","_vShow","ACollabLockedByUser_default","ADatetimePicker_default","_hoisted_1","_hoisted_2","\"opacity\"","AFormFlagDatetimePicker_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","modelValueComputed","computed","newValue","useCommonAdminCollabOptions","releaseFieldLock","ref","changeFieldData","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","changeCollabFieldData","acquireCollabFieldLock","watch","lockedByUser","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","checkboxModel","isFocused","isOpened","onBlur","nextTick","isUndefined","onFocus","onOpen","onClose","errorMessageComputed","unref","item","labelComputed","path","stringSplitOnFirstOccurrence","t","oldValue","isNull","onCheckboxClick","dateTimeNow","isFunction","disabledComputed","openBlock","createElementBlock","Fragment","createElementVNode","createVNode","VCheckboxBtn","_cache","$event","withModifiers","renderSlot","_ctx","createBlock","createCommentVNode","VExpandTransition","withCtx","withDirectives","vShow"],"sources":["../../../../src/domains/form/components/AFormFlagDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isFunction, isNull, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport { dateTimeNow } from '@/shared/utils/datetime'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n label?: string\n errorMessage?: string\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n defaultActivationValue?: DatetimeUTCNullable | 'now' | (() => DatetimeUTCNullable)\n collab?: CollabComponentConfig\n disabled?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n defaultActivationValue: 'now',\n collab: undefined,\n disabled: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null): void\n (e: 'blur', data: string | number | null): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst checkboxModel = ref(false)\nconst isFocused = ref(false)\nconst isOpened = ref(false)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n acquireFieldLock.value()\n}\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst errorMessageComputed = computed(() => {\n if (!isUndefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nwatch(\n modelValueComputed,\n (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (isNull(newValue) || isUndefined(newValue)) {\n checkboxModel.value = false\n return\n }\n checkboxModel.value = true\n },\n { immediate: true }\n)\n\n/**\n * @param oldValue state before click\n */\nconst onCheckboxClick = (oldValue: boolean) => {\n acquireFieldLock.value()\n setTimeout(() => {\n if (isFocused.value === false) releaseFieldLock.value(props.modelValue)\n }, 500)\n if (oldValue) {\n modelValueComputed.value = null\n return\n }\n if (props.defaultActivationValue === 'now') {\n modelValueComputed.value = dateTimeNow()\n return\n }\n if (isFunction(props.defaultActivationValue)) {\n modelValueComputed.value = props.defaultActivationValue()\n return\n }\n modelValueComputed.value = props.defaultActivationValue\n}\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <div class=\"d-flex justify-space-between\">\n <VCheckboxBtn\n v-model=\"checkboxModel\"\n :label=\"labelComputed\"\n :disabled=\"disabledComputed\"\n @click.stop=\"onCheckboxClick(checkboxModel)\"\n />\n <div style=\"opacity: 0.5\">\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </div>\n </div>\n <VExpandTransition>\n <div v-show=\"checkboxModel\">\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :clearable=\"clearable\"\n :disabled=\"disabledComputed\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner />\n </ADatetimePicker>\n </div>\n </VExpandTransition>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementVNode","_createVNode","_component_VCheckboxBtn","_withModifiers","_renderSlot","_createBlock","ACollabLockedByUser","_component_VExpandTransition","_withCtx","_withDirectives","ADatetimePicker","_vShow","ACollabLockedByUser_default","ADatetimePicker_default","_hoisted_1","_hoisted_2","\"opacity\"","AFormFlagDatetimePicker_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","modelValueComputed","computed","newValue","useCommonAdminCollabOptions","releaseFieldLock","ref","changeFieldData","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","changeCollabFieldData","acquireCollabFieldLock","watch","lockedByUser","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","checkboxModel","isFocused","isOpened","onBlur","nextTick","isUndefined","onFocus","onOpen","onClose","errorMessageComputed","unref","item","labelComputed","path","stringSplitOnFirstOccurrence","t","oldValue","isNull","onCheckboxClick","dateTimeNow","isFunction","disabledComputed","openBlock","createElementBlock","Fragment","createElementVNode","createVNode","VCheckboxBtn","_cache","$event","withModifiers","renderSlot","_ctx","createBlock","createCommentVNode","VExpandTransition","withCtx","withDirectives","vShow"],"sources":["../../../../src/domains/form/components/AFormFlagDatetimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, nextTick, ref, watch, unref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isDefined, isFunction, isNull, isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport type { DatetimeUTCNullable, IntegerIdNullable } from '@/shared/types/common'\nimport { dateTimeNow } from '@/shared/utils/datetime'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\nimport ADatetimePicker from '@/domains/ui/datetime/components/ADatetimePicker.vue'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: DatetimeUTCNullable | undefined\n label?: string\n errorMessage?: string\n v?: AFormFieldValidation | null\n dataCy?: string\n clearable?: boolean\n defaultActivationValue?: DatetimeUTCNullable | 'now' | (() => DatetimeUTCNullable)\n collab?: CollabComponentConfig\n disabled?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n v: null,\n dataCy: undefined,\n clearable: false,\n defaultActivationValue: 'now',\n collab: undefined,\n disabled: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: DatetimeUTCNullable | undefined): void\n (e: 'click:append', data: string | number | null): void\n (e: 'blur', data: string | number | null): void\n}>()\n\nconst modelValueComputed = computed({\n get() {\n return props.modelValue\n },\n set(newValue: DatetimeUTCNullable | undefined) {\n emit('update:modelValue', newValue)\n },\n})\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst changeFieldData = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, changeCollabFieldData, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n changeFieldData.value = changeCollabFieldData\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst checkboxModel = ref(false)\nconst isFocused = ref(false)\nconst isOpened = ref(false)\n\nconst onBlur = () => {\n props.v?.$touch()\n // The picker commits a typed value in a watcher that runs after this event.\n // Releasing the lock now would send the previous value, and clearing `isFocused` would skip the change.\n nextTick(() => {\n isFocused.value = false\n emit('blur', isUndefined(props.modelValue) ? null : props.modelValue)\n if (isOpened.value === false) releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst onFocus = () => {\n isFocused.value = true\n acquireFieldLock.value()\n}\n\nconst onOpen = () => {\n isOpened.value = true\n acquireFieldLock.value()\n}\n\nconst onClose = () => {\n isOpened.value = false\n // The picker emits close before its watchers flush the picked value into the model.\n nextTick(() => {\n releaseFieldLock.value(props.modelValue)\n })\n}\n\nconst errorMessageComputed = computed(() => {\n if (!isUndefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nwatch(\n modelValueComputed,\n (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (isNull(newValue) || isUndefined(newValue)) {\n checkboxModel.value = false\n return\n }\n checkboxModel.value = true\n },\n { immediate: true }\n)\n\n/**\n * @param oldValue state before click\n */\nconst onCheckboxClick = (oldValue: boolean) => {\n acquireFieldLock.value()\n setTimeout(() => {\n if (isFocused.value === false) releaseFieldLock.value(props.modelValue)\n }, 500)\n if (oldValue) {\n modelValueComputed.value = null\n return\n }\n if (props.defaultActivationValue === 'now') {\n modelValueComputed.value = dateTimeNow()\n return\n }\n if (isFunction(props.defaultActivationValue)) {\n modelValueComputed.value = props.defaultActivationValue()\n return\n }\n modelValueComputed.value = props.defaultActivationValue\n}\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue === oldValue) return\n if (collabOptions.value.enabled && (isFocused.value || isOpened.value)) {\n changeFieldData.value(newValue)\n }\n})\n</script>\n\n<template>\n <div class=\"d-flex justify-space-between\">\n <VCheckboxBtn\n v-model=\"checkboxModel\"\n :label=\"labelComputed\"\n :disabled=\"disabledComputed\"\n @click.stop=\"onCheckboxClick(checkboxModel)\"\n />\n <div style=\"opacity: 0.5\">\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </div>\n </div>\n <VExpandTransition>\n <div v-show=\"checkboxModel\">\n <ADatetimePicker\n v-model=\"modelValueComputed\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :clearable=\"clearable\"\n :disabled=\"disabledComputed\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @open=\"onOpen\"\n @close=\"onClose\"\n >\n <template #append-inner />\n </ADatetimePicker>\n </div>\n </VExpandTransition>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormRemoteCheckbox.js","names":["_sfc_main","AFormRemoteCheckbox_vue_vue_type_script_setup_true_lang_default","AFormRemoteCheckbox_default"],"sources":["../../../../src/domains/form/components/AFormRemoteCheckbox.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VCheckboxBtn\n :id=\"uniqueId\"\n v-model=\"internalModelValue\"\n :disabled=\"loading\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n />\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormRemoteCheckbox.js","names":["AFormRemoteCheckbox_vue_vue_type_script_setup_true_lang_default","AFormRemoteCheckbox_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","_component_VCheckboxBtn","_withModifiers","_toDisplayString","_createCommentVNode","_hoisted_1","_hoisted_2","AFormRemoteCheckbox_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","labelComputed","computed","isUndefined","path","stringSplitOnFirstOccurrence","t","loading","ref","hasError","uniqueId","useIdValue","useId","modelValueComputed","internalModelValue","onClick","toFalse","success","value","watch","newValue","oldValue","onMounted","openBlock","createElementBlock","createVNode","VCheckboxBtn","_cache","$event","withModifiers","createCommentVNode","toDisplayString"],"sources":["../../../../src/domains/form/components/AFormRemoteCheckbox.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VCheckboxBtn\n :id=\"uniqueId\"\n v-model=\"internalModelValue\"\n :disabled=\"loading\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n />\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAMW,IAAQC,GAiBRC,IAAOH,GAIP,EAAE,SAAMI,EAAQ,GAEhBC,IAASC,EAA2BC,GAAgB,KAAA,CAAS,GAC7DC,IAAUF,EAA2BG,GAAiB,KAAA,CAAS,GAE/DC,IAAgBC,QAAe;GACnC,IAAI,CAACC,EAAYX,EAAM,KAAK,GAAG,OAAOA,EAAM;GAC5C,IAAIW,EAAYP,CAAM,KAAKO,EAAYJ,CAAO,KAAKI,EAAYX,EAAM,GAAG,KAAK,GAAG,OAAO;GACvF,IAAM,EAAE,KAAKY,MAASC,EAA6Bb,EAAM,GAAG,OAAO,GAAG;GACtE,OAAOc,EAAEV,IAAS,MAAMG,IAAU,YAAYK,CAAI;EACpD,CAAC,GAEKG,IAAUC,EAAI,EAAK,GACnBC,IAAWD,EAAI,EAAK,GACpBE,IAAWF,EAAI,EAAE,GACjBG,IAAaC,EAAM,GAEnBC,IAAqBX,QAClBV,EAAM,UACd,GAGKsB,IAAqBN,EAAIhB,EAAM,UAAU,GAEzCuB,IAAU,YAAY;GAC1B,IAAIR,EAAQ,OAAO;GAEnB,AADA,EAAQ,QAAQ,IAChB,EAAS,QAAQ;GACjB,IAAMS,IAAUF,EAAmB,UAAU,IACzCG,IAAU;GAEd,IAAI;IACF,IAAUD,IAAU,MAAMxB,EAAM,gBAAgB,IAAI,MAAMA,EAAM,eAAe;GACjF,UAAU;IACR,IAAM0B,IAAQF,IAAU,CAACC,IAAUA;IAInC,AAHAvB,EAAK,qBAAqBwB,CAAK,GAC/B,EAAmB,QAAQA,GACtBD,MAAS,EAAS,QAAQ,KAC/B,EAAQ,QAAQ;GAClB;EACF;E,OAEAE,EAAMN,IAAqB,GAAU,MAAa;GAChD,AAAIO,MAAaC,MACf,EAAmB,QAAQD,GAC3B,EAAS,QAAQ;EAErB,CAAC,GAEDE,QAAgB;GACd,EAAS,QAAQ,mBAAmBX;EACtC,CAAC,I,UAIC9B,EAAA,GAAAC,EAeM,OAfNM,GAeM,CAdJL,EAMEC,GAAA;GALC,IAAI0B,EAAA;GACI,YAAAI,EAAA;GAAA,uBAAA,AAAAa,EAAA,QAAA,MAAA,EAAkB,QAAAC;GAC1B,UAAUrB,EAAA;GACV,cAAYd,EAAA,aAAYQ,EAAA,SAAiB,KAAA;GACzC,SAAKhB,EAAO8B,GAAO,CAAA,MAAA,CAAA;;;;;;E,IAGbtB,EAAA,Y,aADTZ,EAAA,GAAAC,EAMQ,SAAA;;GAJL,KAAK4B,EAAA;GACN,OAAM;EAEH,GAAAxB,EAAAe,EAAA,KAAa,GAAA,GAAAZ,CAAA,E"}
1
+ {"version":3,"file":"AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","_component_VCheckboxBtn","_withModifiers","_toDisplayString","_hoisted_1","_hoisted_2","AFormRemoteCheckbox_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","labelComputed","computed","isUndefined","path","stringSplitOnFirstOccurrence","t","loading","ref","hasError","uniqueId","useIdValue","useId","modelValueComputed","internalModelValue","onClick","toFalse","success","value","watch","newValue","oldValue","onMounted","openBlock","createElementBlock","createVNode","VCheckboxBtn","_cache","$event","withModifiers","createCommentVNode","toDisplayString"],"sources":["../../../../src/domains/form/components/AFormRemoteCheckbox.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VCheckboxBtn\n :id=\"uniqueId\"\n v-model=\"internalModelValue\"\n :disabled=\"loading\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n />\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAMU,IAAQC,GAiBRC,IAAOH,GAIP,EAAE,SAAMI,EAAQ,GAEhBC,IAASC,EAA2BC,GAAgB,KAAA,CAAS,GAC7DC,IAAUF,EAA2BG,GAAiB,KAAA,CAAS,GAE/DC,IAAgBC,QAAe;GACnC,IAAI,CAACC,EAAYX,EAAM,KAAK,GAAG,OAAOA,EAAM;GAC5C,IAAIW,EAAYP,CAAM,KAAKO,EAAYJ,CAAO,KAAKI,EAAYX,EAAM,GAAG,KAAK,GAAG,OAAO;GACvF,IAAM,EAAE,KAAKY,MAASC,EAA6Bb,EAAM,GAAG,OAAO,GAAG;GACtE,OAAOc,EAAEV,IAAS,MAAMG,IAAU,YAAYK,CAAI;EACpD,CAAC,GAEKG,IAAUC,EAAI,EAAK,GACnBC,IAAWD,EAAI,EAAK,GACpBE,IAAWF,EAAI,EAAE,GACjBG,IAAaC,EAAM,GAEnBC,IAAqBX,QAClBV,EAAM,UACd,GAGKsB,IAAqBN,EAAIhB,EAAM,UAAU,GAEzCuB,IAAU,YAAY;GAC1B,IAAIR,EAAQ,OAAO;GAEnB,AADA,EAAQ,QAAQ,IAChB,EAAS,QAAQ;GACjB,IAAMS,IAAUF,EAAmB,UAAU,IACzCG,IAAU;GAEd,IAAI;IACF,IAAUD,IAAU,MAAMxB,EAAM,gBAAgB,IAAI,MAAMA,EAAM,eAAe;GACjF,UAAU;IACR,IAAM0B,IAAQF,IAAU,CAACC,IAAUA;IAInC,AAHAvB,EAAK,qBAAqBwB,CAAK,GAC/B,EAAmB,QAAQA,GACtBD,MAAS,EAAS,QAAQ,KAC/B,EAAQ,QAAQ;GAClB;EACF;E,OAEAE,EAAMN,IAAqB,GAAU,MAAa;GAChD,AAAIO,MAAaC,MACf,EAAmB,QAAQD,GAC3B,EAAS,QAAQ;EAErB,CAAC,GAEDE,QAAgB;GACd,EAAS,QAAQ,mBAAmBX;EACtC,CAAC,I,UAIC7B,EAAA,GAAAC,EAeM,OAfNK,GAeM,CAdJJ,EAMEC,GAAA;GALC,IAAIyB,EAAA;GACI,YAAAI,EAAA;GAAA,uBAAA,AAAAa,EAAA,QAAA,MAAA,EAAkB,QAAAC;GAC1B,UAAUrB,EAAA;GACV,cAAYd,EAAA,aAAYQ,EAAA,SAAiB,KAAA;GACzC,SAAKf,EAAO6B,GAAO,CAAA,MAAA,CAAA;;;;;;E,IAGbtB,EAAA,Y,aADTX,EAAA,GAAAC,EAMQ,SAAA;;GAJL,KAAK2B,EAAA;GACN,OAAM;EAEH,GAAAvB,EAAAc,EAAA,KAAa,GAAA,GAAAZ,CAAA,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormRemoteSwitch.js","names":["_sfc_main","AFormRemoteSwitch_vue_vue_type_script_setup_true_lang_default","AFormRemoteSwitch_default"],"sources":["../../../../src/domains/form/components/AFormRemoteSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'a-remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VBtn\n :id=\"uniqueId\"\n icon\n class=\"a-switch-fix-click\"\n color=\"transparent\"\n :ripple=\"false\"\n :width=\"hideLabel ? 36 : undefined\"\n :height=\"36\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n >\n <VSwitch\n v-model=\"internalModelValue\"\n :loading=\"loading\"\n :disabled=\"loading\"\n :hide-details=\"hideDetails\"\n density=\"compact\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"hasError\"\n #append\n >\n <VIcon\n icon=\"mdi-alert\"\n class=\"ml-5 mt-1\"\n size=\"x-small\"\n color=\"error\"\n />\n </template>\n </VSwitch>\n </VBtn>\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n\n<style lang=\"scss\">\n.v-btn.a-switch-fix-click:hover > .v-btn__overlay {\n opacity: 0;\n max-height: 36px;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormRemoteSwitch.js","names":["AFormRemoteSwitch_vue_vue_type_script_setup_true_lang_default","AFormRemoteSwitch_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","_component_VBtn","_withModifiers","_withCtx","_component_VSwitch","_createSlots","_component_VIcon","_toDisplayString","_createCommentVNode","_hoisted_1","_hoisted_2","AFormRemoteSwitch_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","labelComputed","computed","isUndefined","path","stringSplitOnFirstOccurrence","t","loading","ref","hasError","uniqueId","useIdValue","useId","modelValueComputed","internalModelValue","onClick","toFalse","success","value","watch","newValue","oldValue","onMounted","openBlock","createElementBlock","createVNode","VBtn","withModifiers","withCtx","VSwitch","_cache","$event","createSlots","VIcon","createCommentVNode","toDisplayString"],"sources":["../../../../src/domains/form/components/AFormRemoteSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'a-remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VBtn\n :id=\"uniqueId\"\n icon\n class=\"a-switch-fix-click\"\n color=\"transparent\"\n :ripple=\"false\"\n :width=\"hideLabel ? 36 : undefined\"\n :height=\"36\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n >\n <VSwitch\n v-model=\"internalModelValue\"\n :loading=\"loading\"\n :disabled=\"loading\"\n :hide-details=\"hideDetails\"\n density=\"compact\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"hasError\"\n #append\n >\n <VIcon\n icon=\"mdi-alert\"\n class=\"ml-5 mt-1\"\n size=\"x-small\"\n color=\"error\"\n />\n </template>\n </VSwitch>\n </VBtn>\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n\n<style lang=\"scss\">\n.v-btn.a-switch-fix-click:hover > .v-btn__overlay {\n opacity: 0;\n max-height: 36px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAMe,IAAQC,GAiBRC,IAAOH,GAIP,EAAE,SAAMI,EAAQ,GAEhBC,IAASC,EAA2BC,GAAgB,KAAA,CAAS,GAC7DC,IAAUF,EAA2BG,GAAiB,KAAA,CAAS,GAE/DC,IAAgBC,QAAe;GACnC,IAAI,CAACC,EAAYX,EAAM,KAAK,GAAG,OAAOA,EAAM;GAC5C,IAAIW,EAAYP,CAAM,KAAKO,EAAYJ,CAAO,KAAKI,EAAYX,EAAM,GAAG,KAAK,GAAG,OAAO;GACvF,IAAM,EAAE,KAAKY,MAASC,EAA6Bb,EAAM,GAAG,OAAO,GAAG;GACtE,OAAOc,EAAEV,IAAS,MAAMG,IAAU,YAAYK,CAAI;EACpD,CAAC,GAEKG,IAAUC,EAAI,EAAK,GACnBC,IAAWD,EAAI,EAAK,GACpBE,IAAWF,EAAI,EAAE,GACjBG,IAAaC,EAAM,GAEnBC,IAAqBX,QAClBV,EAAM,UACd,GAGKsB,IAAqBN,EAAIhB,EAAM,UAAU,GAEzCuB,IAAU,YAAY;GAC1B,IAAIR,EAAQ,OAAO;GAEnB,AADA,EAAQ,QAAQ,IAChB,EAAS,QAAQ;GACjB,IAAMS,IAAUF,EAAmB,UAAU,IACzCG,IAAU;GAEd,IAAI;IACF,IAAUD,IAAU,MAAMxB,EAAM,gBAAgB,IAAI,MAAMA,EAAM,eAAe;GACjF,UAAU;IACR,IAAM0B,IAAQF,IAAU,CAACC,IAAUA;IAInC,AAHAvB,EAAK,qBAAqBwB,CAAK,GAC/B,EAAmB,QAAQA,GACtBD,MAAS,EAAS,QAAQ,KAC/B,EAAQ,QAAQ;GAClB;EACF;E,OAEAE,EAAMN,IAAqB,GAAU,MAAa;GAChD,AAAIO,MAAaC,MACf,EAAmB,QAAQD,GAC3B,EAAS,QAAQ;EAErB,CAAC,GAEDE,QAAgB;GACd,EAAS,QAAQ,qBAAqBX;EACxC,CAAC,I,UAIClC,EAAA,GAAAC,EAwCM,OAxCNU,GAwCM,CAvCJT,EA+BOC,GAAA;GA9BJ,IAAI8B,EAAA;GACL,MAAA;GACA,OAAM;GACN,OAAM;GACL,QAAQ;GACR,OAAOjB,EAAA,YAAS,KAAQ,KAAA;GACxB,QAAQ;GACR,cAAYA,EAAA,aAAYQ,EAAA,SAAiB,KAAA;GACzC,SAAKpB,EAAOkC,GAAO,CAAA,MAAA,CAAA;;GAEpB,SAAAjC,QAmBU,CAnBVH,EAmBUI,GAAA;IAlBC,YAAA+B,EAAA;IAAA,uBAAA,AAAAgB,EAAA,QAAA,MAAA,EAAkB,QAAAC;IAC1B,SAASxB,EAAA;IACT,UAAUA,EAAA;IACV,gBAAcd,EAAA;IACf,SAAQ;IACP,SAAKZ,EAAOkC,GAAO,CAAA,MAAA,CAAA;G,gBAGZN,EAAA,Q;IACL,MAAA;IAED,IAAA3B,QAKE,CALFH,EAKEM,GAAA;KAJA,MAAK;KACL,OAAM;KACN,MAAK;KACL,OAAM;;;;;;;;;;;;;;E,IAMLQ,EAAA,Y,aADThB,EAAA,GAAAC,EAMQ,SAAA;;GAJL,KAAKgC,EAAA;GACN,OAAM;EAEH,GAAAxB,EAAAe,EAAA,KAAa,GAAA,GAAAZ,CAAA,E"}
1
+ {"version":3,"file":"AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","_component_VBtn","_withModifiers","_withCtx","_component_VSwitch","_component_VIcon","_toDisplayString","_hoisted_1","_hoisted_2","AFormRemoteSwitch_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","labelComputed","computed","isUndefined","path","stringSplitOnFirstOccurrence","t","loading","ref","hasError","uniqueId","useIdValue","useId","modelValueComputed","internalModelValue","onClick","toFalse","success","value","watch","newValue","oldValue","onMounted","openBlock","createElementBlock","createVNode","VBtn","withModifiers","withCtx","VSwitch","_cache","$event","createSlots","VIcon","createCommentVNode","toDisplayString"],"sources":["../../../../src/domains/form/components/AFormRemoteSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, onMounted, ref, useId, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport { isUndefined } from '@/shared/utils/common'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n callbackToTrue: () => Promise<boolean> // return true if successfully changed, otherwise return false\n callbackToFalse: () => Promise<boolean> // return true if successfully changed, otherwise return false\n label?: string | undefined\n hideDetails?: boolean | undefined\n hideLabel?: boolean | undefined\n v?: AFormFieldValidation | null\n }>(),\n {\n label: undefined,\n hideDetails: undefined,\n hideLabel: undefined,\n v: null,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n}>()\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst labelComputed = computed(() => {\n if (!isUndefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst loading = ref(false)\nconst hasError = ref(false)\nconst uniqueId = ref('')\nconst useIdValue = useId()\n\nconst modelValueComputed = computed(() => {\n return props.modelValue\n})\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst internalModelValue = ref(props.modelValue)\n\nconst onClick = async () => {\n if (loading.value) return\n loading.value = true\n hasError.value = false\n const toFalse = internalModelValue.value === true\n let success = false\n // No catch: a throwing callback still reaches the app's error handler; `finally` puts the control back.\n try {\n success = toFalse ? await props.callbackToFalse() : await props.callbackToTrue()\n } finally {\n const value = toFalse ? !success : success\n emit('update:modelValue', value)\n internalModelValue.value = value\n if (!success) hasError.value = true\n loading.value = false\n }\n}\n\nwatch(modelValueComputed, (newValue, oldValue) => {\n if (newValue !== oldValue) {\n internalModelValue.value = newValue\n hasError.value = false\n }\n})\n\nonMounted(() => {\n uniqueId.value = 'a-remote-switch-' + useIdValue\n})\n</script>\n\n<template>\n <div class=\"d-flex\">\n <VBtn\n :id=\"uniqueId\"\n icon\n class=\"a-switch-fix-click\"\n color=\"transparent\"\n :ripple=\"false\"\n :width=\"hideLabel ? 36 : undefined\"\n :height=\"36\"\n :aria-label=\"hideLabel ? labelComputed || undefined : undefined\"\n @click.stop=\"onClick\"\n >\n <VSwitch\n v-model=\"internalModelValue\"\n :loading=\"loading\"\n :disabled=\"loading\"\n :hide-details=\"hideDetails\"\n density=\"compact\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"hasError\"\n #append\n >\n <VIcon\n icon=\"mdi-alert\"\n class=\"ml-5 mt-1\"\n size=\"x-small\"\n color=\"error\"\n />\n </template>\n </VSwitch>\n </VBtn>\n <label\n v-if=\"!hideLabel\"\n :for=\"uniqueId\"\n class=\"v-label v-label--clickable\"\n >\n {{ labelComputed }}\n </label>\n </div>\n</template>\n\n<style lang=\"scss\">\n.v-btn.a-switch-fix-click:hover > .v-btn__overlay {\n opacity: 0;\n max-height: 36px;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,IAAMa,IAAQC,GAiBRC,IAAOH,GAIP,EAAE,SAAMI,EAAQ,GAEhBC,IAASC,EAA2BC,GAAgB,KAAA,CAAS,GAC7DC,IAAUF,EAA2BG,GAAiB,KAAA,CAAS,GAE/DC,IAAgBC,QAAe;GACnC,IAAI,CAACC,EAAYX,EAAM,KAAK,GAAG,OAAOA,EAAM;GAC5C,IAAIW,EAAYP,CAAM,KAAKO,EAAYJ,CAAO,KAAKI,EAAYX,EAAM,GAAG,KAAK,GAAG,OAAO;GACvF,IAAM,EAAE,KAAKY,MAASC,EAA6Bb,EAAM,GAAG,OAAO,GAAG;GACtE,OAAOc,EAAEV,IAAS,MAAMG,IAAU,YAAYK,CAAI;EACpD,CAAC,GAEKG,IAAUC,EAAI,EAAK,GACnBC,IAAWD,EAAI,EAAK,GACpBE,IAAWF,EAAI,EAAE,GACjBG,IAAaC,EAAM,GAEnBC,IAAqBX,QAClBV,EAAM,UACd,GAGKsB,IAAqBN,EAAIhB,EAAM,UAAU,GAEzCuB,IAAU,YAAY;GAC1B,IAAIR,EAAQ,OAAO;GAEnB,AADA,EAAQ,QAAQ,IAChB,EAAS,QAAQ;GACjB,IAAMS,IAAUF,EAAmB,UAAU,IACzCG,IAAU;GAEd,IAAI;IACF,IAAUD,IAAU,MAAMxB,EAAM,gBAAgB,IAAI,MAAMA,EAAM,eAAe;GACjF,UAAU;IACR,IAAM0B,IAAQF,IAAU,CAACC,IAAUA;IAInC,AAHAvB,EAAK,qBAAqBwB,CAAK,GAC/B,EAAmB,QAAQA,GACtBD,MAAS,EAAS,QAAQ,KAC/B,EAAQ,QAAQ;GAClB;EACF;E,OAEAE,EAAMN,IAAqB,GAAU,MAAa;GAChD,AAAIO,MAAaC,MACf,EAAmB,QAAQD,GAC3B,EAAS,QAAQ;EAErB,CAAC,GAEDE,QAAgB;GACd,EAAS,QAAQ,qBAAqBX;EACxC,CAAC,I,UAIChC,EAAA,GAAAC,EAwCM,OAxCNQ,GAwCM,CAvCJP,EA+BOC,GAAA;GA9BJ,IAAI4B,EAAA;GACL,MAAA;GACA,OAAM;GACN,OAAM;GACL,QAAQ;GACR,OAAOjB,EAAA,YAAS,KAAQ,KAAA;GACxB,QAAQ;GACR,cAAYA,EAAA,aAAYQ,EAAA,SAAiB,KAAA;GACzC,SAAKlB,EAAOgC,GAAO,CAAA,MAAA,CAAA;;GAEpB,SAAA/B,QAmBU,CAnBVH,EAmBUI,GAAA;IAlBC,YAAA6B,EAAA;IAAA,uBAAA,AAAAgB,EAAA,QAAA,MAAA,EAAkB,QAAAC;IAC1B,SAASxB,EAAA;IACT,UAAUA,EAAA;IACV,gBAAcd,EAAA;IACf,SAAQ;IACP,SAAKV,EAAOgC,GAAO,CAAA,MAAA,CAAA;G,gBAGZN,EAAA,Q;IACL,MAAA;IAED,IAAAzB,QAKE,CALFH,EAKEK,GAAA;KAJA,MAAK;KACL,OAAM;KACN,MAAK;KACL,OAAM;;;;;;;;;;;;;;E,IAMLO,EAAA,Y,aADTd,EAAA,GAAAC,EAMQ,SAAA;;GAJL,KAAK8B,EAAA;GACN,OAAM;EAEH,GAAAvB,EAAAc,EAAA,KAAa,GAAA,GAAAZ,CAAA,E"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormSwitch.js","names":["_sfc_main","AFormSwitch_vue_vue_type_script_setup_true_lang_default","AFormSwitch_default"],"sources":["../../../../src/domains/form/components/AFormSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, ref, watch, unref } from 'vue'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { isDefined } from '@/shared/utils/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n label?: string\n dataCy?: string\n hideLabel?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n v?: AFormFieldValidation | null\n readonly?: boolean\n }>(),\n {\n label: undefined,\n dataCy: undefined,\n hideLabel: false,\n collab: undefined,\n disabled: undefined,\n v: null,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n (e: 'blur', data: boolean): void\n (e: 'focus', data: boolean): void\n}>()\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst onClick = () => {\n acquireFieldLock.value()\n setTimeout(() => {\n releaseFieldLock.value(props.modelValue)\n }, 500)\n}\n\nconst onUpdate = (newValue: boolean) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n</script>\n\n<template>\n <VSwitch\n :data-cy=\"dataCy\"\n :model-value=\"modelValue\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :error-messages=\"errorMessageComputed\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event as unknown as boolean)\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ label }}\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </VSwitch>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormSwitch.js","names":["AFormSwitch_vue_vue_type_script_setup_true_lang_default","AFormSwitch_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VSwitch","_withModifiers","_createSlots","_withCtx","_createTextVNode","_toDisplayString","_renderSlot","ACollabLockedByUser","_createCommentVNode","ACollabLockedByUser_default","AFormSwitch_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useCommonAdminCollabOptions","releaseFieldLock","ref","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","onClick","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","disabledComputed","openBlock","createBlock","VSwitch","_cache","$event","withModifiers","createSlots","withCtx","createTextVNode","toDisplayString","renderSlot","_ctx","createCommentVNode"],"sources":["../../../../src/domains/form/components/AFormSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, ref, watch, unref } from 'vue'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { isDefined } from '@/shared/utils/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n label?: string\n dataCy?: string\n hideLabel?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n v?: AFormFieldValidation | null\n readonly?: boolean\n }>(),\n {\n label: undefined,\n dataCy: undefined,\n hideLabel: false,\n collab: undefined,\n disabled: undefined,\n v: null,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n (e: 'blur', data: boolean): void\n (e: 'focus', data: boolean): void\n}>()\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst onClick = () => {\n acquireFieldLock.value()\n setTimeout(() => {\n releaseFieldLock.value(props.modelValue)\n }, 500)\n}\n\nconst onUpdate = (newValue: boolean) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n</script>\n\n<template>\n <VSwitch\n :data-cy=\"dataCy\"\n :model-value=\"modelValue\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :error-messages=\"errorMessageComputed\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event as unknown as boolean)\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ label }}\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </VSwitch>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,IAAMc,IAAQC,GAsBRC,IAAOH,GAOP,EAAE,qBAAkBI,EAA4B,GAEhDC,IAAmBC,GAAK,MAA0B,CAAC,CAAC,GACpDC,IAAmBD,QAAU,CAAC,CAAC,GAC/BE,IAAoBF,EAAuB,IAAI;EAErD,IAAIG,EAAc,MAAM,WAAWC,EAAUT,EAAM,MAAM,GAAG;GAC1D,IAAM,EAAE,2BAAwB,2BAAwB,oBAAiBU,EACvEV,EAAM,OAAO,MACbA,EAAM,OAAO,OACb,IACA,EACF;GAGA,AAFA,EAAiB,QAAQW,GACzB,EAAiB,QAAQC,GACzBC,EACEC,IACC,MAAa;IACZ,EAAkB,QAAQC;GAC5B,GACA,EAAE,WAAW,GAAK,CACpB;EACF;EAEA,IAAMC,UAAgB;GAEpB,AADAV,EAAiB,MAAM,GACvB,iBAAiB;IACf,EAAiB,MAAMN,EAAM,UAAU;GACzC,GAAG,GAAG;EACR,GAEMiB,KAAY,MAAsB;GACtC,EAAK,qBAAqBF,CAAQ;EACpC,GACMG,UAAe;GAGnB,AAFAhB,EAAK,QAAQF,EAAM,UAAU,GAC7BA,EAAM,GAAG,OAAO,GAChBI,EAAiB,MAAMJ,EAAM,UAAU;EACzC,GAEMmB,UAAgB;GAEpB,AADAjB,EAAK,SAASF,EAAM,UAAU,GAC9BM,EAAiB,MAAM;EACzB,GAEMc,IAAuBC,QACvBrB,EAAM,GAAG,SAAS,SAAe,CAACA,EAAM,EAAE,QAAQ,KAAK,MAASsB,EAAMC,EAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAC5F,CAAC,CACT,GAEKC,IAAmBH,QACnBZ,EAAUT,EAAM,QAAQ,IAAUA,EAAM,WACrC,CAAC,CAACO,EAAkB,KAC5B;E,kBAICrB,EAAA,GAAAC,EAgCUC,GAAA;GA/BP,WAASa,EAAA;GACT,eAAaA,EAAA;GACb,UAAUuB,EAAA;GACV,UAAUvB,EAAA;GACV,kBAAgBmB,EAAA;GACV;GACC;GACP,uBAAkB,AAAAQ,EAAA,QAAA,MAAEX,EAASY,CAAM;GACnC,SAAKxC,EAAO2B,GAAO,CAAA,MAAA,CAAA;E,gBAGXf,EAAA,Y;GACN,MAAA;GAED,IAAAV,QAAW,CAARC,EAAAC,EAAAQ,EAAA,KAAK,GAAA,CAAA,C;;E,GAGFM,EAAA,Q;GACL,MAAA;GAED,IAAAhB,QASO,CATPG,EASO0C,EAAA,QAAA,UAAA,EAPJ,QAAS7B,EAAA,MAAiB,SAOtB,CAJGN,EAAA,UADRf,EAAA,GAAAC,EAIEQ,GAAA;;IAFC,IAAIY,EAAA;IACJ,OAAON,EAAA,OAAO"}
1
+ {"version":3,"file":"AFormSwitch.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VSwitch","_withModifiers","_withCtx","_createTextVNode","_toDisplayString","_renderSlot","ACollabLockedByUser","ACollabLockedByUser_default","AFormSwitch_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useCommonAdminCollabOptions","releaseFieldLock","ref","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","onClick","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","disabledComputed","openBlock","createBlock","VSwitch","_cache","$event","withModifiers","createSlots","withCtx","createTextVNode","toDisplayString","renderSlot","_ctx","createCommentVNode"],"sources":["../../../../src/domains/form/components/AFormSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, ref, watch, unref } from 'vue'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport { isDefined } from '@/shared/utils/common'\nimport type { CollabComponentConfig, CollabFieldData } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: boolean\n label?: string\n dataCy?: string\n hideLabel?: boolean\n collab?: CollabComponentConfig\n disabled?: boolean\n v?: AFormFieldValidation | null\n readonly?: boolean\n }>(),\n {\n label: undefined,\n dataCy: undefined,\n hideLabel: false,\n collab: undefined,\n disabled: undefined,\n v: null,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: boolean): void\n (e: 'blur', data: boolean): void\n (e: 'focus', data: boolean): void\n}>()\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\nconst acquireFieldLock = ref(() => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const { releaseCollabFieldLock, acquireCollabFieldLock, lockedByUser } = useCollabField(\n props.collab.room,\n props.collab.field,\n false,\n true\n )\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n}\n\nconst onClick = () => {\n acquireFieldLock.value()\n setTimeout(() => {\n releaseFieldLock.value(props.modelValue)\n }, 500)\n}\n\nconst onUpdate = (newValue: boolean) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n</script>\n\n<template>\n <VSwitch\n :data-cy=\"dataCy\"\n :model-value=\"modelValue\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :error-messages=\"errorMessageComputed\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event as unknown as boolean)\"\n @click.stop=\"onClick\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ label }}\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n </VSwitch>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,IAAMY,IAAQC,GAsBRC,IAAOH,GAOP,EAAE,qBAAkBI,EAA4B,GAEhDC,IAAmBC,GAAK,MAA0B,CAAC,CAAC,GACpDC,IAAmBD,QAAU,CAAC,CAAC,GAC/BE,IAAoBF,EAAuB,IAAI;EAErD,IAAIG,EAAc,MAAM,WAAWC,EAAUT,EAAM,MAAM,GAAG;GAC1D,IAAM,EAAE,2BAAwB,2BAAwB,oBAAiBU,EACvEV,EAAM,OAAO,MACbA,EAAM,OAAO,OACb,IACA,EACF;GAGA,AAFA,EAAiB,QAAQW,GACzB,EAAiB,QAAQC,GACzBC,EACEC,IACC,MAAa;IACZ,EAAkB,QAAQC;GAC5B,GACA,EAAE,WAAW,GAAK,CACpB;EACF;EAEA,IAAMC,UAAgB;GAEpB,AADAV,EAAiB,MAAM,GACvB,iBAAiB;IACf,EAAiB,MAAMN,EAAM,UAAU;GACzC,GAAG,GAAG;EACR,GAEMiB,KAAY,MAAsB;GACtC,EAAK,qBAAqBF,CAAQ;EACpC,GACMG,UAAe;GAGnB,AAFAhB,EAAK,QAAQF,EAAM,UAAU,GAC7BA,EAAM,GAAG,OAAO,GAChBI,EAAiB,MAAMJ,EAAM,UAAU;EACzC,GAEMmB,UAAgB;GAEpB,AADAjB,EAAK,SAASF,EAAM,UAAU,GAC9BM,EAAiB,MAAM;EACzB,GAEMc,IAAuBC,QACvBrB,EAAM,GAAG,SAAS,SAAe,CAACA,EAAM,EAAE,QAAQ,KAAK,MAASsB,EAAMC,EAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAC5F,CAAC,CACT,GAEKC,IAAmBH,QACnBZ,EAAUT,EAAM,QAAQ,IAAUA,EAAM,WACrC,CAAC,CAACO,EAAkB,KAC5B;E,kBAICnB,EAAA,GAAAC,EAgCUC,GAAA;GA/BP,WAASW,EAAA;GACT,eAAaA,EAAA;GACb,UAAUuB,EAAA;GACV,UAAUvB,EAAA;GACV,kBAAgBmB,EAAA;GACV;GACC;GACP,uBAAkB,AAAAQ,EAAA,QAAA,MAAEX,EAASY,CAAM;GACnC,SAAKtC,EAAOyB,GAAO,CAAA,MAAA,CAAA;E,gBAGXf,EAAA,Y;GACN,MAAA;GAED,IAAAT,QAAW,CAARC,EAAAC,EAAAO,EAAA,KAAK,GAAA,CAAA,C;;E,GAGFM,EAAA,Q;GACL,MAAA;GAED,IAAAf,QASO,CATPG,EASOyC,EAAA,QAAA,UAAA,EAPJ,QAAS7B,EAAA,MAAiB,SAOtB,CAJGN,EAAA,UADRb,EAAA,GAAAC,EAIEO,GAAA;;IAFC,IAAIW,EAAA;IACJ,OAAON,EAAA,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormTextField.js","names":["_sfc_main","AFormTextField_vue_vue_type_script_setup_true_lang_default","AFormTextField_default"],"sources":["../../../../src/domains/form/components/AFormTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | number | null | undefined\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue\n appendIcon?: VuetifyIconValue\n dataCy?: string\n hideLabel?: boolean\n type?: string\n step?: number\n maxlength?: number | undefined\n collab?: CollabComponentConfig\n disabled?: boolean\n placeholder?: undefined | string\n persistentPlaceholder?: boolean\n help?: string | undefined\n readonly?: boolean\n // Vue applies `.number` and `.trim` to what this component emits.\n // VTextField also reads `trim` to keep the caret in place.\n modelModifiers?: Partial<Record<'number' | 'trim' | 'lazy', true>>\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n type: 'text',\n step: undefined,\n maxlength: undefined,\n collab: undefined,\n disabled: undefined,\n placeholder: undefined,\n persistentPlaceholder: false,\n help: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n modelModifiers: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | number | null | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst textFieldRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n\nconst releaseFieldLock = ref((_data: CollabFieldData, _options?: Partial<CollabFieldLockOptions>) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textFieldRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textFieldRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string | number | null) => {\n // Under `.number` an empty input means no value; '' would reach the backend and be cast to 0.\n emit('update:modelValue', props.modelModifiers?.number && newValue === '' ? null : newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst focus = () => {\n textFieldRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextField\n ref=\"textFieldRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :type=\"type\"\n :step=\"step\"\n :append-icon=\"appendIcon\"\n :maxlength=\"maxlength\"\n :disabled=\"disabledComputed\"\n :placeholder=\"placeholder\"\n :persistent-placeholder=\"persistentPlaceholder\"\n :readonly=\"readonly\"\n :model-modifiers=\"modelModifiers\"\n autocomplete=\"off\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"help\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextField>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormTextField.js","names":["AFormTextField_vue_vue_type_script_setup_true_lang_default","AFormTextField_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormTextField.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VTextField","_createSlots","_withCtx","_createTextVNode","_toDisplayString","_createElementBlock","_createCommentVNode","_renderSlot","ACollabLockedByUser","_withDirectives","_createVNode","_component_VIcon","_directive_tooltip","ACollabLockedByUser_default","_hoisted_1","AFormTextField_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","textFieldRef","ref","useCommonAdminCollabOptions","releaseFieldLock","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","addCollabFieldLockStatusListener","data","CollabFieldLockStatus","CollabFieldLockType","addCollabGatheringBufferDataListener","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","labelComputed","isUndefined","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","openBlock","createBlock","VTextField","_cache","event","$event","createSlots","withCtx","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","renderSlot","_ctx","withDirectives","createVNode","VIcon","Tooltip"],"sources":["../../../../src/domains/form/components/AFormTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | number | null | undefined\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue\n appendIcon?: VuetifyIconValue\n dataCy?: string\n hideLabel?: boolean\n type?: string\n step?: number\n maxlength?: number | undefined\n collab?: CollabComponentConfig\n disabled?: boolean\n placeholder?: undefined | string\n persistentPlaceholder?: boolean\n help?: string | undefined\n readonly?: boolean\n // Vue applies `.number` and `.trim` to what this component emits.\n // VTextField also reads `trim` to keep the caret in place.\n modelModifiers?: Partial<Record<'number' | 'trim' | 'lazy', true>>\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n type: 'text',\n step: undefined,\n maxlength: undefined,\n collab: undefined,\n disabled: undefined,\n placeholder: undefined,\n persistentPlaceholder: false,\n help: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n modelModifiers: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | number | null | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst textFieldRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n\nconst releaseFieldLock = ref((_data: CollabFieldData, _options?: Partial<CollabFieldLockOptions>) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textFieldRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textFieldRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string | number | null) => {\n // Under `.number` an empty input means no value; '' would reach the backend and be cast to 0.\n emit('update:modelValue', props.modelModifiers?.number && newValue === '' ? null : newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst focus = () => {\n textFieldRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextField\n ref=\"textFieldRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :type=\"type\"\n :step=\"step\"\n :append-icon=\"appendIcon\"\n :maxlength=\"maxlength\"\n :disabled=\"disabledComputed\"\n :placeholder=\"placeholder\"\n :persistent-placeholder=\"persistentPlaceholder\"\n :readonly=\"readonly\"\n :model-modifiers=\"modelModifiers\"\n autocomplete=\"off\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"help\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextField>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFormTextField.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VTextField","_withCtx","_createTextVNode","_toDisplayString","_createElementBlock","_renderSlot","ACollabLockedByUser","_withDirectives","_createVNode","_component_VIcon","_directive_tooltip","ACollabLockedByUser_default","_hoisted_1","AFormTextField_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","textFieldRef","ref","useCommonAdminCollabOptions","releaseFieldLock","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","addCollabFieldLockStatusListener","data","CollabFieldLockStatus","CollabFieldLockType","addCollabGatheringBufferDataListener","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","labelComputed","isUndefined","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","openBlock","createBlock","VTextField","_cache","event","$event","createSlots","withCtx","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","renderSlot","_ctx","withDirectives","createVNode","VIcon","Tooltip"],"sources":["../../../../src/domains/form/components/AFormTextField.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | number | null | undefined\n label?: string\n errorMessage?: string\n required?: boolean\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue\n appendIcon?: VuetifyIconValue\n dataCy?: string\n hideLabel?: boolean\n type?: string\n step?: number\n maxlength?: number | undefined\n collab?: CollabComponentConfig\n disabled?: boolean\n placeholder?: undefined | string\n persistentPlaceholder?: boolean\n help?: string | undefined\n readonly?: boolean\n // Vue applies `.number` and `.trim` to what this component emits.\n // VTextField also reads `trim` to keep the caret in place.\n modelModifiers?: Partial<Record<'number' | 'trim' | 'lazy', true>>\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n type: 'text',\n step: undefined,\n maxlength: undefined,\n collab: undefined,\n disabled: undefined,\n placeholder: undefined,\n persistentPlaceholder: false,\n help: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n modelModifiers: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | number | null | undefined): void\n (e: 'click:append', data: string | number | null | undefined): void\n (e: 'blur', data: string | number | null | undefined): void\n (e: 'focus', data: string | number | null | undefined): void\n}>()\n\nconst textFieldRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n\nconst releaseFieldLock = ref((_data: CollabFieldData, _options?: Partial<CollabFieldLockOptions>) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textFieldRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textFieldRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string | number | null) => {\n // Under `.number` an empty input means no value; '' would reach the backend and be cast to 0.\n emit('update:modelValue', props.modelModifiers?.number && newValue === '' ? null : newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst focus = () => {\n textFieldRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextField\n ref=\"textFieldRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :type=\"type\"\n :step=\"step\"\n :append-icon=\"appendIcon\"\n :maxlength=\"maxlength\"\n :disabled=\"disabledComputed\"\n :placeholder=\"placeholder\"\n :persistent-placeholder=\"persistentPlaceholder\"\n :readonly=\"readonly\"\n :model-modifiers=\"modelModifiers\"\n autocomplete=\"off\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"help\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextField>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormTextarea.js","names":["_sfc_main","AFormTextarea_vue_vue_type_script_setup_true_lang_default","AFormTextarea_default"],"sources":["../../../../src/domains/form/components/AFormTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isNumber, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | null | undefined // todo check number and null\n label?: string | undefined\n errorMessage?: string | undefined\n required?: boolean | undefined\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue | undefined\n appendIcon?: VuetifyIconValue | undefined\n dataCy?: string | undefined\n hideLabel?: boolean\n rows?: number\n collab?: CollabComponentConfig | undefined\n disabled?: boolean | undefined\n help?: string | undefined\n suggestedLength?: number | undefined\n readonly?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n rows: 1,\n collab: undefined,\n disabled: undefined,\n help: undefined,\n suggestedLength: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | null | undefined): void\n (e: 'click:append', data: string | null): void\n (e: 'blur', data: string | null | undefined): void\n (e: 'focus', data: string | null | undefined): void\n}>()\n\nconst { mdAndDown } = useDisplay()\nconst textareaRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textareaRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textareaRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst showCounterWarning = (counterValue: string | number | undefined) => {\n if (isNumber(counterValue) && !isUndefined(props.suggestedLength)) {\n return counterValue > props.suggestedLength\n }\n return false\n}\n\nconst focus = () => {\n textareaRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextarea\n ref=\"textareaRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :rows=\"rows\"\n auto-grow\n :append-icon=\"appendIcon\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"$slots.counter\"\n #counter=\"counterProps\"\n >\n <slot\n name=\"counter\"\n :props=\"counterProps\"\n />\n </template>\n <template\n v-else-if=\"suggestedLength\"\n #counter=\"{ value: counterValue }\"\n >\n <span :class=\"{ 'text-warning': showCounterWarning(counterValue) }\">\n {{ t('common.system.inputSuggestedMax', { current: counterValue, max: suggestedLength }) }}\n </span>\n </template>\n <template\n v-if=\"help && !mdAndDown\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextarea>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AFormTextarea.js","names":["AFormTextarea_vue_vue_type_script_setup_true_lang_default","AFormTextarea_default"],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AFormTextarea.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VTextarea","_createSlots","_withCtx","_createTextVNode","_toDisplayString","_createElementBlock","_createCommentVNode","_renderSlot","ACollabLockedByUser","_createElementVNode","_normalizeClass","_unref","_withDirectives","_createVNode","_component_VIcon","_directive_tooltip","ACollabLockedByUser_default","_hoisted_1","AFormTextarea_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useDisplay","textareaRef","ref","useCommonAdminCollabOptions","releaseFieldLock","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","addCollabFieldLockStatusListener","data","CollabFieldLockStatus","CollabFieldLockType","addCollabGatheringBufferDataListener","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","labelComputed","isUndefined","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","showCounterWarning","isNumber","counterValue","openBlock","createBlock","VTextarea","_cache","event","$event","createSlots","withCtx","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","renderSlot","_ctx","counterProps","createElementVNode","normalizeClass","mdAndDown","withDirectives","createVNode","VIcon","Tooltip"],"sources":["../../../../src/domains/form/components/AFormTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isNumber, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | null | undefined // todo check number and null\n label?: string | undefined\n errorMessage?: string | undefined\n required?: boolean | undefined\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue | undefined\n appendIcon?: VuetifyIconValue | undefined\n dataCy?: string | undefined\n hideLabel?: boolean\n rows?: number\n collab?: CollabComponentConfig | undefined\n disabled?: boolean | undefined\n help?: string | undefined\n suggestedLength?: number | undefined\n readonly?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n rows: 1,\n collab: undefined,\n disabled: undefined,\n help: undefined,\n suggestedLength: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | null | undefined): void\n (e: 'click:append', data: string | null): void\n (e: 'blur', data: string | null | undefined): void\n (e: 'focus', data: string | null | undefined): void\n}>()\n\nconst { mdAndDown } = useDisplay()\nconst textareaRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textareaRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textareaRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst showCounterWarning = (counterValue: string | number | undefined) => {\n if (isNumber(counterValue) && !isUndefined(props.suggestedLength)) {\n return counterValue > props.suggestedLength\n }\n return false\n}\n\nconst focus = () => {\n textareaRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextarea\n ref=\"textareaRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :rows=\"rows\"\n auto-grow\n :append-icon=\"appendIcon\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"$slots.counter\"\n #counter=\"counterProps\"\n >\n <slot\n name=\"counter\"\n :props=\"counterProps\"\n />\n </template>\n <template\n v-else-if=\"suggestedLength\"\n #counter=\"{ value: counterValue }\"\n >\n <span :class=\"{ 'text-warning': showCounterWarning(counterValue) }\">\n {{ t('common.system.inputSuggestedMax', { current: counterValue, max: suggestedLength }) }}\n </span>\n </template>\n <template\n v-if=\"help && !mdAndDown\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextarea>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AFormTextarea.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","_component_VTextarea","_withCtx","_createTextVNode","_toDisplayString","_createElementBlock","_renderSlot","ACollabLockedByUser","_createElementVNode","_normalizeClass","_unref","_withDirectives","_createVNode","_component_VIcon","_directive_tooltip","ACollabLockedByUser_default","_hoisted_1","AFormTextarea_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useDisplay","textareaRef","ref","useCommonAdminCollabOptions","releaseFieldLock","acquireFieldLock","lockedByUserLocal","collabOptions","isDefined","useCollabField","releaseCollabFieldLock","acquireCollabFieldLock","watch","lockedByUser","newValue","addCollabFieldLockStatusListener","data","CollabFieldLockStatus","CollabFieldLockType","addCollabGatheringBufferDataListener","useI18n","system","inject","SystemScopeKey","subject","SubjectScopeKey","onUpdate","onBlur","onFocus","errorMessageComputed","computed","unref","item","labelComputed","isUndefined","path","stringSplitOnFirstOccurrence","t","requiredComputed","disabledComputed","showCounterWarning","isNumber","counterValue","openBlock","createBlock","VTextarea","_cache","event","$event","createSlots","withCtx","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","renderSlot","_ctx","counterProps","createElementVNode","normalizeClass","mdAndDown","withDirectives","createVNode","VIcon","Tooltip"],"sources":["../../../../src/domains/form/components/AFormTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AFormFieldValidation } from '@/shared/types/Validation'\nimport { computed, inject, ref, watch, unref } from 'vue'\nimport { useDisplay } from 'vuetify'\nimport { stringSplitOnFirstOccurrence } from '@/shared/utils/string'\nimport { isDefined, isNumber, isUndefined } from '@/shared/utils/common'\nimport { SubjectScopeKey, SystemScopeKey } from '@/shared/injectionKeys'\nimport type { VuetifyIconValue } from '@/shared/types/Vuetify'\nimport { useI18n } from 'vue-i18n'\nimport type { VTextField } from 'vuetify/components/VTextField'\nimport type { CollabComponentConfig, CollabFieldData, CollabFieldLockOptions } from '@/domains/collab/types/Collab'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport ACollabLockedByUser from '@/domains/collab/components/ACollabLockedByUser.vue'\nimport {\n CollabFieldLockStatus,\n type CollabFieldLockStatusPayload,\n CollabFieldLockType,\n} from '@/domains/collab/composables/collabEventBus'\nimport { useCollabField } from '@/domains/collab/composables/collabField'\nimport { useCommonAdminCollabOptions } from '@/domains/collab/composables/commonAdminCollabOptions'\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string | null | undefined // todo check number and null\n label?: string | undefined\n errorMessage?: string | undefined\n required?: boolean | undefined\n v?: AFormFieldValidation | null\n prependIcon?: VuetifyIconValue | undefined\n appendIcon?: VuetifyIconValue | undefined\n dataCy?: string | undefined\n hideLabel?: boolean\n rows?: number\n collab?: CollabComponentConfig | undefined\n disabled?: boolean | undefined\n help?: string | undefined\n suggestedLength?: number | undefined\n readonly?: boolean\n }>(),\n {\n label: undefined,\n errorMessage: undefined,\n required: undefined,\n v: null,\n prependIcon: undefined,\n appendIcon: undefined,\n dataCy: undefined,\n hideLabel: false,\n rows: 1,\n collab: undefined,\n disabled: undefined,\n help: undefined,\n suggestedLength: undefined,\n // Left to a `VForm` around it when not set.\n readonly: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', data: string | null | undefined): void\n (e: 'click:append', data: string | null): void\n (e: 'blur', data: string | null | undefined): void\n (e: 'focus', data: string | null | undefined): void\n}>()\n\nconst { mdAndDown } = useDisplay()\nconst textareaRef = ref<InstanceType<typeof VTextField> | null>(null)\n\n// Collaboration\nconst { collabOptions } = useCommonAdminCollabOptions()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst releaseFieldLock = ref((data: CollabFieldData) => {})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst acquireFieldLock = ref((options?: Partial<CollabFieldLockOptions>) => {})\nconst lockedByUserLocal = ref<IntegerIdNullable>(null)\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nif (collabOptions.value.enabled && isDefined(props.collab)) {\n const {\n releaseCollabFieldLock,\n acquireCollabFieldLock,\n addCollabFieldLockStatusListener,\n addCollabGatheringBufferDataListener,\n lockedByUser,\n } = useCollabField(props.collab.room, props.collab.field, false, true)\n releaseFieldLock.value = releaseCollabFieldLock\n acquireFieldLock.value = acquireCollabFieldLock\n watch(\n lockedByUser,\n (newValue) => {\n lockedByUserLocal.value = newValue\n },\n { immediate: true }\n )\n addCollabFieldLockStatusListener((data: CollabFieldLockStatusPayload) => {\n if (data.status === CollabFieldLockStatus.Failure && data.type === CollabFieldLockType.Acquire) {\n textareaRef.value?.blur()\n }\n })\n addCollabGatheringBufferDataListener(() => {\n textareaRef.value?.blur()\n })\n}\n\nconst { t } = useI18n()\n\nconst system = inject<string | undefined>(SystemScopeKey, undefined)\nconst subject = inject<string | undefined>(SubjectScopeKey, undefined)\n\nconst onUpdate = (newValue: string) => {\n emit('update:modelValue', newValue)\n}\nconst onBlur = () => {\n emit('blur', props.modelValue)\n props.v?.$touch()\n releaseFieldLock.value(props.modelValue)\n}\n\nconst onFocus = () => {\n emit('focus', props.modelValue)\n acquireFieldLock.value()\n}\n\nconst errorMessageComputed = computed(() => {\n if (isDefined(props.errorMessage)) return [props.errorMessage]\n if (props.v?.$errors?.length) return [props.v.$errors.map((item) => unref(item.$message)).join(' ')]\n return []\n})\n\nconst labelComputed = computed(() => {\n if (isDefined(props.label)) return props.label\n if (isUndefined(system) || isUndefined(subject) || isUndefined(props.v?.$path)) return ''\n const { end: path } = stringSplitOnFirstOccurrence(props.v?.$path, '.')\n return t(system + '.' + subject + '.model.' + path)\n})\n\nconst requiredComputed = computed(() => {\n if (isDefined(props.required)) return props.required\n if ((props.v?.required as { $params?: { type?: string } } | undefined)?.$params?.type === 'required') return true\n return false\n})\n\nconst disabledComputed = computed(() => {\n if (isDefined(props.disabled)) return props.disabled\n return !!lockedByUserLocal.value\n})\n\nconst showCounterWarning = (counterValue: string | number | undefined) => {\n if (isNumber(counterValue) && !isUndefined(props.suggestedLength)) {\n return counterValue > props.suggestedLength\n }\n return false\n}\n\nconst focus = () => {\n textareaRef.value?.focus()\n}\n\ndefineExpose({\n focus,\n})\n</script>\n\n<template>\n <VTextarea\n ref=\"textareaRef\"\n :prepend-icon=\"prependIcon\"\n :data-cy=\"dataCy\"\n :error-messages=\"errorMessageComputed\"\n :model-value=\"modelValue\"\n :required=\"requiredComputed\"\n :disabled=\"disabledComputed\"\n :readonly=\"readonly\"\n :rows=\"rows\"\n auto-grow\n :append-icon=\"appendIcon\"\n @click:append=\"(event: any) => emit('click:append', event)\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @update:model-value=\"onUpdate($event)\"\n >\n <template\n v-if=\"!hideLabel\"\n #label\n >\n {{ labelComputed\n }}<span\n v-if=\"requiredComputed\"\n class=\"a-required-mark\"\n />\n </template>\n <template\n v-if=\"lockedByUserLocal\"\n #append-inner\n >\n <slot\n name=\"locked\"\n :user-id=\"lockedByUserLocal\"\n >\n <ACollabLockedByUser\n v-if=\"collab\"\n :id=\"lockedByUserLocal\"\n :users=\"collab.cachedUsers\"\n />\n </slot>\n </template>\n <template\n v-if=\"$slots.prepend\"\n #prepend\n >\n <slot name=\"prepend\" />\n </template>\n <template\n v-if=\"$slots.counter\"\n #counter=\"counterProps\"\n >\n <slot\n name=\"counter\"\n :props=\"counterProps\"\n />\n </template>\n <template\n v-else-if=\"suggestedLength\"\n #counter=\"{ value: counterValue }\"\n >\n <span :class=\"{ 'text-warning': showCounterWarning(counterValue) }\">\n {{ t('common.system.inputSuggestedMax', { current: counterValue, max: suggestedLength }) }}\n </span>\n </template>\n <template\n v-if=\"help && !mdAndDown\"\n #append\n >\n <VIcon\n v-tooltip=\"help\"\n icon=\"mdi-help-circle-outline\"\n />\n </template>\n </VTextarea>\n</template>\n"],"mappings":"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"}