@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
|
@@ -6,22 +6,68 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { css, customElement, html, nothing, query, state, when } from '@umbraco-cms/backoffice/external/lit';
|
|
8
8
|
import { isUmbracoFolder, UmbMediaTypeStructureRepository } from '@umbraco-cms/backoffice/media-type';
|
|
9
|
-
import { umbBindToValidation, UmbValidationContext } from '@umbraco-cms/backoffice/validation';
|
|
9
|
+
import { UMB_VALIDATION_CONTEXT, umbBindToValidation, UmbObserveValidationStateController, UmbValidationContext, } from '@umbraco-cms/backoffice/validation';
|
|
10
10
|
import { umbConfirmModal, UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { UmbDocumentItemDataResolver, UmbDocumentItemRepository, UmbDocumentUrlRepository, UmbDocumentUrlsDataResolver, } from '@umbraco-cms/backoffice/document';
|
|
12
|
+
import { UmbMediaItemRepository, UmbMediaUrlRepository } from '@umbraco-cms/backoffice/media';
|
|
13
|
+
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
|
14
|
+
import { umbFocus } from '@umbraco-cms/backoffice/lit-element';
|
|
15
|
+
class UmbLinkPickerValueValidator extends UmbControllerBase {
|
|
16
|
+
#context;
|
|
17
|
+
#isValid = true;
|
|
18
|
+
get isValid() {
|
|
19
|
+
return this.#isValid;
|
|
20
|
+
}
|
|
21
|
+
#value;
|
|
22
|
+
#unique = 'UmbLinkPickerValueValidator';
|
|
23
|
+
setValue(value) {
|
|
24
|
+
this.#value = value;
|
|
25
|
+
this.validate();
|
|
26
|
+
}
|
|
27
|
+
getValue() {
|
|
28
|
+
return this.#value;
|
|
29
|
+
}
|
|
30
|
+
// The path to the data that this validator is validating.
|
|
31
|
+
#dataPath;
|
|
32
|
+
constructor(host, dataPath) {
|
|
33
|
+
super(host);
|
|
34
|
+
this.#dataPath = dataPath;
|
|
35
|
+
this.consumeContext(UMB_VALIDATION_CONTEXT, (context) => {
|
|
36
|
+
if (this.#context) {
|
|
37
|
+
this.#context.removeValidator(this);
|
|
38
|
+
}
|
|
39
|
+
this.#context = context;
|
|
40
|
+
context?.addValidator(this);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async validate() {
|
|
44
|
+
this.#isValid = !!this.getValue();
|
|
45
|
+
if (this.#isValid) {
|
|
46
|
+
this.#context?.messages.removeMessageByKey(this.#unique);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.#context?.messages.addMessage('client', this.#dataPath, '#linkPicker_modalAnchorValidationMessage', this.#unique);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
reset() { }
|
|
53
|
+
focusFirstInvalidElement() { }
|
|
54
|
+
}
|
|
13
55
|
let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModalBaseElement {
|
|
56
|
+
#propertyLayoutOrientation;
|
|
57
|
+
#validationContext;
|
|
14
58
|
constructor() {
|
|
15
|
-
super(
|
|
59
|
+
super();
|
|
16
60
|
this.#propertyLayoutOrientation = 'vertical';
|
|
17
61
|
this.#validationContext = new UmbValidationContext(this);
|
|
18
62
|
this._config = {
|
|
19
63
|
hideAnchor: false,
|
|
20
64
|
hideTarget: false,
|
|
21
65
|
};
|
|
66
|
+
this._missingLinkUrl = false;
|
|
67
|
+
new UmbObserveValidationStateController(this, '$.type', (invalid) => {
|
|
68
|
+
this._missingLinkUrl = invalid;
|
|
69
|
+
});
|
|
22
70
|
}
|
|
23
|
-
#propertyLayoutOrientation;
|
|
24
|
-
#validationContext;
|
|
25
71
|
connectedCallback() {
|
|
26
72
|
super.connectedCallback();
|
|
27
73
|
if (this.data?.config) {
|
|
@@ -36,9 +82,10 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
36
82
|
}
|
|
37
83
|
this.#getMediaTypes();
|
|
38
84
|
this.populateLinkUrl();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
85
|
+
const validator = new UmbLinkPickerValueValidator(this, '$.type');
|
|
86
|
+
this.observe(this.modalContext?.value, (value) => {
|
|
87
|
+
validator.setValue(value?.link.type);
|
|
88
|
+
});
|
|
42
89
|
}
|
|
43
90
|
async #getMediaTypes() {
|
|
44
91
|
// Get all the media types, excluding the folders, so that files are selectable media items.
|
|
@@ -50,7 +97,7 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
50
97
|
async populateLinkUrl() {
|
|
51
98
|
// Documents and media have URLs saved in the local link format. Display the actual URL to align with what
|
|
52
99
|
// the user sees when they selected it initially.
|
|
53
|
-
if (!this.value.link?.unique
|
|
100
|
+
if (!this.value.link?.unique)
|
|
54
101
|
return;
|
|
55
102
|
let url = undefined;
|
|
56
103
|
switch (this.value.link.type) {
|
|
@@ -120,21 +167,25 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
120
167
|
if (unique) {
|
|
121
168
|
switch (type) {
|
|
122
169
|
case 'document': {
|
|
123
|
-
const documentRepository = new
|
|
124
|
-
const { data:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
170
|
+
const documentRepository = new UmbDocumentItemRepository(this);
|
|
171
|
+
const { data: documentItems } = await documentRepository.requestItems([unique]);
|
|
172
|
+
const documentItem = documentItems?.[0];
|
|
173
|
+
if (documentItem) {
|
|
174
|
+
const itemDataResolver = new UmbDocumentItemDataResolver(this);
|
|
175
|
+
itemDataResolver.setData(documentItem);
|
|
176
|
+
icon = await itemDataResolver.getIcon();
|
|
177
|
+
name = await itemDataResolver.getName();
|
|
128
178
|
url = await this.#getUrlForDocument(unique);
|
|
129
179
|
}
|
|
130
180
|
break;
|
|
131
181
|
}
|
|
132
182
|
case 'media': {
|
|
133
|
-
const mediaRepository = new
|
|
134
|
-
const { data: mediaData } = await mediaRepository.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
183
|
+
const mediaRepository = new UmbMediaItemRepository(this);
|
|
184
|
+
const { data: mediaData } = await mediaRepository.requestItems([unique]);
|
|
185
|
+
const mediaItem = mediaData?.[0];
|
|
186
|
+
if (mediaItem) {
|
|
187
|
+
icon = mediaItem.mediaType.icon;
|
|
188
|
+
name = mediaItem.variants[0].name;
|
|
138
189
|
url = await this.#getUrlForMedia(unique);
|
|
139
190
|
}
|
|
140
191
|
break;
|
|
@@ -142,6 +193,10 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
142
193
|
default:
|
|
143
194
|
break;
|
|
144
195
|
}
|
|
196
|
+
// The selection was removed
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.#resetUrl();
|
|
145
200
|
}
|
|
146
201
|
const link = {
|
|
147
202
|
icon,
|
|
@@ -156,7 +211,11 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
156
211
|
async #getUrlForDocument(unique) {
|
|
157
212
|
const documentUrlRepository = new UmbDocumentUrlRepository(this);
|
|
158
213
|
const { data: documentUrlData } = await documentUrlRepository.requestItems([unique]);
|
|
159
|
-
|
|
214
|
+
const urlsItem = documentUrlData?.[0];
|
|
215
|
+
const dataResolver = new UmbDocumentUrlsDataResolver(this);
|
|
216
|
+
dataResolver.setData(urlsItem?.urls);
|
|
217
|
+
const resolvedUrls = await dataResolver.getUrls();
|
|
218
|
+
return resolvedUrls?.[0]?.url ?? '';
|
|
160
219
|
}
|
|
161
220
|
async #getUrlForMedia(unique) {
|
|
162
221
|
const mediaUrlRepository = new UmbMediaUrlRepository(this);
|
|
@@ -172,6 +231,9 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
172
231
|
confirmLabel: this.localize.term('linkPicker_resetUrlLabel'),
|
|
173
232
|
});
|
|
174
233
|
}
|
|
234
|
+
this.#resetUrl();
|
|
235
|
+
}
|
|
236
|
+
#resetUrl() {
|
|
175
237
|
this.#partialUpdateLink({ type: null, url: null });
|
|
176
238
|
}
|
|
177
239
|
async #onSubmit() {
|
|
@@ -190,7 +252,7 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
190
252
|
render() {
|
|
191
253
|
return html `
|
|
192
254
|
<umb-body-layout
|
|
193
|
-
headline=${this.localize.term(this.modalContext?.data
|
|
255
|
+
headline=${this.localize.term(this.modalContext?.data?.isNew ? 'defaultdialogs_addLink' : 'defaultdialogs_updateLink')}>
|
|
194
256
|
<uui-box>
|
|
195
257
|
${this.#renderLinkType()} ${this.#renderLinkAnchorInput()} ${this.#renderLinkTitleInput()}
|
|
196
258
|
${this.#renderLinkTargetInput()}
|
|
@@ -200,8 +262,7 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
200
262
|
<uui-button
|
|
201
263
|
color="positive"
|
|
202
264
|
look="primary"
|
|
203
|
-
label=${this.localize.term(this.modalContext?.data
|
|
204
|
-
?disabled=${!this.value.link.type}
|
|
265
|
+
label=${this.localize.term(this.modalContext?.data?.isNew ? 'general_add' : 'general_update')}
|
|
205
266
|
@click=${this.#onSubmit}></uui-button>
|
|
206
267
|
</div>
|
|
207
268
|
</umb-body-layout>
|
|
@@ -212,7 +273,8 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
212
273
|
<umb-property-layout
|
|
213
274
|
orientation=${this.#propertyLayoutOrientation}
|
|
214
275
|
label=${this.localize.term('linkPicker_modalSource')}
|
|
215
|
-
mandatory
|
|
276
|
+
mandatory
|
|
277
|
+
?invalid=${this._missingLinkUrl}>
|
|
216
278
|
<div slot="editor">
|
|
217
279
|
${this.#renderLinkTypeSelection()} ${this.#renderDocumentPicker()} ${this.#renderMediaPicker()}
|
|
218
280
|
${this.#renderLinkUrlInput()} ${this.#renderLinkUrlInputReadOnly()}
|
|
@@ -273,9 +335,10 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
273
335
|
placeholder=${this.localize.term('placeholders_enterUrl')}
|
|
274
336
|
.value=${this.value.link.url ?? ''}
|
|
275
337
|
?disabled=${!!this.value.link.unique}
|
|
276
|
-
|
|
277
|
-
@
|
|
278
|
-
${umbBindToValidation(this)}
|
|
338
|
+
required
|
|
339
|
+
@input=${this.#onLinkUrlInput}
|
|
340
|
+
${umbBindToValidation(this)}
|
|
341
|
+
${umbFocus()}>
|
|
279
342
|
${when(!this.value.link.unique, () => html `
|
|
280
343
|
<div slot="append">
|
|
281
344
|
<uui-button
|
|
@@ -305,12 +368,10 @@ let UmbLinkPickerModalElement = class UmbLinkPickerModalElement extends UmbModal
|
|
|
305
368
|
<uui-input
|
|
306
369
|
data-mark="input:anchor"
|
|
307
370
|
slot="editor"
|
|
308
|
-
id="link-anchor"
|
|
309
371
|
label=${this.localize.term('placeholders_anchor')}
|
|
310
372
|
placeholder=${this.localize.term('placeholders_anchor')}
|
|
311
373
|
.value=${this.value.link.queryString ?? ''}
|
|
312
|
-
@change=${this.#onLinkAnchorInput}
|
|
313
|
-
${umbBindToValidation(this)}></uui-input>
|
|
374
|
+
@change=${this.#onLinkAnchorInput}></uui-input>
|
|
314
375
|
</umb-property-layout>
|
|
315
376
|
`;
|
|
316
377
|
}
|
|
@@ -371,15 +432,15 @@ __decorate([
|
|
|
371
432
|
__decorate([
|
|
372
433
|
state()
|
|
373
434
|
], UmbLinkPickerModalElement.prototype, "_config", void 0);
|
|
435
|
+
__decorate([
|
|
436
|
+
state()
|
|
437
|
+
], UmbLinkPickerModalElement.prototype, "_missingLinkUrl", void 0);
|
|
374
438
|
__decorate([
|
|
375
439
|
query('umb-input-document')
|
|
376
440
|
], UmbLinkPickerModalElement.prototype, "_documentPickerElement", void 0);
|
|
377
441
|
__decorate([
|
|
378
442
|
query('umb-input-media')
|
|
379
443
|
], UmbLinkPickerModalElement.prototype, "_mediaPickerElement", void 0);
|
|
380
|
-
__decorate([
|
|
381
|
-
query('#link-anchor', true)
|
|
382
|
-
], UmbLinkPickerModalElement.prototype, "_linkAnchorInput", void 0);
|
|
383
444
|
UmbLinkPickerModalElement = __decorate([
|
|
384
445
|
customElement('umb-link-picker-modal')
|
|
385
446
|
], UmbLinkPickerModalElement);
|
|
@@ -78,7 +78,7 @@ let UmbEntityReferencesWorkspaceInfoAppElement = class UmbEntityReferencesWorksp
|
|
|
78
78
|
return nothing;
|
|
79
79
|
return html `
|
|
80
80
|
<umb-workspace-info-app-layout headline="#references_labelUsedByItems">
|
|
81
|
-
|
|
81
|
+
<div id="content">${this.#renderItems()} ${this.#renderReferencePagination()}</div>
|
|
82
82
|
</umb-workspace-info-app-layout>
|
|
83
83
|
`;
|
|
84
84
|
}
|
|
@@ -110,6 +110,11 @@ let UmbEntityReferencesWorkspaceInfoAppElement = class UmbEntityReferencesWorksp
|
|
|
110
110
|
display: contents;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
#content {
|
|
114
|
+
display: block;
|
|
115
|
+
padding: var(--uui-size-space-3) var(--uui-size-space-4);
|
|
116
|
+
}
|
|
117
|
+
|
|
113
118
|
.pagination-container {
|
|
114
119
|
display: flex;
|
|
115
120
|
justify-content: center;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ManifestGlobalSearch, UmbGlobalSearchApi, UmbSearchProvider, UmbSearchRequestArgs } from '../types.js';
|
|
2
|
+
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
|
3
|
+
export declare abstract class UmbGlobalSearchBase<SearchProviderType extends UmbSearchProvider = UmbSearchProvider> extends UmbControllerBase implements UmbGlobalSearchApi {
|
|
4
|
+
#private;
|
|
5
|
+
protected _manifest?: ManifestGlobalSearch;
|
|
6
|
+
protected _searchProvider?: SearchProviderType;
|
|
7
|
+
protected _init: Promise<void>;
|
|
8
|
+
set manifest(manifest: ManifestGlobalSearch | undefined);
|
|
9
|
+
get manifest(): ManifestGlobalSearch | undefined;
|
|
10
|
+
search(args: UmbSearchRequestArgs): Promise<import("@umbraco-cms/backoffice/repository").UmbRepositoryResponse<import("@umbraco-cms/backoffice/repository").UmbPagedModel<import("../types.js").UmbSearchResultItemModel>>>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-api';
|
|
2
|
+
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
|
3
|
+
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
|
|
4
|
+
export class UmbGlobalSearchBase extends UmbControllerBase {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.#initialized = false;
|
|
8
|
+
this._init = new Promise((resolve) => {
|
|
9
|
+
if (this.#initialized) {
|
|
10
|
+
resolve();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this.#initResolver = resolve;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
#initResolver;
|
|
18
|
+
#initialized;
|
|
19
|
+
#checkIfInitialized() {
|
|
20
|
+
if (this._searchProvider) {
|
|
21
|
+
this.#initialized = true;
|
|
22
|
+
this.#initResolver?.();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
set manifest(manifest) {
|
|
26
|
+
if (this._manifest === manifest)
|
|
27
|
+
return;
|
|
28
|
+
this._manifest = manifest;
|
|
29
|
+
this.#observeSearchProvider(this._manifest?.meta.searchProviderAlias);
|
|
30
|
+
}
|
|
31
|
+
get manifest() {
|
|
32
|
+
return this._manifest;
|
|
33
|
+
}
|
|
34
|
+
#observeSearchProvider(alias) {
|
|
35
|
+
if (!alias)
|
|
36
|
+
throw new Error('Search provider alias is required');
|
|
37
|
+
new UmbExtensionApiInitializer(this, umbExtensionsRegistry, alias, [this], (permitted, ctrl) => {
|
|
38
|
+
this._searchProvider = permitted ? ctrl.api : undefined;
|
|
39
|
+
this.#checkIfInitialized();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async search(args) {
|
|
43
|
+
await this._init;
|
|
44
|
+
if (!this._searchProvider) {
|
|
45
|
+
throw new Error('Search provider is not available');
|
|
46
|
+
}
|
|
47
|
+
return await this._searchProvider.search({ query: args.query });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { UmbGlobalSearchApi } from './types.js';
|
|
2
|
+
import type { ManifestWithDynamicConditions, ManifestApi } from '@umbraco-cms/backoffice/extension-api';
|
|
3
|
+
export interface ManifestGlobalSearch extends ManifestApi<UmbGlobalSearchApi>, ManifestWithDynamicConditions<UmbExtensionConditionConfig> {
|
|
4
|
+
type: 'globalSearch';
|
|
5
|
+
meta: MetaGlobalSearch;
|
|
6
|
+
}
|
|
7
|
+
export interface MetaGlobalSearch {
|
|
8
|
+
label: string;
|
|
9
|
+
searchProviderAlias: string;
|
|
10
|
+
}
|
|
11
|
+
declare global {
|
|
12
|
+
interface UmbExtensionManifestMap {
|
|
13
|
+
umbGlobalSearch: ManifestGlobalSearch;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './global-search-base.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './global-search-base.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { UmbSearchProvider, UmbSearchRequestArgs, UmbSearchResultItemModel } from '../types.js';
|
|
2
|
+
export interface UmbGlobalSearchApi<SearchResultItemType extends UmbSearchResultItemModel = UmbSearchResultItemModel, SearchRequestArgsType extends UmbSearchRequestArgs = UmbSearchRequestArgs> extends UmbSearchProvider<SearchResultItemType, SearchRequestArgsType> {
|
|
3
|
+
}
|
|
4
|
+
export type * from './global-search.extension.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -2,9 +2,9 @@ import type { UmbSearchProvider, UmbSearchResultItemModel } from '../types.js';
|
|
|
2
2
|
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
|
3
3
|
import type { UmbModalContext } from '@umbraco-cms/backoffice/modal';
|
|
4
4
|
import '../search-result/search-result-item.element.js';
|
|
5
|
-
type
|
|
5
|
+
type GlobalSearchers = {
|
|
6
6
|
name: string;
|
|
7
|
-
api
|
|
7
|
+
api?: UmbSearchProvider<UmbSearchResultItemModel>;
|
|
8
8
|
alias: string;
|
|
9
9
|
};
|
|
10
10
|
export declare class UmbSearchModalElement extends UmbLitElement {
|
|
@@ -14,8 +14,8 @@ export declare class UmbSearchModalElement extends UmbLitElement {
|
|
|
14
14
|
modalContext?: UmbModalContext;
|
|
15
15
|
private _search;
|
|
16
16
|
private _searchResults;
|
|
17
|
-
private
|
|
18
|
-
|
|
17
|
+
private _globalSearchers;
|
|
18
|
+
_currentGlobalSearcher?: GlobalSearchers;
|
|
19
19
|
_loading: boolean;
|
|
20
20
|
constructor();
|
|
21
21
|
connectedCallback(): void;
|
|
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { css, html, nothing, repeat, customElement, query, state, property, when, } from '@umbraco-cms/backoffice/external/lit';
|
|
8
8
|
import { UmbExtensionsManifestInitializer, createExtensionApi } from '@umbraco-cms/backoffice/extension-api';
|
|
9
|
-
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
|
9
|
+
import { createExtensionApiByAlias, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
|
10
10
|
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
|
11
11
|
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
|
12
12
|
import '../search-result/search-result-item.element.js';
|
|
@@ -18,7 +18,7 @@ let UmbSearchModalElement = class UmbSearchModalElement extends UmbLitElement {
|
|
|
18
18
|
super();
|
|
19
19
|
this._search = '';
|
|
20
20
|
this._searchResults = [];
|
|
21
|
-
this.
|
|
21
|
+
this._globalSearchers = [];
|
|
22
22
|
this._loading = false;
|
|
23
23
|
this.#searchItemNavIndex = 0;
|
|
24
24
|
this.#inputTimerAmount = 300;
|
|
@@ -28,7 +28,7 @@ let UmbSearchModalElement = class UmbSearchModalElement extends UmbLitElement {
|
|
|
28
28
|
return;
|
|
29
29
|
this.modalContext?.reject();
|
|
30
30
|
};
|
|
31
|
-
this.#
|
|
31
|
+
this.#observeGlobalSearchers();
|
|
32
32
|
}
|
|
33
33
|
connectedCallback() {
|
|
34
34
|
super.connectedCallback();
|
|
@@ -44,22 +44,33 @@ let UmbSearchModalElement = class UmbSearchModalElement extends UmbLitElement {
|
|
|
44
44
|
document.removeEventListener('click', this.#onDocumentClick);
|
|
45
45
|
}
|
|
46
46
|
#onDocumentClick;
|
|
47
|
-
#
|
|
48
|
-
new UmbExtensionsManifestInitializer(this, umbExtensionsRegistry, '
|
|
49
|
-
const
|
|
50
|
-
for (const
|
|
51
|
-
|
|
52
|
-
if (api) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
api
|
|
56
|
-
|
|
57
|
-
}
|
|
47
|
+
#observeGlobalSearchers() {
|
|
48
|
+
new UmbExtensionsManifestInitializer(this, umbExtensionsRegistry, 'globalSearch', null, async (controllers) => {
|
|
49
|
+
const globalSearch = [];
|
|
50
|
+
for (const controller of controllers) {
|
|
51
|
+
let searchApi = undefined;
|
|
52
|
+
if (controller.manifest.api) {
|
|
53
|
+
searchApi = await createExtensionApi(this, controller.manifest);
|
|
54
|
+
if (searchApi) {
|
|
55
|
+
// TODO: we need to investigate if it makes sense to have a function that does this when creating a new extension api? [MR]
|
|
56
|
+
searchApi.manifest = controller.manifest;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
searchApi = await createExtensionApiByAlias(this, controller.manifest.meta?.searchProviderAlias);
|
|
61
|
+
}
|
|
62
|
+
if (searchApi) {
|
|
63
|
+
const searcher = {
|
|
64
|
+
name: controller.manifest.meta?.label || controller.manifest.name,
|
|
65
|
+
api: searchApi,
|
|
66
|
+
alias: controller.alias,
|
|
67
|
+
};
|
|
68
|
+
globalSearch.push(searcher);
|
|
58
69
|
}
|
|
59
70
|
}
|
|
60
|
-
this.
|
|
61
|
-
if (this.
|
|
62
|
-
this.
|
|
71
|
+
this._globalSearchers = globalSearch;
|
|
72
|
+
if (this._globalSearchers.length > 0) {
|
|
73
|
+
this._currentGlobalSearcher = this._globalSearchers[0];
|
|
63
74
|
}
|
|
64
75
|
});
|
|
65
76
|
}
|
|
@@ -89,18 +100,18 @@ let UmbSearchModalElement = class UmbSearchModalElement extends UmbLitElement {
|
|
|
89
100
|
this._inputFakeCursor.style.display = 'none';
|
|
90
101
|
}
|
|
91
102
|
}
|
|
92
|
-
#
|
|
93
|
-
if (this.
|
|
103
|
+
#setCurrentSearcher(searcher) {
|
|
104
|
+
if (this._currentGlobalSearcher === searcher)
|
|
94
105
|
return;
|
|
95
|
-
this.
|
|
106
|
+
this._currentGlobalSearcher = searcher;
|
|
96
107
|
this.#focusInput();
|
|
97
108
|
this._loading = true;
|
|
98
109
|
this._searchResults = [];
|
|
99
110
|
this.#updateSearchResults();
|
|
100
111
|
}
|
|
101
112
|
async #updateSearchResults() {
|
|
102
|
-
if (this._search && this.
|
|
103
|
-
const { data } = await this.
|
|
113
|
+
if (this._search && this._currentGlobalSearcher?.api) {
|
|
114
|
+
const { data } = await this._currentGlobalSearcher.api.search({ query: this._search });
|
|
104
115
|
if (!data)
|
|
105
116
|
return;
|
|
106
117
|
this._searchResults = data.items;
|
|
@@ -246,13 +257,13 @@ let UmbSearchModalElement = class UmbSearchModalElement extends UmbLitElement {
|
|
|
246
257
|
#renderSearchTags() {
|
|
247
258
|
return html `
|
|
248
259
|
<div id="search-providers">
|
|
249
|
-
${repeat(this.
|
|
260
|
+
${repeat(this._globalSearchers, (searcher) => searcher.alias, (searcher) => html `
|
|
250
261
|
<button
|
|
251
|
-
class="search-provider ${this.
|
|
252
|
-
data-provider-alias=${
|
|
253
|
-
@click=${() => this.#
|
|
262
|
+
class="search-provider ${this._currentGlobalSearcher?.alias === searcher.alias ? 'active' : ''}"
|
|
263
|
+
data-provider-alias=${searcher.alias}
|
|
264
|
+
@click=${() => this.#setCurrentSearcher(searcher)}
|
|
254
265
|
@keydown=${() => ''}>
|
|
255
|
-
${
|
|
266
|
+
${searcher.name}
|
|
256
267
|
</button>
|
|
257
268
|
`)}
|
|
258
269
|
</div>
|
|
@@ -487,10 +498,10 @@ __decorate([
|
|
|
487
498
|
], UmbSearchModalElement.prototype, "_searchResults", void 0);
|
|
488
499
|
__decorate([
|
|
489
500
|
state()
|
|
490
|
-
], UmbSearchModalElement.prototype, "
|
|
501
|
+
], UmbSearchModalElement.prototype, "_globalSearchers", void 0);
|
|
491
502
|
__decorate([
|
|
492
503
|
state()
|
|
493
|
-
], UmbSearchModalElement.prototype, "
|
|
504
|
+
], UmbSearchModalElement.prototype, "_currentGlobalSearcher", void 0);
|
|
494
505
|
__decorate([
|
|
495
506
|
state()
|
|
496
507
|
], UmbSearchModalElement.prototype, "_loading", void 0);
|
|
@@ -5,6 +5,7 @@ import type { UmbPagedModel, UmbRepositoryResponse } from '@umbraco-cms/backoffi
|
|
|
5
5
|
export type { UmbSearchDataSource } from './search-data-source.interface.js';
|
|
6
6
|
export type { UmbSearchRepository } from './search-repository.interface.js';
|
|
7
7
|
export type * from './extensions/types.js';
|
|
8
|
+
export type * from './global-search/types.js';
|
|
8
9
|
export type UmbSearchResultModel = SearchResultResponseModelReadable;
|
|
9
10
|
export type UmbSearchResultItemModel = {
|
|
10
11
|
entityType: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import { rmSync } from 'fs';
|
|
3
|
+
import { getDefaultConfig } from '../../vite-config-base';
|
|
4
|
+
const dist = '../../../dist-cms/packages/settings';
|
|
5
|
+
// delete the unbundled dist folder
|
|
6
|
+
rmSync(dist, { recursive: true, force: true });
|
|
7
|
+
export default defineConfig({
|
|
8
|
+
...getDefaultConfig({
|
|
9
|
+
dist,
|
|
10
|
+
}),
|
|
11
|
+
});
|