@umbraco-cms/backoffice 16.0.0-rc2 → 16.0.0-rc4
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-cms/apps/backoffice/backoffice.context.js +5 -1
- package/dist-cms/apps/backoffice/components/backoffice-main.element.js +3 -1
- package/dist-cms/css/uui-css.css +438 -108
- package/dist-cms/custom-elements.json +100 -15
- package/dist-cms/external/uui/index.js +370 -336
- package/dist-cms/libs/context-api/consume/context-consumer.js +1 -2
- package/dist-cms/libs/controller-api/controller-host.mixin.js +2 -2
- package/dist-cms/packages/block/block/context/block-entry.context.js +10 -3
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-properties.element.d.ts +1 -1
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-properties.element.js +7 -7
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.js +1 -1
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.js +1 -0
- package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +2 -1
- package/dist-cms/packages/block/block-type/components/input-block-type/input-block-type.element.js +1 -2
- package/dist-cms/packages/clipboard/property/value-translator/copy/clipboard-copy-translator-value-resolver.js +6 -1
- package/dist-cms/packages/content/content/components/property-type-based-property/index.d.ts +2 -0
- package/dist-cms/packages/content/content/components/property-type-based-property/index.js +2 -0
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context-token.d.ts +8 -0
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context-token.js +7 -0
- package/dist-cms/packages/content/content/{content-property.context.d.ts → components/property-type-based-property/property-type-based-property.context.d.ts} +6 -1
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context.js +19 -0
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.d.ts +1 -1
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.js +8 -7
- package/dist-cms/packages/content/content/controller/merge-content-variant-data.controller.js +1 -0
- package/dist-cms/packages/content/content/global-components/content-workspace-property.element.d.ts +26 -0
- package/dist-cms/packages/content/content/global-components/content-workspace-property.element.js +104 -0
- package/dist-cms/packages/content/content/global-components/index.d.ts +1 -0
- package/dist-cms/packages/content/content/global-components/index.js +1 -0
- package/dist-cms/packages/content/content/index.d.ts +1 -2
- package/dist-cms/packages/content/content/index.js +1 -2
- package/dist-cms/packages/content/content/property-dataset-context/element-property-dataset.context.js +4 -1
- package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +6 -1
- package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.d.ts +1 -3
- package/dist-cms/packages/content/content/workspace/views/edit/content-editor-properties.element.js +8 -48
- package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.js +1 -0
- package/dist-cms/packages/content/content-type/structure/content-type-property-structure-helper.class.d.ts +1 -0
- package/dist-cms/packages/content/content-type/structure/content-type-property-structure-helper.class.js +1 -0
- package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +1 -0
- package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +3 -3
- package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor.element.js +11 -7
- package/dist-cms/packages/content/property-type/workspace/property-type-workspace.context.js +5 -1
- package/dist-cms/packages/core/backend-api/types.gen.d.ts +2 -0
- package/dist-cms/packages/core/collection/collection-view.manager.js +4 -4
- package/dist-cms/packages/core/collection/default/collection-default.context.d.ts +1 -0
- package/dist-cms/packages/core/collection/default/collection-default.context.js +3 -0
- package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +4 -1
- package/dist-cms/packages/core/components/input-number-range/input-number-range.element.d.ts +4 -1
- package/dist-cms/packages/core/components/input-number-range/input-number-range.element.js +27 -3
- package/dist-cms/packages/core/components/input-with-alias/input-with-alias.element.js +0 -2
- package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
- package/dist-cms/packages/core/entity-action/common/create/create.action.js +1 -0
- package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.d.ts +9 -0
- package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.js +80 -2
- package/dist-cms/packages/core/picker/search/picker-search-result.element.js +1 -2
- package/dist-cms/packages/core/property/manifests.d.ts +1 -1
- package/dist-cms/packages/core/property/property-dataset/property-dataset-base-context.js +7 -2
- package/dist-cms/packages/core/property/property-guard-manager/variant-property-guard.manager.d.ts +15 -2
- package/dist-cms/packages/core/property/property-guard-manager/variant-property-guard.manager.js +22 -15
- package/dist-cms/packages/core/property/property-value-cloner/property-value-clone.controller.js +2 -0
- package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.js +6 -1
- package/dist-cms/packages/core/repository/detail/detail-repository-base.js +6 -7
- package/dist-cms/packages/core/repository/item/item-repository-base.d.ts +1 -1
- package/dist-cms/packages/core/repository/item/item-repository-base.js +25 -9
- package/dist-cms/packages/core/repository/item/item-repository.interface.d.ts +1 -1
- package/dist-cms/packages/core/router/router-slot/model.d.ts +1 -0
- package/dist-cms/packages/core/router/router-slot/router-slot.d.ts +1 -0
- package/dist-cms/packages/core/router/router-slot/router-slot.js +30 -0
- package/dist-cms/packages/core/section/section-default.element.js +3 -0
- package/dist-cms/packages/core/temporary-file/config/config.repository.d.ts +1 -0
- package/dist-cms/packages/core/temporary-file/config/config.repository.js +7 -3
- package/dist-cms/packages/core/temporary-file/config/config.server.data-source.js +1 -1
- package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
- package/dist-cms/packages/core/temporary-file/temporary-file-manager.class.js +15 -4
- package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
- package/dist-cms/packages/core/tree/data/tree-repository-base.d.ts +5 -1
- package/dist-cms/packages/core/tree/data/tree-repository-base.js +27 -13
- package/dist-cms/packages/core/tree/tree-item/tree-item.element.js +1 -1
- package/dist-cms/packages/core/utils/media/image-size.function.d.ts +5 -3
- package/dist-cms/packages/core/utils/media/image-size.function.js +9 -11
- package/dist-cms/packages/core/validation/controllers/bind-server-validation-to-form-control.controller.js +1 -1
- package/dist-cms/packages/core/validation/controllers/form-control-validator.controller.js +4 -4
- package/dist-cms/packages/core/validation/controllers/validation-path-translation/validation-property-path-translation.controller.js +1 -0
- package/dist-cms/packages/core/validation/controllers/validation.controller.js +5 -5
- package/dist-cms/packages/core/variant/constants.d.ts +1 -0
- package/dist-cms/packages/core/variant/constants.js +1 -0
- package/dist-cms/packages/core/variant/context/constants.d.ts +1 -0
- package/dist-cms/packages/core/variant/context/constants.js +1 -0
- package/dist-cms/packages/core/variant/context/index.d.ts +1 -0
- package/dist-cms/packages/core/variant/context/index.js +1 -0
- package/dist-cms/packages/core/variant/context/variant.context.d.ts +91 -0
- package/dist-cms/packages/core/variant/context/variant.context.js +141 -0
- package/dist-cms/packages/core/variant/context/variant.context.token.d.ts +3 -0
- package/dist-cms/packages/core/variant/context/variant.context.token.js +2 -0
- package/dist-cms/packages/core/variant/index.d.ts +2 -0
- package/dist-cms/packages/core/variant/index.js +2 -0
- package/dist-cms/packages/core/workspace/components/workspace-action/common/save/save.action.js +3 -1
- package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +2 -2
- package/dist-cms/packages/core/workspace/controllers/workspace-is-new-redirect.controller.d.ts +7 -0
- package/dist-cms/packages/core/workspace/controllers/workspace-is-new-redirect.controller.js +31 -10
- package/dist-cms/packages/core/workspace/controllers/workspace-route-manager.controller.js +5 -5
- package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +1 -1
- package/dist-cms/packages/core/workspace/info-app/global-components/workspace-info-app-layout.element.js +0 -4
- package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.d.ts +1 -0
- package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.js +10 -0
- package/dist-cms/packages/core/workspace/workspace-property-dataset/invariant-workspace-property-dataset-context.js +4 -1
- package/dist-cms/packages/data-type/collection/repository/data-type-collection.repository.js +6 -1
- package/dist-cms/packages/data-type/constants.d.ts +1 -0
- package/dist-cms/packages/data-type/constants.js +1 -0
- package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.js +6 -1
- package/dist-cms/packages/data-type/search/constants.d.ts +2 -0
- package/dist-cms/packages/data-type/search/constants.js +2 -0
- package/dist-cms/packages/data-type/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/data-type/search/global-search/constants.js +1 -0
- package/dist-cms/packages/data-type/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/data-type/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/data-type/search/manifests.js +2 -0
- package/dist-cms/packages/dictionary/search/constants.d.ts +1 -0
- package/dist-cms/packages/dictionary/search/constants.js +1 -0
- package/dist-cms/packages/dictionary/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/dictionary/search/global-search/constants.js +1 -0
- package/dist-cms/packages/dictionary/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/dictionary/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/dictionary/search/manifests.js +2 -0
- package/dist-cms/packages/documents/document-blueprints/workspace/document-blueprint-workspace-editor.element.js +5 -4
- package/dist-cms/packages/documents/document-types/search/constants.d.ts +1 -0
- package/dist-cms/packages/documents/document-types/search/constants.js +1 -0
- package/dist-cms/packages/documents/document-types/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/documents/document-types/search/global-search/constants.js +1 -0
- package/dist-cms/packages/documents/document-types/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/documents/document-types/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/documents/document-types/search/manifests.js +2 -0
- package/dist-cms/packages/documents/documents/collection/document-collection.context.d.ts +2 -0
- package/dist-cms/packages/documents/documents/collection/document-collection.context.js +23 -0
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +4 -0
- package/dist-cms/packages/documents/documents/item/document-item-data-resolver.d.ts +2 -2
- package/dist-cms/packages/documents/documents/item/document-item-data-resolver.js +55 -68
- package/dist-cms/packages/documents/documents/item/document-item-ref.element.d.ts +4 -0
- package/dist-cms/packages/documents/documents/item/document-item-ref.element.js +33 -2
- package/dist-cms/packages/documents/documents/picker/document-picker-search-result-item.element.d.ts +1 -0
- package/dist-cms/packages/documents/documents/picker/document-picker-search-result-item.element.js +14 -8
- package/dist-cms/packages/documents/documents/property-dataset-context/document-property-dataset.context.d.ts +0 -1
- package/dist-cms/packages/documents/documents/property-dataset-context/document-property-dataset.context.js +0 -42
- package/dist-cms/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.js +12 -2
- package/dist-cms/packages/documents/documents/search/constants.d.ts +1 -0
- package/dist-cms/packages/documents/documents/search/constants.js +1 -0
- package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +3 -2
- package/dist-cms/packages/documents/documents/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/documents/documents/search/global-search/constants.js +1 -0
- package/dist-cms/packages/documents/documents/search/global-search/document-global-search.d.ts +6 -0
- package/dist-cms/packages/documents/documents/search/global-search/document-global-search.js +15 -0
- package/dist-cms/packages/documents/documents/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/documents/documents/search/global-search/manifests.js +23 -0
- package/dist-cms/packages/documents/documents/search/manifests.js +2 -0
- package/dist-cms/packages/documents/documents/search/types.d.ts +1 -0
- package/dist-cms/packages/documents/documents/types.d.ts +1 -0
- package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.d.ts +37 -0
- package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.js +78 -0
- package/dist-cms/packages/documents/documents/url/index.d.ts +2 -0
- package/dist-cms/packages/documents/documents/url/index.js +2 -0
- package/dist-cms/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.d.ts +0 -1
- package/dist-cms/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.js +29 -24
- package/dist-cms/packages/documents/documents/url/repository/types.d.ts +1 -1
- package/dist-cms/packages/documents/documents/url/types.d.ts +1 -0
- package/dist-cms/packages/documents/documents/url/types.js +1 -0
- package/dist-cms/packages/documents/documents/user-permissions/document/conditions/document-user-permission.condition.js +3 -1
- package/dist-cms/packages/documents/documents/workspace/actions/save.action.js +4 -2
- package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +13 -7
- package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +29 -0
- package/dist-cms/packages/language/global-contexts/app-language.context.js +14 -12
- package/dist-cms/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.js +3 -0
- package/dist-cms/packages/media/media/components/input-media/input-media.context.js +4 -0
- package/dist-cms/packages/media/media/constants.d.ts +1 -1
- package/dist-cms/packages/media/media/constants.js +1 -1
- package/dist-cms/packages/media/media/dashboard/media-dashboard.element.js +1 -0
- package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +8 -0
- package/dist-cms/packages/media/media/search/constants.d.ts +1 -0
- package/dist-cms/packages/media/media/search/constants.js +1 -0
- package/dist-cms/packages/media/media/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/media/media/search/global-search/constants.js +1 -0
- package/dist-cms/packages/media/media/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/media/media/search/global-search/manifests.js +23 -0
- package/dist-cms/packages/media/media/search/global-search/media-global-search.d.ts +15 -0
- package/dist-cms/packages/media/media/search/global-search/media-global-search.js +15 -0
- package/dist-cms/packages/media/media/search/manifests.js +2 -0
- package/dist-cms/packages/media/media/search/media-search.server.data-source.js +3 -2
- package/dist-cms/packages/media/media/search/types.d.ts +1 -0
- package/dist-cms/packages/media/media/workspace/media-workspace-editor.element.js +1 -0
- package/dist-cms/packages/media/media-types/constants.d.ts +1 -0
- package/dist-cms/packages/media/media-types/constants.js +1 -0
- package/dist-cms/packages/media/media-types/search/constants.d.ts +2 -0
- package/dist-cms/packages/media/media-types/search/constants.js +2 -0
- package/dist-cms/packages/media/media-types/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/media/media-types/search/global-search/constants.js +1 -0
- package/dist-cms/packages/media/media-types/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/media/media-types/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/media/media-types/search/manifests.js +4 -1
- package/dist-cms/packages/members/member/repository/member-repository-base.d.ts +8 -8
- package/dist-cms/packages/members/member/repository/member-repository-base.js +13 -12
- package/dist-cms/packages/members/member/search/constants.d.ts +1 -0
- package/dist-cms/packages/members/member/search/constants.js +1 -0
- package/dist-cms/packages/members/member/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/members/member/search/global-search/constants.js +1 -0
- package/dist-cms/packages/members/member/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/members/member/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/members/member/search/manifests.js +2 -0
- package/dist-cms/packages/members/member/workspace/member/member-workspace-editor.element.js +1 -0
- package/dist-cms/packages/members/member-type/constants.d.ts +1 -0
- package/dist-cms/packages/members/member-type/constants.js +1 -0
- package/dist-cms/packages/members/member-type/search/constants.d.ts +2 -0
- package/dist-cms/packages/members/member-type/search/constants.js +2 -0
- package/dist-cms/packages/members/member-type/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/members/member-type/search/global-search/constants.js +1 -0
- package/dist-cms/packages/members/member-type/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/members/member-type/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/members/member-type/search/manifests.js +4 -1
- package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.d.ts +4 -0
- package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.js +48 -1
- package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.d.ts +2 -2
- package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.js +95 -34
- package/dist-cms/packages/packages/package-section/views/created/created-packages-section-view.element.js +1 -0
- package/dist-cms/packages/relations/relations/reference/workspace-info-app/entity-references-workspace-view-info.element.js +6 -1
- package/dist-cms/packages/search/global-search/global-search-base.d.ts +11 -0
- package/dist-cms/packages/search/global-search/global-search-base.js +49 -0
- package/dist-cms/packages/search/global-search/global-search.extension.d.ts +15 -0
- package/dist-cms/packages/search/global-search/global-search.extension.js +1 -0
- package/dist-cms/packages/search/global-search/index.d.ts +1 -0
- package/dist-cms/packages/search/global-search/index.js +1 -0
- package/dist-cms/packages/search/global-search/types.d.ts +4 -0
- package/dist-cms/packages/search/global-search/types.js +1 -0
- package/dist-cms/packages/search/index.d.ts +1 -0
- package/dist-cms/packages/search/index.js +1 -0
- package/dist-cms/packages/search/search-modal/search-modal.element.d.ts +4 -4
- package/dist-cms/packages/search/search-modal/search-modal.element.js +40 -29
- package/dist-cms/packages/search/types.d.ts +1 -0
- package/dist-cms/packages/segment/package.json +8 -0
- package/dist-cms/packages/settings/package.json +8 -0
- package/dist-cms/packages/settings/vite.config.d.ts +2 -0
- package/dist-cms/packages/settings/vite.config.js +11 -0
- package/dist-cms/packages/sysinfo/components/sysinfo.element.js +49 -9
- package/dist-cms/packages/sysinfo/repository/sysinfo.repository.d.ts +3 -0
- package/dist-cms/packages/sysinfo/repository/sysinfo.repository.js +8 -0
- package/dist-cms/packages/templating/templates/constants.d.ts +1 -0
- package/dist-cms/packages/templating/templates/constants.js +1 -0
- package/dist-cms/packages/templating/templates/search/constants.d.ts +2 -0
- package/dist-cms/packages/templating/templates/search/constants.js +2 -0
- package/dist-cms/packages/templating/templates/search/global-search/constants.d.ts +1 -0
- package/dist-cms/packages/templating/templates/search/global-search/constants.js +1 -0
- package/dist-cms/packages/templating/templates/search/global-search/manifests.d.ts +1 -0
- package/dist-cms/packages/templating/templates/search/global-search/manifests.js +22 -0
- package/dist-cms/packages/templating/templates/search/manifests.js +4 -1
- package/dist-cms/packages/tiptap/extensions/core/media-upload.tiptap-api.d.ts +6 -1
- package/dist-cms/packages/tiptap/extensions/core/media-upload.tiptap-api.js +16 -6
- package/dist-cms/packages/tiptap/extensions/toolbar/media-picker.tiptap-toolbar-api.d.ts +6 -1
- package/dist-cms/packages/tiptap/extensions/toolbar/media-picker.tiptap-toolbar-api.js +27 -6
- package/dist-cms/packages/translation/package.json +8 -0
- package/dist-cms/packages/user/current-user/action/current-user-app-button.element.d.ts +1 -1
- package/dist-cms/packages/user/current-user/action/current-user-app-button.element.js +4 -8
- package/dist-cms/packages/user/current-user/current-user-action.extension.d.ts +0 -11
- package/dist-cms/packages/user/current-user/current-user.context.js +4 -1
- package/dist-cms/packages/user/current-user/external-login/manifests.js +0 -1
- package/dist-cms/packages/user/current-user/mfa-login/manifests.js +0 -1
- package/dist-cms/packages/user/current-user/repository/current-user.repository.d.ts +2 -2
- package/dist-cms/packages/user/current-user/repository/current-user.repository.js +8 -5
- package/dist-cms/packages/user/user/repository/user-repository-base.d.ts +7 -7
- package/dist-cms/packages/user/user/repository/user-repository-base.js +13 -12
- package/dist-cms/packages/user/user-group/collection/repository/user-group-collection.repository.js +4 -1
- package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.repository.d.ts +4 -0
- package/dist-cms/packages/webhook/webhook-event/repository/webhook-event.repository.js +7 -1
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/umbraco-package-schema.json +147 -0
- package/dist-cms/umbraco-package.json +1 -1
- package/dist-cms/vscode-html-custom-data.json +61 -15
- package/examples/modal-routed/dashboard.element.ts +1 -0
- package/examples/modal-routed/modal/example-modal.element.ts +1 -0
- package/examples/validation-context/validation-context-dashboard.ts +12 -12
- package/package.json +7 -7
- package/dist-cms/packages/content/content/content-property.context-token.d.ts +0 -3
- package/dist-cms/packages/content/content/content-property.context-token.js +0 -2
- package/dist-cms/packages/content/content/content-property.context.js +0 -14
- package/dist-cms/packages/content/content/workspace/views/edit/content-editor-property.element.d.ts +0 -21
- package/dist-cms/packages/content/content/workspace/views/edit/content-editor-property.element.js +0 -63
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
|
2
|
+
import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
|
|
3
|
+
import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
|
|
4
|
+
/**
|
|
5
|
+
* A controller for resolving data for document urls
|
|
6
|
+
* @exports
|
|
7
|
+
* @class UmbDocumentUrlsDataResolver
|
|
8
|
+
* @augments {UmbControllerBase}
|
|
9
|
+
*/
|
|
10
|
+
export class UmbDocumentUrlsDataResolver extends UmbControllerBase {
|
|
11
|
+
#appCulture;
|
|
12
|
+
#propertyDataSetCulture;
|
|
13
|
+
#data;
|
|
14
|
+
#init;
|
|
15
|
+
#urls;
|
|
16
|
+
constructor(host) {
|
|
17
|
+
super(host);
|
|
18
|
+
this.#urls = new UmbArrayState([], (url) => url.url);
|
|
19
|
+
/**
|
|
20
|
+
* The urls for the current culture
|
|
21
|
+
* @returns {ObservableArray<UmbDocumentUrlModel>} The urls for the current culture
|
|
22
|
+
* @memberof UmbDocumentUrlsDataResolver
|
|
23
|
+
*/
|
|
24
|
+
this.urls = this.#urls.asObservable();
|
|
25
|
+
// TODO: listen for UMB_VARIANT_CONTEXT when available
|
|
26
|
+
this.#init = Promise.all([
|
|
27
|
+
this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (context) => {
|
|
28
|
+
this.#propertyDataSetCulture = context?.getVariantId();
|
|
29
|
+
this.#setCultureAwareValues();
|
|
30
|
+
}).asPromise(),
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the current data
|
|
35
|
+
* @returns {Array<UmbDocumentUrlModel> | undefined} The current data
|
|
36
|
+
* @memberof UmbDocumentUrlsDataResolver
|
|
37
|
+
*/
|
|
38
|
+
getData() {
|
|
39
|
+
return this.#data;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Set the current data
|
|
43
|
+
* @param {Array<UmbDocumentUrlModel> | undefined} data The current data
|
|
44
|
+
* @memberof UmbDocumentUrlsDataResolver
|
|
45
|
+
*/
|
|
46
|
+
setData(data) {
|
|
47
|
+
this.#data = data;
|
|
48
|
+
if (!this.#data) {
|
|
49
|
+
this.#urls.setValue([]);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.#setCultureAwareValues();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the urls for the current culture
|
|
56
|
+
* @returns {(Promise<Array<UmbDocumentUrlModel> | []>)} The urls for the current culture
|
|
57
|
+
* @memberof UmbDocumentUrlsDataResolver
|
|
58
|
+
*/
|
|
59
|
+
async getUrls() {
|
|
60
|
+
await this.#init;
|
|
61
|
+
return this.#urls.getValue();
|
|
62
|
+
}
|
|
63
|
+
#setCultureAwareValues() {
|
|
64
|
+
this.#setUrls();
|
|
65
|
+
}
|
|
66
|
+
#setUrls() {
|
|
67
|
+
const data = this.#getDataForCurrentCulture();
|
|
68
|
+
this.#urls.setValue(data ?? []);
|
|
69
|
+
}
|
|
70
|
+
#getCurrentCulture() {
|
|
71
|
+
return this.#propertyDataSetCulture?.culture || this.#appCulture;
|
|
72
|
+
}
|
|
73
|
+
#getDataForCurrentCulture() {
|
|
74
|
+
const culture = this.#getCurrentCulture();
|
|
75
|
+
// If there is no culture context (invariant data) we return all urls
|
|
76
|
+
return culture ? this.#data?.filter((x) => x.culture === culture) : this.#data;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -6,7 +6,6 @@ export declare class UmbDocumentLinksWorkspaceInfoAppElement extends UmbLitEleme
|
|
|
6
6
|
private _variantOptions?;
|
|
7
7
|
private _loading;
|
|
8
8
|
private _links;
|
|
9
|
-
private _defaultCulture?;
|
|
10
9
|
constructor();
|
|
11
10
|
render(): import("lit-html").TemplateResult<1>;
|
|
12
11
|
disconnectedCallback(): void;
|
|
@@ -6,19 +6,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { UmbDocumentUrlRepository } from '../repository/index.js';
|
|
8
8
|
import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../../workspace/constants.js';
|
|
9
|
-
import {
|
|
9
|
+
import { UmbDocumentUrlsDataResolver } from '../document-urls-data-resolver.js';
|
|
10
|
+
import { css, customElement, html, ifDefined, nothing, repeat, state, when, } from '@umbraco-cms/backoffice/external/lit';
|
|
10
11
|
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
|
11
12
|
import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/entity-action';
|
|
12
13
|
import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action';
|
|
13
14
|
import { observeMultiple } from '@umbraco-cms/backoffice/observable-api';
|
|
14
15
|
import { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api';
|
|
15
16
|
import { debounce } from '@umbraco-cms/backoffice/utils';
|
|
16
|
-
import {
|
|
17
|
+
import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property';
|
|
17
18
|
let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInfoAppElement extends UmbLitElement {
|
|
18
19
|
#documentUrlRepository;
|
|
19
20
|
#urls;
|
|
20
21
|
#documentWorkspaceContext;
|
|
21
22
|
#eventContext;
|
|
23
|
+
#propertyDataSetVariantId;
|
|
24
|
+
#documentUrlsDataResolver;
|
|
22
25
|
constructor() {
|
|
23
26
|
super();
|
|
24
27
|
this.#documentUrlRepository = new UmbDocumentUrlRepository(this);
|
|
@@ -26,6 +29,7 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
26
29
|
this._loading = false;
|
|
27
30
|
this._links = [];
|
|
28
31
|
this.#urls = [];
|
|
32
|
+
this.#documentUrlsDataResolver = new UmbDocumentUrlsDataResolver(this);
|
|
29
33
|
this.#debounceRequestUrls = debounce(() => this.#requestUrls(), 50);
|
|
30
34
|
this.#onReloadRequest = (event) => {
|
|
31
35
|
// TODO: Introduce "Published Event". We only need to update the url when the document is published.
|
|
@@ -61,19 +65,24 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
61
65
|
this.#setLinks();
|
|
62
66
|
});
|
|
63
67
|
});
|
|
64
|
-
this.consumeContext(
|
|
65
|
-
this
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (context) => {
|
|
69
|
+
this.#propertyDataSetVariantId = context?.getVariantId();
|
|
70
|
+
this.#setLinks();
|
|
71
|
+
});
|
|
72
|
+
this.observe(this.#documentUrlsDataResolver?.urls, (urls) => {
|
|
73
|
+
this.#urls = urls ?? [];
|
|
74
|
+
this.#setLinks();
|
|
69
75
|
});
|
|
70
76
|
}
|
|
71
77
|
#setLinks() {
|
|
72
|
-
const links = this.#urls.map((
|
|
73
|
-
const culture =
|
|
74
|
-
const url = u.url;
|
|
78
|
+
const links = this.#urls.map((url) => {
|
|
79
|
+
const culture = url.culture;
|
|
75
80
|
const state = this._variantOptions?.find((variantOption) => variantOption.culture === culture)?.variant?.state;
|
|
76
|
-
return {
|
|
81
|
+
return {
|
|
82
|
+
culture,
|
|
83
|
+
url: url.url,
|
|
84
|
+
state,
|
|
85
|
+
};
|
|
77
86
|
});
|
|
78
87
|
this._links = links;
|
|
79
88
|
}
|
|
@@ -92,12 +101,10 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
92
101
|
if (!this._unique)
|
|
93
102
|
return;
|
|
94
103
|
this._loading = true;
|
|
95
|
-
this.#
|
|
104
|
+
this.#documentUrlsDataResolver?.setData([]);
|
|
96
105
|
const { data } = await this.#documentUrlRepository.requestItems([this._unique]);
|
|
97
106
|
if (data?.length) {
|
|
98
|
-
|
|
99
|
-
this.#urls = item.urls;
|
|
100
|
-
this.#setLinks();
|
|
107
|
+
this.#documentUrlsDataResolver?.setData(data[0].urls);
|
|
101
108
|
}
|
|
102
109
|
this._loading = false;
|
|
103
110
|
}
|
|
@@ -145,7 +152,7 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
145
152
|
return this.#renderEmptyLink(link.culture, link.state);
|
|
146
153
|
}
|
|
147
154
|
return html `
|
|
148
|
-
<a class="link-item" href=${this.#getTargetUrl(link.url)} target="_blank">
|
|
155
|
+
<a class="link-item" href=${ifDefined(this.#getTargetUrl(link.url))} target="_blank">
|
|
149
156
|
<span>
|
|
150
157
|
${this.#renderLinkCulture(link.culture)}
|
|
151
158
|
<span>${link.url}</span>
|
|
@@ -155,7 +162,9 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
155
162
|
`;
|
|
156
163
|
}
|
|
157
164
|
#renderNoLinks() {
|
|
158
|
-
return html ` ${this._variantOptions
|
|
165
|
+
return html ` ${this._variantOptions
|
|
166
|
+
?.filter((variantOption) => variantOption.culture === this.#propertyDataSetVariantId?.culture)
|
|
167
|
+
.map((variantOption) => this.#renderEmptyLink(variantOption.culture, variantOption.variant?.state))}`;
|
|
159
168
|
}
|
|
160
169
|
#renderEmptyLink(culture, state) {
|
|
161
170
|
return html `<div class="link-item">
|
|
@@ -170,6 +179,9 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
170
179
|
return nothing;
|
|
171
180
|
if (this._links.length === 1)
|
|
172
181
|
return nothing;
|
|
182
|
+
const allLinksHaveSameCulture = this._links?.every((link) => link.culture === culture);
|
|
183
|
+
if (allLinksHaveSameCulture)
|
|
184
|
+
return nothing;
|
|
173
185
|
return html `<span class="culture">${culture}</span>`;
|
|
174
186
|
}
|
|
175
187
|
disconnectedCallback() {
|
|
@@ -178,10 +190,6 @@ let UmbDocumentLinksWorkspaceInfoAppElement = class UmbDocumentLinksWorkspaceInf
|
|
|
178
190
|
}
|
|
179
191
|
static { this.styles = [
|
|
180
192
|
css `
|
|
181
|
-
uui-box {
|
|
182
|
-
--uui-box-default-padding: 0;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
193
|
#loader-container {
|
|
186
194
|
display: flex;
|
|
187
195
|
justify-content: center;
|
|
@@ -234,9 +242,6 @@ __decorate([
|
|
|
234
242
|
__decorate([
|
|
235
243
|
state()
|
|
236
244
|
], UmbDocumentLinksWorkspaceInfoAppElement.prototype, "_links", void 0);
|
|
237
|
-
__decorate([
|
|
238
|
-
state()
|
|
239
|
-
], UmbDocumentLinksWorkspaceInfoAppElement.prototype, "_defaultCulture", void 0);
|
|
240
245
|
UmbDocumentLinksWorkspaceInfoAppElement = __decorate([
|
|
241
246
|
customElement('umb-document-links-workspace-info-app')
|
|
242
247
|
], UmbDocumentLinksWorkspaceInfoAppElement);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from './repository/types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -19,8 +19,10 @@ export class UmbDocumentUserPermissionCondition extends UmbConditionBase {
|
|
|
19
19
|
}, 'umbUserPermissionConditionObserver');
|
|
20
20
|
});
|
|
21
21
|
this.consumeContext(UMB_ENTITY_CONTEXT, (context) => {
|
|
22
|
-
if (!context)
|
|
22
|
+
if (!context) {
|
|
23
|
+
this.removeUmbControllerByAlias('umbUserPermissionEntityContextObserver');
|
|
23
24
|
return;
|
|
25
|
+
}
|
|
24
26
|
this.observe(observeMultiple([context.entityType, context.unique]), ([entityType, unique]) => {
|
|
25
27
|
this.#entityType = entityType;
|
|
26
28
|
this.#unique = unique;
|
|
@@ -7,9 +7,11 @@ export class UmbDocumentSaveWorkspaceAction extends UmbSaveWorkspaceAction {
|
|
|
7
7
|
}
|
|
8
8
|
async hasAdditionalOptions() {
|
|
9
9
|
await this._retrieveWorkspaceContext;
|
|
10
|
-
const variantOptions = await this.observe(this._workspaceContext.variantOptions)
|
|
10
|
+
const variantOptions = await this.observe(this._workspaceContext.variantOptions)
|
|
11
|
+
.asPromise()
|
|
12
|
+
.catch(() => undefined);
|
|
11
13
|
const cultureVariantOptions = variantOptions?.filter((option) => option.culture);
|
|
12
|
-
return cultureVariantOptions?.length > 1;
|
|
14
|
+
return cultureVariantOptions ? cultureVariantOptions?.length > 1 : false;
|
|
13
15
|
}
|
|
14
16
|
_gotWorkspaceContext() {
|
|
15
17
|
super._gotWorkspaceContext();
|
package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js
CHANGED
|
@@ -48,8 +48,10 @@ let UmbDocumentWorkspaceEditorElement = class UmbDocumentWorkspaceEditorElement
|
|
|
48
48
|
this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment);
|
|
49
49
|
}
|
|
50
50
|
#generateRoutes() {
|
|
51
|
-
if (!this.#variants || !this.#appCulture)
|
|
51
|
+
if (!this.#variants || !this.#appCulture) {
|
|
52
|
+
this._routes = [];
|
|
52
53
|
return;
|
|
54
|
+
}
|
|
53
55
|
// Generate split view routes for all available routes
|
|
54
56
|
const routes = [];
|
|
55
57
|
// Split view routes:
|
|
@@ -86,10 +88,14 @@ let UmbDocumentWorkspaceEditorElement = class UmbDocumentWorkspaceEditorElement
|
|
|
86
88
|
// Using first single view as the default route for now (hence the math below):
|
|
87
89
|
routes.push({
|
|
88
90
|
path: '',
|
|
89
|
-
|
|
91
|
+
pathMatch: 'full',
|
|
92
|
+
resolve: async () => {
|
|
93
|
+
if (!this.#workspaceContext) {
|
|
94
|
+
throw new Error('Workspace context is not available when resolving the default route.');
|
|
95
|
+
}
|
|
90
96
|
const route = routes.find((route) => route.path === this.#appCulture);
|
|
91
97
|
if (!route) {
|
|
92
|
-
const firstVariantPath = routes.find((route) => route.path === this.#variants?.[0]
|
|
98
|
+
const firstVariantPath = routes.find((route) => route.path === this.#variants?.[0]?.unique)?.path;
|
|
93
99
|
if (firstVariantPath) {
|
|
94
100
|
history.replaceState({}, '', `${this.#workspaceRoute}/${firstVariantPath}`);
|
|
95
101
|
return;
|
|
@@ -102,11 +108,11 @@ let UmbDocumentWorkspaceEditorElement = class UmbDocumentWorkspaceEditorElement
|
|
|
102
108
|
history.replaceState({}, '', `${this.#workspaceRoute}/${route?.path}`);
|
|
103
109
|
},
|
|
104
110
|
});
|
|
111
|
+
routes.push({
|
|
112
|
+
path: `**`,
|
|
113
|
+
component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement,
|
|
114
|
+
});
|
|
105
115
|
}
|
|
106
|
-
routes.push({
|
|
107
|
-
path: `**`,
|
|
108
|
-
component: async () => (await import('@umbraco-cms/backoffice/router')).UmbRouteNotFoundElement,
|
|
109
|
-
});
|
|
110
116
|
this._routes = routes;
|
|
111
117
|
}
|
|
112
118
|
render() {
|
|
@@ -15,6 +15,7 @@ import { UmbIsTrashedEntityContext } from '@umbraco-cms/backoffice/recycle-bin';
|
|
|
15
15
|
import { ensurePathEndsWithSlash, UmbDeprecation } from '@umbraco-cms/backoffice/utils';
|
|
16
16
|
import { createExtensionApiByAlias } from '@umbraco-cms/backoffice/extension-registry';
|
|
17
17
|
import { UMB_SERVER_CONTEXT } from '@umbraco-cms/backoffice/server';
|
|
18
|
+
import { observeMultiple } from '@umbraco-cms/backoffice/observable-api';
|
|
18
19
|
export class UmbDocumentWorkspaceContext extends UmbContentDetailWorkspaceContextBase {
|
|
19
20
|
#isTrashedContext;
|
|
20
21
|
#publishingContext;
|
|
@@ -49,6 +50,7 @@ export class UmbDocumentWorkspaceContext extends UmbContentDetailWorkspaceContex
|
|
|
49
50
|
this.consumeContext(UMB_DOCUMENT_CONFIGURATION_CONTEXT, async (context) => {
|
|
50
51
|
const config = await context?.getDocumentConfiguration();
|
|
51
52
|
const allowSegmentCreation = config?.allowNonExistingSegmentsCreation ?? false;
|
|
53
|
+
const allowEditInvariantFromNonDefault = config?.allowEditInvariantFromNonDefault ?? true;
|
|
52
54
|
this._variantOptionsFilter = (variantOption) => {
|
|
53
55
|
const isNotCreatedSegmentVariant = variantOption.segment && !variantOption.variant;
|
|
54
56
|
// Do not allow creating a segment variant
|
|
@@ -57,6 +59,9 @@ export class UmbDocumentWorkspaceContext extends UmbContentDetailWorkspaceContex
|
|
|
57
59
|
}
|
|
58
60
|
return true;
|
|
59
61
|
};
|
|
62
|
+
if (allowEditInvariantFromNonDefault === false) {
|
|
63
|
+
this.#preventEditInvariantFromNonDefault();
|
|
64
|
+
}
|
|
60
65
|
});
|
|
61
66
|
this.observe(this.contentTypeUnique, (unique) => {
|
|
62
67
|
if (unique) {
|
|
@@ -318,5 +323,29 @@ export class UmbDocumentWorkspaceContext extends UmbContentDetailWorkspaceContex
|
|
|
318
323
|
message,
|
|
319
324
|
});
|
|
320
325
|
}
|
|
326
|
+
#preventEditInvariantFromNonDefault() {
|
|
327
|
+
this.observe(observeMultiple([this.structure.contentTypeProperties, this.variantOptions]), ([properties, variantOptions]) => {
|
|
328
|
+
if (properties.length === 0)
|
|
329
|
+
return;
|
|
330
|
+
if (variantOptions.length === 0)
|
|
331
|
+
return;
|
|
332
|
+
variantOptions.forEach((variantOption) => {
|
|
333
|
+
// Do not add a rule for the default language. It is always permitted to edit.
|
|
334
|
+
if (variantOption.language.isDefault)
|
|
335
|
+
return;
|
|
336
|
+
const datasetVariantId = UmbVariantId.CreateFromPartial(variantOption);
|
|
337
|
+
const invariantVariantId = UmbVariantId.CreateInvariant();
|
|
338
|
+
const unique = `UMB_PREVENT_EDIT_INVARIANT_FROM_NON_DEFAULT_DATASET=${datasetVariantId.toString()}_PROPERTY_${invariantVariantId.toString()}`;
|
|
339
|
+
const rule = {
|
|
340
|
+
unique,
|
|
341
|
+
message: 'Shared properties can only be edited in the default language',
|
|
342
|
+
variantId: invariantVariantId,
|
|
343
|
+
datasetVariantId,
|
|
344
|
+
permitted: false,
|
|
345
|
+
};
|
|
346
|
+
this.propertyWriteGuard.addRule(rule);
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
}
|
|
321
350
|
}
|
|
322
351
|
export default UmbDocumentWorkspaceContext;
|
|
@@ -5,6 +5,7 @@ import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
|
|
|
5
5
|
import { UmbReadOnlyStateManager } from '@umbraco-cms/backoffice/utils';
|
|
6
6
|
import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user';
|
|
7
7
|
import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
|
|
8
|
+
import { UmbVariantContext } from '@umbraco-cms/backoffice/variant';
|
|
8
9
|
// TODO: Make a store for the App Languages.
|
|
9
10
|
// TODO: Implement default language end-point, in progress at backend team, so we can avoid getting all languages.
|
|
10
11
|
export class UmbAppLanguageContext extends UmbContextBase {
|
|
@@ -24,6 +25,7 @@ export class UmbAppLanguageContext extends UmbContextBase {
|
|
|
24
25
|
#currentUserHasAccessToAllLanguages;
|
|
25
26
|
#readOnlyStateIdentifier;
|
|
26
27
|
#localStorageKey;
|
|
28
|
+
#variantContext;
|
|
27
29
|
constructor(host) {
|
|
28
30
|
super(host, UMB_APP_LANGUAGE_CONTEXT);
|
|
29
31
|
this.#languagesPromise = new Promise((resolve) => {
|
|
@@ -45,6 +47,7 @@ export class UmbAppLanguageContext extends UmbContextBase {
|
|
|
45
47
|
this.#currentUserHasAccessToAllLanguages = false;
|
|
46
48
|
this.#readOnlyStateIdentifier = 'UMB_LANGUAGE_PERMISSION_';
|
|
47
49
|
this.#localStorageKey = 'umb:appLanguage';
|
|
50
|
+
this.#variantContext = new UmbVariantContext(this);
|
|
48
51
|
// TODO: We need to ensure this request is called every time the user logs in, but this should be done somewhere across the app and not here [JOV]
|
|
49
52
|
this.consumeContext(UMB_AUTH_CONTEXT, (authContext) => {
|
|
50
53
|
this.observe(authContext?.isAuthorized, (isAuthorized) => {
|
|
@@ -80,6 +83,9 @@ export class UmbAppLanguageContext extends UmbContextBase {
|
|
|
80
83
|
}
|
|
81
84
|
// set the new language
|
|
82
85
|
this.#appLanguage.update(language);
|
|
86
|
+
// Update the variant context with the new language
|
|
87
|
+
this.#variantContext.setCulture(language.unique);
|
|
88
|
+
this.#variantContext.setAppCulture(language.unique);
|
|
83
89
|
// store the new language in local storage
|
|
84
90
|
localStorage.setItem(this.#localStorageKey, language?.unique);
|
|
85
91
|
// set the new read-only state
|
|
@@ -98,22 +104,18 @@ export class UmbAppLanguageContext extends UmbContextBase {
|
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
#initAppLanguage() {
|
|
101
|
-
|
|
102
|
-
const uniqueFromLocalStorage = localStorage.getItem(this.#localStorageKey);
|
|
103
|
-
if (uniqueFromLocalStorage) {
|
|
104
|
-
const language = this.#findLanguage(uniqueFromLocalStorage);
|
|
105
|
-
if (language) {
|
|
106
|
-
this.setLanguage(language.unique);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
const defaultLanguage = this.#languages.getValue().find((x) => x.isDefault);
|
|
107
|
+
const defaultLanguageUnique = this.#languages.getValue().find((x) => x.isDefault)?.unique;
|
|
111
108
|
// TODO: do we always have a default language?
|
|
112
109
|
// do we always get the default language on the first request, or could it be on page 2?
|
|
113
110
|
// in that case do we then need an endpoint to get the default language?
|
|
114
|
-
if (!
|
|
111
|
+
if (!defaultLanguageUnique)
|
|
115
112
|
return;
|
|
116
|
-
this.
|
|
113
|
+
this.#variantContext.setFallbackCulture(defaultLanguageUnique);
|
|
114
|
+
// get the selected language from local storage
|
|
115
|
+
const uniqueFromLocalStorage = localStorage.getItem(this.#localStorageKey);
|
|
116
|
+
const languageFromLocalStorage = this.#findLanguage(uniqueFromLocalStorage || '');
|
|
117
|
+
const languageUniqueToSet = languageFromLocalStorage ? languageFromLocalStorage.unique : defaultLanguageUnique;
|
|
118
|
+
this.setLanguage(languageUniqueToSet);
|
|
117
119
|
}
|
|
118
120
|
#findLanguage(unique) {
|
|
119
121
|
return this.#languages.getValue().find((x) => x.unique === unique);
|
package/dist-cms/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.js
CHANGED
|
@@ -60,6 +60,9 @@ let UmbInputMarkdownElement = class UmbInputMarkdownElement extends UmbFormContr
|
|
|
60
60
|
this.observe(umbExtensionsRegistry.byType('monacoMarkdownEditorAction'), (manifests) => {
|
|
61
61
|
manifests.forEach(async (manifest) => {
|
|
62
62
|
const api = await createExtensionApi(this, manifest, [this]);
|
|
63
|
+
if (api) {
|
|
64
|
+
api.manifest = manifest;
|
|
65
|
+
}
|
|
63
66
|
const action = {
|
|
64
67
|
id: manifest.alias ?? api.getUnique(),
|
|
65
68
|
label: this.localize.string(manifest.meta?.label ?? api.getLabel()),
|
|
@@ -2,6 +2,7 @@ import { UMB_MEDIA_ITEM_REPOSITORY_ALIAS } from '../../constants.js';
|
|
|
2
2
|
import { UMB_MEDIA_PICKER_MODAL } from '../../modals/index.js';
|
|
3
3
|
import { UMB_MEDIA_SEARCH_PROVIDER_ALIAS } from '../../search/constants.js';
|
|
4
4
|
import { UmbPickerInputContext } from '@umbraco-cms/backoffice/picker-input';
|
|
5
|
+
import { UMB_VARIANT_CONTEXT } from '@umbraco-cms/backoffice/variant';
|
|
5
6
|
export class UmbMediaPickerInputContext extends UmbPickerInputContext {
|
|
6
7
|
constructor(host) {
|
|
7
8
|
super(host, UMB_MEDIA_ITEM_REPOSITORY_ALIAS, UMB_MEDIA_PICKER_MODAL);
|
|
@@ -19,10 +20,13 @@ export class UmbMediaPickerInputContext extends UmbPickerInputContext {
|
|
|
19
20
|
...pickerData?.search,
|
|
20
21
|
};
|
|
21
22
|
}
|
|
23
|
+
const variantContext = await this.getContext(UMB_VARIANT_CONTEXT);
|
|
24
|
+
const culture = await variantContext?.getDisplayCulture();
|
|
22
25
|
// pass allowedContentTypes to the search request args
|
|
23
26
|
combinedPickerData.search.queryParams = {
|
|
24
27
|
allowedContentTypes: args?.allowedContentTypes,
|
|
25
28
|
includeTrashed: args?.includeTrashed,
|
|
29
|
+
culture,
|
|
26
30
|
...pickerData?.search?.queryParams,
|
|
27
31
|
};
|
|
28
32
|
await super.openPicker(combinedPickerData);
|
|
@@ -3,6 +3,7 @@ export * from './entity-actions/constants.js';
|
|
|
3
3
|
export * from './entity-bulk-actions/constants.js';
|
|
4
4
|
export * from './menu/constants.js';
|
|
5
5
|
export * from './modals/constants.js';
|
|
6
|
+
export * from './paths.js';
|
|
6
7
|
export * from './recycle-bin/constants.js';
|
|
7
8
|
export * from './reference/constants.js';
|
|
8
9
|
export * from './repository/constants.js';
|
|
@@ -10,6 +11,5 @@ export * from './search/constants.js';
|
|
|
10
11
|
export * from './tree/constants.js';
|
|
11
12
|
export * from './url/constants.js';
|
|
12
13
|
export * from './workspace/constants.js';
|
|
13
|
-
export * from './paths.js';
|
|
14
14
|
export { UMB_MEDIA_VARIANT_CONTEXT } from './property-dataset-context/media-property-dataset-context.token.js';
|
|
15
15
|
export { UMB_MEDIA_ENTITY_TYPE, UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_PLACEHOLDER_ENTITY_TYPE, UMB_MEDIA_PROPERTY_VALUE_ENTITY_TYPE, } from './entity.js';
|
|
@@ -3,6 +3,7 @@ export * from './entity-actions/constants.js';
|
|
|
3
3
|
export * from './entity-bulk-actions/constants.js';
|
|
4
4
|
export * from './menu/constants.js';
|
|
5
5
|
export * from './modals/constants.js';
|
|
6
|
+
export * from './paths.js';
|
|
6
7
|
export * from './recycle-bin/constants.js';
|
|
7
8
|
export * from './reference/constants.js';
|
|
8
9
|
export * from './repository/constants.js';
|
|
@@ -10,6 +11,5 @@ export * from './search/constants.js';
|
|
|
10
11
|
export * from './tree/constants.js';
|
|
11
12
|
export * from './url/constants.js';
|
|
12
13
|
export * from './workspace/constants.js';
|
|
13
|
-
export * from './paths.js';
|
|
14
14
|
export { UMB_MEDIA_VARIANT_CONTEXT } from './property-dataset-context/media-property-dataset-context.token.js';
|
|
15
15
|
export { UMB_MEDIA_ENTITY_TYPE, UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_PLACEHOLDER_ENTITY_TYPE, UMB_MEDIA_PROPERTY_VALUE_ENTITY_TYPE, } from './entity.js';
|
|
@@ -13,6 +13,7 @@ import { debounce, UmbPaginationManager } from '@umbraco-cms/backoffice/utils';
|
|
|
13
13
|
import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
|
|
14
14
|
import { UMB_CONTENT_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/content';
|
|
15
15
|
import { isUmbracoFolder } from '@umbraco-cms/backoffice/media-type';
|
|
16
|
+
import { UMB_VARIANT_CONTEXT } from '@umbraco-cms/backoffice/variant';
|
|
16
17
|
import '@umbraco-cms/backoffice/imaging';
|
|
17
18
|
const root = { name: 'Media', unique: null, entityType: UMB_MEDIA_ROOT_ENTITY_TYPE };
|
|
18
19
|
// TODO: investigate how we can reuse the picker-search-field element, picker context etc.
|
|
@@ -22,6 +23,7 @@ let UmbMediaPickerModalElement = class UmbMediaPickerModalElement extends UmbMod
|
|
|
22
23
|
#mediaSearchProvider;
|
|
23
24
|
#dataType;
|
|
24
25
|
#pagingMap;
|
|
26
|
+
#contextCulture;
|
|
25
27
|
constructor() {
|
|
26
28
|
super();
|
|
27
29
|
this.#mediaTreeRepository = new UmbMediaTreeRepository(this);
|
|
@@ -45,6 +47,11 @@ let UmbMediaPickerModalElement = class UmbMediaPickerModalElement extends UmbMod
|
|
|
45
47
|
this.#dataType = dataType;
|
|
46
48
|
});
|
|
47
49
|
});
|
|
50
|
+
this.consumeContext(UMB_VARIANT_CONTEXT, (context) => {
|
|
51
|
+
this.observe(context?.culture, (culture) => {
|
|
52
|
+
this.#contextCulture = culture;
|
|
53
|
+
});
|
|
54
|
+
});
|
|
48
55
|
}
|
|
49
56
|
async connectedCallback() {
|
|
50
57
|
super.connectedCallback();
|
|
@@ -140,6 +147,7 @@ let UmbMediaPickerModalElement = class UmbMediaPickerModalElement extends UmbMod
|
|
|
140
147
|
const { data } = await this.#mediaSearchProvider.search({
|
|
141
148
|
query,
|
|
142
149
|
searchFrom: this._searchFrom,
|
|
150
|
+
culture: this.#contextCulture,
|
|
143
151
|
...this.data?.search?.queryParams,
|
|
144
152
|
});
|
|
145
153
|
if (!data) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const UMB_MEDIA_GLOBAL_SEARCH_ALIAS = "Umb.GlobalSearch.Media";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const UMB_MEDIA_GLOBAL_SEARCH_ALIAS = 'Umb.GlobalSearch.Media';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const manifests: Array<UmbExtensionManifest>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UMB_MEDIA_SECTION_ALIAS } from '../../../media-section/constants.js';
|
|
2
|
+
import { UMB_MEDIA_SEARCH_PROVIDER_ALIAS } from '../constants.js';
|
|
3
|
+
import { UMB_MEDIA_GLOBAL_SEARCH_ALIAS } from './constants.js';
|
|
4
|
+
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
|
|
5
|
+
export const manifests = [
|
|
6
|
+
{
|
|
7
|
+
name: 'Media Global Search',
|
|
8
|
+
alias: UMB_MEDIA_GLOBAL_SEARCH_ALIAS,
|
|
9
|
+
type: 'globalSearch',
|
|
10
|
+
weight: 700,
|
|
11
|
+
api: () => import('./media-global-search.js'),
|
|
12
|
+
meta: {
|
|
13
|
+
label: 'Media',
|
|
14
|
+
searchProviderAlias: UMB_MEDIA_SEARCH_PROVIDER_ALIAS,
|
|
15
|
+
},
|
|
16
|
+
conditions: [
|
|
17
|
+
{
|
|
18
|
+
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
|
|
19
|
+
match: UMB_MEDIA_SECTION_ALIAS,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { UmbMediaSearchProvider } from '../media.search-provider.js';
|
|
2
|
+
import { UmbGlobalSearchBase, type UmbGlobalSearchApi, type UmbSearchRequestArgs } from '@umbraco-cms/backoffice/search';
|
|
3
|
+
export declare class UmbMediaGlobalSearch extends UmbGlobalSearchBase<UmbMediaSearchProvider> implements UmbGlobalSearchApi {
|
|
4
|
+
search(args: UmbSearchRequestArgs): Promise<{
|
|
5
|
+
data: {
|
|
6
|
+
items: import("../types.js").UmbMediaSearchItemModel[];
|
|
7
|
+
total: number;
|
|
8
|
+
};
|
|
9
|
+
error?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
error: Error | import("@umbraco-cms/backoffice/resources").UmbError | import("@umbraco-cms/backoffice/resources").UmbApiError | import("@umbraco-cms/backoffice/resources").UmbCancelError | undefined;
|
|
12
|
+
data?: undefined;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export { UmbMediaGlobalSearch as api };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UmbGlobalSearchBase, } from '@umbraco-cms/backoffice/search';
|
|
2
|
+
import { UMB_VARIANT_CONTEXT } from '@umbraco-cms/backoffice/variant';
|
|
3
|
+
export class UmbMediaGlobalSearch extends UmbGlobalSearchBase {
|
|
4
|
+
async search(args) {
|
|
5
|
+
await this._init;
|
|
6
|
+
if (!this._searchProvider) {
|
|
7
|
+
throw new Error('Search provider is not available');
|
|
8
|
+
}
|
|
9
|
+
// TODO: change this to consume so we don't emit context events for every search change [MR]
|
|
10
|
+
const variantContext = await this.getContext(UMB_VARIANT_CONTEXT);
|
|
11
|
+
const displayCulture = await variantContext?.getDisplayCulture();
|
|
12
|
+
return await this._searchProvider.search({ culture: displayCulture, query: args.query });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export { UmbMediaGlobalSearch as api };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UMB_MEDIA_ENTITY_TYPE } from '../entity.js';
|
|
2
2
|
import { UMB_MEDIA_SEARCH_PROVIDER_ALIAS } from './constants.js';
|
|
3
|
+
import { manifests as globalSearchManifests } from './global-search/manifests.js';
|
|
3
4
|
export const manifests = [
|
|
4
5
|
{
|
|
5
6
|
name: 'Media Search Provider',
|
|
@@ -18,4 +19,5 @@ export const manifests = [
|
|
|
18
19
|
element: () => import('./media-search-result-item.element.js'),
|
|
19
20
|
forEntityTypes: [UMB_MEDIA_ENTITY_TYPE],
|
|
20
21
|
},
|
|
22
|
+
...globalSearchManifests,
|
|
21
23
|
];
|