@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.
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserFilter.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserForm.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AAnzuUserRoleAutocomplete.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserManageButton.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserMetadataForm.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserMetadataRepairDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserOtherSystemsTable.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserSystemOverview.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserSystemOverview.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserSystemPanel.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserSystemPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserSystemStatusChip.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserTabsShell.js.map +1 -1
- package/dist/domains/anzuUser/components/AUserTabsShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/auth/components/Acl.js.map +1 -1
- package/dist/domains/auth/components/Acl.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/cached/components/ACachedChip.js.map +1 -1
- package/dist/domains/cached/components/ACachedChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/cached/components/ACachedUserChip.js.map +1 -1
- package/dist/domains/cached/components/ACachedUserChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/collab/components/ACollabCountdown.js.map +1 -1
- package/dist/domains/collab/components/ACollabCountdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/collab/components/ACollabLockedByUser.js.map +1 -1
- package/dist/domains/collab/components/ACollabManagement.js.map +1 -1
- package/dist/domains/collab/components/ACollabManagement.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/customDataForm/components/ACustomDataForm.js.map +1 -1
- package/dist/domains/customDataForm/components/ACustomDataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/customDataForm/components/ACustomDataFormElement.js.map +1 -1
- package/dist/domains/customDataForm/components/ACustomDataFormElement.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/customDataForm/components/ACustomDataFormHiddenPart.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AColorBox.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetCustomMetadataForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogLoader.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailDialogSidebar.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsTeleportTarget.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarActionsWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarFrame.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetDetailSidebarROI.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileFailReasonChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileInfoPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetFileRotate.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetImage.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetImage.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetImageMetaIcons.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetInfobox.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetInfobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetMetadata.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.js.map +1 -1
- package/dist/domains/dam/assetDetail/components/AssetMetadataImageAttributes.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetListInner.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetListInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetSelect.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AAssetSelectMedia.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetDistributionServiceNameFilter.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetImagePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectFilter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectFilterForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectListTiles.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectTableRowItem.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/AssetSelectTilesItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/assetSelect/components/FilterPodcastRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorCreateButton.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteCachedAuthorChipConflicts.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.js.map +1 -1
- package/dist/domains/dam/author/components/AuthorRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/author/components/DamAuthorFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/components/DamAdminAssetLink.js.map +1 -1
- package/dist/domains/dam/cropper/components/ACropper.js.map +1 -1
- package/dist/domains/dam/cropper/components/ACropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.js.map +1 -1
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.js.map +1 -1
- package/dist/domains/dam/cropper/components/DamAssetImageRoiSelectLazy.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageMediaWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImagePublicInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidget.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidget.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultiple.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidgetMultipleSimple.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AImageWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/AMediaWidgetSimple.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageDetailDialogMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageMediaWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleInner.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/ImageWidgetMultipleLimitDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.js.map +1 -1
- package/dist/domains/dam/imageWidget/components/MediaWidgetSimpleDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/keyword/components/DamKeywordFilterRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.js.map +1 -1
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteCachedKeywordChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.js.map +1 -1
- package/dist/domains/dam/keyword/components/KeywordRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/AssetCustomMetadataFormMassOperations.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/AssetQueueSelectedSidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueButtonStop.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingle.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebar.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadata.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueDialogSingleSidebarMetadataContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemEditable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/dam/uploadQueue/components/UploadQueueItemErrorOverlay.js.map +1 -1
- package/dist/domains/dam/user/components/DamAssetLicenceGroupRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/user/components/DamAssetLicenceRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/user/components/DamDistributionServiceSelect.js.map +1 -1
- package/dist/domains/dam/user/components/DamExtSystemRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/user/components/DamExternalProviderAssetSelect.js.map +1 -1
- package/dist/domains/dam/user/components/DamUserFilterRemoteAutocomplete.js.map +1 -1
- package/dist/domains/dam/user/components/DamUserRemoteAutocomplete.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/AFilterBookmarkButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/FilterBookmarkDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.js.map +1 -1
- package/dist/domains/filters/bookmarks/components/FilterBookmarks.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/components/AFilterAdvancedButton.js.map +1 -1
- package/dist/domains/filters/components/AFilterBooleanSelect.js.map +1 -1
- package/dist/domains/filters/components/AFilterDatetimePicker.js.map +1 -1
- package/dist/domains/filters/components/AFilterEmpty.js.map +1 -1
- package/dist/domains/filters/components/AFilterInteger.js.map +1 -1
- package/dist/domains/filters/components/AFilterResetButton.js.map +1 -1
- package/dist/domains/filters/components/AFilterString.js.map +1 -1
- package/dist/domains/filters/components/AFilterString.vue.d.ts +3 -0
- package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/domains/filters/components/AFilterString.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/components/AFilterSubmitButton.js.map +1 -1
- package/dist/domains/filters/components/AFilterTimeInterval.js.map +1 -1
- package/dist/domains/filters/components/AFilterTimeInterval.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/components/AFilterValueObjectOptionsSelect.js.map +1 -1
- package/dist/domains/filters/components/AFilterWrapper.js.map +1 -1
- package/dist/domains/filters/components/AFilterWrapper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/filters/components/AFilterWrapperSidebar.js.map +1 -1
- package/dist/domains/filters/components/FilterDetailItem.js.map +1 -1
- package/dist/domains/filters/components/FiltersSelected.js.map +1 -1
- package/dist/domains/filters/datatable/components/ADatatableConfigButton.js.map +1 -1
- package/dist/domains/filters/datatable/components/ADatatableOrdering.js.map +1 -1
- package/dist/domains/filters/datatable/components/ADatatablePagination.js.map +1 -1
- package/dist/domains/filters/datatable/components/ADatatablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormDatetimePicker.js.map +1 -1
- package/dist/domains/form/components/AFormDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormFlagDatetimePicker.js.map +1 -1
- package/dist/domains/form/components/AFormFlagDatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormRemoteCheckbox.js.map +1 -1
- package/dist/domains/form/components/AFormRemoteCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormRemoteSwitch.js.map +1 -1
- package/dist/domains/form/components/AFormRemoteSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormSwitch.js.map +1 -1
- package/dist/domains/form/components/AFormSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormTextField.js.map +1 -1
- package/dist/domains/form/components/AFormTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormTextarea.js.map +1 -1
- package/dist/domains/form/components/AFormTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.js.map +1 -1
- package/dist/domains/form/components/AFormValueObjectOptionsSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/form/components/ASystemEntityScope.js.map +1 -1
- package/dist/domains/job/components/AJobBaseCreateForm.js.map +1 -1
- package/dist/domains/job/components/AJobBaseCreateForm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/job/components/AJobDetailCommon.js.map +1 -1
- package/dist/domains/job/components/AJobPriorityChip.js.map +1 -1
- package/dist/domains/job/components/AJobStatusChip.js.map +1 -1
- package/dist/domains/listEditor/components/AListEditor.js.map +1 -1
- package/dist/domains/listEditor/components/AListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/ANestedSortableListEditor.js.map +1 -1
- package/dist/domains/listEditor/components/ANestedSortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/ASortableListEditor.js.map +1 -1
- package/dist/domains/listEditor/components/ASortableListEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeChangeParentDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeDeleteDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeDragHandle.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeEmptyState.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeMoveToPositionDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeNestedRow.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeNestedRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeStatus.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeStatus.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.js.map +1 -1
- package/dist/domains/listEditor/components/internal/LeUnsavedLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/log/components/ALogDatatable.js.map +1 -1
- package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/log/components/ALogDetail.js.map +1 -1
- package/dist/domains/log/components/ALogDetailView.js.map +1 -1
- package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/log/components/ALogFilter.js.map +1 -1
- package/dist/domains/log/components/ALogLevelChip.js.map +1 -1
- package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/log/components/ALogListView.js.map +1 -1
- package/dist/domains/permission/components/APermissionEditor.js.map +1 -1
- package/dist/domains/permission/components/APermissionEditor.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/permission/components/APermissionGrantEditor.js.map +1 -1
- package/dist/domains/permission/components/APermissionValueChip.js.map +1 -1
- package/dist/domains/permission/components/APermissionValueChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupDatatable.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupDetail.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupFilter.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupManage.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupManage.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/permission/group/components/APermissionGroupRemoteAutocomplete.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFilterRemoteAutocompleteWithMinimal.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.js.map +1 -1
- package/dist/domains/remoteAutocomplete/components/AFormRemoteAutocompleteWithCached.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.js.map +1 -1
- package/dist/domains/subjectSelect/components/AFilterWrapperSubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/subjectSelect/components/ASubjectSelect.js.map +1 -1
- package/dist/domains/subjectSelect/components/ASubjectSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/appShell/components/AActionbar.js.map +1 -1
- package/dist/domains/system/appShell/components/AActionbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/appShell/components/AActionbarTarget.js.map +1 -1
- package/dist/domains/system/appShell/components/ALayoutLoader.js.map +1 -1
- package/dist/domains/system/appShell/components/ALayoutSwitch.js.map +1 -1
- package/dist/domains/system/appShell/components/ALayoutSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/components/AAdminSwitcher.js.map +1 -1
- package/dist/domains/system/components/AAdminSwitcher.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/components/AAlerts.js.map +1 -1
- package/dist/domains/system/components/ALanguageSelect.js.map +1 -1
- package/dist/domains/system/components/AThemeSelect.js.map +1 -1
- package/dist/domains/system/components/AThemeSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/flags/components/FlagCountry.js.map +1 -1
- package/dist/domains/system/flags/components/FlagEn.js.map +1 -1
- package/dist/domains/system/flags/components/FlagSk.js.map +1 -1
- package/dist/domains/system/systemBar/components/ASystemBar.js.map +1 -1
- package/dist/domains/system/systemBar/components/ASystemBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.js.map +1 -1
- package/dist/domains/system/systemBar/components/ASystemBarNewVersion.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionCloseButtonHistory.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionCreateButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionEditButton.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionSaveAndCloseButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.js.map +1 -1
- package/dist/domains/ui/buttons/action/components/AActionSaveButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/components/ABtnSplit.js.map +1 -1
- package/dist/domains/ui/buttons/components/ABtnSplit.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableCopyIdButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableDetailButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableEditButton.js.map +1 -1
- package/dist/domains/ui/buttons/table/components/ATableEditButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/AAnzuUserAvatar.js.map +1 -1
- package/dist/domains/ui/components/AAnzuUserAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/AAvatarColorPicker.js.map +1 -1
- package/dist/domains/ui/components/AAvatarColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/ABooleanSelect.js.map +1 -1
- package/dist/domains/ui/components/ABooleanValue.js.map +1 -1
- package/dist/domains/ui/components/ACard.js.map +1 -1
- package/dist/domains/ui/components/ACardLoader.js.map +1 -1
- package/dist/domains/ui/components/AChipNoLink.js.map +1 -1
- package/dist/domains/ui/components/ACopyText.js.map +1 -1
- package/dist/domains/ui/components/ACopyText.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/ACreateDialog.js.map +1 -1
- package/dist/domains/ui/components/ACreateDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/ACurrentUserDropdown.js.map +1 -1
- package/dist/domains/ui/components/ACurrentUserDropdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/ADialogToolbar.js.map +1 -1
- package/dist/domains/ui/components/AIconGroup.js.map +1 -1
- package/dist/domains/ui/components/AProgress.js.map +1 -1
- package/dist/domains/ui/components/ARow.js.map +1 -1
- package/dist/domains/ui/components/ARow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/ATimeTrackingFields.js.map +1 -1
- package/dist/domains/ui/components/ATimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.js.map +1 -1
- package/dist/domains/ui/components/AUserAndTimeTrackingFields.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/datetime/components/ADatetime.js.map +1 -1
- package/dist/domains/ui/datetime/components/ADatetimePicker.js.map +1 -1
- package/dist/domains/ui/datetime/components/ADatetimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/datetime/components/TimePicker.js.map +1 -1
- package/dist/domains/ui/file/components/AFileDropzone.js.map +1 -1
- package/dist/domains/ui/file/components/AFileInput.js.map +1 -1
- package/dist/domains/ui/file/components/AFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/file/components/AFileInputDialog.js.map +1 -1
- package/dist/domains/ui/file/components/AFileInputDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/view/components/AGenericView.js.map +1 -1
- package/dist/domains/ui/view/components/AGenericView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/view/components/ALoginView.js.map +1 -1
- package/dist/domains/ui/view/components/ALoginView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/ui/view/components/ALogoutView.js.map +1 -1
- package/dist/domains/ui/view/components/ANotFoundView.js.map +1 -1
- package/dist/domains/ui/view/components/AUnauthorizedView.js.map +1 -1
- package/dist/domains/ui/view/components/AUnauthorizedView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/domains/unsavedGuard/components/AUnsavedConfirmDialog.js.map +1 -1
- package/dist/locales/cs/common/alert.js.map +1 -1
- package/dist/locales/cs/common/anzuUser.js.map +1 -1
- package/dist/locales/cs/common/assetSelect.js.map +1 -1
- package/dist/locales/cs/common/button.js.map +1 -1
- package/dist/locales/cs/common/collab.js.map +1 -1
- package/dist/locales/cs/common/confirmDialog.js.map +1 -1
- package/dist/locales/cs/common/customForm.js.map +1 -1
- package/dist/locales/cs/common/customFormElement.js.map +1 -1
- package/dist/locales/cs/common/damImage.js.map +1 -1
- package/dist/locales/cs/common/dayOfWeek.js.map +1 -1
- package/dist/locales/cs/common/filter.js.map +1 -1
- package/dist/locales/cs/common/job.js.map +1 -1
- package/dist/locales/cs/common/linkDto.js.map +1 -1
- package/dist/locales/cs/common/listItemDto.js.map +1 -1
- package/dist/locales/cs/common/log.js.map +1 -1
- package/dist/locales/cs/common/model.js.map +1 -1
- package/dist/locales/cs/common/permission.js.map +1 -1
- package/dist/locales/cs/common/permissionEditor.js.map +1 -1
- package/dist/locales/cs/common/permissionGroup.js.map +1 -1
- package/dist/locales/cs/common/routeSettings.js.map +1 -1
- package/dist/locales/cs/common/sortable.js.map +1 -1
- package/dist/locales/cs/common/subjectSelect.js.map +1 -1
- package/dist/locales/cs/common/system.js.map +1 -1
- package/dist/locales/cs/common/time.js.map +1 -1
- package/dist/locales/cs/common/userSystem.js.map +1 -1
- package/dist/locales/cs/error/apiDependencyExists.js.map +1 -1
- package/dist/locales/cs/error/apiForbiddenOperation.js.map +1 -1
- package/dist/locales/cs/error/apiTimedOut.js.map +1 -1
- package/dist/locales/cs/error/apiValidation.js.map +1 -1
- package/dist/locales/cs/error/jsValidation.js.map +1 -1
- package/dist/locales/cs/vuetify.js.map +1 -1
- package/dist/locales/en/common/alert.js.map +1 -1
- package/dist/locales/en/common/anzuUser.js.map +1 -1
- package/dist/locales/en/common/assetSelect.js.map +1 -1
- package/dist/locales/en/common/button.js.map +1 -1
- package/dist/locales/en/common/collab.js.map +1 -1
- package/dist/locales/en/common/confirmDialog.js.map +1 -1
- package/dist/locales/en/common/customForm.js.map +1 -1
- package/dist/locales/en/common/customFormElement.js.map +1 -1
- package/dist/locales/en/common/damImage.js.map +1 -1
- package/dist/locales/en/common/dayOfWeek.js.map +1 -1
- package/dist/locales/en/common/filter.js.map +1 -1
- package/dist/locales/en/common/job.js.map +1 -1
- package/dist/locales/en/common/linkDto.js.map +1 -1
- package/dist/locales/en/common/listItemDto.js.map +1 -1
- package/dist/locales/en/common/log.js.map +1 -1
- package/dist/locales/en/common/model.js.map +1 -1
- package/dist/locales/en/common/permission.js.map +1 -1
- package/dist/locales/en/common/permissionEditor.js.map +1 -1
- package/dist/locales/en/common/permissionGroup.js.map +1 -1
- package/dist/locales/en/common/routeSettings.js.map +1 -1
- package/dist/locales/en/common/sortable.js.map +1 -1
- package/dist/locales/en/common/subjectSelect.js.map +1 -1
- package/dist/locales/en/common/system.js.map +1 -1
- package/dist/locales/en/common/time.js.map +1 -1
- package/dist/locales/en/common/userSystem.js.map +1 -1
- package/dist/locales/en/error/apiDependencyExists.js.map +1 -1
- package/dist/locales/en/error/apiForbiddenOperation.js.map +1 -1
- package/dist/locales/en/error/apiTimedOut.js.map +1 -1
- package/dist/locales/en/error/apiValidation.js.map +1 -1
- package/dist/locales/en/error/jsValidation.js.map +1 -1
- package/dist/locales/en/vuetify.js.map +1 -1
- package/dist/locales/sk/common/alert.js.map +1 -1
- package/dist/locales/sk/common/anzuUser.js.map +1 -1
- package/dist/locales/sk/common/assetSelect.js.map +1 -1
- package/dist/locales/sk/common/button.js.map +1 -1
- package/dist/locales/sk/common/collab.js.map +1 -1
- package/dist/locales/sk/common/confirmDialog.js.map +1 -1
- package/dist/locales/sk/common/customForm.js.map +1 -1
- package/dist/locales/sk/common/customFormElement.js.map +1 -1
- package/dist/locales/sk/common/damImage.js.map +1 -1
- package/dist/locales/sk/common/dayOfWeek.js.map +1 -1
- package/dist/locales/sk/common/filter.js.map +1 -1
- package/dist/locales/sk/common/job.js.map +1 -1
- package/dist/locales/sk/common/linkDto.js.map +1 -1
- package/dist/locales/sk/common/listItemDto.js.map +1 -1
- package/dist/locales/sk/common/log.js.map +1 -1
- package/dist/locales/sk/common/model.js.map +1 -1
- package/dist/locales/sk/common/permission.js.map +1 -1
- package/dist/locales/sk/common/permissionEditor.js.map +1 -1
- package/dist/locales/sk/common/permissionGroup.js.map +1 -1
- package/dist/locales/sk/common/routeSettings.js.map +1 -1
- package/dist/locales/sk/common/sortable.js.map +1 -1
- package/dist/locales/sk/common/subjectSelect.js.map +1 -1
- package/dist/locales/sk/common/system.js.map +1 -1
- package/dist/locales/sk/common/time.js.map +1 -1
- package/dist/locales/sk/common/userSystem.js.map +1 -1
- package/dist/locales/sk/error/apiDependencyExists.js.map +1 -1
- package/dist/locales/sk/error/apiForbiddenOperation.js.map +1 -1
- package/dist/locales/sk/error/apiTimedOut.js.map +1 -1
- package/dist/locales/sk/error/apiValidation.js.map +1 -1
- package/dist/locales/sk/error/jsValidation.js.map +1 -1
- package/dist/locales/sk/vuetify.js.map +1 -1
- package/package.json +15 -15
- package/src/e2e/env.d.mts +46 -0
- package/src/e2e/env.mjs +78 -0
- package/src/e2e/index.d.mts +3 -0
- package/src/e2e/index.mjs +2 -0
- package/src/e2e/routeWalk.mjs +2 -1
- package/src/e2e/routeWalkConfig.d.mts +16 -0
- package/src/e2e/routeWalkConfig.mjs +52 -0
- package/src/e2e/types.d.mts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserDatatable.js","names":["_sfc_main","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","AAnzuUserDatatable_default"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n * A bare key takes its header from `common.anzuUser.model.*`, which has\n * no system keys. So a system column passes its title already translated.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Optional impersonation. Left unset, nothing is drawn.\n * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and\n * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n * Not part of the shared list because the same filter is a different query per system:\n * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.\n * A plain field is drawn by the generic renderer. A field that\n * needs a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n * Drawn here rather than left to a slot, so the column is not left empty in every app.\n * The cache is keyed per system because the same id is a different group in each backend.\n * An app can still override the chip through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the\n// filter. That is the name `AFilterWrapper` renders a field's widget under.\n// The prefix keeps field slots apart from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"AAnzuUserDatatable.js","names":["AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","AAnzuUserDatatable_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","AAnzuUserFilter","_unref","_isRef","_createSlots","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_component_VDataTableServer","ABooleanValue","_Fragment","_createBlock","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","_createCommentVNode","ATableCopyIdButton","_component_VBtn","_withModifiers","ADatatablePagination","ABooleanValue_default","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","AAnzuUserFilter_default","_hoisted_1","_hoisted_2","FILTER_SLOT_PREFIX","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","PERMISSION_GROUP_ENDPOINT","__expose","__emit","props","__props","emit","useI18n","useAnzuUserListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","useAnzuUserActions","usePermissionConfigActions","useCachedPermissionGroups","useFilterHelpers","anzuUserFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","column","datatableHiddenColumns","ANZU_USER_ENTITY","getList","useDebounceFn","fetchAnzuUserList","anzuUserList","users","addToCachedPermissionGroups","user","fetchCachedPermissionGroups","systemColumnKeys","computed","slots","useSlots","filterSlotNames","name","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelAnzuUserList","openBlock","createElementBlock","createVNode","unref","columnsHidden","_cache","isRef","$event","createSlots","renderList","withCtx","renderSlot","_ctx","normalizeProps","guardReactiveProps","slotProps","createElementVNode","VSpacer","columnsAll","VDataTableServer","columnsVisible","loadingAnzuUserList","Fragment","createBlock","VChip","role","createTextVNode","toDisplayString","translatePermission","permissionGroupId","getCachedPermissionGroup","createCommentVNode","VBtn","t","withModifiers"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n * A bare key takes its header from `common.anzuUser.model.*`, which has\n * no system keys. So a system column passes its title already translated.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Optional impersonation. Left unset, nothing is drawn.\n * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and\n * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n * Not part of the shared list because the same filter is a different query per system:\n * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.\n * A plain field is drawn by the generic renderer. A field that\n * needs a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n * Drawn here rather than left to a slot, so the column is not left empty in every app.\n * The cache is keyed per system because the same id is a different group in each backend.\n * An app can still override the chip through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the\n// filter. That is the name `AFilterWrapper` renders a field's widget under.\n// The prefix keeps field slots apart from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AAnzuUserDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","AAnzuUserFilter","_unref","_isRef","_renderList","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_component_VDataTableServer","ABooleanValue","_Fragment","_createBlock","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","ATableCopyIdButton","_component_VBtn","_withModifiers","ADatatablePagination","ABooleanValue_default","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","AAnzuUserFilter_default","_hoisted_1","_hoisted_2","FILTER_SLOT_PREFIX","AAnzuUserDatatable_vue_vue_type_script_setup_true_lang_default","PERMISSION_GROUP_ENDPOINT","__expose","__emit","props","__props","emit","useI18n","useAnzuUserListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","useAnzuUserActions","usePermissionConfigActions","useCachedPermissionGroups","useFilterHelpers","anzuUserFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","column","datatableHiddenColumns","ANZU_USER_ENTITY","getList","useDebounceFn","fetchAnzuUserList","anzuUserList","users","addToCachedPermissionGroups","user","fetchCachedPermissionGroups","systemColumnKeys","computed","slots","useSlots","filterSlotNames","name","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelAnzuUserList","openBlock","createElementBlock","createVNode","unref","columnsHidden","_cache","isRef","$event","createSlots","renderList","withCtx","renderSlot","_ctx","normalizeProps","guardReactiveProps","slotProps","createElementVNode","VSpacer","columnsAll","VDataTableServer","columnsVisible","loadingAnzuUserList","Fragment","createBlock","VChip","role","createTextVNode","toDisplayString","translatePermission","permissionGroupId","getCachedPermissionGroup","createCommentVNode","VBtn","t","withModifiers"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, provide, useSlots, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport type { AxiosInstance } from 'axios'\nimport { useDebounceFn } from '@vueuse/core'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport ATableCopyIdButton from '@/domains/ui/buttons/table/components/ATableCopyIdButton.vue'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatableOrdering from '@/domains/filters/datatable/components/ADatatableOrdering.vue'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport {\n useFilterHelpers,\n type FilterStoreIdentifier,\n type MakeFilterOption,\n} from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport AAnzuUserFilter from '@/domains/anzuUser/components/AAnzuUserFilter.vue'\nimport { useAnzuUserActions } from '@/domains/anzuUser/composables/anzuUserActions'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport { anzuUserFilterStorageKey, useAnzuUserListFilter } from '@/domains/anzuUser/filter/anzuUserFilter'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { useCachedPermissionGroups } from '@/domains/permission/group/composables/cachedPermissionGroups'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\n\ntype DatatableItem = AnzuUser\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n detailRoute: (user: AnzuUser) => RouteLocationRaw\n editRoute: (user: AnzuUser) => RouteLocationRaw\n /** Already-evaluated ACL of the owning system. */\n canUpdate?: boolean\n /** The permission-group endpoint, which is not the user one. */\n permissionGroupEndPoint?: string\n /**\n * Extra columns the app draws through `#systemColumns`, appended after the shared ones.\n * A bare key takes its header from `common.anzuUser.model.*`, which has\n * no system keys. So a system column passes its title already translated.\n */\n systemColumns?: Array<string | { key: string; title: string }>\n /**\n * Optional impersonation. Left unset, nothing is drawn.\n * A callback rather than a path, because the mechanisms differ: cms posts to `/adm/users/{id}/impersonate` and\n * gets a JWT, blog opens the public site with `window.open`. Only the cms one reaches this shared component.\n */\n impersonate?: ((user: AnzuUser) => void) | undefined\n canImpersonate?: boolean\n /**\n * Filter fields this system adds to the shared three.\n * Not part of the shared list because the same filter is a different query per system:\n * cms uses `memberOf`, dam uses `custom`, and `allowedSites` exists only in cms.\n * A plain field is drawn by the generic renderer. A field that\n * needs a remote autocomplete comes in through `#filter.<name>`.\n */\n filterFields?: readonly MakeFilterOption[]\n /**\n * Saved filters are stored per user, so both props are needed for the button to appear. Only cms and dam use them.\n */\n filterClient?: (() => AxiosInstance) | undefined\n filterUserId?: IntegerIdNullable | undefined\n /** Where the filter files its saved bookmarks. */\n filterStore?: FilterStoreIdentifier | undefined\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n canUpdate: false,\n systemColumns: () => [],\n impersonate: undefined,\n canImpersonate: false,\n filterFields: () => [],\n filterClient: undefined,\n filterUserId: undefined,\n filterStore: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', user: AnzuUser): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = useAnzuUserListFilter(props.system, props.filterFields)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst { fetchAnzuUserList, cancelAnzuUserList, anzuUserList, loadingAnzuUserList, datatableHiddenColumns } =\n useAnzuUserActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n\n// No `entity` here on purpose: this one reads the permission config, which is its own resource.\n// `props.entity` names the user.\nconst { translatePermission } = usePermissionConfigActions({\n client: props.client,\n system: props.system,\n})\n\n/**\n * Group titles for the column, resolved against this system's own cache.\n * Drawn here rather than left to a slot, so the column is not left empty in every app.\n * The cache is keyed per system because the same id is a different group in each backend.\n * An app can still override the chip through the slot.\n */\nconst { addToCachedPermissionGroups, fetchCachedPermissionGroups, getCachedPermissionGroup } =\n useCachedPermissionGroups({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n })\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: anzuUserFilterStorageKey(props.system),\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'email' },\n { key: 'enabled' },\n { key: 'roles' },\n { key: 'permissionGroups' },\n { key: 'permissions' },\n ...props.systemColumns.map((column) => (typeof column === 'string' ? { key: column } : column)),\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n ANZU_USER_ENTITY,\n { storeColumnsLocalStorage: `table_common_anzuUser_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchAnzuUserList(pagination, filterData, filterConfig)\n})\n\nwatch(anzuUserList, (users) => {\n users.forEach((user) => addToCachedPermissionGroups(user.permissionGroups))\n void fetchCachedPermissionGroups()\n})\n\nconst systemColumnKeys = computed(() =>\n props.systemColumns.map((column) => (typeof column === 'string' ? column : column.key))\n)\n\n// `#filter.allowedSites` here becomes `#item.allowedSites` inside the\n// filter. That is the name `AFilterWrapper` renders a field's widget under.\n// The prefix keeps field slots apart from this table's own `item.*` columns.\nconst slots = useSlots()\nconst FILTER_SLOT_PREFIX = 'filter.'\nconst filterSlotNames = computed(() =>\n Object.keys(slots)\n .filter((name) => name.startsWith(FILTER_SLOT_PREFIX))\n .map((name) => name.slice(FILTER_SLOT_PREFIX.length))\n)\n\nconst submitFilterAction = () => submitFilter(pagination, getList)\nconst resetFilterAction = () => resetFilter(pagination, getList)\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n loadStoredFilters(pagination, getList)\n})\n\nonBeforeUnmount(() => {\n getList.cancel()\n cancelAnzuUserList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <AAnzuUserFilter\n v-model:datatable-hidden-columns=\"columnsHidden\"\n :client=\"filterClient\"\n :user-id=\"filterUserId\"\n :store=\"filterStore\"\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n >\n <template\n v-for=\"name in filterSlotNames\"\n :key=\"name\"\n #[`item.${name}`]=\"slotProps\"\n >\n <slot\n :name=\"`${FILTER_SLOT_PREFIX}${name}`\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AAnzuUserFilter>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\n <ADatatableOrdering\n variant=\"id\"\n @sort-by-change=\"submitFilterAction\"\n />\n <ADatatableConfigButton\n v-model:columns-hidden=\"columnsHidden\"\n :columns-all=\"columnsAll\"\n />\n </div>\n <VDataTableServer\n class=\"a-datatable\"\n :headers=\"columnsVisible\"\n :items=\"anzuUserList\"\n :items-length=\"anzuUserList.length\"\n :loading=\"loadingAnzuUserList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.enabled=\"{ item }: { item: DatatableItem }\">\n <ABooleanValue\n chip\n :value=\"item.enabled\"\n />\n </template>\n <template #item.roles=\"{ item }: { item: DatatableItem }\">\n <VChip\n v-for=\"role in item.roles\"\n :key=\"role\"\n class=\"mr-1 mb-1\"\n >\n {{ translatePermission('roles', role) }}\n </VChip>\n </template>\n <template #item.permissionGroups=\"{ item }: { item: DatatableItem }\">\n <slot\n name=\"permissionGroups\"\n :ids=\"item.permissionGroups\"\n >\n <VChip\n v-for=\"permissionGroupId in item.permissionGroups\"\n :key=\"permissionGroupId\"\n class=\"mr-1 mb-1\"\n size=\"small\"\n label\n >\n {{ getCachedPermissionGroup(permissionGroupId)?.title || permissionGroupId }}\n </VChip>\n </slot>\n </template>\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template\n v-for=\"column in systemColumnKeys\"\n :key=\"column\"\n #[`item.${column}`]=\"{ item }: { item: DatatableItem }\"\n >\n <slot\n name=\"systemColumns\"\n :column=\"column\"\n :user=\"item\"\n />\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <template v-if=\"$slots.createdBy\">\n <br />\n <slot\n :id=\"item.createdBy\"\n name=\"createdBy\"\n />\n </template>\n </template>\n <template #item.modifiedAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.modifiedAt\" />\n <template v-if=\"$slots.modifiedBy\">\n <br />\n <slot\n :id=\"item.modifiedBy\"\n name=\"modifiedBy\"\n />\n </template>\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div\n v-if=\"item.id\"\n class=\"d-flex justify-end\"\n >\n <ATableCopyIdButton :id=\"item.id\" />\n <VBtn\n :to=\"detailRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-information-outline\"\n :aria-label=\"t('common.button.detail')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <VBtn\n v-if=\"canUpdate\"\n :to=\"editRoute(item)\"\n class=\"ml-1\"\n icon=\"mdi-pencil\"\n :aria-label=\"t('common.button.edit')\"\n size=\"x-small\"\n variant=\"text\"\n />\n <!-- A disabled account cannot sign in, so it cannot be signed in as either. -->\n <VBtn\n v-if=\"impersonate && canImpersonate\"\n :disabled=\"!item.enabled\"\n class=\"ml-1\"\n icon=\"mdi-account-switch\"\n :aria-label=\"t('common.anzuUser.table.impersonate')\"\n size=\"x-small\"\n variant=\"text\"\n data-cy=\"user-impersonate\"\n @click.stop=\"impersonate(item)\"\n />\n <slot\n name=\"rowActions\"\n :user=\"item\"\n />\n </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserFilter.js","names":["
|
|
1
|
+
{"version":3,"file":"AAnzuUserFilter.js","names":["AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","AAnzuUserFilter_default"],"sources":[],"mappings":""}
|
package/dist/domains/anzuUser/components/AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","AFilterWrapper","
|
|
1
|
+
{"version":3,"file":"AAnzuUserFilter.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","AFilterWrapper","_withCtx","_createVNode","AFilterString","_renderSlot","_normalizeProps","_guardReactiveProps","AFilterString_default","AFilterWrapper_default","AAnzuUserFilter_vue_vue_type_script_setup_true_lang_default","\"datatableHiddenColumns\"","\"datatableHiddenColumnsModifiers\"","__emit","emit","datatableHiddenColumns","useModel","__props","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","openBlock","createBlock","_cache","$event","createSlots","withCtx","createVNode","renderList","_ctx","renderSlot","name","normalizeProps","guardReactiveProps","slotProps"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserFilter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject } from 'vue'\nimport type { AxiosInstance } from 'axios'\nimport AFilterString from '@/domains/filters/components/AFilterString.vue'\nimport AFilterWrapper from '@/domains/filters/components/AFilterWrapper.vue'\nimport type { FilterStoreIdentifier } from '@/domains/filters/composables/filterFactory'\nimport { FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { isUndefined } from '@/shared/utils/common'\n\nwithDefaults(\n defineProps<{\n /**\n * Both are needed to switch on the bookmark UI in `AFilterWrapper`, because\n * bookmarks are stored per user. Left unset, the filter has no bookmarks.\n */\n client?: (() => AxiosInstance) | undefined\n userId?: IntegerIdNullable | undefined\n /**\n * What the saved bookmarks are filed under on the server. Defaults to `common` / `anzuUser`.\n * cms overrides it with the pair its old list used, so existing\n * bookmarks keep showing up. A new key would orphan them.\n */\n store?: FilterStoreIdentifier | undefined\n }>(),\n {\n client: undefined,\n userId: undefined,\n store: undefined,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'submit'): void\n (e: 'reset'): void\n}>()\n\n/** The column set a bookmark restores along with the filter values. */\nconst datatableHiddenColumns = defineModel<string[] | undefined>('datatableHiddenColumns', {\n default: undefined,\n required: false,\n})\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[AAnzuUserFilter] Incorrect provide/inject config.')\n}\n</script>\n\n<template>\n <AFilterWrapper\n v-model:datatable-hidden-columns=\"datatableHiddenColumns\"\n :client=\"client\"\n :user-id=\"userId\"\n :store=\"store ?? true\"\n @submit=\"emit('submit')\"\n @reset=\"emit('reset')\"\n @bookmark-load-after=\"emit('submit')\"\n >\n <template #search>\n <AFilterString name=\"email\" />\n </template>\n <!--\n Pass every other slot through, so a system field can bring its own widget.\n The generic renderer draws a plain input. A permission group or\n site needs a remote autocomplete that only the app can build.\n -->\n <template\n v-for=\"(_, name) in $slots\"\n :key=\"name\"\n #[name]=\"slotProps\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotProps ?? {}\"\n />\n </template>\n </AFilterWrapper>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAgCA,IAAMiB,IAAOD,GAMPE,IAAyBjB,EAAiCmB,GAAC,wBAGhE,GAEKC,IAAeC,EAAOC,CAAe,GACrCC,IAAaF,EAAOG,CAAa;EACvC,IAAIC,EAAYL,CAAY,KAAKK,EAAYF,CAAU,GACrD,MAAU,MAAM,oDAAoD;E,kBAKpEtB,EAAA,GAAAC,EA2BiBC,GAAA;GA1BP,4BAA0Bc,EAAA;GAAA,mCAAA,AAAAW,EAAA,QAAA,MAAA,EAAsB,QAAAC;GACvD,QAAQV,EAAA;GACR,WAASA,EAAA;GACT,OAAOA,EAAA,SAAK;GACZ,UAAM,AAAAS,EAAA,QAAA,MAAEZ,EAAI,QAAA;GACZ,SAAK,AAAAY,EAAA,QAAA,MAAEZ,EAAI,OAAA;GACX,qBAAmB,AAAAY,EAAA,QAAA,MAAEZ,EAAI,QAAA;;GAEf,QAAMZ,QACe,CAA9BC,EAA8BC,GAAA,EAAf,MAAK,QAAO,CAAA,C;;E,IAQPP,EAAAA,EAAAA,SAAZ,GAAG,O;GAEV;GAED,IAAAK,GAFS,MAAS,CAElBG,EAGE2B,EAAA,QAFOE,GAAI5B,EAAAC,EACH8B,KAAS,CAAA,CAAA,CAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserForm.js","names":["
|
|
1
|
+
{"version":3,"file":"AAnzuUserForm.js","names":["AAnzuUserForm_vue_vue_type_script_setup_true_lang_default","AAnzuUserForm_default"],"sources":[],"mappings":""}
|
package/dist/domains/anzuUser/components/AAnzuUserForm.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserForm.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","ASystemEntityScope","_unref","_withCtx","_createVNode","_component_VRow","_component_VCol","AUserEnabledSwitch","AUserMetadataForm","_renderSlot","
|
|
1
|
+
{"version":3,"file":"AAnzuUserForm.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createBlock","ASystemEntityScope","_unref","_withCtx","_createVNode","_component_VRow","_component_VCol","AUserEnabledSwitch","AUserMetadataForm","_renderSlot","AAnzuUserRoleAutocomplete","APermissionGroupRemoteAutocomplete","APermissionEditor","ASystemEntityScope_default","AUserEnabledSwitch_default","AUserMetadataForm_default","AAnzuUserRoleAutocomplete_default","APermissionEditor_default","APermissionGroupRemoteAutocomplete_default","AAnzuUserForm_vue_vue_type_script_setup_true_lang_default","PERMISSION_GROUP_ENDPOINT","\"user\"","\"userModifiers\"","props","__props","user","useModel","useI18n","usePermissionActions","resolvedPermissions","computed","resolvePermissions","openBlock","createBlock","unref","ANZU_USER_ENTITY","withCtx","createVNode","VRow","VCol","_cache","$event","_ctx","renderSlot","createCommentVNode","t"],"sources":["../../../../src/domains/anzuUser/components/AAnzuUserForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport AUserEnabledSwitch from '@/domains/anzuUser/components/AUserEnabledSwitch.vue'\nimport AUserMetadataForm from '@/domains/anzuUser/components/AUserMetadataForm.vue'\nimport AAnzuUserRoleAutocomplete from '@/domains/anzuUser/components/AAnzuUserRoleAutocomplete.vue'\nimport { ANZU_USER_ENTITY } from '@/domains/anzuUser/api/anzuUserApi'\nimport APermissionEditor from '@/domains/permission/components/APermissionEditor.vue'\nimport { usePermissionActions } from '@/domains/permission/composables/permissionActions'\nimport APermissionGroupRemoteAutocomplete from '@/domains/permission/group/components/APermissionGroupRemoteAutocomplete.vue'\nimport { PERMISSION_GROUP_ENDPOINT } from '@/domains/permission/group/api/permissionGroupApi'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n system: string\n /**\n * The permission-group endpoint, which is not the user one.\n * There is deliberately no `entity` prop. `entity` names the resource that server validation\n * errors are filed under. Passing the user's down would file group errors under user labels.\n */\n permissionGroupEndPoint?: string\n /**\n * One component for detail and edit (decision 27). Two components drift:\n * a field added to one and forgotten in the other fails silently.\n */\n readonly?: boolean\n isEdit?: boolean\n /** From the system's descriptor. */\n requiredMetadata?: boolean\n idInput?: boolean\n randomColor?: boolean\n enabledNote?: string | undefined\n metadataNote?: string | undefined\n }>(),\n {\n permissionGroupEndPoint: PERMISSION_GROUP_ENDPOINT,\n readonly: false,\n isEdit: false,\n requiredMetadata: false,\n idInput: true,\n randomColor: false,\n enabledNote: undefined,\n metadataNote: undefined,\n }\n)\n\nconst user = defineModel<AnzuUser>('user', { required: true })\n\nconst { t } = useI18n()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { resolvePermissions } = usePermissionActions({\n client: props.client,\n system: props.system,\n endPoint: props.permissionGroupEndPoint,\n})\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\n/**\n * Grants the account would have if saved now: those of the ticked groups plus the user's own.\n * Computed locally so ticking a group shows its effect without a round\n * trip. The server's `resolvedPermissions` reflects the record as loaded.\n */\nconst resolvedPermissions = computed(() => resolvePermissions(user.value))\n</script>\n\n<template>\n <ASystemEntityScope\n system=\"common\"\n :subject=\"ANZU_USER_ENTITY\"\n >\n <VRow>\n <VCol cols=\"12\">\n <AUserEnabledSwitch\n v-model=\"user.enabled\"\n :readonly=\"readonly\"\n :note=\"enabledNote\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AUserMetadataForm\n v-model:user=\"user\"\n :required=\"requiredMetadata\"\n :id-input=\"idInput\"\n :is-edit=\"isEdit\"\n :readonly=\"readonly\"\n :random-color=\"randomColor\"\n :note=\"metadataNote\"\n />\n </VCol>\n <VCol\n v-if=\"isEdit && !readonly && $slots.copyPermissions\"\n cols=\"12\"\n >\n <!-- Copying roles and grants from another account. Only cms offers it today. -->\n <slot name=\"copyPermissions\" />\n </VCol>\n <VCol\n v-if=\"$slots.systemFields\"\n cols=\"12\"\n >\n <!--\n The system's own fields: autocompletes over that backend's entities, which the library\n cannot build. They get the same `readonly`, so the app can swap autocompletes for chips.\n -->\n <slot\n name=\"systemFields\"\n :readonly=\"readonly\"\n :is-edit=\"isEdit\"\n />\n </VCol>\n <VCol cols=\"12\">\n <AAnzuUserRoleAutocomplete\n v-model=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionGroupRemoteAutocomplete\n v-model=\"user.permissionGroups\"\n :client=\"client\"\n :system=\"system\"\n :end-point=\"permissionGroupEndPoint\"\n :label=\"t('common.anzuUser.model.permissionGroups')\"\n :readonly=\"readonly\"\n multiple\n clearable\n />\n </VCol>\n <VCol\n v-if=\"$slots.actions\"\n cols=\"12\"\n >\n <slot\n name=\"actions\"\n :user=\"user\"\n />\n </VCol>\n <VCol cols=\"12\">\n <APermissionEditor\n v-model=\"user.permissions\"\n :resolved-permissions=\"resolvedPermissions\"\n :roles=\"user.roles\"\n :client=\"client\"\n :system=\"system\"\n :readonly=\"readonly\"\n />\n </VCol>\n </VRow>\n </ASystemEntityScope>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,IAAM0B,IAAQC,GAmCRC,IAAO3B,EAAqB0B,GAAC,MAA0B,GAEvD,EAAE,SAAMG,EAAQ,GAGhB,EAAE,0BAAuBC,EAAqB;GAClD,QAAQL,EAAM;GACd,QAAQA,EAAM;GACd,UAAUA,EAAM;EAClB,CAAC,GAQKM,IAAsBC,QAAeC,EAAmBN,EAAK,KAAK,CAAC;E,kBAIvE1B,EAAA,GAAAC,EAoFqBC,GAAA;GAnFnB,QAAO;GACN,SAASC,EAAAiC,CAAA;;GAEV,SAAAhC,QA+EO,CA/EPC,EA+EOC,GAAA,MAAA;IA9EL,SAAAF,QAMO;KANPC,EAMOE,GAAA,EAND,MAAK,KAAI,GAAA;MACb,SAAAH,QAIE,CAJFC,EAIEG,GAAA;OAHS,YAAAkB,EAAA,MAAK;OAAL,uBAAA,AAAAe,EAAA,QAAA,MAAA,EAAA,MAAK,UAAOC;OACpB,UAAUjB,EAAA;OACV,MAAMA,EAAA;;;;;;;;KAGXpB,EAUOE,GAAA,EAVD,MAAK,KAAI,GAAA;MACb,SAAAH,QAQE,CARFC,EAQEI,GAAA;OAPQ,MAAMiB,EAAA;OAAA,iBAAA,AAAAe,EAAA,QAAA,MAAA,EAAI,QAAAC;OACjB,UAAUjB,EAAA;OACV,YAAUA,EAAA;OACV,WAASA,EAAA;OACT,UAAUA,EAAA;OACV,gBAAcA,EAAA;OACd,MAAMA,EAAA;;;;;;;;;;;;KAIHA,EAAA,UAAM,CAAKA,EAAA,YAAY3B,EAAAA,OAAO,mBADtCE,EAAA,GAAAC,EAMOM,GAAA;;MAJL,MAAK;;MAGL,SAAAH,QAA+B,CAA/BM,EAA+BiC,EAAA,QAAA,iBAAA,C;;;KAGzB7C,EAAAA,OAAO,gBADfE,EAAA,GAAAC,EAaOM,GAAA;;MAXL,MAAK;;MAML,SAAAH,QAIE,CAJFM,EAIEiC,EAAA,QAAA,gBAAA;OAFC,UAAUlB,EAAA;OACV,QAASA,EAAA;;;;KAGdpB,EAOOE,GAAA,EAPD,MAAK,KAAI,GAAA;MACb,SAAAH,QAKE,CALFC,EAKEM,GAAA;OAJS,YAAAe,EAAA,MAAK;OAAL,uBAAA,AAAAe,EAAA,QAAA,MAAA,EAAA,MAAK,QAAKC;OAClB,QAAQjB,EAAA;OACR,QAAQA,EAAA;OACR,UAAUA,EAAA;;;;;;;;;KAGfpB,EAWOE,GAAA,EAXD,MAAK,KAAI,GAAA;MACb,SAAAH,QASE,CATFC,EASEO,GAAA;OARS,YAAAc,EAAA,MAAK;OAAL,uBAAA,AAAAe,EAAA,QAAA,MAAA,EAAA,MAAK,mBAAgBC;OAC7B,QAAQjB,EAAA;OACR,QAAQA,EAAA;OACR,aAAWA,EAAA;OACX,OAAOtB,EAAA2C,CAAA,CAAC,CAAA,wCAAA;OACR,UAAUrB,EAAA;OACX,UAAA;OACA,WAAA;;;;;;;;;;;KAII3B,EAAAA,OAAO,WADfE,EAAA,GAAAC,EAQOM,GAAA;;MANL,MAAK;;MAEL,SAAAH,QAGE,CAHFM,EAGEiC,EAAA,QAAA,WAAA,EADC,MAAMjB,EAAA,MAAI,CAAA,C;;;KAGfrB,EASOE,GAAA,EATD,MAAK,KAAI,GAAA;MACb,SAAAH,QAOE,CAPFC,EAOEQ,GAAA;OANS,YAAAa,EAAA,MAAK;OAAL,uBAAA,AAAAe,EAAA,QAAA,MAAA,EAAA,MAAK,cAAWC;OACxB,wBAAsBZ,EAAA;OACtB,OAAOJ,EAAA,MAAK;OACZ,QAAQD,EAAA;OACR,QAAQA,EAAA;OACR,UAAUA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AAnzuUserRoleAutocomplete.js","names":["
|
|
1
|
+
{"version":3,"file":"AAnzuUserRoleAutocomplete.js","names":["AAnzuUserRoleAutocomplete_vue_vue_type_script_setup_true_lang_default","AAnzuUserRoleAutocomplete_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserBulkActionDialog.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserBulkActionDialog.js","names":["AUserBulkActionDialog_vue_vue_type_script_setup_true_lang_default","AUserBulkActionDialog_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_resolveComponent","_openBlock","_createBlock","_component_VDialog","_withCtx","_createVNode","_component_VCard","ADialogToolbar","_createTextVNode","_toDisplayString","_unref","_component_VCardText","_component_VAlert","_createCommentVNode","_createElementBlock","_Fragment","_renderList","_component_VCheckbox","_createElementVNode","AUserSystemStatusChip","_component_VCardActions","_withModifiers","_component_VSpacer","ADialogToolbar_default","AUserSystemStatusChip_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","AUserBulkActionDialog_vue_vue_type_script_setup_true_lang_default","\"open\"","\"openModifiers\"","__emit","props","__props","emit","open","useModel","useI18n","store","useUserCrossSystemStore","selected","ref","showingLog","rows","computed","result","descriptor","t","descriptorMayWrite","isUndefined","isActionable","access","UserSystemAccess","BulkAction","selectableSystems","row","value","titleKey","confirmKey","currentLog","entry","failed","BulkOutcome","actionable","system","run","retryFailed","labelFor","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createBlock","VDialog","_cache","$event","withCtx","createVNode","VCard","createTextVNode","toDisplayString","unref","VCardText","createElementVNode","createElementBlock","Fragment","renderList","createCommentVNode","VAlert","VCheckbox","VCardActions","withModifiers","VSpacer"],"sources":["../../../../src/domains/anzuUser/components/AUserBulkActionDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AUserSystemStatusChip from '@/domains/anzuUser/components/AUserSystemStatusChip.vue'\nimport {\n BulkAction,\n BulkOutcome,\n useUserCrossSystemStore,\n type BulkActionType,\n} from '@/domains/anzuUser/store/userCrossSystemStore'\nimport { type AnyUserSystemDescriptor, descriptorMayWrite } from '@/domains/anzuUser/composables/userSystemDescriptor'\nimport { isActionable, UserSystemAccess } from '@/domains/anzuUser/utils/userSystemState'\nimport { isUndefined } from '@/shared/utils/common'\n\nconst props = defineProps<{\n action: BulkActionType\n descriptors: AnyUserSystemDescriptor[]\n}>()\n\nconst emit = defineEmits<{\n (e: 'run', systems: string[]): void\n}>()\n\nconst open = defineModel<boolean>('open', { required: true })\n\nconst { t } = useI18n()\nconst store = useUserCrossSystemStore()\n\nconst selected = ref<string[]>([])\nconst showingLog = ref(false)\n\ninterface Row {\n descriptor: AnyUserSystemDescriptor\n selectable: boolean\n reason: string | null\n}\n\n/**\n * Which systems can be ticked is decided by the probe, not by ACL.\n * No current user is loaded for the other backends, so `<Acl>` would return false everywhere.\n * Not selectable: systems the probe reports as 403, 404 or switched off, and systems that did not answer.\n * Read-but-not-write cannot be seen here and ends up as a 403 in the log.\n */\nconst rows = computed<Row[]>(() =>\n props.descriptors.map((descriptor) => {\n const result = store.results.get(descriptor.system)\n if (!descriptor.isEnabled()) {\n return { descriptor, selectable: false, reason: t('common.userSystem.state.configDisabled') }\n }\n if (!descriptorMayWrite(descriptor, 'update')) {\n return { descriptor, selectable: false, reason: t('common.userSystem.state.noWriteRight') }\n }\n if (isUndefined(result) || !isActionable(result.axes)) {\n const access = result?.axes.access\n const reason =\n access === UserSystemAccess.Forbidden\n ? t('common.userSystem.state.forbidden')\n : access === UserSystemAccess.Ok\n ? t('common.userSystem.state.absent')\n : t('common.userSystem.state.unavailable')\n return { descriptor, selectable: false, reason }\n }\n // Already in the target state. A no-op PUT would still run `updateRelations()` in cms over many fields, so skip it.\n if (props.action === BulkAction.Enable && result.axes.enabled === true) {\n return { descriptor, selectable: false, reason: t('common.userSystem.bulk.alreadyInState') }\n }\n if (props.action === BulkAction.Disable && result.axes.enabled === false) {\n return { descriptor, selectable: false, reason: t('common.userSystem.bulk.alreadyInState') }\n }\n return { descriptor, selectable: true, reason: null }\n })\n)\n\nconst selectableSystems = computed(() => rows.value.filter((row) => row.selectable).map((row) => row.descriptor.system))\n\n// Tick everything actionable, blog and forum included. A departing employee is almost always switched off there too.\n// Their row note stays as information, not as a reason to untick.\nwatch(\n open,\n (value) => {\n if (!value) return\n showingLog.value = false\n selected.value = [...selectableSystems.value]\n },\n { immediate: true }\n)\n\nconst titleKey = computed(() => `common.userSystem.bulk.${props.action}.title`)\nconst confirmKey = computed(() => `common.userSystem.bulk.${props.action}.confirm`)\n\n/**\n * Only this run's entries. The log outlives a run, so without the filter the dialog would offer\n * to retry other actions' failures, such as a metadata repair, against the account on screen.\n */\nconst currentLog = computed(() =>\n store.bulkLog.filter((entry) => entry.action === props.action && entry.subjectId === store.resolvedId)\n)\n\nconst failed = computed(() =>\n currentLog.value.filter((entry) => entry.outcome !== BulkOutcome.Done && entry.outcome !== BulkOutcome.Pending)\n)\n\n// Re-check selectability: a right may have been granted or revoked while the dialog was open.\nconst actionable = computed(() => selected.value.filter((system) => selectableSystems.value.includes(system)))\n\nconst run = () => {\n if (actionable.value.length === 0) return\n showingLog.value = true\n emit('run', actionable.value)\n}\n\n/** Retries everything that failed, 403 included: the operator may have been granted the right meanwhile. */\nconst retryFailed = () => {\n emit(\n 'run',\n failed.value.map((entry) => entry.system)\n )\n}\n\nconst labelFor = (descriptor: AnyUserSystemDescriptor) => descriptor.label ?? descriptor.system\n</script>\n\n<template>\n <VDialog\n v-model=\"open\"\n :max-width=\"720\"\n data-cy=\"user-bulk-dialog\"\n >\n <VCard>\n <!-- Closing while the calls are still going is allowed; the run lives in the store. -->\n <ADialogToolbar @cancel=\"open = false\">\n {{ t(titleKey) }}\n </ADialogToolbar>\n <VCardText v-if=\"!showingLog\">\n <VAlert\n v-if=\"store.identityConflict\"\n type=\"error\"\n variant=\"tonal\"\n density=\"compact\"\n class=\"mb-3\"\n >\n {{ t('common.userSystem.search.identityConflict') }}\n </VAlert>\n <div\n v-for=\"row in rows\"\n :key=\"row.descriptor.system\"\n class=\"d-flex align-center ga-2 py-1\"\n >\n <VCheckbox\n v-model=\"selected\"\n :value=\"row.descriptor.system\"\n :disabled=\"!row.selectable || !!store.identityConflict\"\n :data-cy=\"`bulk-system-${row.descriptor.system}`\"\n density=\"compact\"\n hide-details\n />\n <div class=\"font-weight-medium\">{{ labelFor(row.descriptor) }}</div>\n <AUserSystemStatusChip\n v-if=\"store.results.get(row.descriptor.system)\"\n :axes=\"store.results.get(row.descriptor.system)!.axes\"\n />\n <div\n v-if=\"row.reason\"\n class=\"text-body-small text-medium-emphasis\"\n >\n {{ row.reason }}\n </div>\n <div\n v-if=\"row.descriptor.enabledNote && action !== BulkAction.Metadata\"\n class=\"text-body-small text-warning w-100\"\n >\n {{ row.descriptor.enabledNote }}\n </div>\n <div\n v-if=\"row.descriptor.metadataNote && action === BulkAction.Metadata\"\n class=\"text-body-small text-warning w-100\"\n >\n {{ row.descriptor.metadataNote }}\n </div>\n </div>\n </VCardText>\n <VCardText v-else>\n <div class=\"text-label-large mb-2\">{{ t('common.userSystem.bulk.log') }}</div>\n <!--\n `polite`, not `assertive`: nine systems finishing in sequence would flood a screen reader.\n Focus deliberately stays put when the dialog switches to this view.\n -->\n <div\n aria-live=\"polite\"\n data-cy=\"user-bulk-log\"\n >\n <div\n v-for=\"entry in currentLog\"\n :key=\"entry.system\"\n class=\"d-flex align-center ga-2 py-1\"\n >\n <div class=\"font-weight-medium\">{{ entry.system }}</div>\n <div class=\"text-body-small\">{{ t(`common.userSystem.bulk.outcome.${entry.outcome}`) }}</div>\n <div\n v-if=\"entry.detail\"\n class=\"text-body-small text-medium-emphasis\"\n >\n {{ entry.detail }}\n </div>\n </div>\n </div>\n </VCardText>\n <VCardActions>\n <ABtnTertiary @click.stop=\"open = false\">\n {{ showingLog ? t('common.userSystem.bulk.close') : t('common.button.cancel') }}\n </ABtnTertiary>\n <VSpacer />\n <ABtnTertiary\n v-if=\"showingLog && failed.length > 0 && !store.bulkRunning\"\n data-cy=\"user-bulk-retry\"\n @click.stop=\"retryFailed\"\n >\n {{ t('common.userSystem.bulk.retryFailed') }}\n </ABtnTertiary>\n <ABtnPrimary\n v-if=\"!showingLog\"\n :disabled=\"actionable.length === 0 || !!store.identityConflict\"\n data-cy=\"user-bulk-confirm\"\n @click.stop=\"run\"\n >\n {{ t(confirmKey, { count: actionable.length }, actionable.length) }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,IAAMuC,IAAQC,GAKRC,IAAOH,GAIPI,IAAO1C,EAAoBwC,GAAC,MAA0B,GAEtD,EAAE,SAAMI,EAAQ,GAChBC,IAAQC,EAAwB,GAEhCC,IAAWC,EAAc,CAAC,CAAC,GAC3BC,IAAaD,EAAI,EAAK,GActBE,IAAOC,QACXZ,EAAM,YAAY,KAAK,MAAe;GACpC,IAAMa,IAASP,EAAM,QAAQ,IAAIQ,EAAW,MAAM;GAClD,IAAI,CAACA,EAAW,UAAU,GACxB,OAAO;IAAE;IAAY,YAAY;IAAO,QAAQC,EAAE,wCAAwC;GAAE;GAE9F,IAAI,CAACC,EAAmBF,GAAY,QAAQ,GAC1C,OAAO;IAAE;IAAY,YAAY;IAAO,QAAQC,EAAE,sCAAsC;GAAE;GAE5F,IAAIE,EAAYJ,CAAM,KAAK,CAACK,EAAaL,EAAO,IAAI,GAAG;IACrD,IAAMM,IAASN,GAAQ,KAAK;IAO5B,OAAO;KAAE;KAAY,YAAY;KAAO,QALtCM,MAAWC,EAAiB,YACxBL,EAAE,mCAAmC,IACrCI,MAAWC,EAAiB,KAC1BL,EAAE,gCAAgC,IAClCA,EAAE,qCAAqC;IACA;GACjD;GAQA,OANIf,EAAM,WAAWqB,EAAW,UAAUR,EAAO,KAAK,YAAY,MAG9Db,EAAM,WAAWqB,EAAW,WAAWR,EAAO,KAAK,YAAY,KAC1D;IAAE;IAAY,YAAY;IAAO,QAAQE,EAAE,uCAAuC;GAAE,IAEtF;IAAE;IAAY,YAAY;IAAM,QAAQ;GAAK;EACtD,CAAC,CACH,GAEMO,IAAoBV,QAAeD,EAAK,MAAM,QAAQ,MAAQY,EAAI,UAAU,CAAC,CAAC,KAAK,MAAQA,EAAI,WAAW,MAAM,CAAC;EAIvH,EACEpB,IACC,MAAU;GACT,AAAKqB,MACL,EAAW,QAAQ,IACnB,EAAS,QAAQ,CAAC,GAAGF,EAAkB,KAAK;EAC9C,GACA,EAAE,WAAW,GAAK,CACpB;EAEA,IAAMG,KAAWb,QAAe,0BAA0BZ,EAAM,OAAO,OAAO,GACxE0B,KAAad,QAAe,0BAA0BZ,EAAM,OAAO,SAAS,GAM5E2B,IAAaf,QACjBN,EAAM,QAAQ,QAAQ,MAAUsB,EAAM,WAAW5B,EAAM,UAAU4B,EAAM,cAActB,EAAM,UAAU,CACvG,GAEMuB,IAASjB,QACbe,EAAW,MAAM,QAAQ,MAAUC,EAAM,YAAYE,EAAY,QAAQF,EAAM,YAAYE,EAAY,OAAO,CAChH,GAGMC,IAAanB,QAAeJ,EAAS,MAAM,QAAQ,MAAWc,EAAkB,MAAM,SAASU,CAAM,CAAC,CAAC,GAEvGC,WAAY;GAChB,AAAIF,EAAW,MAAM,WAAW,MAChC,EAAW,QAAQ,IACnB7B,EAAK,OAAO6B,EAAW,KAAK;EAC9B,GAGMG,WAAoB;GACxB,EACE,OACAL,EAAO,MAAM,KAAK,MAAUD,EAAM,MAAM,CAC1C;EACF,GAEMO,MAAY,MAAwCrB,EAAW,SAASA,EAAW;;;GAIvF,OAAAnD,EAAA,GAAAC,EA0GUC,GAAA;IAzGC,YAAAsC,EAAA;IAAA,uBAAA,AAAAuC,EAAA,QAAA,MAAA,EAAI,QAAAC;IACZ,aAAW;IACZ,WAAQ;;IAER,SAAA7E,QAoGQ,CApGRC,EAoGQC,GAAA,MAAA;KAlGN,SAAAF,QAEiB;MAFjBC,EAEiBE,GAAA,EAFA,UAAM,AAAAyE,EAAA,QAAA,MAAE,EAAA,QAAI,G;OAC3B,SAAA5E,QAAiB,CAAdI,EAAAC,EAAAC,EAAA2C,CAAA,CAAC,CAACU,GAAA,KAAQ,CAAA,GAAA,CAAA,C;;;MAEGf,EAAA,SAgDlB/C,EAAA,GAAAC,EAyBYS,GAAA,EAAA,KAAA,EAAA,GAAA;OAxBV,SAAAP,QAA8E,CAA9Ec,EAA8E,OAA9EW,GAA8EpB,EAAxCC,EAAA2C,CAAA,CAAC,CAAA,4BAAA,CAAA,GAAA,CAAA,GAKvCnC,EAkBM,OAlBNY,GAkBM,EAdJ7B,EAAA,EAAA,GAAAa,EAaMC,GAAA,MAAAC,EAZYiD,EAAA,QAAT,OADThE,EAAA,GAAAa,EAaM,OAAA;QAXH,KAAKoD,EAAM;QACZ,OAAM;;QAENhD,EAAwD,OAAxDa,GAAwDtB,EAArByD,EAAM,MAAM,GAAA,CAAA;QAC/ChD,EAA6F,OAA7Fc,GAA6FvB,EAA7DC,EAAA2C,CAAA,CAAC,CAAA,kCAAmCa,EAAM,SAAO,CAAA,GAAA,CAAA;QAEzEA,EAAM,UADdjE,EAAA,GAAAa,EAKM,OALNmB,GAKMxB,EADDyD,EAAM,MAAM,GAAA,CAAA,K;;;M,OArEvBjE,EAAA,GAAAC,EA+CYS,GAAA,EAAA,KAAA,EAAA,GAAA;OA9CV,SAAAP,QAQS,CAPDM,EAAAkC,CAAA,CAAK,CAAC,oBADd3C,EAAA,GAAAC,EAQSU,GAAA;;QANP,MAAK;QACL,SAAQ;QACR,SAAQ;QACR,OAAM;;QAEN,SAAAR,QAAoD,CAAjDI,EAAAC,EAAAC,EAAA2C,CAAA,CAAC,CAAA,2CAAA,CAAA,GAAA,CAAA,C;;O,kBAENpD,EAAA,EAAA,GAAAa,EAoCMC,GAAA,MAAAC,EAnCUiC,EAAA,QAAP,OADThD,EAAA,GAAAa,EAoCM,OAAA;QAlCH,KAAK+C,EAAI,WAAW;QACrB,OAAM;;QAENxD,EAOEY,IAAA;SANS,YAAA6B,EAAA;SAAA,uBAAA,AAAAkC,EAAA,QAAA,MAAA,EAAQ,QAAAC;SAChB,OAAOpB,EAAI,WAAW;SACtB,UAAQ,CAAGA,EAAI,cAAU,CAAA,CAAMnD,EAAAkC,CAAA,CAAK,CAAC;SACrC,WAAO,eAAiBiB,EAAI,WAAW;SACxC,SAAQ;SACR,gBAAA;;;;;;;QAEF3C,EAAoE,OAApEO,IAAoEhB,EAAjCgE,GAASZ,EAAI,UAAU,CAAA,GAAA,CAAA;QAElDnD,EAAAkC,CAAA,CAAK,CAAC,QAAQ,IAAIiB,EAAI,WAAW,MAAM,KAD/C5D,EAAA,GAAAC,EAGEiB,GAAA;;SADC,MAAMT,EAAAkC,CAAA,CAAK,CAAC,QAAQ,IAAIiB,EAAI,WAAW,MAAM,CAAA,CAAG;;QAG3CA,EAAI,UADZ5D,EAAA,GAAAa,EAKM,OALNY,IAKMjB,EADDoD,EAAI,MAAM,GAAA,CAAA,K;QAGPA,EAAI,WAAW,eAAetB,EAAA,WAAW7B,EAAAiD,CAAA,CAAU,CAAC,YAD5D1D,EAAA,GAAAa,EAKM,OALNa,IAKMlB,EADDoD,EAAI,WAAW,WAAW,GAAA,CAAA,K;QAGvBA,EAAI,WAAW,gBAAgBtB,EAAA,WAAW7B,EAAAiD,CAAA,CAAU,CAAC,YAD7D1D,EAAA,GAAAa,EAKM,OALNc,GAKMnB,EADDoD,EAAI,WAAW,YAAY,GAAA,CAAA,K;;;;MA8BpCxD,EAoBee,GAAA,MAAA;OAnBb,SAAAhB,QAEe;QAFfC,EAEeqE,GAAA,EAFA,SAAK,AAAAM,EAAA,OAAA3D,GAAA,MAAO,EAAA,QAAI,IAAA,CAAA,MAAA,CAAA,E;SAC7B,SAAAjB,QAAgF,CAA7EI,EAAAC,EAAAuC,EAAA,QAAatC,EAAA2C,CAAA,CAAC,CAAA,8BAAA,IAAmC3C,EAAA2C,CAAA,CAAC,CAAA,sBAAA,CAAA,GAAA,CAAA,C;;;QAEvDhD,EAAWiB,CAAA;QAEH0B,EAAA,SAAcmB,EAAA,MAAO,SAAM,KAAA,CAASzD,EAAAkC,CAAA,CAAK,CAAC,eADlD3C,EAAA,GAAAC,EAMewE,GAAA;;SAJb,WAAQ;SACP,SAAKrD,EAAOmD,IAAW,CAAA,MAAA,CAAA;;SAExB,SAAApE,QAA6C,CAA1CI,EAAAC,EAAAC,EAAA2C,CAAA,CAAC,CAAA,oCAAA,CAAA,GAAA,CAAA,C;;;QAGGL,EAAA,Q,aADT/C,EAAA,GAAAC,EAOc0E,GAAA;;SALX,UAAUP,EAAA,MAAW,WAAM,KAAA,CAAA,CAAY3D,EAAAkC,CAAA,CAAK,CAAC;SAC9C,WAAQ;SACP,SAAKvB,EAAOkD,IAAG,CAAA,MAAA,CAAA;;SAEhB,SAAAnE,QAAoE,CAAjEI,EAAAC,EAAAC,EAAA2C,CAAA,CAAC,CAACW,GAAA,OAAU,EAAA,OAAWK,EAAA,MAAW,OAAM,GAAIA,EAAA,MAAW,MAAM,CAAA,GAAA,CAAA,C"}
|
|
1
|
+
{"version":3,"file":"AUserBulkActionDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","_component_VDialog","_withCtx","_createVNode","_component_VCard","ADialogToolbar","_createTextVNode","_toDisplayString","_unref","_component_VCardText","_component_VAlert","_createElementBlock","_Fragment","_renderList","_component_VCheckbox","_createElementVNode","AUserSystemStatusChip","_component_VCardActions","_withModifiers","_component_VSpacer","ADialogToolbar_default","AUserSystemStatusChip_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","AUserBulkActionDialog_vue_vue_type_script_setup_true_lang_default","\"open\"","\"openModifiers\"","__emit","props","__props","emit","open","useModel","useI18n","store","useUserCrossSystemStore","selected","ref","showingLog","rows","computed","result","descriptor","t","descriptorMayWrite","isUndefined","isActionable","access","UserSystemAccess","BulkAction","selectableSystems","row","value","titleKey","confirmKey","currentLog","entry","failed","BulkOutcome","actionable","system","run","retryFailed","labelFor","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createBlock","VDialog","_cache","$event","withCtx","createVNode","VCard","createTextVNode","toDisplayString","unref","VCardText","createElementVNode","createElementBlock","Fragment","renderList","createCommentVNode","VAlert","VCheckbox","VCardActions","withModifiers","VSpacer"],"sources":["../../../../src/domains/anzuUser/components/AUserBulkActionDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AUserSystemStatusChip from '@/domains/anzuUser/components/AUserSystemStatusChip.vue'\nimport {\n BulkAction,\n BulkOutcome,\n useUserCrossSystemStore,\n type BulkActionType,\n} from '@/domains/anzuUser/store/userCrossSystemStore'\nimport { type AnyUserSystemDescriptor, descriptorMayWrite } from '@/domains/anzuUser/composables/userSystemDescriptor'\nimport { isActionable, UserSystemAccess } from '@/domains/anzuUser/utils/userSystemState'\nimport { isUndefined } from '@/shared/utils/common'\n\nconst props = defineProps<{\n action: BulkActionType\n descriptors: AnyUserSystemDescriptor[]\n}>()\n\nconst emit = defineEmits<{\n (e: 'run', systems: string[]): void\n}>()\n\nconst open = defineModel<boolean>('open', { required: true })\n\nconst { t } = useI18n()\nconst store = useUserCrossSystemStore()\n\nconst selected = ref<string[]>([])\nconst showingLog = ref(false)\n\ninterface Row {\n descriptor: AnyUserSystemDescriptor\n selectable: boolean\n reason: string | null\n}\n\n/**\n * Which systems can be ticked is decided by the probe, not by ACL.\n * No current user is loaded for the other backends, so `<Acl>` would return false everywhere.\n * Not selectable: systems the probe reports as 403, 404 or switched off, and systems that did not answer.\n * Read-but-not-write cannot be seen here and ends up as a 403 in the log.\n */\nconst rows = computed<Row[]>(() =>\n props.descriptors.map((descriptor) => {\n const result = store.results.get(descriptor.system)\n if (!descriptor.isEnabled()) {\n return { descriptor, selectable: false, reason: t('common.userSystem.state.configDisabled') }\n }\n if (!descriptorMayWrite(descriptor, 'update')) {\n return { descriptor, selectable: false, reason: t('common.userSystem.state.noWriteRight') }\n }\n if (isUndefined(result) || !isActionable(result.axes)) {\n const access = result?.axes.access\n const reason =\n access === UserSystemAccess.Forbidden\n ? t('common.userSystem.state.forbidden')\n : access === UserSystemAccess.Ok\n ? t('common.userSystem.state.absent')\n : t('common.userSystem.state.unavailable')\n return { descriptor, selectable: false, reason }\n }\n // Already in the target state. A no-op PUT would still run `updateRelations()` in cms over many fields, so skip it.\n if (props.action === BulkAction.Enable && result.axes.enabled === true) {\n return { descriptor, selectable: false, reason: t('common.userSystem.bulk.alreadyInState') }\n }\n if (props.action === BulkAction.Disable && result.axes.enabled === false) {\n return { descriptor, selectable: false, reason: t('common.userSystem.bulk.alreadyInState') }\n }\n return { descriptor, selectable: true, reason: null }\n })\n)\n\nconst selectableSystems = computed(() => rows.value.filter((row) => row.selectable).map((row) => row.descriptor.system))\n\n// Tick everything actionable, blog and forum included. A departing employee is almost always switched off there too.\n// Their row note stays as information, not as a reason to untick.\nwatch(\n open,\n (value) => {\n if (!value) return\n showingLog.value = false\n selected.value = [...selectableSystems.value]\n },\n { immediate: true }\n)\n\nconst titleKey = computed(() => `common.userSystem.bulk.${props.action}.title`)\nconst confirmKey = computed(() => `common.userSystem.bulk.${props.action}.confirm`)\n\n/**\n * Only this run's entries. The log outlives a run, so without the filter the dialog would offer\n * to retry other actions' failures, such as a metadata repair, against the account on screen.\n */\nconst currentLog = computed(() =>\n store.bulkLog.filter((entry) => entry.action === props.action && entry.subjectId === store.resolvedId)\n)\n\nconst failed = computed(() =>\n currentLog.value.filter((entry) => entry.outcome !== BulkOutcome.Done && entry.outcome !== BulkOutcome.Pending)\n)\n\n// Re-check selectability: a right may have been granted or revoked while the dialog was open.\nconst actionable = computed(() => selected.value.filter((system) => selectableSystems.value.includes(system)))\n\nconst run = () => {\n if (actionable.value.length === 0) return\n showingLog.value = true\n emit('run', actionable.value)\n}\n\n/** Retries everything that failed, 403 included: the operator may have been granted the right meanwhile. */\nconst retryFailed = () => {\n emit(\n 'run',\n failed.value.map((entry) => entry.system)\n )\n}\n\nconst labelFor = (descriptor: AnyUserSystemDescriptor) => descriptor.label ?? descriptor.system\n</script>\n\n<template>\n <VDialog\n v-model=\"open\"\n :max-width=\"720\"\n data-cy=\"user-bulk-dialog\"\n >\n <VCard>\n <!-- Closing while the calls are still going is allowed; the run lives in the store. -->\n <ADialogToolbar @cancel=\"open = false\">\n {{ t(titleKey) }}\n </ADialogToolbar>\n <VCardText v-if=\"!showingLog\">\n <VAlert\n v-if=\"store.identityConflict\"\n type=\"error\"\n variant=\"tonal\"\n density=\"compact\"\n class=\"mb-3\"\n >\n {{ t('common.userSystem.search.identityConflict') }}\n </VAlert>\n <div\n v-for=\"row in rows\"\n :key=\"row.descriptor.system\"\n class=\"d-flex align-center ga-2 py-1\"\n >\n <VCheckbox\n v-model=\"selected\"\n :value=\"row.descriptor.system\"\n :disabled=\"!row.selectable || !!store.identityConflict\"\n :data-cy=\"`bulk-system-${row.descriptor.system}`\"\n density=\"compact\"\n hide-details\n />\n <div class=\"font-weight-medium\">{{ labelFor(row.descriptor) }}</div>\n <AUserSystemStatusChip\n v-if=\"store.results.get(row.descriptor.system)\"\n :axes=\"store.results.get(row.descriptor.system)!.axes\"\n />\n <div\n v-if=\"row.reason\"\n class=\"text-body-small text-medium-emphasis\"\n >\n {{ row.reason }}\n </div>\n <div\n v-if=\"row.descriptor.enabledNote && action !== BulkAction.Metadata\"\n class=\"text-body-small text-warning w-100\"\n >\n {{ row.descriptor.enabledNote }}\n </div>\n <div\n v-if=\"row.descriptor.metadataNote && action === BulkAction.Metadata\"\n class=\"text-body-small text-warning w-100\"\n >\n {{ row.descriptor.metadataNote }}\n </div>\n </div>\n </VCardText>\n <VCardText v-else>\n <div class=\"text-label-large mb-2\">{{ t('common.userSystem.bulk.log') }}</div>\n <!--\n `polite`, not `assertive`: nine systems finishing in sequence would flood a screen reader.\n Focus deliberately stays put when the dialog switches to this view.\n -->\n <div\n aria-live=\"polite\"\n data-cy=\"user-bulk-log\"\n >\n <div\n v-for=\"entry in currentLog\"\n :key=\"entry.system\"\n class=\"d-flex align-center ga-2 py-1\"\n >\n <div class=\"font-weight-medium\">{{ entry.system }}</div>\n <div class=\"text-body-small\">{{ t(`common.userSystem.bulk.outcome.${entry.outcome}`) }}</div>\n <div\n v-if=\"entry.detail\"\n class=\"text-body-small text-medium-emphasis\"\n >\n {{ entry.detail }}\n </div>\n </div>\n </div>\n </VCardText>\n <VCardActions>\n <ABtnTertiary @click.stop=\"open = false\">\n {{ showingLog ? t('common.userSystem.bulk.close') : t('common.button.cancel') }}\n </ABtnTertiary>\n <VSpacer />\n <ABtnTertiary\n v-if=\"showingLog && failed.length > 0 && !store.bulkRunning\"\n data-cy=\"user-bulk-retry\"\n @click.stop=\"retryFailed\"\n >\n {{ t('common.userSystem.bulk.retryFailed') }}\n </ABtnTertiary>\n <ABtnPrimary\n v-if=\"!showingLog\"\n :disabled=\"actionable.length === 0 || !!store.identityConflict\"\n data-cy=\"user-bulk-confirm\"\n @click.stop=\"run\"\n >\n {{ t(confirmKey, { count: actionable.length }, actionable.length) }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserCopyPermissionsDialog.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserCopyPermissionsDialog.js","names":["AUserCopyPermissionsDialog_vue_vue_type_script_setup_true_lang_default","AUserCopyPermissionsDialog_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","
|
|
1
|
+
{"version":3,"file":"AUserCopyPermissionsDialog.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createVNode","_withModifiers","_withCtx","_createTextVNode","_createBlock","_component_VDialog","_component_VCard","ADialogToolbar","_component_VCardText","_renderSlot","_Fragment","_renderList","_component_VCardActions","_component_VSpacer","ADialogToolbar_default","_hoisted_1","_hoisted_2","_hoisted_3","AUserCopyPermissionsDialog_vue_vue_type_script_setup_true_lang_default","\"user\"","\"userModifiers\"","props","__props","user","useModel","dialog","ref","loading","srcUserId","useI18n","useAlerts","showDialog","confirmDialog","source","cloneDeep","error","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createElementBlock","createElementVNode","toDisplayString","unref","t","createVNode","withModifiers","withCtx","createTextVNode","createBlock","VDialog","VCard","_cache","VCardText","renderSlot","_ctx","id","Fragment","renderList","key","VCardActions","VSpacer","isNull","createCommentVNode"],"sources":["../../../../src/domains/anzuUser/components/AUserCopyPermissionsDialog.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TUser extends Pick<AnzuUser, 'roles' | 'permissionGroups' | 'permissions'>\">\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n// `ABtnPrimary` / `ABtnTertiary` are Vuetify aliases registered globally by\n// `commonVuetifyConfig`, so they are not imported.\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport type { AnzuUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\n\nconst props = defineProps<{\n /**\n * Reads the source account from the server. A prop because the user shape differs per system (cms\n * `CmsUserDto`, dam `DamUserDto`), and the page already has an api instance for the right backend.\n */\n fetchSourceUser: (id: number) => Promise<AnzuUser>\n /**\n * Copies whatever the system keeps beyond roles, groups and grants. cms has nineteen such\n * fields; systems with none leave this out.\n */\n copySystemFields?: ((target: TUser, source: AnzuUser) => void) | undefined\n /** i18n keys listed in the dialog, so the operator sees exactly what will be overwritten. */\n copiedSettingKeys?: string[]\n}>()\n\n// Typed `TUser` with only the overwritten fields, because a wizard\n// holds a system's permissions without the rest of the account.\nconst user = defineModel<TUser>('user', { required: true })\n\nconst dialog = ref(false)\nconst loading = ref(false)\nconst srcUserId = ref<IntegerIdNullable>(null)\n\nconst { t } = useI18n()\nconst { showErrorsDefault } = useAlerts()\n\nconst showDialog = () => {\n srcUserId.value = null\n dialog.value = true\n}\n\nconst confirmDialog = async () => {\n if (isNull(srcUserId.value)) return\n loading.value = true\n try {\n const source = await props.fetchSourceUser(srcUserId.value)\n user.value.roles = cloneDeep(source.roles)\n user.value.permissionGroups = cloneDeep(source.permissionGroups)\n user.value.permissions = cloneDeep(source.permissions)\n props.copySystemFields?.(user.value, source)\n dialog.value = false\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n loading.value = false\n }\n}\n</script>\n\n<template>\n <div>\n <p class=\"text-body-small\">\n {{ t('common.anzuUser.copyPermissions.desc') }}\n </p>\n <div class=\"text-right\">\n <ABtnTertiary\n size=\"small\"\n data-cy=\"user-copy-permissions\"\n @click.stop=\"showDialog\"\n >\n {{ t('common.anzuUser.copyPermissions.title') }}\n </ABtnTertiary>\n </div>\n <VDialog\n v-if=\"dialog\"\n :model-value=\"dialog\"\n :max-width=\"900\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"dialog = false\">\n {{ t('common.anzuUser.copyPermissions.title') }}\n </ADialogToolbar>\n <VCardText>\n <!-- Whose account to copy from. The app owns the picker: it knows its own user list. -->\n <slot\n name=\"sourcePicker\"\n :select=\"(id: IntegerIdNullable) => (srcUserId = id)\"\n :selected=\"srcUserId\"\n />\n <strong>{{ t('common.anzuUser.copyPermissions.copiedSettings') }}</strong>\n <ul class=\"ml-5 text-body-small\">\n <li>{{ t('common.anzuUser.model.roles') }}</li>\n <li>{{ t('common.anzuUser.model.permissionGroups') }}</li>\n <li>{{ t('common.anzuUser.model.permissions') }}</li>\n <li\n v-for=\"key in copiedSettingKeys\"\n :key=\"key\"\n >\n {{ t(key) }}\n </li>\n </ul>\n </VCardText>\n <VCardActions>\n <ABtnTertiary @click.stop=\"dialog = false\">\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <VSpacer />\n <ABtnPrimary\n :disabled=\"isNull(srcUserId)\"\n :loading=\"loading\"\n data-cy=\"user-copy-permissions-confirm\"\n @click.stop=\"confirmDialog\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAWA,IAAM2B,IAAQC,GAiBRC,IAAO7B,EAAkB4B,GAAC,MAA0B,GAEpDG,IAASC,EAAI,EAAK,GAClBC,IAAUD,EAAI,EAAK,GACnBE,IAAYF,EAAuB,IAAI,GAEvC,EAAE,SAAMG,EAAQ,GAChB,EAAE,yBAAsBC,EAAU,GAElCC,UAAmB;GAEvB,AADA,EAAU,QAAQ,MAClB,EAAO,QAAQ;EACjB,GAEMC,IAAgB,YAAY;GAChC,IAAI,GAAOJ,EAAU,KAAK,GAC1B;MAAQ,QAAQ;IAChB,IAAI;KACF,IAAMK,IAAS,MAAMZ,EAAM,gBAAgBO,EAAU,KAAK;KAK1D,AAJA,EAAK,MAAM,QAAQM,EAAUD,EAAO,KAAK,GACzC,EAAK,MAAM,mBAAmBC,EAAUD,EAAO,gBAAgB,GAC/D,EAAK,MAAM,cAAcC,EAAUD,EAAO,WAAW,GACrDZ,EAAM,mBAAmBE,EAAK,OAAOU,CAAM,GAC3C,EAAO,QAAQ;IACjB,SAASE,GAAO;KACd,EAAkBA,CAAK;IACzB,UAAU;KACR,EAAQ,QAAQ;IAClB;GAZgB;EAalB;;;GAIE,OAAAxC,EAAA,GAAAC,EA0DM,OAAA,MAAA;IAzDJC,EAEI,KAFJkB,GAEIjB,EADCC,EAAA6C,CAAA,CAAC,CAAA,sCAAA,CAAA,GAAA,CAAA;IAEN/C,EAQM,OARNmB,GAQM,CAPJhB,EAMeoC,GAAA;KALb,MAAK;KACL,WAAQ;KACP,SAAKnC,EAAO8B,GAAU,CAAA,MAAA,CAAA;;KAEvB,SAAA7B,QAAgD,CAA7CC,EAAAL,EAAAC,EAAA6C,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;;IAIAnB,EAAA,SADR9B,EAAA,GAAAS,EA4CUC,GAAA;;KA1CP,eAAaoB,EAAA;KACb,aAAW;;KAEZ,SAAAvB,QAsCQ,CAtCRF,EAsCQM,GAAA,MAAA;MArCN,SAAAJ,QAEiB;OAFjBF,EAEiBO,GAAA,EAFA,UAAM,AAAA6C,EAAA,QAAA,MAAE,EAAA,QAAM,G;QAC7B,SAAAlD,QAAgD,CAA7CC,EAAAL,EAAAC,EAAA6C,CAAA,CAAC,CAAA,uCAAA,CAAA,GAAA,CAAA,C;;;OAEN5C,EAmBYQ,GAAA,MAAA;QAjBV,SAAAN,QAIE;SAJFO,EAIE8C,EAAA,QAAA,gBAAA;UAFC,SAAS,MAA2B,EAAA,QAAYC;UAChD,UAAU5B,EAAA;;SAEb/B,EAA0E,UAAA,MAAAC,EAA/DC,EAAA6C,CAAA,CAAC,CAAA,gDAAA,CAAA,GAAA,CAAA;SACZ/C,EAUK,MAVLoB,GAUK;UATHpB,EAA+C,MAAA,MAAAC,EAAxCC,EAAA6C,CAAA,CAAC,CAAA,6BAAA,CAAA,GAAA,CAAA;UACR/C,EAA0D,MAAA,MAAAC,EAAnDC,EAAA6C,CAAA,CAAC,CAAA,wCAAA,CAAA,GAAA,CAAA;UACR/C,EAAqD,MAAA,MAAAC,EAA9CC,EAAA6C,CAAA,CAAC,CAAA,mCAAA,CAAA,GAAA,CAAA;WACRjD,EAAA,EAAA,GAAAC,EAKKc,GAAA,MAAAC,EAJWW,EAAA,oBAAP,OADT3B,EAAA,GAAAC,EAKK,MAAA,EAHG,OAAG,GAAAE,EAENC,EAAA6C,CAAA,CAAC,CAACe,CAAG,CAAA,GAAA,CAAA,E;;;;;OAId3D,EAaeY,GAAA,MAAA;QAZb,SAAAV,QAEe;SAFfF,EAEeoC,GAAA,EAFA,SAAK,AAAAgB,EAAA,OAAAnD,GAAA,MAAO,EAAA,QAAM,IAAA,CAAA,MAAA,CAAA,E;UAC/B,SAAAC,QAA+B,CAA5BC,EAAAL,EAAAC,EAAA6C,CAAA,CAAC,CAAA,sBAAA,CAAA,GAAA,CAAA,C;;;SAEN5C,EAAWa,CAAA;SACXb,EAOcsC,GAAA;UANX,UAAUvC,EAAA+D,CAAA,CAAM,CAAClC,EAAA,KAAS;UAC1B,SAASD,EAAA;UACV,WAAQ;UACP,SAAK1B,EAAO+B,GAAa,CAAA,MAAA,CAAA;;UAE1B,SAAA9B,QAAgC,CAA7BC,EAAAL,EAAAC,EAAA6C,CAAA,CAAC,CAAA,uBAAA,CAAA,GAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserCreateInSystemButton.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserCreateInSystemButton.js","names":["AUserCreateInSystemButton_vue_vue_type_script_setup_true_lang_default","AUserCreateInSystemButton_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserCreateInSystemButton.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_createVNode","_component_VBtn","_withModifiers","_withCtx","_createTextVNode","_toDisplayString","_unref","_component_VDialog","_component_VCard","ADialogToolbar","_component_VCardText","AUserMetadataForm","_createElementVNode","_component_VCardActions","_component_VSpacer","ADialogToolbar_default","AUserMetadataForm_default","useVuelidate","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","AUserCreateInSystemButton_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","useI18n","useAnzuUserFactory","dialog","ref","user","createAnzuUser","v$","open","seed","isNull","cloneDeep","confirm","_component_ABtnTertiary","resolveComponent","_component_ABtnPrimary","openBlock","createElementBlock","createVNode","VBtn","_cache","withModifiers","withCtx","createTextVNode","toDisplayString","unref","t","VDialog","$event","VCard","VCardText","createElementVNode","createCommentVNode","VCardActions","VSpacer"],"sources":["../../../../src/domains/anzuUser/components/AUserCreateInSystemButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue'\nimport useVuelidate from '@vuelidate/core'\nimport { useI18n } from 'vue-i18n'\nimport ADialogToolbar from '@/domains/ui/components/ADialogToolbar.vue'\nimport AUserMetadataForm from '@/domains/anzuUser/components/AUserMetadataForm.vue'\nimport { useAnzuUserFactory } from '@/domains/anzuUser/factory/AnzuUserFactory'\nimport type { BaseUser } from '@/shared/types/AnzuUser'\nimport type { IntegerIdNullable } from '@/shared/types/common'\nimport { cloneDeep, isNull } from '@/shared/utils/common'\n\nconst props = withDefaults(\n defineProps<{\n systemLabel: string\n /** The system's `createNote`: what is special about having an account there. */\n createNote?: string | undefined\n /**\n * Whether the created account will be switched on.\n * The sentence about a working public account is composed here, not in the descriptor, because it depends on\n * this value. Creating from a panel copies the source's `enabled`; creating after an empty search sends false.\n */\n willBeEnabled?: boolean\n loading?: boolean\n disabled?: boolean\n /** The target system's `requiredMetadata`: the profile the form validates against. */\n requiredMetadata?: boolean\n /** The person's id. Always shown and never editable here, because this path is for a person who already exists. */\n userId?: IntegerIdNullable\n /**\n * Known data used to prefill the form. It is not the posted\n * body: the caller re-reads the source right before the POST.\n * The operator must complete it. A person known only in blog usually has an empty `person`, which\n * the target may require, so a silent copy would create a record the target's form refuses to save.\n */\n source?: BaseUser | null\n }>(),\n {\n createNote: undefined,\n willBeEnabled: false,\n loading: false,\n disabled: false,\n requiredMetadata: false,\n userId: null,\n source: null,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'confirm', user: BaseUser): void\n}>()\n\nconst { t } = useI18n()\nconst { createAnzuUser } = useAnzuUserFactory()\nconst dialog = ref(false)\n\nconst user = ref<BaseUser>(createAnzuUser())\nconst v$ = useVuelidate()\n\n// Seeded on every open, not once. The row is re-probed after\n// each write, and a stale prefill would send outdated values.\nwatch(dialog, (open) => {\n if (!open) return\n const seed = isNull(props.source) ? createAnzuUser() : cloneDeep(props.source)\n if (!isNull(props.userId)) seed.id = props.userId\n user.value = seed\n v$.value.$reset()\n})\n\nconst confirm = async () => {\n if (!(await v$.value.$validate())) return\n dialog.value = false\n emit('confirm', cloneDeep(user.value))\n}\n</script>\n\n<template>\n <div class=\"d-inline-flex\">\n <VBtn\n :disabled=\"disabled\"\n :loading=\"loading\"\n size=\"small\"\n variant=\"flat\"\n color=\"primary\"\n data-cy=\"user-system-create\"\n @click.stop=\"dialog = true\"\n >\n {{ t('common.userSystem.button.create') }}\n </VBtn>\n <VDialog\n v-model=\"dialog\"\n :max-width=\"640\"\n >\n <VCard>\n <ADialogToolbar @cancel=\"dialog = false\">\n {{ t('common.userSystem.create.title', { system: systemLabel }) }}\n </ADialogToolbar>\n <VCardText>\n <!-- The id is shown and locked: this gives the existing person's global id an account here. -->\n <AUserMetadataForm\n v-model:user=\"user\"\n :required=\"requiredMetadata\"\n id-input\n is-edit\n />\n <!--\n Stated explicitly because neither is obvious or reversible: the account\n is created with nothing granted, and no admin can delete an AnzuUser.\n -->\n <p class=\"mt-2\">{{ t('common.userSystem.create.note') }}</p>\n <p\n v-if=\"createNote\"\n class=\"mt-2\"\n >\n {{ createNote }}\n </p>\n <p class=\"mt-2\">\n {{\n props.willBeEnabled\n ? t('common.userSystem.create.willBeEnabled')\n : t('common.userSystem.create.willBeDisabled')\n }}\n </p>\n </VCardText>\n <VCardActions>\n <ABtnTertiary @click.stop=\"dialog = false\">\n {{ t('common.button.cancel') }}\n </ABtnTertiary>\n <VSpacer />\n <ABtnPrimary\n :loading=\"loading\"\n data-cy=\"user-system-create-confirm\"\n @click.stop=\"confirm\"\n >\n {{ t('common.button.confirm') }}\n </ABtnPrimary>\n </VCardActions>\n </VCard>\n </VDialog>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,IAAM0B,IAAQC,GAoCRC,IAAOH,GAIP,EAAE,SAAMI,EAAQ,GAChB,EAAE,sBAAmBC,EAAmB,GACxCC,IAASC,EAAI,EAAK,GAElBC,IAAOD,EAAcE,EAAe,CAAC,GACrCC,IAAKhB,EAAa;EAIxB,EAAMY,IAAS,MAAS;GACtB,IAAI,CAACK,GAAM;GACX,IAAMC,IAAOC,EAAOZ,EAAM,MAAM,IAAIQ,EAAe,IAAIK,EAAUb,EAAM,MAAM;GAG7E,AAFKY,EAAOZ,EAAM,MAAM,MAAG,EAAK,KAAKA,EAAM,SAC3C,EAAK,QAAQW,GACbF,EAAG,MAAM,OAAO;EAClB,CAAC;EAED,IAAMK,IAAU,YAAY;GAC1B,AAAM,MAAML,EAAG,MAAM,UAAU,MAC/B,EAAO,QAAQ,IACfP,EAAK,WAAWW,EAAUN,EAAK,KAAK,CAAC;EACvC;;;GAIE,OAAAjC,EAAA,GAAAC,EA8DM,OA9DNmB,GA8DM,CA7DJlB,EAUOC,GAAA;IATJ,UAAUwB,EAAA;IACV,SAASA,EAAA;IACV,MAAK;IACL,SAAQ;IACR,OAAM;IACN,WAAQ;IACP,SAAK,AAAAqB,EAAA,OAAA5C,GAAA,MAAO,EAAA,QAAM,IAAA,CAAA,MAAA,CAAA;;IAEnB,SAAAC,QAA0C,CAAvCC,EAAAC,EAAAC,EAAA8C,CAAA,CAAC,CAAA,iCAAA,CAAA,GAAA,CAAA,C;;G,gCAENpD,EAiDUO,GAAA;IAhDC,YAAAsB,EAAA;IAAA,uBAAA,AAAAiB,EAAA,QAAA,MAAA,EAAM,QAAAQ;IACd,aAAW;;IAEZ,SAAAnD,QA4CQ,CA5CRH,EA4CQQ,GAAA,MAAA;KA3CN,SAAAL,QAEiB;MAFjBH,EAEiBS,GAAA,EAFA,UAAM,AAAAqC,EAAA,QAAA,MAAE,EAAA,QAAM,G;OAC7B,SAAA3C,QAAkE,CAA/DC,EAAAC,EAAAC,EAAA8C,CAAA,CAAC,CAAA,kCAAA,EAAA,QAA6C3B,EAAA,YAAW,CAAA,CAAA,GAAA,CAAA,C;;;MAE9DzB,EA0BYU,GAAA,MAAA;OAxBV,SAAAP,QAKE;QALFH,EAKEW,GAAA;SAJQ,MAAMoB,EAAA;SAAA,iBAAA,AAAAe,EAAA,QAAA,MAAA,EAAI,QAAAQ;SACjB,UAAU7B,EAAA;SACX,YAAA;SACA,WAAA;;QAMFb,EAA4D,KAA5DO,GAA4Dd,EAAzCC,EAAA8C,CAAA,CAAC,CAAA,+BAAA,CAAA,GAAA,CAAA;QAEZ3B,EAAA,cADR3B,EAAA,GAAAC,EAKI,KALJqB,GAKIf,EADCoB,EAAA,UAAU,GAAA,CAAA,K;QAEfb,EAMI,KANJS,GAMIhB,EAJAmB,EAAM,gBAAgClB,EAAA8C,CAAA,CAAC,CAAA,wCAAA,IAA6D9C,EAAA8C,CAAA,CAAC,CAAA,yCAAA,CAAA,GAAA,CAAA;;;;MAM3GpD,EAYea,GAAA,MAAA;OAXb,SAAAV,QAEe;QAFfH,EAEeuC,GAAA,EAFA,SAAK,AAAAO,EAAA,OAAA5C,GAAA,MAAO,EAAA,QAAM,IAAA,CAAA,MAAA,CAAA,E;SAC/B,SAAAC,QAA+B,CAA5BC,EAAAC,EAAAC,EAAA8C,CAAA,CAAC,CAAA,sBAAA,CAAA,GAAA,CAAA,C;;;QAENpD,EAAWc,CAAA;QACXd,EAMcyC,GAAA;SALX,SAAShB,EAAA;SACV,WAAQ;SACP,SAAKvB,EAAOoC,GAAO,CAAA,MAAA,CAAA;;SAEpB,SAAAnC,QAAgC,CAA7BC,EAAAC,EAAAC,EAAA8C,CAAA,CAAC,CAAA,uBAAA,CAAA,GAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserEnabledSwitch.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserEnabledSwitch.js","names":["AUserEnabledSwitch_vue_vue_type_script_setup_true_lang_default","AUserEnabledSwitch_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createBlock","ARow","_unref","_withCtx","_createVNode","ABooleanValue","_component_VSwitch","_createElementVNode","_renderSlot","_Fragment","_createTextVNode","_toDisplayString","
|
|
1
|
+
{"version":3,"file":"AUserEnabledSwitch.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createBlock","ARow","_unref","_withCtx","_createVNode","ABooleanValue","_component_VSwitch","_createElementVNode","_renderSlot","_Fragment","_createTextVNode","_toDisplayString","ABooleanValue_default","ARow_default","_hoisted_1","AUserEnabledSwitch_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","modelValue","useModel","__props","useI18n","openBlock","createElementBlock","createBlock","unref","t","withCtx","createVNode","VSwitch","_cache","$event","createElementVNode","renderSlot","_ctx","Fragment","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../../src/domains/anzuUser/components/AUserEnabledSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useI18n } from 'vue-i18n'\nimport ABooleanValue from '@/domains/ui/components/ABooleanValue.vue'\nimport ARow from '@/domains/ui/components/ARow.vue'\n\nwithDefaults(\n defineProps<{\n readonly?: boolean\n /**\n * The system's `enabledNote`. A descriptor string rather than a slot, so every admin shows the\n * same wording as the bulk dialog and admin-blog, where it matters most, cannot forget it.\n * The slot below remains for content longer than a line.\n */\n note?: string | undefined\n }>(),\n {\n readonly: false,\n note: undefined,\n }\n)\n\nconst modelValue = defineModel<boolean>({ required: true })\n\nconst { t } = useI18n()\n</script>\n\n<template>\n <div>\n <!--\n Outside `AUserMetadataForm` on purpose. That form mirrors `BaseUserDto`, which has no\n `enabled`, and the cross-system metadata repair uses it and must not write this field.\n -->\n <ARow\n v-if=\"readonly\"\n :title=\"t('common.anzuUser.model.enabled')\"\n >\n <ABooleanValue\n :value=\"modelValue\"\n chip\n />\n </ARow>\n <VSwitch\n v-else\n v-model=\"modelValue\"\n :label=\"t('common.anzuUser.model.enabled')\"\n color=\"success\"\n density=\"compact\"\n hide-details\n data-cy=\"user-enabled\"\n />\n <div class=\"text-body-small text-medium-emphasis\">\n <slot name=\"note\">\n <template v-if=\"note\">{{ note }}</template>\n </slot>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAqBA,IAAMqB,IAAarB,EAAoBuB,GAAA,YAAmB,GAEpD,EAAE,SAAMC,EAAQ;E,kBAIpBvB,EAAA,GAAAC,EA4BM,OAAA,MAAA,CAtBIqB,EAAA,YADRtB,EAAA,GAAAE,EAQOC,GAAA;;GANJ,OAAOC,EAAAwB,CAAA,CAAC,CAAA,+BAAA;;GAET,SAAAvB,QAGE,CAHFC,EAGEC,GAAA;IAFC,OAAOa,EAAA;IACR,MAAA;;;E,qBAGJpB,EAAA,GAAAE,EAQEM,GAAA;;GANS,YAAAY,EAAA;GAAA,uBAAA,AAAAY,EAAA,QAAA,MAAA,EAAU,QAAAC;GAClB,OAAO7B,EAAAwB,CAAA,CAAC,CAAA,+BAAA;GACT,OAAM;GACN,SAAQ;GACR,gBAAA;GACA,WAAQ;E,uCAEVnB,EAIM,OAJNO,GAIM,CAHJN,EAEO0B,EAAA,QAAA,QAAA,CAAA,SAAA,CADWd,EAAA,QAAhBtB,EAAA,GAAAC,EAA2CU,GAAA,EAAA,KAAA,EAAA,GAAA,CAAlBC,EAAAC,EAAAS,EAAA,IAAI,GAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AUserManageButton.js","names":["
|
|
1
|
+
{"version":3,"file":"AUserManageButton.js","names":["AUserManageButton_vue_vue_type_script_setup_true_lang_default","AUserManageButton_default"],"sources":[],"mappings":""}
|