@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
package/dist/domains/log/components/ALogDatatable.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogDatatable.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_VSpacer","ADatatableConfigButton","_unref","_isRef","_component_VDataTableServer","_withCtx","ADatetime","_toDisplayString","_createTextVNode","ACopyText","_createBlock","_createCommentVNode","_component_VBtn","ADatatablePagination","ACopyText_default","ADatatableConfigButton_default","ADatetime_default","ADatatablePagination_default","_hoisted_1","_hoisted_2","_hoisted_3","ALogDatatable_vue_vue_type_script_setup_true_lang_default","\"loading\"","\"loadingModifiers\"","__expose","__emit","props","__props","emit","loading","useModel","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","useI18n","useLogListActions","useFilterHelpers","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","LogType","datatableHiddenColumns","getList","useDebounceFn","fetchList","onRowClick","item","onMounted","isDevelopment","watch","onBeforeUnmount","cancel","resetFilter","submitFilter","openBlock","createElementBlock","createElementVNode","createVNode","VSpacer","unref","columnsHidden","_cache","isRef","$event","columnsAll","VDataTableServer","columnsVisible","listItems","withCtx","toDisplayString","createTextVNode","isNull","createCommentVNode","createBlock","VBtn","t"],"sources":["../../../../src/domains/log/components/ALogDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject, onMounted, onBeforeUnmount, provide, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useDebounceFn } from '@vueuse/core'\nimport ACopyText from '@/domains/ui/components/ACopyText.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { useLogListActions } from '@/domains/log/composables/logActions'\nimport { LOG_ENTITY } from '@/domains/log/api/logApi'\nimport { LogType, type LogPaths, type LogTypeType } from '@/domains/log/composables/logType'\nimport type { Log } from '@/domains/log/types/Log'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport { isDevelopment } from '@/shared/utils/development'\n\ntype DatatableItem = Log\n\nconst props = defineProps<{\n client: AxiosClientFn\n system: string\n type: LogTypeType\n logPaths: LogPaths\n /** Same mapper the view uses. Needed here so the actions cell stays a real link. */\n detailRoute: (log: Log) => RouteLocationRaw\n}>()\n\nconst emit = defineEmits<{\n (e: 'rowClick', log: Log): void\n}>()\n\n// The spinner belongs to the card above this table, so the flag is owned there.\nconst loading = defineModel<boolean>('loading', { default: false })\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[ALogDatatable] Incorrect provide/inject config.')\n}\n\n// Read once on purpose. These are fixed for this instance's lifetime.\n// The page remounts the view via `:key` on system or type change,\n// because `useApiFetchList` closes over its client and url.\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { fetchList, listItems, datatableHiddenColumns, cancel } = useLogListActions({\n client: props.client,\n system: props.system,\n logPaths: props.logPaths,\n type: props.type,\n loading,\n})\n\n// No url hash and no local storage. The `logFilter` registry keeps the filter per view in memory.\n// Nothing about a log listing is worth persisting across a reload.\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\n// Keyed by type, not by system. The column sets differ between app and audit.\n// A column hidden in audit must not disappear from the app table.\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'datetime' },\n { key: 'levelName' },\n { key: 'message' },\n { key: 'context.appVersion' },\n { key: 'context.contextId' },\n ...(props.type === LogType.Audit\n ? [{ key: 'context.resourceName' }, { key: 'context.resourceIds' }]\n : [{ key: 'context.httpStatus' }]),\n { key: 'context.userId' },\n { key: 'context.ip' },\n ],\n datatableHiddenColumns,\n 'common',\n LOG_ENTITY,\n { storeColumnsLocalStorage: `table_common_log_${props.type}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchList(pagination, filterData, filterConfig)\n})\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n // Both persistences are off, so it reads nothing back.\n // It still restores the page a user was on after closing a detail,\n // which `AActionCloseButtonHistory` flags for the next list.\n loadStoredFilters(pagination, getList)\n})\n\n// The code above reads props once, which is only correct while the page remounts this view via `:key`.\n// Otherwise the table would silently keep querying the old endpoint with the old columns.\nif (isDevelopment()) {\n watch(\n () => [props.system, props.type],\n () => {\n console.error(\n '[ALogDatatable] `system` or `type` changed in place. This view must be remounted -- ' +\n 'give it :key=\"`${system}/${type}`\". The endpoint and columns are bound at mount.'\n )\n }\n )\n}\n\nonBeforeUnmount(() => {\n // Both calls, in this order. `cancel()` only invalidates requests already in flight.\n // A pending debounce would fire after unmount, bump the generation past\n // that invalidation and start a request the token treats as current.\n getList.cancel()\n cancel()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: () => resetFilter(pagination, getList),\n submitFilter: () => submitFilter(pagination, getList),\n})\n</script>\n\n<template>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\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=\"listItems\"\n :items-length=\"listItems.length\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.datetime=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.datetime\" />\n </template>\n <template #item.message=\"{ item }: { item: DatatableItem }\">\n <div class=\"a-line-clamp-2\">\n {{ item.message }}\n </div>\n </template>\n <template #item.context.resourceIds=\"{ item }: { item: DatatableItem }\">\n {{ item.context.resourceIds.join(', ') }}\n </template>\n <template #item.context.contextId=\"{ item }: { item: DatatableItem }\">\n <ACopyText :value=\"item.context.contextId\" />\n </template>\n <template #item.context.userId=\"{ item }: { item: DatatableItem }\">\n <ACopyText\n v-if=\"!isNull(item.context.userId)\"\n :value=\"item.context.userId\"\n />\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div class=\"d-flex justify-end\">\n <!--\n `:to`, not a click handler. An anchor makes middle-click and open-in-new-tab work.\n The smoke spec also scrapes it to find a row id.\n -->\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 </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ALogDatatable.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_VSpacer","ADatatableConfigButton","_unref","_isRef","_component_VDataTableServer","_withCtx","ADatetime","_toDisplayString","_createTextVNode","ACopyText","_createBlock","_component_VBtn","ADatatablePagination","ACopyText_default","ADatatableConfigButton_default","ADatetime_default","ADatatablePagination_default","_hoisted_1","_hoisted_2","_hoisted_3","ALogDatatable_vue_vue_type_script_setup_true_lang_default","\"loading\"","\"loadingModifiers\"","__expose","__emit","props","__props","emit","loading","useModel","filterConfig","inject","FilterConfigKey","filterData","FilterDataKey","isUndefined","useI18n","useLogListActions","useFilterHelpers","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","LogType","datatableHiddenColumns","getList","useDebounceFn","fetchList","onRowClick","item","onMounted","isDevelopment","watch","onBeforeUnmount","cancel","resetFilter","submitFilter","openBlock","createElementBlock","createElementVNode","createVNode","VSpacer","unref","columnsHidden","_cache","isRef","$event","columnsAll","VDataTableServer","columnsVisible","listItems","withCtx","toDisplayString","createTextVNode","isNull","createCommentVNode","createBlock","VBtn","t"],"sources":["../../../../src/domains/log/components/ALogDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { inject, onMounted, onBeforeUnmount, provide, watch } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useDebounceFn } from '@vueuse/core'\nimport ACopyText from '@/domains/ui/components/ACopyText.vue'\nimport ADatatableConfigButton from '@/domains/filters/datatable/components/ADatatableConfigButton.vue'\nimport ADatetime from '@/domains/ui/datetime/components/ADatetime.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ADatatablePagination from '@/domains/filters/datatable/components/ADatatablePagination.vue'\nimport { createDatatableColumnsConfig } from '@/domains/filters/datatable/composables/createDatatableColumnsConfig'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { useLogListActions } from '@/domains/log/composables/logActions'\nimport { LOG_ENTITY } from '@/domains/log/api/logApi'\nimport { LogType, type LogPaths, type LogTypeType } from '@/domains/log/composables/logType'\nimport type { Log } from '@/domains/log/types/Log'\nimport { isNull, isUndefined } from '@/shared/utils/common'\nimport { isDevelopment } from '@/shared/utils/development'\n\ntype DatatableItem = Log\n\nconst props = defineProps<{\n client: AxiosClientFn\n system: string\n type: LogTypeType\n logPaths: LogPaths\n /** Same mapper the view uses. Needed here so the actions cell stays a real link. */\n detailRoute: (log: Log) => RouteLocationRaw\n}>()\n\nconst emit = defineEmits<{\n (e: 'rowClick', log: Log): void\n}>()\n\n// The spinner belongs to the card above this table, so the flag is owned there.\nconst loading = defineModel<boolean>('loading', { default: false })\n\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nif (isUndefined(filterConfig) || isUndefined(filterData)) {\n throw new Error('[ALogDatatable] Incorrect provide/inject config.')\n}\n\n// Read once on purpose. These are fixed for this instance's lifetime.\n// The page remounts the view via `:key` on system or type change,\n// because `useApiFetchList` closes over its client and url.\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { fetchList, listItems, datatableHiddenColumns, cancel } = useLogListActions({\n client: props.client,\n system: props.system,\n logPaths: props.logPaths,\n type: props.type,\n loading,\n})\n\n// No url hash and no local storage. The `logFilter` registry keeps the filter per view in memory.\n// Nothing about a log listing is worth persisting across a reload.\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: false,\n populateUrlParams: false,\n})\n\nconst { pagination } = usePagination(SORT_BY_ID)\nprovide(DatatablePaginationKey, pagination)\n\n// Keyed by type, not by system. The column sets differ between app and audit.\n// A column hidden in audit must not disappear from the app table.\nconst { columnsVisible, columnsAll, columnsHidden } = createDatatableColumnsConfig(\n [\n { key: 'id' },\n { key: 'datetime' },\n { key: 'levelName' },\n { key: 'message' },\n { key: 'context.appVersion' },\n { key: 'context.contextId' },\n ...(props.type === LogType.Audit\n ? [{ key: 'context.resourceName' }, { key: 'context.resourceIds' }]\n : [{ key: 'context.httpStatus' }]),\n { key: 'context.userId' },\n { key: 'context.ip' },\n ],\n datatableHiddenColumns,\n 'common',\n LOG_ENTITY,\n { storeColumnsLocalStorage: `table_common_log_${props.type}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchList(pagination, filterData, filterConfig)\n})\n\nconst onRowClick = (_event: unknown, { item }: { item: DatatableItem }) => {\n if (item.id) emit('rowClick', item)\n}\n\nonMounted(() => {\n // Both persistences are off, so it reads nothing back.\n // It still restores the page a user was on after closing a detail,\n // which `AActionCloseButtonHistory` flags for the next list.\n loadStoredFilters(pagination, getList)\n})\n\n// The code above reads props once, which is only correct while the page remounts this view via `:key`.\n// Otherwise the table would silently keep querying the old endpoint with the old columns.\nif (isDevelopment()) {\n watch(\n () => [props.system, props.type],\n () => {\n console.error(\n '[ALogDatatable] `system` or `type` changed in place. This view must be remounted -- ' +\n 'give it :key=\"`${system}/${type}`\". The endpoint and columns are bound at mount.'\n )\n }\n )\n}\n\nonBeforeUnmount(() => {\n // Both calls, in this order. `cancel()` only invalidates requests already in flight.\n // A pending debounce would fire after unmount, bump the generation past\n // that invalidation and start a request the token treats as current.\n getList.cancel()\n cancel()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: () => resetFilter(pagination, getList),\n submitFilter: () => submitFilter(pagination, getList),\n})\n</script>\n\n<template>\n <div>\n <div class=\"d-flex align-center\">\n <VSpacer />\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=\"listItems\"\n :items-length=\"listItems.length\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.datetime=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.datetime\" />\n </template>\n <template #item.message=\"{ item }: { item: DatatableItem }\">\n <div class=\"a-line-clamp-2\">\n {{ item.message }}\n </div>\n </template>\n <template #item.context.resourceIds=\"{ item }: { item: DatatableItem }\">\n {{ item.context.resourceIds.join(', ') }}\n </template>\n <template #item.context.contextId=\"{ item }: { item: DatatableItem }\">\n <ACopyText :value=\"item.context.contextId\" />\n </template>\n <template #item.context.userId=\"{ item }: { item: DatatableItem }\">\n <ACopyText\n v-if=\"!isNull(item.context.userId)\"\n :value=\"item.context.userId\"\n />\n </template>\n <template #item.actions=\"{ item }: { item: DatatableItem }\">\n <div class=\"d-flex justify-end\">\n <!--\n `:to`, not a click handler. An anchor makes middle-click and open-in-new-tab work.\n The smoke spec also scrapes it to find a row id.\n -->\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 </div>\n </template>\n <template #bottom>\n <ADatatablePagination @change=\"getList\" />\n </template>\n </VDataTableServer>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogDetail.js","names":["
|
|
1
|
+
{"version":3,"file":"ALogDetail.js","names":["ALogDetail_vue_vue_type_script_setup_true_lang_default","_plugin_vue_export_helper_default","ALogDetail_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogDetailView.js","names":["
|
|
1
|
+
{"version":3,"file":"ALogDetailView.js","names":["ALogDetailView_vue_vue_type_script_setup_true_lang_default","ALogDetailView_default"],"sources":[],"mappings":""}
|
package/dist/domains/log/components/ALogDetailView.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogDetailView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","ACard","_unref","_withCtx","_createVNode","_component_VCardText","ALogDetail","
|
|
1
|
+
{"version":3,"file":"ALogDetailView.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","ACard","_unref","_withCtx","_createVNode","_component_VCardText","ALogDetail","ACard_default","ALogDetail_default","ALogDetailView_vue_vue_type_script_setup_true_lang_default","props","__props","useLogDetailActions","useRecordPage","onMounted","fetchData","leave","onBeforeUnmount","openBlock","createBlock","unref","detailLoading","withCtx","createVNode","VCardText","isNull","log","createCommentVNode"],"sources":["../../../../src/domains/log/components/ALogDetailView.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onBeforeUnmount, onMounted } from 'vue'\nimport type { RouteRecordName } from 'vue-router'\nimport ACard from '@/domains/ui/components/ACard.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport ALogDetail from '@/domains/log/components/ALogDetail.vue'\nimport { useLogDetailActions } from '@/domains/log/composables/logActions'\nimport { useRecordPage } from '@/domains/system/composables/recordPage'\nimport type { LogPaths, LogTypeType } from '@/domains/log/composables/logType'\nimport { isNull } from '@/shared/utils/common'\n\nconst props = defineProps<{\n client: AxiosClientFn\n system: string\n /** From the route. A log id means nothing without the store it came from. */\n type: LogTypeType\n id: string\n logPaths: LogPaths\n /** Where a log that cannot be loaded leaves to when history is empty. The page's Close fallback. */\n fallbackRouteName?: RouteRecordName\n fallbackRouteParams?: Record<string, any>\n}>()\n\n// Read once: the page keys this view on `${system}/${type}/${id}`, so a change remounts it.\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { log, detailLoading, fetchData, cancel } = useLogDetailActions({\n client: props.client,\n system: props.system,\n logPaths: props.logPaths,\n type: props.type,\n})\n\n// No `loading`: the view has no buttons to hide.\n// With it, a page without a fallback would keep the card loading forever in a fresh tab.\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst { leave } = useRecordPage({\n fallbackRouteName: props.fallbackRouteName,\n fallbackRouteParams: props.fallbackRouteParams,\n})\n\nonMounted(async () => {\n if ((await fetchData(props.id)) === false) await leave()\n})\n\nonBeforeUnmount(() => {\n cancel()\n})\n</script>\n\n<template>\n <ACard :loading=\"detailLoading\">\n <VCardText>\n <ALogDetail\n v-if=\"!isNull(log)\"\n :log=\"log\"\n />\n </VCardText>\n </ACard>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAWA,IAAMW,IAAQC,GAcR,EAAE,QAAK,kBAAe,cAAW,cAAWC,EAAoB;GACpE,QAAQF,EAAM;GACd,QAAQA,EAAM;GACd,UAAUA,EAAM;GAChB,MAAMA,EAAM;EACd,CAAC,GAKK,EAAE,aAAUG,EAAc;GAC9B,mBAAmBH,EAAM;GACzB,qBAAqBA,EAAM;EAC7B,CAAC;E,OAEDI,EAAU,YAAY;GACpB,AAAK,MAAMC,EAAUL,EAAM,EAAE,MAAO,MAAO,MAAMM,EAAM;EACzD,CAAC,GAEDC,QAAsB;GACpB,EAAO;EACT,CAAC,I,UAIClB,EAAA,GAAAC,EAOQC,GAAA,EAPA,SAASC,EAAAmB,CAAA,EAAa,GAAA;GAC5B,SAAAlB,QAKY,CALZC,EAKYC,GAAA,MAAA;IAJV,SAAAF,QAGE,CAFOD,EAAAuB,CAAA,CAAM,CAACvB,EAAAwB,CAAA,CAAG,I,aADnB3B,EAAA,GAAAC,EAGEM,GAAA;;KADC,KAAKJ,EAAAwB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogFilter.js","names":["
|
|
1
|
+
{"version":3,"file":"ALogFilter.js","names":["ALogFilter_vue_vue_type_script_setup_true_lang_default","ALogFilter_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogLevelChip.js","names":["
|
|
1
|
+
{"version":3,"file":"ALogLevelChip.js","names":["ALogLevelChip_vue_vue_type_script_setup_true_lang_default","ALogLevelChip_default"],"sources":[],"mappings":""}
|
package/dist/domains/log/components/ALogLevelChip.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogLevelChip.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AChipNoLink","_withCtx","_createTextVNode","_toDisplayString","
|
|
1
|
+
{"version":3,"file":"ALogLevelChip.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","AChipNoLink","_withCtx","_createTextVNode","_toDisplayString","AChipNoLink_default","ALogLevelChip_vue_vue_type_script_setup_true_lang_default","props","__props","useLogLevel","levelOption","computed","getLogLevelOption","openBlock","createBlock","withCtx","createTextVNode","toDisplayString","createCommentVNode"],"sources":["../../../../src/domains/log/components/ALogLevelChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport AChipNoLink from '@/domains/ui/components/AChipNoLink.vue'\nimport { type LogLevelType, useLogLevel } from '@/domains/log/valueObject/LogLevel'\n\nconst props = withDefaults(\n defineProps<{\n level: LogLevelType\n }>(),\n {}\n)\n\nconst { getLogLevelOption } = useLogLevel()\nconst levelOption = computed(() => {\n return getLogLevelOption(props.level)\n})\n</script>\n\n<template>\n <AChipNoLink\n v-if=\"levelOption\"\n :color=\"levelOption.color\"\n >\n {{ levelOption.title }}\n </AChipNoLink>\n</template>\n"],"mappings":";;;;;;;;EAKA,IAAMQ,IAAQC,GAOR,EAAE,yBAAsBC,EAAY,GACpCC,IAAcC,QACXC,EAAkBL,EAAM,KAAK,CACrC;E,iBAKSG,EAAA,SADRX,EAAA,GAAAC,EAKcC,GAAA;;GAHX,OAAOS,EAAA,MAAY;;GAEpB,SAAAR,QAAuB,CAApBC,EAAAC,EAAAM,EAAA,MAAY,KAAK,GAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ALogListView.js","names":["
|
|
1
|
+
{"version":3,"file":"ALogListView.js","names":["ALogListView_vue_vue_type_script_setup_true_lang_default","ALogListView_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionEditor.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionEditor.js","names":["APermissionEditor_vue_vue_type_script_setup_true_lang_default","APermissionEditor_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionEditor.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","_component_VCard","_unref","_withCtx","_createVNode","_component_VCardText","_component_VTable","_createElementVNode","_toDisplayString","_createElementBlock","_createCommentVNode","_Fragment","_renderList","_createTextVNode","_component_VBtn","APermissionGrantEditor","APermissionValueChip","APermissionGrantEditor_default","APermissionValueChip_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","APermissionEditor_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","modelValue","useModel","useI18n","useAlerts","permissions","computed","cloneDeep","usePermissionConfigActions","changeGrant","permissionName","subject","action","isUndefined","grant","objectDeletePropertyByPath","objectSetValueByPath","getSelectedGrant","objectGetValueByPath","getAvailableGrants","grants","permissionConfig","RESTRICTIVE_GRANTS","Grant","isExplicitRestrictiveGrant","allowAllActions","keptRestrictiveGrantCount","showWarning","t","hasSuperAdminRole","ROLE_SUPER_ADMIN","getResolvedGrant","getGrantOrigin","GrantOrigin","GrantOriginDefault","openBlock","createBlock","VCard","unref","loadingPermissionConfig","withCtx","createVNode","VCardText","isPermissionConfigInitialized","VTable","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Fragment","renderList","permissionSubject","createTextVNode","translatePermission","VBtn","permissionAction","$event"],"sources":["../../../../src/domains/permission/components/APermissionEditor.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { ROLE_SUPER_ADMIN } from '@/domains/auth/composables/defineAuth'\nimport APermissionGrantEditor from '@/domains/permission/components/APermissionGrantEditor.vue'\nimport APermissionValueChip from '@/domains/permission/components/APermissionValueChip.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { Grant, type GrantType } from '@/domains/auth/valueObject/Grant'\nimport { GrantOrigin, GrantOriginDefault } from '@/domains/permission/valueObject/GrantOrigin'\nimport type { Permissions } from '@/domains/auth/types/Permission'\nimport { cloneDeep, isUndefined } from '@/shared/utils/common'\nimport { objectDeletePropertyByPath, objectGetValueByPath, objectSetValueByPath } from '@/shared/utils/object'\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n /** Which backend's permission vocabulary to draw. Never a global, see `permissionConfigActions`. */\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n /**\n * Grants the subject already has from roles and groups.\n * Undefined means the model is a group, not a user. The origin\n * column then attributes every explicit grant to the group itself.\n */\n resolvedPermissions?: Permissions | undefined\n roles?: string[]\n /** One component for detail and edit (decision 27). Readonly drops the grant column. */\n readonly?: boolean\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n resolvedPermissions: undefined,\n roles: () => [],\n readonly: false,\n }\n)\n\nconst modelValue = defineModel<Permissions>({ required: true })\n\nconst { t } = useI18n()\nconst { showWarning } = useAlerts()\n\n// A clone, because every mutation writes a whole object back through `modelValue`.\n// Editing in place would not trigger the parent's unsaved-changes watchers.\nconst permissions = computed(() => cloneDeep(modelValue.value))\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { permissionConfig, loadingPermissionConfig, isPermissionConfigInitialized, translatePermission } =\n usePermissionConfigActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst changeGrant = (subject: string, action: string, grant?: GrantType) => {\n const permissionName = subject + '_' + action\n if (isUndefined(grant) && Object.hasOwn(permissions.value, permissionName)) {\n objectDeletePropertyByPath(permissions.value, permissionName)\n modelValue.value = permissions.value\n return\n }\n objectSetValueByPath(permissions.value, permissionName, grant)\n modelValue.value = permissions.value\n}\n\nconst getSelectedGrant = (subject: string, action: string) => {\n return objectGetValueByPath(permissions.value, subject + '_' + action)\n}\n\nconst getAvailableGrants = (subject: string, action: string): GrantType[] => {\n const grants = objectGetValueByPath(permissionConfig.value.config, subject + '.' + action + '.grants')\n if (isUndefined(grants)) {\n return permissionConfig.value.defaultGrants\n }\n return grants\n}\n\nconst RESTRICTIVE_GRANTS: GrantType[] = [Grant.Deny, Grant.AllowOwner]\n\nconst isExplicitRestrictiveGrant = (subject: string, action: string) => {\n const permissionName = subject + '_' + action\n if (!Object.hasOwn(permissions.value, permissionName)) return false\n return RESTRICTIVE_GRANTS.includes(getSelectedGrant(subject, action))\n}\n\n/**\n * Allows every action in the subject, except actions explicitly set to deny or owner-only.\n * Those are left alone and their count is reported, so the button never widens a deliberate restriction.\n */\nconst allowAllActions = (subject: string) => {\n let keptRestrictiveGrantCount = 0\n for (const action of Object.keys(permissionConfig.value.config[subject]!)) {\n if (!getAvailableGrants(subject, action).includes(Grant.Allow)) continue\n if (isExplicitRestrictiveGrant(subject, action)) {\n keptRestrictiveGrantCount++\n continue\n }\n objectSetValueByPath(permissions.value, subject + '_' + action, Grant.Allow)\n }\n modelValue.value = permissions.value\n if (keptRestrictiveGrantCount > 0) {\n showWarning(\n t('common.permissionEditor.restrictiveGrantKept', { count: keptRestrictiveGrantCount }, keptRestrictiveGrantCount)\n )\n }\n}\n\nconst hasSuperAdminRole = computed(() => props.roles.includes(ROLE_SUPER_ADMIN))\n\nconst getResolvedGrant = (subject: string, action: string) => {\n if (hasSuperAdminRole.value) return Grant.Allow\n const permissionName = subject + '_' + action\n if (props.resolvedPermissions && Object.hasOwn(props.resolvedPermissions, permissionName)) {\n return objectGetValueByPath(props.resolvedPermissions, permissionName)\n }\n if (Object.hasOwn(permissions.value, permissionName)) {\n return objectGetValueByPath(permissions.value, permissionName)\n }\n return Grant.Deny\n}\n\nconst getGrantOrigin = (subject: string, action: string) => {\n if (hasSuperAdminRole.value) return GrantOrigin.Role\n const permissionName = subject + '_' + action\n if (isUndefined(props.resolvedPermissions)) {\n if (Object.hasOwn(permissions.value, permissionName)) return GrantOrigin.Group\n return GrantOriginDefault\n }\n if (Object.hasOwn(permissions.value, permissionName)) return GrantOrigin.User\n if (Object.hasOwn(props.resolvedPermissions, permissionName)) return GrantOrigin.Group\n return GrantOriginDefault\n}\n</script>\n\n<template>\n <VCard :loading=\"loadingPermissionConfig\">\n <VCardText>\n <VTable v-if=\"isPermissionConfigInitialized\">\n <thead>\n <tr>\n <th>{{ t('common.anzuUser.table.grants') }}</th>\n <th v-if=\"!readonly\">\n {{ t('common.anzuUser.table.permissions') }}\n </th>\n <th>{{ t('common.anzuUser.table.resolvedPermissions') }}</th>\n </tr>\n </thead>\n <tbody>\n <template\n v-for=\"permissionSubject in Object.keys(permissionConfig.config)\"\n :key=\"permissionSubject\"\n >\n <tr>\n <td\n :colspan=\"readonly ? 2 : 3\"\n class=\"text-headline-small font-weight-bold\"\n >\n {{ translatePermission('subjects', permissionSubject) }}\n <VBtn\n v-if=\"!readonly\"\n size=\"x-small\"\n variant=\"text\"\n class=\"ml-2\"\n :data-cy=\"`permission-allow-all-${permissionSubject}`\"\n @click=\"allowAllActions(permissionSubject)\"\n >\n {{ t('common.permissionEditor.allowAll') }}\n </VBtn>\n </td>\n </tr>\n <tr\n v-for=\"permissionAction in Object.keys(permissionConfig.config[permissionSubject]!)\"\n :key=\"permissionAction\"\n >\n <td>\n {{ translatePermission('actions', permissionAction) }}\n <div class=\"text-body-small text-disabled\">{{ permissionSubject }}_{{ permissionAction }}</div>\n </td>\n <td v-if=\"!readonly\">\n <APermissionGrantEditor\n :available-grants=\"getAvailableGrants(permissionSubject, permissionAction)\"\n :selected-grant=\"getSelectedGrant(permissionSubject, permissionAction)\"\n @change=\"changeGrant(permissionSubject, permissionAction, $event)\"\n />\n </td>\n <td>\n <APermissionValueChip\n :grant=\"getResolvedGrant(permissionSubject, permissionAction)\"\n :grant-origin=\"getGrantOrigin(permissionSubject, permissionAction)\"\n />\n </td>\n </tr>\n </template>\n </tbody>\n </VTable>\n </VCardText>\n </VCard>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"APermissionEditor.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","_component_VCard","_unref","_withCtx","_createVNode","_component_VCardText","_component_VTable","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createTextVNode","_component_VBtn","APermissionGrantEditor","APermissionValueChip","APermissionGrantEditor_default","APermissionValueChip_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","APermissionEditor_vue_vue_type_script_setup_true_lang_default","\"modelValue\"","\"modelModifiers\"","props","__props","modelValue","useModel","useI18n","useAlerts","permissions","computed","cloneDeep","usePermissionConfigActions","changeGrant","permissionName","subject","action","isUndefined","grant","objectDeletePropertyByPath","objectSetValueByPath","getSelectedGrant","objectGetValueByPath","getAvailableGrants","grants","permissionConfig","RESTRICTIVE_GRANTS","Grant","isExplicitRestrictiveGrant","allowAllActions","keptRestrictiveGrantCount","showWarning","t","hasSuperAdminRole","ROLE_SUPER_ADMIN","getResolvedGrant","getGrantOrigin","GrantOrigin","GrantOriginDefault","openBlock","createBlock","VCard","unref","loadingPermissionConfig","withCtx","createVNode","VCardText","isPermissionConfigInitialized","VTable","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Fragment","renderList","permissionSubject","createTextVNode","translatePermission","VBtn","permissionAction","$event"],"sources":["../../../../src/domains/permission/components/APermissionEditor.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useAlerts } from '@/domains/system/composables/alerts'\nimport { ROLE_SUPER_ADMIN } from '@/domains/auth/composables/defineAuth'\nimport APermissionGrantEditor from '@/domains/permission/components/APermissionGrantEditor.vue'\nimport APermissionValueChip from '@/domains/permission/components/APermissionValueChip.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport { usePermissionConfigActions } from '@/domains/permission/config/composables/permissionConfigActions'\nimport { Grant, type GrantType } from '@/domains/auth/valueObject/Grant'\nimport { GrantOrigin, GrantOriginDefault } from '@/domains/permission/valueObject/GrantOrigin'\nimport type { Permissions } from '@/domains/auth/types/Permission'\nimport { cloneDeep, isUndefined } from '@/shared/utils/common'\nimport { objectDeletePropertyByPath, objectGetValueByPath, objectSetValueByPath } from '@/shared/utils/object'\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n /** Which backend's permission vocabulary to draw. Never a global, see `permissionConfigActions`. */\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n /**\n * Grants the subject already has from roles and groups.\n * Undefined means the model is a group, not a user. The origin\n * column then attributes every explicit grant to the group itself.\n */\n resolvedPermissions?: Permissions | undefined\n roles?: string[]\n /** One component for detail and edit (decision 27). Readonly drops the grant column. */\n readonly?: boolean\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n resolvedPermissions: undefined,\n roles: () => [],\n readonly: false,\n }\n)\n\nconst modelValue = defineModel<Permissions>({ required: true })\n\nconst { t } = useI18n()\nconst { showWarning } = useAlerts()\n\n// A clone, because every mutation writes a whole object back through `modelValue`.\n// Editing in place would not trigger the parent's unsaved-changes watchers.\nconst permissions = computed(() => cloneDeep(modelValue.value))\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { permissionConfig, loadingPermissionConfig, isPermissionConfigInitialized, translatePermission } =\n usePermissionConfigActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n })\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst changeGrant = (subject: string, action: string, grant?: GrantType) => {\n const permissionName = subject + '_' + action\n if (isUndefined(grant) && Object.hasOwn(permissions.value, permissionName)) {\n objectDeletePropertyByPath(permissions.value, permissionName)\n modelValue.value = permissions.value\n return\n }\n objectSetValueByPath(permissions.value, permissionName, grant)\n modelValue.value = permissions.value\n}\n\nconst getSelectedGrant = (subject: string, action: string) => {\n return objectGetValueByPath(permissions.value, subject + '_' + action)\n}\n\nconst getAvailableGrants = (subject: string, action: string): GrantType[] => {\n const grants = objectGetValueByPath(permissionConfig.value.config, subject + '.' + action + '.grants')\n if (isUndefined(grants)) {\n return permissionConfig.value.defaultGrants\n }\n return grants\n}\n\nconst RESTRICTIVE_GRANTS: GrantType[] = [Grant.Deny, Grant.AllowOwner]\n\nconst isExplicitRestrictiveGrant = (subject: string, action: string) => {\n const permissionName = subject + '_' + action\n if (!Object.hasOwn(permissions.value, permissionName)) return false\n return RESTRICTIVE_GRANTS.includes(getSelectedGrant(subject, action))\n}\n\n/**\n * Allows every action in the subject, except actions explicitly set to deny or owner-only.\n * Those are left alone and their count is reported, so the button never widens a deliberate restriction.\n */\nconst allowAllActions = (subject: string) => {\n let keptRestrictiveGrantCount = 0\n for (const action of Object.keys(permissionConfig.value.config[subject]!)) {\n if (!getAvailableGrants(subject, action).includes(Grant.Allow)) continue\n if (isExplicitRestrictiveGrant(subject, action)) {\n keptRestrictiveGrantCount++\n continue\n }\n objectSetValueByPath(permissions.value, subject + '_' + action, Grant.Allow)\n }\n modelValue.value = permissions.value\n if (keptRestrictiveGrantCount > 0) {\n showWarning(\n t('common.permissionEditor.restrictiveGrantKept', { count: keptRestrictiveGrantCount }, keptRestrictiveGrantCount)\n )\n }\n}\n\nconst hasSuperAdminRole = computed(() => props.roles.includes(ROLE_SUPER_ADMIN))\n\nconst getResolvedGrant = (subject: string, action: string) => {\n if (hasSuperAdminRole.value) return Grant.Allow\n const permissionName = subject + '_' + action\n if (props.resolvedPermissions && Object.hasOwn(props.resolvedPermissions, permissionName)) {\n return objectGetValueByPath(props.resolvedPermissions, permissionName)\n }\n if (Object.hasOwn(permissions.value, permissionName)) {\n return objectGetValueByPath(permissions.value, permissionName)\n }\n return Grant.Deny\n}\n\nconst getGrantOrigin = (subject: string, action: string) => {\n if (hasSuperAdminRole.value) return GrantOrigin.Role\n const permissionName = subject + '_' + action\n if (isUndefined(props.resolvedPermissions)) {\n if (Object.hasOwn(permissions.value, permissionName)) return GrantOrigin.Group\n return GrantOriginDefault\n }\n if (Object.hasOwn(permissions.value, permissionName)) return GrantOrigin.User\n if (Object.hasOwn(props.resolvedPermissions, permissionName)) return GrantOrigin.Group\n return GrantOriginDefault\n}\n</script>\n\n<template>\n <VCard :loading=\"loadingPermissionConfig\">\n <VCardText>\n <VTable v-if=\"isPermissionConfigInitialized\">\n <thead>\n <tr>\n <th>{{ t('common.anzuUser.table.grants') }}</th>\n <th v-if=\"!readonly\">\n {{ t('common.anzuUser.table.permissions') }}\n </th>\n <th>{{ t('common.anzuUser.table.resolvedPermissions') }}</th>\n </tr>\n </thead>\n <tbody>\n <template\n v-for=\"permissionSubject in Object.keys(permissionConfig.config)\"\n :key=\"permissionSubject\"\n >\n <tr>\n <td\n :colspan=\"readonly ? 2 : 3\"\n class=\"text-headline-small font-weight-bold\"\n >\n {{ translatePermission('subjects', permissionSubject) }}\n <VBtn\n v-if=\"!readonly\"\n size=\"x-small\"\n variant=\"text\"\n class=\"ml-2\"\n :data-cy=\"`permission-allow-all-${permissionSubject}`\"\n @click=\"allowAllActions(permissionSubject)\"\n >\n {{ t('common.permissionEditor.allowAll') }}\n </VBtn>\n </td>\n </tr>\n <tr\n v-for=\"permissionAction in Object.keys(permissionConfig.config[permissionSubject]!)\"\n :key=\"permissionAction\"\n >\n <td>\n {{ translatePermission('actions', permissionAction) }}\n <div class=\"text-body-small text-disabled\">{{ permissionSubject }}_{{ permissionAction }}</div>\n </td>\n <td v-if=\"!readonly\">\n <APermissionGrantEditor\n :available-grants=\"getAvailableGrants(permissionSubject, permissionAction)\"\n :selected-grant=\"getSelectedGrant(permissionSubject, permissionAction)\"\n @change=\"changeGrant(permissionSubject, permissionAction, $event)\"\n />\n </td>\n <td>\n <APermissionValueChip\n :grant=\"getResolvedGrant(permissionSubject, permissionAction)\"\n :grant-origin=\"getGrantOrigin(permissionSubject, permissionAction)\"\n />\n </td>\n </tr>\n </template>\n </tbody>\n </VTable>\n </VCardText>\n </VCard>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGrantEditor.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGrantEditor.js","names":["APermissionGrantEditor_vue_vue_type_script_setup_true_lang_default","APermissionGrantEditor_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionValueChip.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionValueChip.js","names":["APermissionValueChip_vue_vue_type_script_setup_true_lang_default","APermissionValueChip_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionValueChip.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VChip","_withCtx","_createTextVNode","_toDisplayString","_unref","_createElementBlock","
|
|
1
|
+
{"version":3,"file":"APermissionValueChip.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_component_VChip","_withCtx","_createTextVNode","_toDisplayString","_unref","_createElementBlock","_hoisted_1","APermissionValueChip_vue_vue_type_script_setup_true_lang_default","props","__props","useGrant","grantOption","computed","getGrantOption","useGrantOrigin","grantOriginOption","getGrantOriginOption","openBlock","createBlock","VChip","withCtx","createTextVNode","toDisplayString","unref","GrantOriginDefault","createCommentVNode","createElementBlock"],"sources":["../../../../src/domains/permission/components/APermissionValueChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { type GrantType, useGrant } from '@/domains/auth/valueObject/Grant'\nimport { GrantOriginDefault, type GrantOriginType, useGrantOrigin } from '@/domains/permission/valueObject/GrantOrigin'\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n grant: GrantType\n grantOrigin: GrantOriginType\n}>()\n\nconst { getGrantOption } = useGrant()\nconst grantOption = computed(() => getGrantOption(props.grant))\n\nconst { getGrantOriginOption } = useGrantOrigin()\nconst grantOriginOption = computed(() => getGrantOriginOption(props.grantOrigin))\n</script>\n\n<template>\n <VChip\n v-if=\"grantOption\"\n :color=\"grantOption.color\"\n close-label=\"common.button.remove\"\n label\n size=\"small\"\n >\n {{ grantOption.title }}\n <span\n v-if=\"grantOrigin !== GrantOriginDefault\"\n class=\"ml-1\"\n >({{ grantOriginOption?.title }})</span\n >\n </VChip>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAKA,IAAMU,IAAQC,GAKR,EAAE,sBAAmBC,EAAS,GAC9BC,IAAcC,QAAeC,EAAeL,EAAM,KAAK,CAAC,GAExD,EAAE,4BAAyBM,EAAe,GAC1CC,IAAoBH,QAAeI,EAAqBR,EAAM,WAAW,CAAC;E,iBAKtEG,EAAA,SADRb,EAAA,GAAAC,EAaQC,GAAA;;GAXL,OAAOW,EAAA,MAAY;GACpB,eAAY;GACZ,OAAA;GACA,MAAK;;GAEL,SAAAV,QAAuB,CAApBC,EAAAC,EAAAQ,EAAA,MAAY,KAAK,IAAG,KACvB,CAAA,GACQF,EAAA,gBAAgBL,EAAAoB,CAAA,I,aADxB1B,EAAA,GAAAO,EAIC,QAJDC,GAGG,MAACH,EAAGY,EAAA,OAAmB,KAAK,IAAG,KAAC,CAAA,E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupDatatable.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGroupDatatable.js","names":["APermissionGroupDatatable_vue_vue_type_script_setup_true_lang_default","APermissionGroupDatatable_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","APermissionGroupFilter","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_unref","_isRef","_component_VDataTableServer","_withCtx","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","_Fragment","_renderSlot","_createCommentVNode","ATableCopyIdButton","_component_VBtn","_createBlock","ADatatablePagination","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","APermissionGroupFilter_default","_hoisted_1","_hoisted_2","APermissionGroupDatatable_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useI18n","usePermissionGroupListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","usePermissionGroupActions","useFilterHelpers","permissionGroupFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","datatableHiddenColumns","PERMISSION_GROUP_ENTITY","getList","useDebounceFn","fetchPermissionGroupList","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelPermissionGroupList","openBlock","createElementBlock","createVNode","createElementVNode","VSpacer","unref","columnsHidden","_cache","isRef","$event","columnsAll","VDataTableServer","columnsVisible","permissionGroupList","loadingPermissionGroupList","withCtx","VChip","createTextVNode","toDisplayString","_ctx","Fragment","renderSlot","createCommentVNode","VBtn","t","createBlock"],"sources":["../../../../../src/domains/permission/group/components/APermissionGroupDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onBeforeUnmount, onMounted, provide } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useDebounceFn } from '@vueuse/core'\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 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 { useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport APermissionGroupFilter from '@/domains/permission/group/components/APermissionGroupFilter.vue'\nimport { usePermissionGroupActions } from '@/domains/permission/group/composables/permissionGroupActions'\nimport { PERMISSION_GROUP_ENTITY } from '@/domains/permission/group/api/permissionGroupApi'\nimport {\n permissionGroupFilterStorageKey,\n usePermissionGroupListFilter,\n} from '@/domains/permission/group/filter/permissionGroupFilter'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { PermissionGroup } from '@/domains/permission/group/types/PermissionGroup'\n\ntype DatatableItem = PermissionGroup\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n /** Backend identity: keys the filter store and the cache, and reaches every api call. */\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n /** Where a row and the detail button go. The library cannot know an app's typed route names. */\n detailRoute: (permissionGroup: PermissionGroup) => RouteLocationRaw\n editRoute: (permissionGroup: PermissionGroup) => RouteLocationRaw\n /** Already-evaluated ACL, a boolean rather than an `AclValue`. */\n canUpdate?: boolean\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n canUpdate: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', permissionGroup: PermissionGroup): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = usePermissionGroupListFilter(props.system)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst {\n fetchPermissionGroupList,\n cancelPermissionGroupList,\n permissionGroupList,\n loadingPermissionGroupList,\n datatableHiddenColumns,\n} = usePermissionGroupActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n})\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: permissionGroupFilterStorageKey(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: 'title' },\n { key: 'description' },\n { key: 'permissions' },\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n PERMISSION_GROUP_ENTITY,\n { storeColumnsLocalStorage: `table_common_permissionGroup_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchPermissionGroupList(pagination, filterData, filterConfig)\n})\n\n// Named here, not inline in the template: the template would pass the unwrapped value of the `pagination` ref.\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 // Order matters: a pending debounce would otherwise fire after the abort and start a request\n // nothing is left to receive.\n getList.cancel()\n cancelPermissionGroupList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <APermissionGroupFilter\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n />\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=\"permissionGroupList\"\n :items-length=\"permissionGroupList.length\"\n :loading=\"loadingPermissionGroupList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <!--\n The user chip is per app: its cache, its route, its own `_system`.\n An app without one leaves the slot empty, and then no line break is rendered.\n -->\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 class=\"d-flex justify-end\">\n <ATableCopyIdButton :id=\"item.id\" />\n <!-- `:to` rather than a click handler, so middle-click and open-in-new-tab work. -->\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 </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":"APermissionGroupDatatable.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createElementBlock","_createVNode","APermissionGroupFilter","_createElementVNode","_component_VSpacer","ADatatableOrdering","ADatatableConfigButton","_unref","_isRef","_component_VDataTableServer","_withCtx","_component_VChip","_createTextVNode","_toDisplayString","ADatetime","_Fragment","_renderSlot","ATableCopyIdButton","_component_VBtn","_createBlock","ADatatablePagination","ADatatableConfigButton_default","ADatetime_default","ATableCopyIdButton_default","ADatatableOrdering_default","ADatatablePagination_default","APermissionGroupFilter_default","_hoisted_1","_hoisted_2","APermissionGroupDatatable_vue_vue_type_script_setup_true_lang_default","__expose","__emit","props","__props","emit","useI18n","usePermissionGroupListFilter","provide","FilterConfigKey","filterConfig","FilterDataKey","filterData","usePermissionGroupActions","useFilterHelpers","permissionGroupFilterStorageKey","usePagination","DatatablePaginationKey","pagination","createDatatableColumnsConfig","datatableHiddenColumns","PERMISSION_GROUP_ENTITY","getList","useDebounceFn","fetchPermissionGroupList","submitFilterAction","submitFilter","resetFilterAction","resetFilter","onRowClick","item","onMounted","onBeforeUnmount","cancelPermissionGroupList","openBlock","createElementBlock","createVNode","createElementVNode","VSpacer","unref","columnsHidden","_cache","isRef","$event","columnsAll","VDataTableServer","columnsVisible","permissionGroupList","loadingPermissionGroupList","withCtx","VChip","createTextVNode","toDisplayString","_ctx","Fragment","renderSlot","createCommentVNode","VBtn","t","createBlock"],"sources":["../../../../../src/domains/permission/group/components/APermissionGroupDatatable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { onBeforeUnmount, onMounted, provide } from 'vue'\nimport type { RouteLocationRaw } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { useDebounceFn } from '@vueuse/core'\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 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 { useFilterHelpers } from '@/domains/filters/composables/filterFactory'\nimport { DatatablePaginationKey, FilterConfigKey, FilterDataKey } from '@/domains/filters/utils/filterInjectionKeys'\nimport { usePagination } from '@/domains/api/composables/pagination'\nimport APermissionGroupFilter from '@/domains/permission/group/components/APermissionGroupFilter.vue'\nimport { usePermissionGroupActions } from '@/domains/permission/group/composables/permissionGroupActions'\nimport { PERMISSION_GROUP_ENTITY } from '@/domains/permission/group/api/permissionGroupApi'\nimport {\n permissionGroupFilterStorageKey,\n usePermissionGroupListFilter,\n} from '@/domains/permission/group/filter/permissionGroupFilter'\nimport { SORT_BY_ID } from '@/domains/filters/datatable/utils/datatableColumns'\nimport type { PermissionGroup } from '@/domains/permission/group/types/PermissionGroup'\n\ntype DatatableItem = PermissionGroup\n\nconst props = withDefaults(\n defineProps<{\n client: AxiosClientFn\n /** Backend identity: keys the filter store and the cache, and reaches every api call. */\n system: string\n entity?: string | undefined\n endPoint?: string | undefined\n /** Where a row and the detail button go. The library cannot know an app's typed route names. */\n detailRoute: (permissionGroup: PermissionGroup) => RouteLocationRaw\n editRoute: (permissionGroup: PermissionGroup) => RouteLocationRaw\n /** Already-evaluated ACL, a boolean rather than an `AclValue`. */\n canUpdate?: boolean\n }>(),\n {\n entity: undefined,\n endPoint: undefined,\n canUpdate: false,\n }\n)\n\nconst emit = defineEmits<{\n (e: 'rowClick', permissionGroup: PermissionGroup): void\n}>()\n\n/* eslint-disable vue/no-setup-props-reactivity-loss */\nconst { t } = useI18n()\nconst { filterConfig, filterData } = usePermissionGroupListFilter(props.system)\nprovide(FilterConfigKey, filterConfig)\nprovide(FilterDataKey, filterData)\n\nconst {\n fetchPermissionGroupList,\n cancelPermissionGroupList,\n permissionGroupList,\n loadingPermissionGroupList,\n datatableHiddenColumns,\n} = usePermissionGroupActions({\n client: props.client,\n system: props.system,\n entity: props.entity,\n endPoint: props.endPoint,\n})\n\nconst { resetFilter, submitFilter, loadStoredFilters } = useFilterHelpers(filterData, filterConfig, {\n storeFiltersLocalStorage: permissionGroupFilterStorageKey(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: 'title' },\n { key: 'description' },\n { key: 'permissions' },\n { key: 'createdAt' },\n { key: 'modifiedAt' },\n ],\n datatableHiddenColumns,\n 'common',\n PERMISSION_GROUP_ENTITY,\n { storeColumnsLocalStorage: `table_common_permissionGroup_${props.system}` }\n)\n/* eslint-enable vue/no-setup-props-reactivity-loss */\n\nconst getList = useDebounceFn(async () => {\n await fetchPermissionGroupList(pagination, filterData, filterConfig)\n})\n\n// Named here, not inline in the template: the template would pass the unwrapped value of the `pagination` ref.\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 // Order matters: a pending debounce would otherwise fire after the abort and start a request\n // nothing is left to receive.\n getList.cancel()\n cancelPermissionGroupList()\n})\n\ndefineExpose({\n refresh: getList,\n resetFilter: resetFilterAction,\n submitFilter: submitFilterAction,\n})\n</script>\n\n<template>\n <div>\n <APermissionGroupFilter\n @submit=\"submitFilterAction\"\n @reset=\"resetFilterAction\"\n />\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=\"permissionGroupList\"\n :items-length=\"permissionGroupList.length\"\n :loading=\"loadingPermissionGroupList\"\n item-value=\"id\"\n @click:row=\"onRowClick\"\n >\n <template #item.permissions=\"{ item }: { item: DatatableItem }\">\n <VChip>{{ Object.keys(item.permissions).length }}</VChip>\n </template>\n <template #item.createdAt=\"{ item }: { item: DatatableItem }\">\n <ADatetime :date-time=\"item.createdAt\" />\n <!--\n The user chip is per app: its cache, its route, its own `_system`.\n An app without one leaves the slot empty, and then no line break is rendered.\n -->\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 class=\"d-flex justify-end\">\n <ATableCopyIdButton :id=\"item.id\" />\n <!-- `:to` rather than a click handler, so middle-click and open-in-new-tab work. -->\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 </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":"APermissionGroupDetail.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGroupDetail.js","names":["APermissionGroupDetail_vue_vue_type_script_setup_true_lang_default","APermissionGroupDetail_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupFilter.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGroupFilter.js","names":["APermissionGroupFilter_vue_vue_type_script_setup_true_lang_default","APermissionGroupFilter_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupManage.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGroupManage.js","names":["APermissionGroupManage_vue_vue_type_script_setup_true_lang_default","APermissionGroupManage_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupManage.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","ASystemEntityScope","_unref","_withCtx","_createVNode","_component_VRow","_component_VCol","_component_VCard","_component_VCardText","AFormTextField","APermissionEditor","_renderSlot","
|
|
1
|
+
{"version":3,"file":"APermissionGroupManage.vue_vue_type_script_setup_true_lang.js","names":["$slots","_openBlock","_createBlock","ASystemEntityScope","_unref","_withCtx","_createVNode","_component_VRow","_component_VCol","_component_VCard","_component_VCardText","AFormTextField","APermissionEditor","_renderSlot","AFormTextField_default","ASystemEntityScope_default","APermissionEditor_default","APermissionGroupManage_vue_vue_type_script_setup_true_lang_default","storeToRefs","usePermissionGroupOneStore","usePermissionGroupValidation","permissionGroup","openBlock","createBlock","unref","PERMISSION_GROUP_ENTITY","withCtx","createVNode","VRow","VCol","VCard","VCardText","_cache","$event","v$","__props","_ctx","renderSlot","createCommentVNode"],"sources":["../../../../../src/domains/permission/group/components/APermissionGroupManage.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { storeToRefs } from 'pinia'\nimport AFormTextField from '@/domains/form/components/AFormTextField.vue'\nimport ASystemEntityScope from '@/domains/form/components/ASystemEntityScope.vue'\nimport type { AxiosClientFn } from '@/domains/api/utils/client'\nimport APermissionEditor from '@/domains/permission/components/APermissionEditor.vue'\nimport { usePermissionGroupValidation } from '@/domains/permission/group/composables/permissionGroupValidations'\nimport { PERMISSION_GROUP_ENTITY } from '@/domains/permission/group/api/permissionGroupApi'\nimport { usePermissionGroupOneStore } from '@/domains/permission/group/store/permissionGroupStore'\n\ndefineProps<{\n client: AxiosClientFn\n /** Backend identity for the permission config fetch, not the i18n namespace below. */\n system: string\n /**\n * Where the grants editor reads the permission config. Defaults to `GET /adm/v1/permissions/config`.\n * Deliberately not named `endPoint`: a page once passed the permission-group endpoint as `endPoint`.\n * The editor then fetched the group list as config and crashed, and\n * the per-system config store left user pages broken until reload.\n */\n permissionConfigEndPoint?: string | undefined\n}>()\n\nconst { permissionGroup } = storeToRefs(usePermissionGroupOneStore())\nconst { v$ } = usePermissionGroupValidation(permissionGroup)\n</script>\n\n<template>\n <!--\n `common` / `permissionGroup` is the library's translation\n namespace for the field labels, the same for every backend.\n The backend identity is passed in `system` above.\n -->\n <ASystemEntityScope\n system=\"common\"\n :subject=\"PERMISSION_GROUP_ENTITY\"\n >\n <VRow>\n <VCol cols=\"12\">\n <VCard>\n <VCardText>\n <AFormTextField\n v-model=\"permissionGroup.title\"\n :v=\"v$.permissionGroup.title\"\n data-cy=\"permissionGroup-title\"\n />\n <AFormTextField\n v-model=\"permissionGroup.description\"\n :v=\"v$.permissionGroup.description\"\n data-cy=\"permissionGroup-description\"\n />\n </VCardText>\n </VCard>\n </VCol>\n <VCol cols=\"12\">\n <APermissionEditor\n v-model=\"permissionGroup.permissions\"\n :client=\"client\"\n :system=\"system\"\n :end-point=\"permissionConfigEndPoint\"\n />\n </VCol>\n <VCol\n v-if=\"$slots.tracking\"\n cols=\"12\"\n >\n <!-- Created/modified by whom: each app resolves users against its own cache and routes. -->\n <slot\n name=\"tracking\"\n :permission-group=\"permissionGroup\"\n />\n </VCol>\n </VRow>\n </ASystemEntityScope>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAuBA,IAAM,EAAE,uBAAoBkB,EAAYC,EAA2B,CAAC,GAC9D,EAAE,UAAOC,EAA6BC,CAAe;E,kBASzDpB,EAAA,GAAAC,EAwCqBC,GAAA;GAvCnB,QAAO;GACN,SAASC,EAAAqB,CAAA;;GAEV,SAAApB,QAmCO,CAnCPC,EAmCOC,GAAA,MAAA;IAlCL,SAAAF,QAeO;KAfPC,EAeOE,GAAA,EAfD,MAAK,KAAI,GAAA;MACb,SAAAH,QAaQ,CAbRC,EAaQG,GAAA,MAAA;OAZN,SAAAJ,QAWY,CAXZC,EAWYI,GAAA,MAAA;QAVV,SAAAL,QAIE,CAJFC,EAIEK,GAAA;SAHS,YAAAP,EAAAiB,CAAA,CAAe,CAAC;SAAhB,uBAAA,AAAAW,EAAA,QAAA,MAAA,EAAAX,CAAA,CAAe,CAAC,QAAKY;SAC7B,GAAG7B,EAAA8B,CAAA,CAAE,CAAC,gBAAgB;SACvB,WAAQ;Q,kCAEV5B,EAIEK,GAAA;SAHS,YAAAP,EAAAiB,CAAA,CAAe,CAAC;SAAhB,uBAAA,AAAAW,EAAA,QAAA,MAAA,EAAAX,CAAA,CAAe,CAAC,cAAWY;SACnC,GAAG7B,EAAA8B,CAAA,CAAE,CAAC,gBAAgB;SACvB,WAAQ;;;;;;;;KAKhB5B,EAOOE,GAAA,EAPD,MAAK,KAAI,GAAA;MACb,SAAAH,QAKE,CALFC,EAKEM,GAAA;OAJS,YAAAR,EAAAiB,CAAA,CAAe,CAAC;OAAhB,uBAAA,AAAAW,EAAA,QAAA,MAAA,EAAAX,CAAA,CAAe,CAAC,cAAWY;OACnC,QAAQE,EAAA;OACR,QAAQA,EAAA;OACR,aAAWA,EAAA;;;;;;;;;KAIRnC,EAAAA,OAAO,YADfC,EAAA,GAAAC,EASOM,GAAA;;MAPL,MAAK;;MAGL,SAAAH,QAGE,CAHFQ,EAGEuB,EAAA,QAAA,YAAA,EADC,iBAAkBhC,EAAAiB,CAAA,EAAe,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APermissionGroupRemoteAutocomplete.js","names":["
|
|
1
|
+
{"version":3,"file":"APermissionGroupRemoteAutocomplete.js","names":["APermissionGroupRemoteAutocomplete_vue_vue_type_script_setup_true_lang_default","APermissionGroupRemoteAutocomplete_default"],"sources":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AFilterRemoteAutocomplete.js","names":["_sfc_main","AFilterRemoteAutocomplete_vue_vue_type_script_setup_true_lang_default","AFilterRemoteAutocomplete_default"],"sources":["../../../../src/domains/remoteAutocomplete/components/AFilterRemoteAutocomplete.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T extends string | number\">\nimport { watchDebounced } from '@vueuse/core'\nimport { computed, getCurrentInstance, inject, type Ref, ref, watch } from 'vue'\nimport type { ValueObjectOption } from '@/shared/types/ValueObject'\nimport { isArray, isBoolean, isEmpty, isNull, isUndefined } from '@/shared/utils/common'\nimport { useI18n } from 'vue-i18n'\nimport { type FilterConfig, type FilterData, useFilterClearHelpers } from '@/domains/filters/composables/filterFactory'\nimport {\n FilterConfigKey,\n FilterDataKey,\n FilterInnerConfigKey,\n FilterInnerDataKey,\n FilterSelectedKey,\n FilterSubmitResetCounterKey,\n} from '@/domains/filters/utils/filterInjectionKeys'\nimport type { DatatableSortBy } from '@/domains/filters/datatable/utils/datatableColumns'\nimport { type Pagination, usePagination } from '@/domains/api/composables/pagination'\nimport { useAlerts } from '@/domains/system/composables/alerts'\n\ntype ModelValueType = T | T[] | null | undefined\n\nconst props = withDefaults(\n defineProps<{\n name: string\n fetchItems: (\n pagination: Ref<Pagination>,\n filterData: FilterData,\n filterConfig: FilterConfig\n ) => Promise<ValueObjectOption<T>[]>\n fetchItemsByIds: (ids: T[]) => Promise<ValueObjectOption<T>[]>\n filterByField: string\n filterSortBy?: DatatableSortBy\n prefetch?: 'hover' | 'focus' | 'mounted' | false\n minSearchChars?: number\n minSearchText?: string | undefined\n placeholder?: string | undefined\n }>(),\n {\n filterSortBy: null,\n prefetch: false,\n minSearchChars: 2,\n minSearchText: undefined,\n placeholder: undefined,\n }\n)\nconst emit = defineEmits<{\n (e: 'change'): void\n}>()\n\nconst submitResetCounter = inject(FilterSubmitResetCounterKey)\nconst filterSelected = inject(FilterSelectedKey)\nconst filterConfig = inject(FilterConfigKey)\nconst filterData = inject(FilterDataKey)\nconst filterInnerConfig = inject(FilterInnerConfigKey)\nconst filterInnerData = inject(FilterInnerDataKey)\n\nconst componentName = getCurrentInstance()?.type.__name\n\nif (\n isUndefined(submitResetCounter) ||\n isUndefined(filterSelected) ||\n isUndefined(filterData) ||\n isUndefined(filterConfig) ||\n // eslint-disable-next-line vue/no-setup-props-reactivity-loss\n isUndefined(filterConfig.fields[props.name]) ||\n isUndefined(filterInnerConfig) ||\n isUndefined(filterInnerData)\n) {\n throw new Error(`[${componentName}] Incorrect provide/inject config.`)\n}\n\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst filterByFieldProp = props.filterByField\n// eslint-disable-next-line vue/no-setup-props-reactivity-loss\nconst filterSortByProp = props.filterSortBy\n\nif (isUndefined(filterInnerConfig.fields[filterByFieldProp]) || isUndefined(filterInnerData[filterByFieldProp])) {\n throw new Error(\n `[${componentName}] Incorrect filter inner config. ` +\n `FilterByField is '${filterByFieldProp}' and available options are ${Object.keys(filterInnerData).join(', ')}.`\n )\n}\n\nconst filterConfigCurrent = computed(() => filterConfig.fields[props.name]!)\n\nconst SEARCH_DEBOUNCE_MS = 300\n\nconst selected = ref<any>([])\nconst search = ref('')\nconst isFocused = ref(false)\nconst modelValueAutocomplete = ref<ValueObjectOption<T> | ValueObjectOption<T>[] | null>(null)\nconst apiRequestCounter = ref(0)\n\nconst { t } = useI18n()\n\nconst onBlur = () => {\n isFocused.value = false\n}\n\nconst label = computed(() => {\n return filterConfigCurrent.value.titleT ? t(filterConfigCurrent.value.titleT) : undefined\n})\n\nconst { pagination } = usePagination(isNull(filterSortByProp) ? null : filterSortByProp.key, filterSortByProp?.order)\n\nconst fetchedItems = ref<ValueObjectOption<T>[]>([])\nconst selectedItemsCache = ref<ValueObjectOption<T>[]>([])\nconst isFirstLoad = ref(true)\nconst prefetchCompleted = ref(false)\n\nconst allItems = computed<ValueObjectOption<T>[]>(() => {\n const itemsMap = new Map<T, ValueObjectOption<T>>()\n const addToMap = (items: ValueObjectOption<T>[]) => {\n items.forEach((item) => {\n itemsMap.set(item.value, {\n value: item.value,\n title: item.title,\n subtitle: item.subtitle,\n } as ValueObjectOption<T>)\n })\n }\n\n addToMap(selectedItemsCache.value as ValueObjectOption<T>[])\n addToMap(fetchedItems.value as ValueObjectOption<T>[])\n\n return Array.from(itemsMap.values())\n})\n\n// Counts running requests (by ids, search, prefetch). The spinner stays on until the last one ends.\n// A single flag let a read by ids hide the spinner of a search still running, and the reverse.\nconst requestsRunning = ref(0)\nconst loading = computed(() => requestsRunning.value > 0)\n\nlet byIdsCounter = 0\nconst resetToEmptyState = (value: ModelValueType) => {\n byIdsCounter++\n selectedItemsCache.value = []\n selected.value = isArray(value) ? [] : null\n modelValueAutocomplete.value = isArray(value) ? [] : null\n updateFilterSelected(selected.value)\n}\n\nconst updateSelected = (value: T[] | T) => {\n const findItem = (id: T): ValueObjectOption<T> =>\n allItems.value.find((obj) => obj.value === id) ?? ({ title: `${id}`, value: id } as ValueObjectOption<T>)\n return isArray(value) ? value.map(findItem) : findItem(value)\n}\n\nconst loadListItems = async (ids: T[] | T) => {\n const requestId = ++byIdsCounter\n requestsRunning.value++\n\n try {\n const idsArray = isArray(ids) ? ids : [ids]\n try {\n const res = await props.fetchItemsByIds(idsArray)\n if (requestId !== byIdsCounter) return selectedItemsCache.value\n selectedItemsCache.value = res\n const selectedNewValue = updateSelected(ids)\n selected.value = selectedNewValue\n modelValueAutocomplete.value = selectedNewValue\n updateFilterSelected(selected.value)\n } catch (e) {\n showErrorsDefault(e)\n }\n return selectedItemsCache.value\n } finally {\n requestsRunning.value--\n }\n}\n\nconst { showErrorsDefault } = useAlerts()\n\nconst apiSearch = async (query: string, requestCounter: number) => {\n requestsRunning.value++\n filterInnerData[filterByFieldProp] = query\n try {\n const res = await props.fetchItems(pagination, filterInnerData, filterInnerConfig)\n if (requestCounter === apiRequestCounter.value) fetchedItems.value = res\n } catch (error) {\n showErrorsDefault(error)\n } finally {\n requestsRunning.value--\n }\n}\n\nconst tryAutoFetch = async (mode: 'focus' | 'hover' | 'mounted') => {\n if (props.prefetch === false || props.prefetch !== mode) return\n if (loading.value) return\n if (prefetchCompleted.value) return\n\n requestsRunning.value++\n try {\n const res = await props.fetchItems(pagination, filterInnerData, filterInnerConfig)\n if (apiRequestCounter.value === 0) {\n fetchedItems.value = res\n }\n prefetchCompleted.value = true\n } catch (e) {\n showErrorsDefault(e)\n } finally {\n requestsRunning.value--\n }\n}\n\nconst onFocus = async () => {\n isFocused.value = true\n await tryAutoFetch('focus')\n}\n\nconst onMouseEnter = async () => {\n await tryAutoFetch('hover')\n}\n\nconst singleItemSelectedTitle = computed(() => {\n if (!filterConfigCurrent.value.multiple && selectedItemsCache.value[0]) {\n return selectedItemsCache.value[0].title\n }\n return undefined\n})\n\n// Clearing the field first emits a `null` search. Reading its length threw when the field had no focus.\nconst onSearchUpdate = (query: string | null) => {\n const text = query ?? ''\n if (!filterConfigCurrent.value.multiple && !isFocused.value && text.length === 0) return // vuetify fix\n if (singleItemSelectedTitle.value === text) return\n search.value = text\n}\n\nconst { clearOne } = useFilterClearHelpers()\n\n/** The value of the filter its watcher (below) saw last. */\nlet watchedValue: unknown\n\nconst clearField = () => {\n clearOne(props.name, filterData, filterConfig)\n filterSelected.value.delete(props.name)\n}\n\n// Clearing empties the filter in one step, so the filter watcher\n// fetches once for an empty search and keeps only the newest answer.\n// A single-value filter cleared onto its own default does not\n// change, so its watcher does nothing. Its item is restored here.\n// A clear that ends on a default value fetches the empty search here\n// through the counter, because the watcher only fetches for an empty value.\nconst onClickClear = () => {\n clearField()\n const value = filterData[props.name]\n if (isEmpty(value)) return\n if (value === watchedValue) loadListItems(value as T[] | T)\n apiRequestCounter.value++\n apiSearch('', apiRequestCounter.value)\n}\n\nwatchDebounced(\n search,\n (newValue: string | null, oldValue: string | null) => {\n const query = newValue ?? ''\n if (query === (oldValue ?? '')) return\n if (query.length > 0 && query.length < props.minSearchChars) return\n if (query.length === 0 && props.prefetch === false) {\n fetchedItems.value = []\n return\n }\n apiRequestCounter.value++\n apiSearch(query, apiRequestCounter.value)\n },\n { debounce: SEARCH_DEBOUNCE_MS }\n)\n\nconst checkFirstLoad = async () => {\n await tryAutoFetch('mounted')\n}\n\nconst placeholderComputed = computed(() => {\n if (!isUndefined(props.placeholder)) return props.placeholder\n if (filterConfigCurrent.value.variant === 'startsWith') return t('common.model.filterPlaceholder.startsWith')\n if (filterConfigCurrent.value.variant === 'eq') return t('common.model.filterPlaceholder.eq')\n if (filterConfigCurrent.value.variant === 'search') return t('common.model.filterPlaceholder.contains')\n return ''\n})\n\nconst noDataText = computed(() => {\n if (loading.value) {\n return '$vuetify.loading'\n }\n if (fetchedItems.value.length === 0 && search.value.length < props.minSearchChars) {\n return isUndefined(props.minSearchText)\n ? t('common.filter.filterMinChars', { min: props.minSearchChars })\n : props.minSearchText\n }\n return undefined\n})\n\nconst onSelectedUpdate = (newValue: any) => {\n filterConfig.touched = true\n let final: null | string | number | string[] | number[] = null\n if (isArray(newValue)) {\n final = newValue.map((item: any) => item.value) as string[] | number[]\n } else if (!isNull(newValue)) {\n final = newValue.value\n }\n filterData[props.name] = final\n emit('change')\n}\n\n// Closing a chip (`closable-chips`) removes its value from the filter, like unticking it in the list.\n// A single-value filter is cleared like the field's clear, since the chip slot draws its value as a chip too.\nconst onChipCloseClick = (closedItem: ValueObjectOption<T>) => {\n if (!isArray(selected.value)) {\n selected.value = null\n onSelectedUpdate(null)\n onClickClear()\n return\n }\n selected.value = (selected.value as ValueObjectOption<T>[]).filter((item) => item.value !== closedItem.value)\n onSelectedUpdate(selected.value)\n}\n\nconst updateFilterSelected = (\n newValue: ValueObjectOption<string | number> | ValueObjectOption<string | number>[] | null\n) => {\n filterSelected.value.delete(props.name)\n if ((isArray(newValue) && newValue.length === 0) || isNull(newValue)) {\n filterSelected.value.delete(props.name)\n return\n }\n if (isArray(newValue)) {\n filterSelected.value.set(\n props.name,\n newValue.map((item) => ({ title: item.title, value: item.value }))\n )\n return\n }\n filterSelected.value.set(props.name, [{ title: newValue.title, value: newValue.value }])\n}\n\nwatch(\n () => filterData[props.name],\n async (newValueFilterData, oldValueFilterData) => {\n watchedValue = newValueFilterData\n if (newValueFilterData === oldValueFilterData || isBoolean(newValueFilterData)) return\n const newValue = newValueFilterData as ModelValueType\n if (isFirstLoad.value) {\n isFirstLoad.value = false\n await checkFirstLoad()\n }\n if (isEmpty(newValue)) {\n resetToEmptyState(newValue)\n if (!isUndefined(oldValueFilterData)) {\n apiRequestCounter.value++\n await apiSearch('', apiRequestCounter.value)\n }\n return\n }\n await loadListItems(newValue as T[] | T)\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <VAutocomplete\n v-model=\"selected\"\n :items=\"allItems\"\n no-filter\n :placeholder=\"placeholderComputed\"\n :multiple=\"filterConfigCurrent.multiple\"\n :clearable=\"!filterConfigCurrent.mandatory\"\n :label=\"label\"\n :chips=\"filterConfigCurrent.multiple\"\n :loading=\"loading\"\n hide-details\n return-object\n autocomplete=\"off\"\n :no-data-text=\"noDataText\"\n @update:search=\"onSearchUpdate\"\n @update:model-value=\"onSelectedUpdate\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @mouseenter=\"onMouseEnter\"\n @click:clear=\"onClickClear\"\n >\n <template\n v-if=\"loading\"\n #no-data\n >\n <VListItem :title=\"t('$vuetify.loading')\" />\n </template>\n <template #item=\"{ props: itemProps, internalItem }\">\n <VListItem\n v-bind=\"itemProps\"\n :title=\"internalItem.raw.title\"\n :subtitle=\"internalItem.raw.subtitle\"\n />\n </template>\n <template #chip=\"{ props: chipProps, internalItem }\">\n <VChip\n :closable=\"chipProps.closable as boolean\"\n close-label=\"common.button.remove\"\n size=\"small\"\n :text=\"`${internalItem.title} (${internalItem.raw.subtitle})`\"\n :disabled=\"internalItem.props.disabled\"\n @click:close=\"onChipCloseClick(internalItem.raw)\"\n >\n {{ internalItem.raw.title }}\n <span\n v-if=\"internalItem.raw.subtitle\"\n class=\"font-italic pl-1\"\n >\n ({{ internalItem.raw.subtitle }})\n </span>\n </VChip>\n </template>\n </VAutocomplete>\n</template>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"AFilterRemoteAutocomplete.js","names":["AFilterRemoteAutocomplete_vue_vue_type_script_setup_true_lang_default","AFilterRemoteAutocomplete_default"],"sources":[],"mappings":""}
|