From f4155b5bfc893d50430cd719282ed773409bb03c Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 14:44:06 +0100 Subject: [PATCH 01/87] update handlers to mimick server format --- .../src/core/mocks/browser-handlers.ts | 1 - .../core/mocks/domains/manifests.handlers.ts | 140 ++++++++---------- .../src/core/mocks/e2e-handlers.ts | 1 - 3 files changed, 63 insertions(+), 79 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts index f677db74d5..e4c4db32d2 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts @@ -34,7 +34,6 @@ const handlers = [ ...mediaHandlers, ...dataTypeHandlers, ...documentTypeHandlers, - ...manifestsHandlers.default, ...telemetryHandlers, ...publishedStatusHandlers, ...usersHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts index bdb9806ecc..4b9ab7ba62 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts @@ -1,58 +1,77 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; +import { ManifestTypes } from '@umbraco-cms/extensions-registry'; -type ManifestsResponse = Record; -type ManifestsPackagesInstalledResponse = ManifestsResponse; +// TODO: Update to server API types when they are available +type Package = { + name?: string; + version?: string; + extensions?: ManifestTypes[]; +}; +type ManifestsResponse = Package[]; export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ - manifests: [ - { - type: 'section', - alias: 'My.Section.Custom', - name: 'Custom Section', - js: '/App_Plugins/section.js', - elementName: 'my-section-custom', - weight: 1, - meta: { - label: 'Custom', - pathname: 'my-custom', + ctx.json([ + { + name: 'Named Package', + version: '1.0.0', + extensions: [ + { + type: 'section', + alias: 'My.Section.Custom', + name: 'Custom Section', + js: '/App_Plugins/section.js', + elementName: 'my-section-custom', + weight: 1, + meta: { + label: 'Custom', + pathname: 'my-custom', + }, }, - }, - { - type: 'propertyEditorUI', - alias: 'My.PropertyEditorUI.Custom', - name: 'My Custom Property Editor UI', - js: '/App_Plugins/property-editor.js', - elementName: 'my-property-editor-ui-custom', - meta: { - label: 'My Custom Property', - icon: 'document', - group: 'Common', - propertyEditorModel: 'Umbraco.JSON', + { + type: 'propertyEditorUI', + alias: 'My.PropertyEditorUI.Custom', + name: 'My Custom Property Editor UI', + js: '/App_Plugins/property-editor.js', + elementName: 'my-property-editor-ui-custom', + meta: { + label: 'My Custom Property', + icon: 'document', + group: 'Common', + propertyEditorModel: 'Umbraco.JSON', + }, }, - }, - { - type: 'entrypoint', - name: 'My Custom Entry Point', - alias: 'My.Entrypoint.Custom', - js: '/App_Plugins/custom-entrypoint.js', - }, - { - type: 'packageView', - alias: 'My.PackageView.Custom', - name: 'My Custom Package View', - js: '/App_Plugins/package-view.js', - meta: { - packageAlias: 'my.package', + ], + }, + { + extensions: [ + { + type: 'entrypoint', + name: 'My Custom Entry Point', + alias: 'My.Entrypoint.Custom', + js: '/App_Plugins/custom-entrypoint.js', }, - }, - ], - }) + ], + }, + { + name: 'Package with a view', + extensions: [ + { + type: 'packageView', + alias: 'My.PackageView.Custom', + name: 'My Custom Package View', + js: '/App_Plugins/package-view.js', + meta: { + packageAlias: 'my.package', + }, + }, + ], + }, + ]) ); }); @@ -60,39 +79,6 @@ export const manifestEmptyHandler = rest.get(umbracoPath('/manifests'), (_req, r return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ - manifests: [], - }) + ctx.json([]) ); }); - -export default [ - rest.get(umbracoPath('/manifests/packages/installed'), (_req, res, ctx) => { - return res( - // Respond with a 200 status code - ctx.status(200), - ctx.json({ - packages: [ - { - id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', - name: 'My very own package', - alias: 'my.package', - version: '1.0.0', - hasMigrations: false, - hasPendingMigrations: false, - plans: [], - }, - { - id: '240d95be-bfdb-4ca2-a601-ed2bfd5ed069', - name: 'Some other community package', - alias: 'our.package', - version: '2.0.1', - hasMigrations: false, - hasPendingMigrations: false, - plans: [], - }, - ], - }) - ); - }), -]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts index 45fb7f2e96..bc02257b50 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts @@ -23,7 +23,6 @@ export const handlers = [ ...userHandlers, ...dataTypeHandlers, ...documentTypeHandlers, - ...manifestsHandlers.default, ...telemetryHandlers, ...publishedStatusHandlers, ...examineManagementHandlers, From d0b075dc1a04b2389056cf798bb43ed294f74695 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:06:18 +0100 Subject: [PATCH 02/87] cleanup after old implementation of server manifests --- src/Umbraco.Web.UI.Client/src/app.ts | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 18d11ccbf2..2b389e431d 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -19,7 +19,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backend-api'; import { UmbIconStore } from '@umbraco-cms/store'; -import { UmbContextDebugRequest, umbDebugContextEventType } from '@umbraco-cms/context-api'; +import { umbDebugContextEventType } from '@umbraco-cms/context-api'; @customElement('umb-app') export class UmbApp extends UmbLitElement { @@ -82,15 +82,14 @@ export class UmbApp extends UmbLitElement { this.provideContext('UMBRACOBASE', OpenAPI.BASE); await this._setInitStatus(); - await this._registerExtensionManifestsFromServer(); this._redirect(); // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => { // Once we got to the outter most component - // we can send the event containing all the contexts + // we can send the event containing all the contexts // we have collected whilst coming up through the DOM - // and pass it back down to the callback in + // and pass it back down to the callback in // the component that originally fired the event event.callback(event.instances); }); @@ -152,13 +151,6 @@ export class UmbApp extends UmbLitElement { }; } - private async _registerExtensionManifestsFromServer() { - // TODO: Implement once manifest endpoint exists - // const res = await getManifests({}); - // const { manifests } = res.data as unknown as { manifests: ManifestTypes[] }; - // manifests.forEach((manifest) => umbExtensionsRegistry.register(manifest)); - } - render() { return html``; } From e0444e27fafff203e42f236417da066282a36867 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:06:34 +0100 Subject: [PATCH 03/87] add data source for packages --- .../repository/sources/package.server.data.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts new file mode 100644 index 0000000000..64568481cc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -0,0 +1,22 @@ +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { umbracoPath } from '@umbraco-cms/utils'; + +/** + * Data source for packages from the server + * @export + */ +export class UmbPackageServerDataSource { + constructor(private readonly host: UmbControllerHostInterface) {} + + /** + * Get the root items from the server + * @memberof UmbPackageServerDataSource + */ + getRootItems() { + return tryExecuteAndNotify( + this.host, + fetch(umbracoPath('/manifests')).then((res) => res.json()) + ); + } +} From 0d37de62b4539c687367ea666ef810b9c36736ce Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:06:48 +0100 Subject: [PATCH 04/87] add store to hold packages --- .../packages/repository/package.store.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts new file mode 100644 index 0000000000..5972bc8cf5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -0,0 +1,41 @@ +import { BehaviorSubject } from 'rxjs'; +import { UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbStoreBase } from '@umbraco-cms/store'; + +/** + * Store for Packages + * @export + * @extends {UmbStoreBase} + */ +export class UmbPackageStore extends UmbStoreBase { + /** + * Array of packages with extensions + * @private + */ + #data = new BehaviorSubject([]); // TODO: Replace with PackageModel + + /** + * Observable of packages with extensions + */ + rootItems = this.#data.asObservable(); + + /** + * Creates an instance of PackageStore. + * @param {UmbControllerHostInterface} host + * @memberof PackageStore + */ + constructor(host: UmbControllerHostInterface) { + super(host, UmbPackageStore.name); + } + + // TODO: Add model for packages when available + /** + * Append items to the store + */ + appendItems(packages: Array) { + this.#data.next(packages); + } +} + +export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken(UmbPackageStore.name); From 2d8b28a3c597faa94df29475a6725e5a7edc6b48 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:06:56 +0100 Subject: [PATCH 05/87] add repository to use package store --- .../packages/repository/package.repository.ts | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts new file mode 100644 index 0000000000..98e97a3082 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -0,0 +1,47 @@ +import { UmbPackageStore, UMB_PACKAGE_STORE_TOKEN } from './package.store'; +import { UmbPackageServerDataSource } from './sources/package.server.data'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/context-api'; + +/** + * A repository for Packages which mimicks a tree store. + * @export + */ +export class UmbPackageRepository { + #init!: Promise; + #packageStore?: UmbPackageStore; + #packageSource: UmbPackageServerDataSource; + + constructor(host: UmbControllerHostInterface) { + this.#packageSource = new UmbPackageServerDataSource(host); + this.#init = new Promise((res) => { + new UmbContextConsumerController(host, UMB_PACKAGE_STORE_TOKEN, (instance) => { + this.#packageStore = instance; + this.#requestRootItems(instance); + res(); + }); + }); + } + + /** + * Request the root items from the Data Source + * @memberOf UmbPackageRepository + * @private + */ + async #requestRootItems(store: UmbPackageStore) { + const { data } = await this.#packageSource.getRootItems(); + + if (data) { + store.appendItems(data.items); + } + } + + /** + * Observable of root items + * @memberOf UmbPackageRepository + */ + async rootItems() { + await this.#init; + return this.#packageStore!.rootItems; + } +} From feb2e06abc525123fee840fda53754dcfff869df Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:07:40 +0100 Subject: [PATCH 06/87] add package controller to load server packages and register their extensions --- .../repository/server-package.controller.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts new file mode 100644 index 0000000000..821f4c6f8b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts @@ -0,0 +1,40 @@ +import { Subject, takeUntil } from 'rxjs'; +import { UmbPackageRepository } from './package.repository'; +import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; + +export class UmbServerPackageController extends UmbController { + #unobserve = new Subject(); + #repository: UmbPackageRepository; + + constructor(host: UmbControllerHostInterface, private readonly extensionRegistry: UmbExtensionRegistry) { + super(host, UmbServerPackageController.name); + + this.#repository = new UmbPackageRepository(host); + } + + hostConnected(): void { + this.#loadPackages(); + } + + hostDisconnected(): void { + this.#unobserve.next(); + this.#unobserve.complete(); + } + + async #loadPackages() { + const package$ = await this.#repository.rootItems(); + + package$.pipe(takeUntil(this.#unobserve)).subscribe((packages) => { + // Go through packages and register their extensions + packages.forEach((p: any) => { + const { extensions } = p; + if (extensions?.length) { + extensions.forEach((extension: any) => { + this.extensionRegistry.register(extension); + }); + } + }); + }); + } +} From 7593d04b3e7dc07c25319ef73605b0b33ec39498 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:08:00 +0100 Subject: [PATCH 07/87] provide package store and attach server package controller to main element --- .../src/backoffice/backoffice.element.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts index 69e02e26c2..6440d7fa27 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -39,9 +39,11 @@ import { UmbTemplateTreeStore } from './templating/templates/tree/data/template. import { UmbTemplateDetailStore } from './templating/templates/workspace/data/template.detail.store'; import { UmbThemeContext } from './themes/theme.context'; import { UmbLanguageStore } from './settings/languages/repository/language.store'; +import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './settings/languages/app-language.context'; +import { UmbPackageStore } from './packages/repository/package.store'; +import { UmbServerPackageController } from './packages/repository/server-package.controller'; import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification'; import { UmbLitElement } from '@umbraco-cms/element'; -import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './settings/languages/app-language.context'; import '@umbraco-cms/router'; @@ -56,6 +58,7 @@ import './packages'; import './search'; import './templating'; import './shared'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; @defineElement('umb-backoffice') export class UmbBackofficeElement extends UmbLitElement { @@ -113,6 +116,9 @@ export class UmbBackofficeElement extends UmbLitElement { this.provideContext(UMB_BACKOFFICE_CONTEXT_TOKEN, new UmbBackofficeContext()); this.provideContext(UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, new UmbCurrentUserHistoryStore()); new UmbThemeContext(this); + + new UmbPackageStore(this); + new UmbServerPackageController(this, umbExtensionsRegistry); } render() { From 54fa248ee5712de94385a0efd6bb4159e540f945 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:08:08 +0100 Subject: [PATCH 08/87] add mock data to msw --- .../core/mocks/domains/manifests.handlers.ts | 116 +++++++++--------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts index 4b9ab7ba62..1e0570e65f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts @@ -3,75 +3,77 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; import { ManifestTypes } from '@umbraco-cms/extensions-registry'; -// TODO: Update to server API types when they are available +// TODO: Update to server API types when they are available & rename endpoint when we know what it is called type Package = { name?: string; version?: string; extensions?: ManifestTypes[]; }; -type ManifestsResponse = Package[]; +type ManifestsResponse = { items: Package[] }; export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json([ - { - name: 'Named Package', - version: '1.0.0', - extensions: [ - { - type: 'section', - alias: 'My.Section.Custom', - name: 'Custom Section', - js: '/App_Plugins/section.js', - elementName: 'my-section-custom', - weight: 1, - meta: { - label: 'Custom', - pathname: 'my-custom', + ctx.json({ + items: [ + { + name: 'Named Package', + version: '1.0.0', + extensions: [ + { + type: 'section', + alias: 'My.Section.Custom', + name: 'Custom Section', + js: '/App_Plugins/section.js', + elementName: 'my-section-custom', + weight: 1, + meta: { + label: 'Custom', + pathname: 'my-custom', + }, }, - }, - { - type: 'propertyEditorUI', - alias: 'My.PropertyEditorUI.Custom', - name: 'My Custom Property Editor UI', - js: '/App_Plugins/property-editor.js', - elementName: 'my-property-editor-ui-custom', - meta: { - label: 'My Custom Property', - icon: 'document', - group: 'Common', - propertyEditorModel: 'Umbraco.JSON', + { + type: 'propertyEditorUI', + alias: 'My.PropertyEditorUI.Custom', + name: 'My Custom Property Editor UI', + js: '/App_Plugins/property-editor.js', + elementName: 'my-property-editor-ui-custom', + meta: { + label: 'My Custom Property', + icon: 'document', + group: 'Common', + propertyEditorModel: 'Umbraco.JSON', + }, }, - }, - ], - }, - { - extensions: [ - { - type: 'entrypoint', - name: 'My Custom Entry Point', - alias: 'My.Entrypoint.Custom', - js: '/App_Plugins/custom-entrypoint.js', - }, - ], - }, - { - name: 'Package with a view', - extensions: [ - { - type: 'packageView', - alias: 'My.PackageView.Custom', - name: 'My Custom Package View', - js: '/App_Plugins/package-view.js', - meta: { - packageAlias: 'my.package', + ], + }, + { + extensions: [ + { + type: 'entrypoint', + name: 'My Custom Entry Point', + alias: 'My.Entrypoint.Custom', + js: '/App_Plugins/custom-entrypoint.js', }, - }, - ], - }, - ]) + ], + }, + { + name: 'Package with a view', + extensions: [ + { + type: 'packageView', + alias: 'My.PackageView.Custom', + name: 'My Custom Package View', + js: '/App_Plugins/package-view.js', + meta: { + packageAlias: 'my.package', + }, + }, + ], + }, + ], + }) ); }); @@ -79,6 +81,6 @@ export const manifestEmptyHandler = rest.get(umbracoPath('/manifests'), (_req, r return res( // Respond with a 200 status code ctx.status(200), - ctx.json([]) + ctx.json({ items: [] }) ); }); From 93bbd52695fd87f4133e47a09ce20cf55d559247 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:24:25 +0100 Subject: [PATCH 09/87] move models to @umbraco-cms/models --- src/Umbraco.Web.UI.Client/libs/models/index.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 157a142fbc..1a842dd968 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -151,3 +151,14 @@ export interface SwatchDetails { label: string; value: string; } + +export type UmbPackage = { + name?: string; + version?: string; + extensions?: unknown[]; +}; + +export type PagedManifestsResponse = { + total: number; + items: UmbPackage[]; +}; From eb4511ba5a4840a2ef87ca13b2085dcb31cc2951 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:24:36 +0100 Subject: [PATCH 10/87] change to paged models --- .../core/mocks/domains/manifests.handlers.ts | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts index 1e0570e65f..116a277f8b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts @@ -1,21 +1,14 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; - -// TODO: Update to server API types when they are available & rename endpoint when we know what it is called -type Package = { - name?: string; - version?: string; - extensions?: ManifestTypes[]; -}; -type ManifestsResponse = { items: Package[] }; +import type { PagedManifestsResponse } from '@umbraco-cms/models'; export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ + total: 3, items: [ { name: 'Named Package', @@ -67,7 +60,7 @@ export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_ name: 'My Custom Package View', js: '/App_Plugins/package-view.js', meta: { - packageAlias: 'my.package', + packageName: 'my.package', }, }, ], @@ -81,6 +74,6 @@ export const manifestEmptyHandler = rest.get(umbracoPath('/manifests'), (_req, r return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ items: [] }) + ctx.json({ total: 0, items: [] }) ); }); From 06c1a495a9439f92f2d799de2d56ae2360290cf4 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:24:49 +0100 Subject: [PATCH 11/87] allow to check unknown objects for manifest type --- .../libs/extensions-api/is-manifest-js-type.function.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-js-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-js-type.function.ts index 5f4244f660..24962b7ec0 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-js-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-js-type.function.ts @@ -1,6 +1,6 @@ import { ManifestJSType } from './load-extension.function'; import type { ManifestBase } from '@umbraco-cms/extensions-registry'; -export function isManifestJSType(manifest: ManifestBase): manifest is ManifestJSType { +export function isManifestJSType(manifest: ManifestBase | unknown): manifest is ManifestJSType { return (manifest as ManifestJSType).js !== undefined; } From a111ea9ab24f8da030db9ca59f1917d87341e1d9 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:25:15 +0100 Subject: [PATCH 12/87] allow base manifests to be registered (those would come from the server) --- .../libs/extensions-registry/models.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index 4d4eff91e7..4f4e401993 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -76,7 +76,8 @@ export type ManifestTypes = | ManifestWorkspace | ManifestWorkspaceAction | ManifestWorkspaceView - | ManifestWorkspaceViewCollection; + | ManifestWorkspaceViewCollection + | ManifestBase; export type ManifestStandardTypes = ManifestTypes['type']; @@ -112,7 +113,7 @@ export interface ManifestElement extends ManifestWithLoader Promise; - meta?: any; + meta?: unknown; } export interface ManifestWithView extends ManifestElement { @@ -131,11 +132,11 @@ export interface ManifestElementWithElementName extends ManifestElement { export interface ManifestCustom extends ManifestBase { type: 'custom'; - meta?: any; + meta?: unknown; } export interface ManifestWithMeta extends ManifestBase { - meta: any; + meta: unknown; } export interface ManifestEntrypoint extends ManifestBase { From fae27b0927c414065922c323a6fc903c50ce60d6 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:25:52 +0100 Subject: [PATCH 13/87] add package models --- .../package-view.models.ts | 2 +- .../packages-installed-item.element.ts | 20 +++++++++---------- .../packages/repository/package.store.ts | 6 +++--- .../repository/server-package.controller.ts | 2 +- .../repository/sources/package.server.data.ts | 1 + 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/package-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/package-view.models.ts index bff9d21a0c..9a8e05cdae 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/package-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/package-view.models.ts @@ -6,5 +6,5 @@ export interface ManifestPackageView extends ManifestElement { } export interface MetaPackageView { - packageAlias: string; + packageName: string; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts index 0ef2ee1f54..3c36e90087 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts @@ -1,17 +1,18 @@ import { html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { firstValueFrom, map } from 'rxjs'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '../../../../../core/modal'; -import { createExtensionElement , umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestPackageView } from '@umbraco-cms/models'; +import type { ManifestPackageView, UmbPackage } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-packages-installed-item') export class UmbPackagesInstalledItem extends UmbLitElement { @property({ type: Object }) - package!: any; // TODO: Use real type + package!: UmbPackage; @state() private _packageView?: ManifestPackageView; @@ -28,13 +29,16 @@ export class UmbPackagesInstalledItem extends UmbLitElement { connectedCallback(): void { super.connectedCallback(); - this.findPackageView(this.package.alias); + + if (this.package.name?.length) { + this.findPackageView(this.package.name); + } } private async findPackageView(alias: string) { const observable = umbExtensionsRegistry ?.extensionsOfType('packageView') - .pipe(map((e) => e.filter((m) => m.meta.packageAlias === alias))); + .pipe(map((e) => e.filter((m) => m.meta.packageName === alias))); if (!observable) { return; @@ -50,7 +54,7 @@ export class UmbPackagesInstalledItem extends UmbLitElement { render() { return html` - + ${this._packageView ? html`([]); // TODO: Replace with PackageModel + #data = new BehaviorSubject>([]); /** * Observable of packages with extensions @@ -29,11 +30,10 @@ export class UmbPackageStore extends UmbStoreBase { super(host, UmbPackageStore.name); } - // TODO: Add model for packages when available /** * Append items to the store */ - appendItems(packages: Array) { + appendItems(packages: Array) { this.#data.next(packages); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts index 821f4c6f8b..f710793f58 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts @@ -27,7 +27,7 @@ export class UmbServerPackageController extends UmbController { package$.pipe(takeUntil(this.#unobserve)).subscribe((packages) => { // Go through packages and register their extensions - packages.forEach((p: any) => { + packages.forEach((p) => { const { extensions } = p; if (extensions?.length) { extensions.forEach((extension: any) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts index 64568481cc..21edecd157 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -14,6 +14,7 @@ export class UmbPackageServerDataSource { * @memberof UmbPackageServerDataSource */ getRootItems() { + // TODO: Use real resource when available return tryExecuteAndNotify( this.host, fetch(umbracoPath('/manifests')).then((res) => res.json()) From 3197bc70d7d59400757eb5b83d8573626829382b Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:26:08 +0100 Subject: [PATCH 14/87] add a crude check to see if server extensions match a known pattern --- .../packages/repository/server-package.controller.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts index f710793f58..8d515d7aeb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts @@ -1,7 +1,7 @@ import { Subject, takeUntil } from 'rxjs'; import { UmbPackageRepository } from './package.repository'; import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; -import type { UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; +import { isManifestJSType, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; export class UmbServerPackageController extends UmbController { #unobserve = new Subject(); @@ -30,8 +30,14 @@ export class UmbServerPackageController extends UmbController { packages.forEach((p) => { const { extensions } = p; if (extensions?.length) { - extensions.forEach((extension: any) => { - this.extensionRegistry.register(extension); + extensions.forEach((extension) => { + /** + * Crude check to see if extension is of type "js" since it is safe to assume we do not + * need to load any other types of extensions in the backoffice (we need a js file to load) + */ + if (isManifestJSType(extension)) { + this.extensionRegistry.register(extension); + } }); } }); From f3ac52cbad1ea4b5d09a2c48f3293c67dd463fc9 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:36:29 +0100 Subject: [PATCH 15/87] update types based on unknown --- .../section/section-dashboards/section-dashboards.element.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts index 61f4bf1fd3..e38dd43cb5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts @@ -95,9 +95,7 @@ export class UmbSectionDashboardsElement extends UmbLitElement { ?.extensionsOfTypes(['dashboard', 'dashboardCollection']) .pipe( map((extensions) => - extensions.filter((extension) => - (extension as ManifestWithMeta).meta.sections.includes(this._currentSectionAlias) - ) + extensions.filter((extension) => extension.meta.sections.includes(this._currentSectionAlias ?? '')) ) ), (dashboards) => { From db63f3a11ddd8443885f1311365de58f49977084 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:37:23 +0100 Subject: [PATCH 16/87] reorder imports --- src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts index 6440d7fa27..b350c8b0cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -44,6 +44,7 @@ import { UmbPackageStore } from './packages/repository/package.store'; import { UmbServerPackageController } from './packages/repository/server-package.controller'; import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification'; import { UmbLitElement } from '@umbraco-cms/element'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import '@umbraco-cms/router'; @@ -58,7 +59,6 @@ import './packages'; import './search'; import './templating'; import './shared'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; @defineElement('umb-backoffice') export class UmbBackofficeElement extends UmbLitElement { From b4245cf423752f09b1f85334605f7a14eb55a370 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:52:18 +0100 Subject: [PATCH 17/87] switch to ReplaySubject so listeners wait for the first response (important for the extension loader) --- .../src/backoffice/packages/repository/package.store.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index 7af2c152c6..f0f4fa0776 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject } from 'rxjs'; +import { ReplaySubject } from 'rxjs'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -14,7 +14,7 @@ export class UmbPackageStore extends UmbStoreBase { * Array of packages with extensions * @private */ - #data = new BehaviorSubject>([]); + #data = new ReplaySubject>(1); /** * Observable of packages with extensions From 5c95b75b0cd2616e2a35465b64cebd04dbb016c4 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:53:03 +0100 Subject: [PATCH 18/87] add pipe first() to prevent the loader from running multiple times --- .../repository/server-package.controller.ts | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts index 8d515d7aeb..8482a5d5b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts @@ -1,4 +1,4 @@ -import { Subject, takeUntil } from 'rxjs'; +import { first, Subject, takeUntil } from 'rxjs'; import { UmbPackageRepository } from './package.repository'; import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; import { isManifestJSType, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; @@ -25,22 +25,29 @@ export class UmbServerPackageController extends UmbController { async #loadPackages() { const package$ = await this.#repository.rootItems(); - package$.pipe(takeUntil(this.#unobserve)).subscribe((packages) => { - // Go through packages and register their extensions - packages.forEach((p) => { - const { extensions } = p; - if (extensions?.length) { - extensions.forEach((extension) => { - /** - * Crude check to see if extension is of type "js" since it is safe to assume we do not - * need to load any other types of extensions in the backoffice (we need a js file to load) - */ - if (isManifestJSType(extension)) { - this.extensionRegistry.register(extension); - } - }); - } + package$ + .pipe( + // If the app breaks then stop the request + takeUntil(this.#unobserve), + // Stop after the first time, we only need to load the packages once + first() + ) + .subscribe((packages) => { + // Go through packages and register their extensions + packages.forEach((p) => { + const { extensions } = p; + if (extensions?.length) { + extensions.forEach((extension) => { + /** + * Crude check to see if extension is of type "js" since it is safe to assume we do not + * need to load any other types of extensions in the backoffice (we need a js file to load) + */ + if (isManifestJSType(extension)) { + this.extensionRegistry.register(extension); + } + }); + } + }); }); - }); } } From 8d34878b892fac26e89fd6d30d079fee5f89e387 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 16:53:10 +0100 Subject: [PATCH 19/87] update installed packages view --- ...led-packages-section-view-item.element.ts} | 6 +- ...installed-packages-section-view.element.ts | 76 ++++++++----------- .../packages-installed-overview.element.ts | 59 -------------- 3 files changed, 36 insertions(+), 105 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/{packages-installed-item.element.ts => installed-packages-section-view-item.element.ts} (90%) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-overview.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts index 3c36e90087..23025cb334 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts @@ -9,8 +9,8 @@ import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/exte import type { ManifestPackageView, UmbPackage } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-packages-installed-item') -export class UmbPackagesInstalledItem extends UmbLitElement { +@customElement('umb-installed-packages-section-view-item') +export class UmbInstalledPackagesSectionViewItemElement extends UmbLitElement { @property({ type: Object }) package!: UmbPackage; @@ -87,6 +87,6 @@ export class UmbPackagesInstalledItem extends UmbLitElement { declare global { interface HTMLElementTagNameMap { - 'umb-packages-installed-item': UmbPackagesInstalledItem; + 'umb-installed-packages-section-view-item': UmbInstalledPackagesSectionViewItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view.element.ts index d9eced75e2..256760912e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view.element.ts @@ -1,67 +1,57 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from 'router-slot'; -import type { ManifestWorkspace } from '@umbraco-cms/models'; -import { createExtensionElement , umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbPackageRepository } from '../../../repository/package.repository'; +import type { UmbPackage } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-installed-packages-section-view') -export class UmbInstalledPackagesSectionViewElement extends UmbLitElement { - @state() - private _routes: IRoute[] = []; +import './installed-packages-section-view-item.element'; - private _workspaces: Array = []; +@customElement('umb-installed-packages-section-view') +export class UmbInstalledPackagesSectionView extends UmbLitElement { + @state() + private _installedPackages: UmbPackage[] = []; + + private repository: UmbPackageRepository; constructor() { super(); - this.observe(umbExtensionsRegistry?.extensionsOfType('workspace'), (workspaceExtensions) => { - this._workspaces = workspaceExtensions; - this._createRoutes(); - }); + this.repository = new UmbPackageRepository(this); } - private _createRoutes() { - const routes: any[] = [ - { - path: 'overview', - component: () => import('./packages-installed-overview.element'), - }, - ]; + firstUpdated() { + this._loadInstalledPackages(); + } - // TODO: find a way to make this reuseable across: - this._workspaces?.map((workspace: ManifestWorkspace) => { - routes.push({ - path: `${workspace.meta.entityType}/:key`, - component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.key; - }); - }, - }); - routes.push({ - path: workspace.meta.entityType, - component: () => createExtensionElement(workspace), - }); + /** + * Fetch the installed packages from the server + */ + private async _loadInstalledPackages() { + const package$ = await this.repository.rootItems(); + package$.subscribe((packages) => { + this._installedPackages = packages.filter((p) => !!p.name); }); - - routes.push({ - path: '**', - redirectTo: 'section/packages/view/installed/overview', //TODO: this should be dynamic - }); - this._routes = routes; } render() { - return html``; + return html` + + ${repeat( + this._installedPackages, + (item) => item.name, + (item) => + html`` + )} + + `; } } -export default UmbInstalledPackagesSectionViewElement; +export default UmbInstalledPackagesSectionView; declare global { interface HTMLElementTagNameMap { - 'umb-section-view-packages-installed': UmbInstalledPackagesSectionViewElement; + 'umb-installed-packages-section-view': UmbInstalledPackagesSectionView; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-overview.element.ts deleted file mode 100644 index eaee3d37bd..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/packages-installed-overview.element.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { html, LitElement, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { repeat } from 'lit/directives/repeat.js'; - -import './packages-installed-item.element'; - -@customElement('umb-packages-installed-overview') -export class UmbPackagesInstalledOverviewElement extends LitElement { - @state() - private _installedPackages: any[] = []; // TODO: Use real type - - @state() - private _errorMessage = ''; - - firstUpdated() { - this._loadInstalledPackages(); - } - - /** - * Fetch the installed packages from the server - */ - private async _loadInstalledPackages() { - this._errorMessage = ''; - - // TODO: Implement when API is ready - // try { - // const { - // data: { packages }, - // } = await getPackagesInstalled({}); - // this._installedPackages = packages; - // } catch (e) { - // if (e instanceof getPackagesInstalled.Error) { - // const error = e.getActualType(); - // this._errorMessage = error.data.detail ?? 'An error occurred while loading the installed packages'; - // } - // } - } - - render() { - return html` - ${this._errorMessage ? html`${this._errorMessage}` : nothing} - - ${repeat( - this._installedPackages, - (item) => item.id, - (item) => html`` - )} - - `; - } -} - -export default UmbPackagesInstalledOverviewElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-packages-installed': UmbPackagesInstalledOverviewElement; - } -} From 7f83bd6ab5a1a4a2b1922d97d4699996833747e0 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 17:12:47 +0100 Subject: [PATCH 20/87] add extensions as separate ArrayState --- .../packages/repository/package.repository.ts | 27 +++++++++++++++++++ .../packages/repository/package.store.ts | 17 +++++++++--- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index 98e97a3082..dbc01537ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -2,6 +2,7 @@ import { UmbPackageStore, UMB_PACKAGE_STORE_TOKEN } from './package.store'; import { UmbPackageServerDataSource } from './sources/package.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import { ManifestBase } from '@umbraco-cms/extensions-registry'; /** * A repository for Packages which mimicks a tree store. @@ -33,6 +34,19 @@ export class UmbPackageRepository { if (data) { store.appendItems(data.items); + const extensions: ManifestBase[] = []; + + data.items.forEach((p) => { + p.extensions?.forEach((e) => { + // Crudely validate that the extension at least follows a basic manifest structure + // Idea: Use `Zod` to validate the manifest + if (this.isManifestBase(e)) { + extensions.push(e); + } + }); + }); + + store.appendExtensions(extensions); } } @@ -44,4 +58,17 @@ export class UmbPackageRepository { await this.#init; return this.#packageStore!.rootItems; } + + /** + * Observable of extensions + * @memberOf UmbPackageRepository + */ + async extensions() { + await this.#init; + return this.#packageStore!.extensions; + } + + private isManifestBase(x: unknown): x is ManifestBase { + return typeof x === 'object' && x !== null && 'alias' in x; + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index f0f4fa0776..f7bd27f54a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -2,7 +2,8 @@ import { ReplaySubject } from 'rxjs'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbStoreBase } from '@umbraco-cms/store'; -import type { UmbPackage } from '@umbraco-cms/models'; +import type { ManifestBase, UmbPackage } from '@umbraco-cms/models'; +import { ArrayState } from '@umbraco-cms/observable-api'; /** * Store for Packages @@ -14,12 +15,16 @@ export class UmbPackageStore extends UmbStoreBase { * Array of packages with extensions * @private */ - #data = new ReplaySubject>(1); + #packages = new ReplaySubject>(1); + + #extensions = new ArrayState([], (e) => e.alias); /** * Observable of packages with extensions */ - rootItems = this.#data.asObservable(); + rootItems = this.#packages.asObservable(); + + extensions = this.#extensions.asObservable(); /** * Creates an instance of PackageStore. @@ -34,7 +39,11 @@ export class UmbPackageStore extends UmbStoreBase { * Append items to the store */ appendItems(packages: Array) { - this.#data.next(packages); + this.#packages.next(packages); + } + + appendExtensions(extensions: ManifestBase[]) { + this.#extensions.append(extensions); } } From a30c0249ba0a6fd3b77641a9c624cf9cecab8bbf Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 17:13:08 +0100 Subject: [PATCH 21/87] load extensions rather than packages in server controller --- .../repository/server-package.controller.ts | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts index 8482a5d5b5..e7089ee4e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts @@ -1,4 +1,4 @@ -import { first, Subject, takeUntil } from 'rxjs'; +import { Subject, takeUntil } from 'rxjs'; import { UmbPackageRepository } from './package.repository'; import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; import { isManifestJSType, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; @@ -23,29 +23,21 @@ export class UmbServerPackageController extends UmbController { } async #loadPackages() { - const package$ = await this.#repository.rootItems(); + const extensions$ = await this.#repository.extensions(); - package$ + extensions$ .pipe( // If the app breaks then stop the request - takeUntil(this.#unobserve), - // Stop after the first time, we only need to load the packages once - first() + takeUntil(this.#unobserve) ) - .subscribe((packages) => { - // Go through packages and register their extensions - packages.forEach((p) => { - const { extensions } = p; - if (extensions?.length) { - extensions.forEach((extension) => { - /** - * Crude check to see if extension is of type "js" since it is safe to assume we do not - * need to load any other types of extensions in the backoffice (we need a js file to load) - */ - if (isManifestJSType(extension)) { - this.extensionRegistry.register(extension); - } - }); + .subscribe((extensions) => { + extensions.forEach((extension) => { + /** + * Crude check to see if extension is of type "js" since it is safe to assume we do not + * need to load any other types of extensions in the backoffice (we need a js file to load) + */ + if (isManifestJSType(extension)) { + this.extensionRegistry.register(extension); } }); }); From fa56351ccec1a140058d69f849b74b0b520d80eb Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 17:16:34 +0100 Subject: [PATCH 22/87] add flag to test if packages have been loaded once (is there a better way?) --- .../src/backoffice/packages/repository/package.repository.ts | 4 ++++ .../src/backoffice/packages/repository/package.store.ts | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index dbc01537ff..212696603b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -30,6 +30,10 @@ export class UmbPackageRepository { * @private */ async #requestRootItems(store: UmbPackageStore) { + if (store.isPackagesLoaded) { + return; + } + const { data } = await this.#packageSource.getRootItems(); if (data) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index f7bd27f54a..3884ff9fa7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -26,6 +26,8 @@ export class UmbPackageStore extends UmbStoreBase { extensions = this.#extensions.asObservable(); + isPackagesLoaded = false; + /** * Creates an instance of PackageStore. * @param {UmbControllerHostInterface} host @@ -40,6 +42,7 @@ export class UmbPackageStore extends UmbStoreBase { */ appendItems(packages: Array) { this.#packages.next(packages); + this.isPackagesLoaded = true; } appendExtensions(extensions: ManifestBase[]) { From 676e8229e8f657e4a46580199af07e041b155714 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Feb 2023 17:20:42 +0100 Subject: [PATCH 23/87] add fake server model --- .../packages/repository/sources/package.server.data.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts index 21edecd157..2e7a60b9c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -1,4 +1,5 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { DataSourceResponse, UmbPackage } from '@umbraco-cms/models'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { umbracoPath } from '@umbraco-cms/utils'; @@ -13,7 +14,7 @@ export class UmbPackageServerDataSource { * Get the root items from the server * @memberof UmbPackageServerDataSource */ - getRootItems() { + getRootItems(): Promise> { // TODO: Use real resource when available return tryExecuteAndNotify( this.host, From 07b41567f08c60bbe84f859bee8a5c9b557f743f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 08:57:47 +0100 Subject: [PATCH 24/87] rename to ServerExtension controller --- .../src/backoffice/backoffice.element.ts | 4 ++-- ...r-package.controller.ts => server-extension.controller.ts} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/{server-package.controller.ts => server-extension.controller.ts} (91%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts index b350c8b0cc..d6d8504ce2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -41,7 +41,7 @@ import { UmbThemeContext } from './themes/theme.context'; import { UmbLanguageStore } from './settings/languages/repository/language.store'; import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './settings/languages/app-language.context'; import { UmbPackageStore } from './packages/repository/package.store'; -import { UmbServerPackageController } from './packages/repository/server-package.controller'; +import { UmbServerExtensionController } from './packages/repository/server-extension.controller'; import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification'; import { UmbLitElement } from '@umbraco-cms/element'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; @@ -118,7 +118,7 @@ export class UmbBackofficeElement extends UmbLitElement { new UmbThemeContext(this); new UmbPackageStore(this); - new UmbServerPackageController(this, umbExtensionsRegistry); + new UmbServerExtensionController(this, umbExtensionsRegistry); } render() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts index e7089ee4e5..0073576b89 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-package.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts @@ -3,12 +3,12 @@ import { UmbPackageRepository } from './package.repository'; import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; import { isManifestJSType, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; -export class UmbServerPackageController extends UmbController { +export class UmbServerExtensionController extends UmbController { #unobserve = new Subject(); #repository: UmbPackageRepository; constructor(host: UmbControllerHostInterface, private readonly extensionRegistry: UmbExtensionRegistry) { - super(host, UmbServerPackageController.name); + super(host, UmbServerExtensionController.name); this.#repository = new UmbPackageRepository(host); } From 987e363f20cb62680f9d102bf2b18c36bfc4fd16 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 09:07:25 +0100 Subject: [PATCH 25/87] change model based on feedback from Kenn --- .../libs/models/index.ts | 5 +- .../core/mocks/domains/manifests.handlers.ts | 113 +++++++++--------- 2 files changed, 56 insertions(+), 62 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 1a842dd968..55988872da 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -158,7 +158,4 @@ export type UmbPackage = { extensions?: unknown[]; }; -export type PagedManifestsResponse = { - total: number; - items: UmbPackage[]; -}; +export type PagedManifestsResponse = UmbPackage[]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts index 116a277f8b..4b652cdac4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts @@ -7,66 +7,63 @@ export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ - total: 3, - items: [ - { - name: 'Named Package', - version: '1.0.0', - extensions: [ - { - type: 'section', - alias: 'My.Section.Custom', - name: 'Custom Section', - js: '/App_Plugins/section.js', - elementName: 'my-section-custom', - weight: 1, - meta: { - label: 'Custom', - pathname: 'my-custom', - }, + ctx.json([ + { + name: 'Named Package', + version: '1.0.0', + extensions: [ + { + type: 'section', + alias: 'My.Section.Custom', + name: 'Custom Section', + js: '/App_Plugins/section.js', + elementName: 'my-section-custom', + weight: 1, + meta: { + label: 'Custom', + pathname: 'my-custom', }, - { - type: 'propertyEditorUI', - alias: 'My.PropertyEditorUI.Custom', - name: 'My Custom Property Editor UI', - js: '/App_Plugins/property-editor.js', - elementName: 'my-property-editor-ui-custom', - meta: { - label: 'My Custom Property', - icon: 'document', - group: 'Common', - propertyEditorModel: 'Umbraco.JSON', - }, + }, + { + type: 'propertyEditorUI', + alias: 'My.PropertyEditorUI.Custom', + name: 'My Custom Property Editor UI', + js: '/App_Plugins/property-editor.js', + elementName: 'my-property-editor-ui-custom', + meta: { + label: 'My Custom Property', + icon: 'document', + group: 'Common', + propertyEditorModel: 'Umbraco.JSON', }, - ], - }, - { - extensions: [ - { - type: 'entrypoint', - name: 'My Custom Entry Point', - alias: 'My.Entrypoint.Custom', - js: '/App_Plugins/custom-entrypoint.js', + }, + ], + }, + { + extensions: [ + { + type: 'entrypoint', + name: 'My Custom Entry Point', + alias: 'My.Entrypoint.Custom', + js: '/App_Plugins/custom-entrypoint.js', + }, + ], + }, + { + name: 'Package with a view', + extensions: [ + { + type: 'packageView', + alias: 'My.PackageView.Custom', + name: 'My Custom Package View', + js: '/App_Plugins/package-view.js', + meta: { + packageName: 'my.package', }, - ], - }, - { - name: 'Package with a view', - extensions: [ - { - type: 'packageView', - alias: 'My.PackageView.Custom', - name: 'My Custom Package View', - js: '/App_Plugins/package-view.js', - meta: { - packageName: 'my.package', - }, - }, - ], - }, - ], - }) + }, + ], + }, + ]) ); }); @@ -74,6 +71,6 @@ export const manifestEmptyHandler = rest.get(umbracoPath('/manifests'), (_req, r return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ total: 0, items: [] }) + ctx.json([]) ); }); From 77c7def9d7d573ce16312171558b45de8864496f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 09:10:02 +0100 Subject: [PATCH 26/87] update models --- .../backoffice/packages/repository/package.repository.ts | 8 ++++---- .../packages/repository/sources/package.server.data.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index 212696603b..101b087a0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -34,13 +34,13 @@ export class UmbPackageRepository { return; } - const { data } = await this.#packageSource.getRootItems(); + const { data: packages } = await this.#packageSource.getRootItems(); - if (data) { - store.appendItems(data.items); + if (packages) { + store.appendItems(packages); const extensions: ManifestBase[] = []; - data.items.forEach((p) => { + packages.forEach((p) => { p.extensions?.forEach((e) => { // Crudely validate that the extension at least follows a basic manifest structure // Idea: Use `Zod` to validate the manifest diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts index 2e7a60b9c5..2e42ed3563 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -14,7 +14,7 @@ export class UmbPackageServerDataSource { * Get the root items from the server * @memberof UmbPackageServerDataSource */ - getRootItems(): Promise> { + getRootItems(): Promise> { // TODO: Use real resource when available return tryExecuteAndNotify( this.host, From 5e2a2ec39089c77181c0f6de194e1106601eef34 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 09:10:11 +0100 Subject: [PATCH 27/87] add env to turn on and off extension mocking --- src/Umbraco.Web.UI.Client/.env | 1 + src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts | 4 ++-- src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts | 2 +- src/Umbraco.Web.UI.Client/src/vite-env.d.ts | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.env b/src/Umbraco.Web.UI.Client/.env index dadbe466c0..6042061013 100644 --- a/src/Umbraco.Web.UI.Client/.env +++ b/src/Umbraco.Web.UI.Client/.env @@ -3,3 +3,4 @@ VITE_UMBRACO_USE_MSW=on # on = turns on MSW, off = disables all mock handlers VITE_UMBRACO_API_URL=http://localhost:11000 VITE_UMBRACO_INSTALL_STATUS=running # running or must-install or must-upgrade VITE_MSW_QUIET=off # on = turns off MSW console logs, off = turns on MSW console logs +VITE_UMBRACO_EXTENSION_MOCKS=off # on = turns on extension mocks, off = turns off extension mocks diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts index e4c4db32d2..42d9c200ce 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts @@ -64,8 +64,8 @@ switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { handlers.push(serverHandlers.serverRunningHandler); } -switch (import.meta.env.MODE) { - case 'development': +switch (import.meta.env.VITE_UMBRACO_EXTENSION_MOCKS) { + case 'on': handlers.push(manifestsHandlers.manifestDevelopmentHandler); break; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts index bc02257b50..2c9ab05627 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/e2e-handlers.ts @@ -17,7 +17,7 @@ import { handlers as redirectManagementHandlers } from './domains/redirect-manag export const handlers = [ serverHandlers.serverRunningHandler, serverHandlers.serverVersionHandler, - manifestsHandlers.manifestDevelopmentHandler, + manifestsHandlers.manifestEmptyHandler, ...installHandlers, ...upgradeHandlers, ...userHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/vite-env.d.ts b/src/Umbraco.Web.UI.Client/src/vite-env.d.ts index b045b61a0c..d91f137aea 100644 --- a/src/Umbraco.Web.UI.Client/src/vite-env.d.ts +++ b/src/Umbraco.Web.UI.Client/src/vite-env.d.ts @@ -5,4 +5,5 @@ interface ImportMetaEnv { VITE_UMBRACO_API_URL: string; VITE_UMBRACO_USE_MSW: 'on' | 'off'; VITE_MSW_QUIET: 'on' | 'off'; + VITE_UMBRACO_EXTENSION_MOCKS: 'on' | 'off'; } From e854e636edd22d03de400e682a85db90785aa9b8 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 15:12:20 +0100 Subject: [PATCH 28/87] new PackageMigrations repository --- .../src/models/PackageCreateModel.ts | 8 + .../src/models/PackageDefinitionModel.ts | 11 + .../src/models/PackageMigrationStatusModel.ts | 9 + .../src/models/PackageModelBaseModel.ts | 21 ++ .../src/models/PackageUpdateModel.ts | 10 + .../src/models/PagedPackageDefinitionModel.ts | 11 + .../PagedPackageMigrationStatusModel.ts | 11 + .../src/services/PackageResource.ts | 190 ++++++++++++++++++ 8 files changed, 271 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts new file mode 100644 index 0000000000..4061ed4560 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageModelBaseModel } from './PackageModelBaseModel'; + +export type PackageCreateModel = PackageModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts new file mode 100644 index 0000000000..70f174f33d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageModelBaseModel } from './PackageModelBaseModel'; + +export type PackageDefinitionModel = (PackageModelBaseModel & { + key?: string; + packagePath?: string; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts new file mode 100644 index 0000000000..a0317649c5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type PackageMigrationStatusModel = { + packageName?: string; + hasPendingMigrations?: boolean; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts new file mode 100644 index 0000000000..a405b0ecc2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageModelBaseModel.ts @@ -0,0 +1,21 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type PackageModelBaseModel = { + name?: string; + contentNodeId?: string | null; + contentLoadChildNodes?: boolean; + mediaKeys?: Array; + mediaLoadChildNodes?: boolean; + documentTypes?: Array; + mediaTypes?: Array; + dataTypes?: Array; + templates?: Array; + partialViews?: Array; + stylesheets?: Array; + scripts?: Array; + languages?: Array; + dictionaryItems?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts new file mode 100644 index 0000000000..e8bbd052fe --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageModelBaseModel } from './PackageModelBaseModel'; + +export type PackageUpdateModel = (PackageModelBaseModel & { + packagePath?: string; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts new file mode 100644 index 0000000000..3a596e659a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageDefinitionModel } from './PackageDefinitionModel'; + +export type PagedPackageDefinitionModel = { + total: number; + items: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts new file mode 100644 index 0000000000..b9a95529d8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageMigrationStatusModel } from './PackageMigrationStatusModel'; + +export type PagedPackageMigrationStatusModel = { + total: number; + items: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts new file mode 100644 index 0000000000..cc80617938 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PackageResource.ts @@ -0,0 +1,190 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { PackageCreateModel } from '../models/PackageCreateModel'; +import type { PackageDefinitionModel } from '../models/PackageDefinitionModel'; +import type { PackageUpdateModel } from '../models/PackageUpdateModel'; +import type { PagedPackageDefinitionModel } from '../models/PagedPackageDefinitionModel'; +import type { PagedPackageMigrationStatusModel } from '../models/PagedPackageMigrationStatusModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class PackageResource { + + /** + * @returns any Success + * @throws ApiError + */ + public static postPackageByNameRunMigration({ + name, + }: { + name: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/package/{name}/run-migration', + path: { + 'name': name, + }, + errors: { + 404: `Not Found`, + 409: `Conflict`, + }, + }); + } + + /** + * @returns PagedPackageDefinitionModel Success + * @throws ApiError + */ + public static getPackageCreated({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postPackageCreated({ + requestBody, + }: { + requestBody?: PackageCreateModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/package/created', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getPackageCreatedByKey({ + key, + }: { + key: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deletePackageCreatedByKey({ + key, + }: { + key: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/package/created/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putPackageCreatedByKey({ + key, + requestBody, + }: { + key: string, + requestBody?: PackageUpdateModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/package/created/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns binary Success + * @throws ApiError + */ + public static getPackageCreatedByKeyDownload({ + key, + }: { + key: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/created/{key}/download', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns PagedPackageMigrationStatusModel Success + * @throws ApiError + */ + public static getPackageMigrationStatus({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/package/migration-status', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + +} From 6df66a0e720133a96bb5c9ee0f2851abe3aa1390 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Feb 2023 15:12:28 +0100 Subject: [PATCH 29/87] fetch and store package migrations in store --- .../libs/backend-api/src/index.ts | 4 ++++ .../packages/repository/package.repository.ts | 18 ++++++++++++++++++ .../packages/repository/package.store.ts | 9 +++++++++ .../repository/sources/package.server.data.ts | 9 +++++++++ 4 files changed, 40 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts index c3cbdcd186..85ef83e25a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts @@ -224,6 +224,7 @@ export { MediaTypeResource } from './services/MediaTypeResource'; export { MemberGroupResource } from './services/MemberGroupResource'; export { MemberTypeResource } from './services/MemberTypeResource'; export { ModelsBuilderResource } from './services/ModelsBuilderResource'; +export { PackageResource } from './services/PackageResource'; export { PartialViewResource } from './services/PartialViewResource'; export { ProfilingResource } from './services/ProfilingResource'; export { PublishedCacheResource } from './services/PublishedCacheResource'; @@ -240,3 +241,6 @@ export { TelemetryResource } from './services/TelemetryResource'; export { TemplateResource } from './services/TemplateResource'; export { TrackedReferenceResource } from './services/TrackedReferenceResource'; export { UpgradeResource } from './services/UpgradeResource'; + +export type { PackageMigrationStatusModel } from './models/PackageMigrationStatusModel'; +export type { PagedPackageMigrationStatusModel } from './models/PagedPackageMigrationStatusModel'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index 101b087a0c..45284c11dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -19,6 +19,7 @@ export class UmbPackageRepository { new UmbContextConsumerController(host, UMB_PACKAGE_STORE_TOKEN, (instance) => { this.#packageStore = instance; this.#requestRootItems(instance); + this.#requestPackageMigrations(instance); res(); }); }); @@ -54,6 +55,14 @@ export class UmbPackageRepository { } } + async #requestPackageMigrations(store: UmbPackageStore) { + const { data: migrations } = await this.#packageSource.getPackageMigrations(); + + if (migrations) { + store.appendMigrations(migrations.items); + } + } + /** * Observable of root items * @memberOf UmbPackageRepository @@ -72,6 +81,15 @@ export class UmbPackageRepository { return this.#packageStore!.extensions; } + /** + * Observable of migrations + * @memberOf UmbPackageRepository + */ + async migrations() { + await this.#init; + return this.#packageStore!.migrations; + } + private isManifestBase(x: unknown): x is ManifestBase { return typeof x === 'object' && x !== null && 'alias' in x; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index 3884ff9fa7..f581b2045d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -3,6 +3,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbStoreBase } from '@umbraco-cms/store'; import type { ManifestBase, UmbPackage } from '@umbraco-cms/models'; +import type { PackageMigrationStatusModel } from '@umbraco-cms/backend-api'; import { ArrayState } from '@umbraco-cms/observable-api'; /** @@ -19,6 +20,8 @@ export class UmbPackageStore extends UmbStoreBase { #extensions = new ArrayState([], (e) => e.alias); + #migrations = new ArrayState([], (e) => e.packageName); + /** * Observable of packages with extensions */ @@ -26,6 +29,8 @@ export class UmbPackageStore extends UmbStoreBase { extensions = this.#extensions.asObservable(); + migrations = this.#migrations.asObservable(); + isPackagesLoaded = false; /** @@ -48,6 +53,10 @@ export class UmbPackageStore extends UmbStoreBase { appendExtensions(extensions: ManifestBase[]) { this.#extensions.append(extensions); } + + appendMigrations(migrations: PackageMigrationStatusModel[]) { + this.#migrations.append(migrations); + } } export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken(UmbPackageStore.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts index 2e42ed3563..a779f0b131 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -1,3 +1,4 @@ +import { PackageResource } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import type { DataSourceResponse, UmbPackage } from '@umbraco-cms/models'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -21,4 +22,12 @@ export class UmbPackageServerDataSource { fetch(umbracoPath('/manifests')).then((res) => res.json()) ); } + + /** + * Get the package migrations from the server + * @memberof UmbPackageServerDataSource + */ + getPackageMigrations() { + return tryExecuteAndNotify(this.host, PackageResource.getPackageMigrationStatus({ skip: 0, take: 9999 })); + } } From 1784877e6e0812621efd965d3a7c21c228c96410 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:59:48 +0100 Subject: [PATCH 30/87] change url to /package/manifest to reflect latest backend changes --- .../packages/repository/sources/package.server.data.ts | 2 +- .../src/core/mocks/domains/manifests.handlers.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts index a779f0b131..e2bdd212fa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/sources/package.server.data.ts @@ -19,7 +19,7 @@ export class UmbPackageServerDataSource { // TODO: Use real resource when available return tryExecuteAndNotify( this.host, - fetch(umbracoPath('/manifests')).then((res) => res.json()) + fetch(umbracoPath('/package/manifest')).then((res) => res.json()) ); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts index 4b652cdac4..a5f0be9773 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/manifests.handlers.ts @@ -3,7 +3,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; import type { PagedManifestsResponse } from '@umbraco-cms/models'; -export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_req, res, ctx) => { +export const manifestDevelopmentHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), @@ -67,7 +67,7 @@ export const manifestDevelopmentHandler = rest.get(umbracoPath('/manifests'), (_ ); }); -export const manifestEmptyHandler = rest.get(umbracoPath('/manifests'), (_req, res, ctx) => { +export const manifestEmptyHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), From 3d9313d4e91e685db100a7bc65f123ad42c6af25 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:23:55 +0100 Subject: [PATCH 31/87] add todo --- .../src/backoffice/packages/repository/package.repository.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index 45284c11dd..fd4d4314d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -4,6 +4,8 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { ManifestBase } from '@umbraco-cms/extensions-registry'; +// TODO: Figure out if we should base stores like this on something more generic for "collections" rather than trees. + /** * A repository for Packages which mimicks a tree store. * @export From 5ec64f85da8a548c638640f3a0ff1589a8bf2e91 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:26:43 +0100 Subject: [PATCH 32/87] make methods public --- .../packages/repository/package.repository.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts index fd4d4314d7..ec54c779b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.repository.ts @@ -20,8 +20,8 @@ export class UmbPackageRepository { this.#init = new Promise((res) => { new UmbContextConsumerController(host, UMB_PACKAGE_STORE_TOKEN, (instance) => { this.#packageStore = instance; - this.#requestRootItems(instance); - this.#requestPackageMigrations(instance); + this.requestRootItems(instance); + this.requestPackageMigrations(instance); res(); }); }); @@ -30,9 +30,8 @@ export class UmbPackageRepository { /** * Request the root items from the Data Source * @memberOf UmbPackageRepository - * @private */ - async #requestRootItems(store: UmbPackageStore) { + async requestRootItems(store: UmbPackageStore) { if (store.isPackagesLoaded) { return; } @@ -57,7 +56,11 @@ export class UmbPackageRepository { } } - async #requestPackageMigrations(store: UmbPackageStore) { + /** + * Request the package migrations from the Data Source + * @memberOf UmbPackageRepository + */ + async requestPackageMigrations(store: UmbPackageStore) { const { data: migrations } = await this.#packageSource.getPackageMigrations(); if (migrations) { From f4a992668c4ab0368ab110251e184eb23f8ce79c Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:42:23 +0100 Subject: [PATCH 33/87] update lockfile --- src/Umbraco.Web.UI.Client/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index eea87149ae..646bbd3b30 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -76,8 +76,8 @@ "web-component-analyzer": "^2.0.0-next.4" }, "engines": { - "node": ">=18.14.2 <19", - "npm": ">=9.5.0 < 10" + "node": ">=18.14 <19", + "npm": ">=9.5 < 10" } }, "node_modules/@ampproject/remapping": { From 8a967042ee55bfbd26d637900d23be408a076f32 Mon Sep 17 00:00:00 2001 From: bkclerke Date: Sun, 26 Feb 2023 19:21:00 -0800 Subject: [PATCH 34/87] update contrib images --- src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md b/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md index e38509ec18..38b8362ab1 100644 --- a/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md +++ b/src/Umbraco.Web.UI.Client/.github/CONTRIBUTING.md @@ -50,7 +50,7 @@ The frontend has an API formatter that takes the OpenAPI schema file and convert ### Example: Published Cache Status Dashboard -![Published Status Dashboard](.github/images/contributing/published-cache-status-dashboard.png) +![Published Status Dashboard](/.github/images/contributing/published-cache-status-dashboard.png) ### Boilerplate (example using Lit) @@ -155,7 +155,7 @@ Let’s go through each of these properties… Running the app with `npm run dev`, you will quickly notice the API requests turn into 404 errors. In order to hit the API, we need to add a mock handler to define the endpoints which our dashboard will call. In the case of the Published Cache Status section, we have a number of calls to work through. Let’s start by looking at the call to retrieve the current status of the cache: -![Published Status Dashboard](.github/images/contributing/status-of-cache.png) +![Published Status Dashboard](/.github/images/contributing/status-of-cache.png) From the existing functionality, we can see that this is a string message that is received as part of a `GET` request from the server. @@ -184,7 +184,7 @@ It returns a `200 OK` response and a string value with the current “status” An example `POST` is similar. Let’s take the “Refresh status” button as an example: -![Published Status Dashboard](.github/images/contributing/refresh-status.png) +![Published Status Dashboard](/.github/images/contributing/refresh-status.png) From our existing functionality we can see that this makes a `POST`call to the server to prompt a reload of the published cache. So we would add a new endpoint to the mock handler that would look like: From 2946851c0e77dcc2cf434c03d76dbf4c32b53843 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 12:57:07 +0100 Subject: [PATCH 35/87] move entity action base class to lib folder --- .../shared/entity-actions => libs/entity-action}/index.ts | 2 +- .../documents/entity-actions/create-blueprint.action.ts | 2 +- .../documents/documents/entity-actions/create.action.ts | 2 +- .../entity-actions/culture-and-hostnames.action.ts | 2 +- .../documents/entity-actions/permissions.action.ts | 2 +- .../documents/entity-actions/public-access.action.ts | 2 +- .../documents/documents/entity-actions/publish.action.ts | 2 +- .../documents/documents/entity-actions/rollback.action.ts | 2 +- .../documents/documents/entity-actions/unpublish.action.ts | 2 +- .../media/media-types/entity-actions/create.action.ts | 2 +- .../media/media-types/entity-actions/reload.action.ts | 6 +++--- .../backoffice/shared/entity-actions/copy/copy.action.ts | 2 +- .../shared/entity-actions/delete/delete.action.ts | 2 +- .../backoffice/shared/entity-actions/move/move.action.ts | 2 +- .../sort-children-of/sort-children-of.action.ts | 2 +- .../backoffice/shared/entity-actions/trash/trash.action.ts | 2 +- .../templates/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/export/export.action.ts | 2 +- .../dictionary/entity-actions/import/import.action.ts | 2 +- .../translation/dictionary/entity-actions/reload.action.ts | 6 +++--- 21 files changed, 25 insertions(+), 25 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action}/index.ts (84%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/index.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/index.ts index 1a39883d37..e33390e56c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts @@ -1,4 +1,4 @@ -import { UmbAction, UmbActionBase } from '../action'; +import { UmbAction, UmbActionBase } from '../../src/backoffice/shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export interface UmbEntityAction extends UmbAction { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts index e9dac9e70a..0f4dfa282a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts index 938bd470a2..256cf0b5a7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts index 5ae0161080..bf865e7707 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentCultureAndHostnamesEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts index 2aabec2046..93007fa503 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPermissionsEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts index b1374972ee..dc9f97497f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts index 7e12969c18..2d9f5a1c7f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbPublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts index 1340ee9921..7c570a9c01 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRollbackDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts index 461ebb5c04..d7a7bb54af 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts index a2e0894606..0879cc03d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateMediaTypeEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts index f07f5b8767..dc91a3d81e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -11,6 +11,6 @@ export default class UmbReloadMediaTypeEntityAction extends UmbEntityActionBase< } async execute() { - alert('refresh') + alert('refresh'); } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts index 8f8cb804df..9676dea435 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '..'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCopyEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts index 3521026991..21e098b8b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '..'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts index 7b4666ad8c..63184fd186 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '..'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbMoveEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts index 0860f53ad4..c43b6fb4c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '..'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbSortChildrenOfEntityAction< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts index 626452118d..8e028e678a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '..'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts index 12af1d77c2..59c3ab30df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts index ae4396f5c1..b0083da39c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbSectionSidebarContext, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts index d13e557ded..314e1474ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbExportDictionaryModalResultData } from './export-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts index b091cc0e36..606ecebd4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbImportDictionaryModalResultData } from './import-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts index 19f607129d..3878da381e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../shared/entity-actions'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action'; import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -11,6 +11,6 @@ export default class UmbReloadDictionaryEntityAction extends UmbEntityActionBase } async execute() { - alert('refresh') + alert('refresh'); } -} \ No newline at end of file +} From 1e241e75882248c2d5833963e9ce33c55e7ecf1e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 12:57:38 +0100 Subject: [PATCH 36/87] rename file --- .../libs/entity-action/{index.ts => entity-action.ts} | 0 .../documents/entity-actions/create-blueprint.action.ts | 2 +- .../documents/documents/entity-actions/create.action.ts | 2 +- .../documents/entity-actions/culture-and-hostnames.action.ts | 2 +- .../documents/documents/entity-actions/permissions.action.ts | 2 +- .../documents/documents/entity-actions/public-access.action.ts | 2 +- .../documents/documents/entity-actions/publish.action.ts | 2 +- .../documents/documents/entity-actions/rollback.action.ts | 2 +- .../documents/documents/entity-actions/unpublish.action.ts | 2 +- .../media/media-types/entity-actions/create.action.ts | 2 +- .../media/media-types/entity-actions/reload.action.ts | 2 +- .../src/backoffice/shared/entity-actions/copy/copy.action.ts | 2 +- .../backoffice/shared/entity-actions/delete/delete.action.ts | 2 +- .../src/backoffice/shared/entity-actions/move/move.action.ts | 2 +- .../entity-actions/sort-children-of/sort-children-of.action.ts | 2 +- .../src/backoffice/shared/entity-actions/trash/trash.action.ts | 2 +- .../templating/templates/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/export/export.action.ts | 2 +- .../dictionary/entity-actions/import/import.action.ts | 2 +- .../translation/dictionary/entity-actions/reload.action.ts | 2 +- 21 files changed, 20 insertions(+), 20 deletions(-) rename src/Umbraco.Web.UI.Client/libs/entity-action/{index.ts => entity-action.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/entity-action/index.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts index 0f4dfa282a..97b2254336 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts index 256cf0b5a7..6b6957410d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts index bf865e7707..20ac78ce50 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentCultureAndHostnamesEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts index 93007fa503..b54f9271e9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPermissionsEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts index dc9f97497f..bf4f2ef878 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts index 2d9f5a1c7f..e887952cf7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbPublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts index 7c570a9c01..af89b4c00d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRollbackDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts index d7a7bb54af..980bea5e2d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts index 0879cc03d1..b869273108 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateMediaTypeEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts index dc91a3d81e..6a046be5a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts index 9676dea435..04e700d6af 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCopyEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts index 21e098b8b0..015a09e624 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts index 63184fd186..bd58507009 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbMoveEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts index c43b6fb4c2..3b14a69f29 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbSortChildrenOfEntityAction< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts index 8e028e678a..c0d76080d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts index 59c3ab30df..23ccd22921 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts index b0083da39c..85850de65b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbSectionSidebarContext, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts index 314e1474ea..e0002d2dff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbExportDictionaryModalResultData } from './export-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts index 606ecebd4d..54cb9314e6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbImportDictionaryModalResultData } from './import-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts index 3878da381e..f409b1bd35 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action'; +import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; From d18bc9d3be347a6cbce4fc575937f8a101a98bab Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 13:01:39 +0100 Subject: [PATCH 37/87] add import barrel --- src/Umbraco.Web.UI.Client/libs/entity-action/index.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/index.ts diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts new file mode 100644 index 0000000000..9d7bf09f23 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts @@ -0,0 +1 @@ +export * from './entity-action'; From 52bd9147b1aa76cb0241b2506d451e9095ef013c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 13:02:29 +0100 Subject: [PATCH 38/87] add rollup config --- src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js new file mode 100644 index 0000000000..945c0afe88 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js @@ -0,0 +1,4 @@ +import config from '../../utils/rollup.config.js'; +export default { + ...config, +}; From c0d4ab70f5c4ebcb8f2c133edede37d9fe55fa77 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 13:21:40 +0100 Subject: [PATCH 39/87] add import alias --- .../documents/entity-actions/create-blueprint.action.ts | 2 +- .../documents/documents/entity-actions/create.action.ts | 2 +- .../documents/entity-actions/culture-and-hostnames.action.ts | 2 +- .../documents/documents/entity-actions/permissions.action.ts | 2 +- .../documents/documents/entity-actions/public-access.action.ts | 2 +- .../documents/documents/entity-actions/publish.action.ts | 2 +- .../documents/documents/entity-actions/rollback.action.ts | 2 +- .../documents/documents/entity-actions/unpublish.action.ts | 2 +- .../media/media-types/entity-actions/create.action.ts | 2 +- .../media/media-types/entity-actions/reload.action.ts | 2 +- .../src/backoffice/shared/entity-actions/copy/copy.action.ts | 2 +- .../backoffice/shared/entity-actions/delete/delete.action.ts | 2 +- .../src/backoffice/shared/entity-actions/move/move.action.ts | 2 +- .../entity-actions/sort-children-of/sort-children-of.action.ts | 2 +- .../src/backoffice/shared/entity-actions/trash/trash.action.ts | 2 +- .../templating/templates/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/create/create.action.ts | 2 +- .../dictionary/entity-actions/export/export.action.ts | 2 +- .../dictionary/entity-actions/import/import.action.ts | 2 +- .../translation/dictionary/entity-actions/reload.action.ts | 2 +- src/Umbraco.Web.UI.Client/tsconfig.json | 1 + src/Umbraco.Web.UI.Client/web-test-runner.config.mjs | 1 + 22 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts index 97b2254336..a0780eb967 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create-blueprint.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts index 6b6957410d..d88cca15bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts index 20ac78ce50..1ba8de7356 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/culture-and-hostnames.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentCultureAndHostnamesEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts index b54f9271e9..a116358cce 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/permissions.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPermissionsEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts index bf4f2ef878..aff79a03b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/public-access.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts index e887952cf7..47d49c6517 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/publish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbPublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts index af89b4c00d..8e473ecbfb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/rollback.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRollbackDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts index 980bea5e2d..3820cae4d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/unpublish.action.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts index b869273108..9d5c7cdf57 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/create.action.ts @@ -1,5 +1,5 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateMediaTypeEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts index 6a046be5a4..cf5df6fcdd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts index 04e700d6af..ac5995ea1f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCopyEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts index 015a09e624..ef218b305a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts index bd58507009..79c9a20dd1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbMoveEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts index 3b14a69f29..002e0b6613 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbSortChildrenOfEntityAction< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts index c0d76080d0..822919e123 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts index 23ccd22921..eb5c1bca61 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/create/create.action.ts @@ -1,4 +1,4 @@ -import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbCreateEntityAction }> extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts index 85850de65b..1236f78b5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbSectionSidebarContext, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts index e0002d2dff..34591c7c33 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbExportDictionaryModalResultData } from './export-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts index 54cb9314e6..9dc20d8f67 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbImportDictionaryModalResultData } from './import-dictionary-modal-layout.element'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts index f409b1bd35..0892bea9a5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '../../../../../libs/entity-action/entity-action'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 0d7a68995c..4647c8f2be 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -32,6 +32,7 @@ "@umbraco-cms/notification": ["libs/notification"], "@umbraco-cms/observable-api": ["libs/observable-api"], "@umbraco-cms/events": ["libs/events"], + "@umbraco-cms/entity-action": ["libs/entity-action"], "@umbraco-cms/utils": ["libs/utils"], "@umbraco-cms/router": ["libs/router"], "@umbraco-cms/test-utils": ["libs/test-utils"], diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index e053faf97a..4743a46991 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -49,6 +49,7 @@ export default { '@umbraco-cms/notification': './libs/notification/index.ts', '@umbraco-cms/observable-api': './libs/observable-api/index.ts', '@umbraco-cms/events': './libs/events/index.ts', + '@umbraco-cms/entity-action': './libs/entity-action/index.ts', '@umbraco-cms/store': './libs/store/index.ts', '@umbraco-cms/utils': './libs/utils/index.ts', '@umbraco-cms/test-utils': './libs/test-utils/index.ts', From 96e1282aadbbf42053d32b0281225bd8ac2adc74 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 14:00:02 +0100 Subject: [PATCH 40/87] update bulk actions to use base class --- .../libs/entity-action/entity-bulk-action.ts | 15 +++++++++++++++ .../libs/entity-action/index.ts | 1 + .../entity-bulk-actions/copy/copy.action.ts | 15 ++++----------- .../entity-bulk-actions/move/move.action.ts | 15 ++++----------- .../entity-bulk-actions/copy/copy.action.ts | 15 ++++----------- .../entity-bulk-actions/move/move.action.ts | 14 ++++---------- .../entity-bulk-actions/trash/trash.action.ts | 18 ++++++------------ 7 files changed, 38 insertions(+), 55 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts new file mode 100644 index 0000000000..95005a9612 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts @@ -0,0 +1,15 @@ +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbActionBase } from 'src/backoffice/shared/action'; + +export class UmbEntityBulkActionBase extends UmbActionBase { + selection: Array; + + constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { + super(host, repositoryAlias); + this.selection = selection; + } + + setSelection(selection: Array) { + this.selection = selection; + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts index 9d7bf09f23..424ad9fc60 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts @@ -1 +1,2 @@ export * from './entity-action'; +export * from './entity-bulk-action'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts index cd949ebe5c..cdc26a0488 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts @@ -1,21 +1,14 @@ +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbDocumentRepository } from '../../repository/document.repository'; -import { UmbActionBase } from '../../../../shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentCopyEntityBulkAction extends UmbActionBase { - #selection: Array; - +export class UmbDocumentCopyEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { - super(host, repositoryAlias); - this.#selection = selection; - } - - setSelection(selection: Array) { - this.#selection = selection; + super(host, repositoryAlias, selection); } async execute() { - console.log(`execute copy for: ${this.#selection}`); + console.log(`execute copy for: ${this.selection}`); await this.repository?.copy(); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts index 7a42dba038..680581722e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts @@ -1,21 +1,14 @@ +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbDocumentRepository } from '../../repository/document.repository'; -import { UmbActionBase } from '../../../../shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentMoveEntityBulkAction extends UmbActionBase { - #selection: Array; - +export class UmbDocumentMoveEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { - super(host, repositoryAlias); - this.#selection = selection; - } - - setSelection(selection: Array) { - this.#selection = selection; + super(host, repositoryAlias, selection); } async execute() { - console.log(`execute move for: ${this.#selection}`); + console.log(`execute move for: ${this.selection}`); await this.repository?.move(); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts index 5b1be09218..dd13ad9754 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts @@ -1,21 +1,14 @@ +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UmbActionBase } from '../../../../shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbMediaCopyEntityBulkAction extends UmbActionBase { - #selection: Array; - +export class UmbMediaCopyEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { - super(host, repositoryAlias); - this.#selection = selection; - } - - setSelection(selection: Array) { - this.#selection = selection; + super(host, repositoryAlias, selection); } async execute() { - console.log(`execute copy for: ${this.#selection}`); + console.log(`execute copy for: ${this.selection}`); await this.repository?.copy([], ''); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts index 2b1b44d03d..5e7a343e6a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts @@ -1,31 +1,25 @@ +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UmbActionBase } from '../../../../shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -export class UmbMediaMoveEntityBulkAction extends UmbActionBase { - #selection: Array; +export class UmbMediaMoveEntityBulkAction extends UmbEntityBulkActionBase { #modalService?: UmbModalService; constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { - super(host, repositoryAlias); - this.#selection = selection; + super(host, repositoryAlias, selection); new UmbContextConsumerController(host, UMB_MODAL_SERVICE_CONTEXT_TOKEN, (instance) => { this.#modalService = instance; }); } - setSelection(selection: Array) { - this.#selection = selection; - } - async execute() { // TODO: the picker should be single picker by default const modalHandler = this.#modalService?.mediaPicker({ selection: [], multiple: false }); const selection = await modalHandler?.onClose(); const destination = selection[0]; - await this.repository?.move(this.#selection, destination); + await this.repository?.move(this.selection, destination); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts index ce1a7d15fa..c654ac891c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts @@ -1,38 +1,32 @@ import { html } from 'lit'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UmbActionBase } from '../../../../shared/action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -export class UmbMediaTrashEntityBulkAction extends UmbActionBase { - #selection: Array; +export class UmbMediaTrashEntityBulkAction extends UmbEntityBulkActionBase { #modalService?: UmbModalService; constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { - super(host, repositoryAlias); - this.#selection = selection; + super(host, repositoryAlias, selection); new UmbContextConsumerController(host, UMB_MODAL_SERVICE_CONTEXT_TOKEN, (instance) => { this.#modalService = instance; }); } - setSelection(selection: Array) { - this.#selection = selection; - } - async execute() { // TODO: show error if (!this.#modalService || !this.repository) return; // TODO: should we subscribe in cases like this? - const { data } = await this.repository.requestTreeItems(this.#selection); + const { data } = await this.repository.requestTreeItems(this.selection); if (data) { // TODO: use correct markup const modalHandler = this.#modalService?.confirm({ - headline: `Deleting ${this.#selection.length} items`, + headline: `Deleting ${this.selection.length} items`, content: html` This will delete the following files:
    @@ -45,7 +39,7 @@ export class UmbMediaTrashEntityBulkAction extends UmbActionBase Date: Mon, 27 Feb 2023 14:05:46 +0100 Subject: [PATCH 41/87] move action base class to entity action lib folder --- .../{src/backoffice/shared => libs/entity-action}/action.ts | 1 + .../libs/entity-action/entity-action.ts | 2 +- .../libs/entity-action/entity-bulk-action.ts | 6 +++++- src/Umbraco.Web.UI.Client/libs/entity-action/index.ts | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared => libs/entity-action}/action.ts (96%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts similarity index 96% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/action.ts index ddbb8e783f..5c1ab79fd5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts @@ -3,6 +3,7 @@ import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/extens import { UmbObserverController } from '@umbraco-cms/observable-api'; export interface UmbAction { + host: UmbControllerHostInterface; repository: RepositoryType; execute(): Promise; } diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts index e33390e56c..17b010128b 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts @@ -1,4 +1,4 @@ -import { UmbAction, UmbActionBase } from '../../src/backoffice/shared/action'; +import { UmbAction, UmbActionBase } from './action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export interface UmbEntityAction extends UmbAction { diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts index 95005a9612..508af4d9c1 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts @@ -1,5 +1,9 @@ +import { UmbAction, UmbActionBase } from './action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbActionBase } from 'src/backoffice/shared/action'; + +export interface UmbEntityBulkAction extends UmbAction { + selection: Array; +} export class UmbEntityBulkActionBase extends UmbActionBase { selection: Array; diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts index 424ad9fc60..56f0bb40f5 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts @@ -1,2 +1,3 @@ +export * from './action'; export * from './entity-action'; export * from './entity-bulk-action'; From 2a8f0775516ba7d1573d8492c8dfeaa58fcb1fe6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 14:27:53 +0100 Subject: [PATCH 42/87] remove repository from workspace action --- .../shared/components/workspace/workspace-action/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts index f322a8eeb6..3e34bacce2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts @@ -1,11 +1,11 @@ -import { UmbActionBase } from '../../../action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -export class UmbWorkspaceAction extends UmbActionBase { +export class UmbWorkspaceAction { + host: UmbControllerHostInterface; workspaceContext?: WorkspaceType; - constructor(host: UmbControllerHostInterface, repositoryAlias: string) { - super(host, repositoryAlias); + constructor(host: UmbControllerHostInterface) { + this.host = host; new UmbContextConsumerController(this.host, 'umbWorkspaceContext', (instance: WorkspaceType) => { this.workspaceContext = instance; From e128f59c3f6097ceed095b0b40c8f02500b74fca Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 14:56:08 +0100 Subject: [PATCH 43/87] align workspace interface --- .../document-type-workspace.context.ts | 15 ++++-------- .../workspace/document-workspace.context.ts | 24 +++++++------------ .../workspace/media-type-workspace.context.ts | 15 ++++-------- .../workspace/media-workspace.context.ts | 19 ++++++--------- .../member-group-workspace.context.ts | 15 ++++-------- .../member-type-workspace.context.ts | 19 ++++++--------- .../workspace/member-workspace.context.ts | 10 ++++++-- .../workspace/data-type-workspace.context.ts | 19 ++++++--------- .../language/language-workspace.context.ts | 13 ++++------ .../workspace-context/workspace-context.ts | 10 ++++---- .../workspace/dictionary-workspace.context.ts | 15 ++++-------- .../workspace/user-group-workspace.context.ts | 4 ++-- .../users/workspace/user-workspace.context.ts | 4 ++-- 13 files changed, 72 insertions(+), 110 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts index ed00528b37..4fcef85092 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.context.ts @@ -7,20 +7,15 @@ import { ObjectState } from '@umbraco-cms/observable-api'; type EntityType = DocumentTypeModel; export class UmbWorkspaceDocumentTypeContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #repo: UmbDocumentTypeRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#repo = new UmbDocumentTypeRepository(this.#host); + super(host, new UmbDocumentTypeRepository(host)); } public setPropertyValue(alias: string, value: unknown) { @@ -49,21 +44,21 @@ export class UmbWorkspaceDocumentTypeContext } async load(entityKey: string) { - const { data } = await this.#repo.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (data) { this.#data.next(data); } } async createScaffold(parentKey: string | null) { - const { data } = await this.#repo.createScaffold(parentKey); + const { data } = await this.repository.createScaffold(parentKey); if (!data) return; this.#data.next(data); } async save() { if (!this.#data.value) return; - this.#repo.save(this.#data.value); + this.repository.save(this.#data.value); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts index 06d5436491..cce9a30c50 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts @@ -19,12 +19,9 @@ export type ActiveVariant = { type EntityType = DocumentModel; export class UmbDocumentWorkspaceContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceVariableEntityContextInterface { - #host: UmbControllerHostInterface; - #documentRepository: UmbDocumentRepository; - /** * The document is the current stored version of the document. * For now lets not share this publicly as it can become confusing. @@ -48,18 +45,15 @@ export class UmbDocumentWorkspaceContext readonly structure; constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; + super(host, new UmbDocumentRepository(host)); - this.#documentRepository = new UmbDocumentRepository(this.#host); + this.structure = new UmbWorkspacePropertyStructureManager(this.host, new UmbDocumentTypeRepository(this.host)); - this.structure = new UmbWorkspacePropertyStructureManager(this.#host, new UmbDocumentTypeRepository(this.#host)); - - new UmbObserverController(this._host, this.documentTypeKey, (key) => this.structure.loadType(key)); + new UmbObserverController(this.host, this.documentTypeKey, (key) => this.structure.loadType(key)); } async load(entityKey: string) { - const { data } = await this.#documentRepository.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (!data) return undefined; this.setIsNew(false); @@ -69,7 +63,7 @@ export class UmbDocumentWorkspaceContext } async createScaffold(parentKey: string | null) { - const { data } = await this.#documentRepository.createScaffold(parentKey); + const { data } = await this.repository.createScaffold(parentKey); if (!data) return undefined; this.setIsNew(true); @@ -177,16 +171,16 @@ export class UmbDocumentWorkspaceContext async save() { if (!this.#draft.value) return; if (this.getIsNew()) { - await this.#documentRepository.create(this.#draft.value); + await this.repository.create(this.#draft.value); } else { - await this.#documentRepository.save(this.#draft.value); + await this.repository.save(this.#draft.value); } // If it went well, then its not new anymore?. this.setIsNew(false); } async delete(key: string) { - await this.#documentRepository.delete(key); + await this.repository.delete(key); } /* diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts index 2445086e43..2e89adea0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts @@ -7,20 +7,15 @@ import type { MediaTypeDetails } from '@umbraco-cms/models'; type EntityType = MediaTypeDetails; export class UmbWorkspaceMediaTypeContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #repo: UmbMediaTypeRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#repo = new UmbMediaTypeRepository(this.#host); + super(host, new UmbMediaTypeRepository(host)); } getData() { @@ -44,14 +39,14 @@ export class UmbWorkspaceMediaTypeContext } async load(entityKey: string) { - const { data } = await this.#repo.requestDetails(entityKey); + const { data } = await this.repository.requestDetails(entityKey); if (data) { this.#data.next(data); } } async createScaffold() { - const { data } = await this.#repo.createScaffold(); + const { data } = await this.repository.createScaffold(); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -59,7 +54,7 @@ export class UmbWorkspaceMediaTypeContext async save() { if (!this.#data.value) return; - await this.#repo.save(this.#data.value); + await this.repository.save(this.#data.value); this.setIsNew(false); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts index fe27ecb936..89847721d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts @@ -7,20 +7,15 @@ import type { MediaDetails } from '@umbraco-cms/models'; type EntityType = MediaDetails; export class UmbMediaWorkspaceContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #detailRepository: UmbMediaRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#detailRepository = new UmbMediaRepository(this.#host); + super(host, new UmbMediaRepository(host)); } getData() { @@ -51,7 +46,7 @@ export class UmbMediaWorkspaceContext } async load(entityKey: string) { - const { data } = await this.#detailRepository.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); @@ -59,7 +54,7 @@ export class UmbMediaWorkspaceContext } async createScaffold(parentKey: string | null) { - const { data } = await this.#detailRepository.createScaffold(parentKey); + const { data } = await this.repository.createScaffold(parentKey); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -68,16 +63,16 @@ export class UmbMediaWorkspaceContext async save() { if (!this.#data.value) return; if (this.isNew) { - await this.#detailRepository.create(this.#data.value); + await this.repository.create(this.#data.value); } else { - await this.#detailRepository.save(this.#data.value); + await this.repository.save(this.#data.value); } // If it went well, then its not new anymore?. this.setIsNew(false); } async delete(key: string) { - await this.#detailRepository.delete(key); + await this.repository.delete(key); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts index 0368570c64..6acdae22d8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts @@ -7,20 +7,15 @@ import { ObjectState } from '@umbraco-cms/observable-api'; type EntityType = MemberGroupDetails; export class UmbWorkspaceMemberGroupContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #repo: UmbMemberGroupRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#repo = new UmbMemberGroupRepository(this.#host); + super(host, new UmbMemberGroupRepository(host)); } getData() { @@ -46,14 +41,14 @@ export class UmbWorkspaceMemberGroupContext } async load(entityKey: string) { - const { data } = await this.#repo.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (data) { this.#data.next(data); } } async createScaffold() { - const { data } = await this.#repo.createScaffold(); + const { data } = await this.repository.createScaffold(); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -61,7 +56,7 @@ export class UmbWorkspaceMemberGroupContext async save() { if (!this.#data.value) return; - await this.#repo.save(this.#data.value); + await this.repository.save(this.#data.value); this.setIsNew(true); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts index 166d07c469..ac7107e361 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts @@ -8,23 +8,18 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; type EntityType = any; export class UmbWorkspaceMemberTypeContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #dataTypeRepository: UmbMemberTypeRepository; - #data = new ObjectState(undefined); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#dataTypeRepository = new UmbMemberTypeRepository(this.#host); + super(host, new UmbMemberTypeRepository(host)); } async load(entityKey: string) { - const { data } = await this.#dataTypeRepository.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); @@ -32,7 +27,7 @@ export class UmbWorkspaceMemberTypeContext } async createScaffold() { - const { data } = await this.#dataTypeRepository.createScaffold(); + const { data } = await this.repository.createScaffold(); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -61,16 +56,16 @@ export class UmbWorkspaceMemberTypeContext async save() { if (!this.#data.value) return; if (this.isNew) { - await this.#dataTypeRepository.create(this.#data.value); + await this.repository.create(this.#data.value); } else { - await this.#dataTypeRepository.save(this.#data.value); + await this.repository.save(this.#data.value); } // If it went well, then its not new anymore?. this.setIsNew(false); } async delete(key: string) { - await this.#dataTypeRepository.delete(key); + await this.repository.delete(key); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts index 1dd1698dc5..b7cb38e6ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.context.ts @@ -2,17 +2,23 @@ import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UMB_MEMBER_DETAIL_STORE_CONTEXT_TOKEN } from '../member.detail.store'; +import { UmbMemberRepository } from '../repository/member.repository'; import type { MemberDetails } from '@umbraco-cms/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbWorkspaceMemberContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #manager = new UmbEntityWorkspaceManager(this._host, 'member', UMB_MEMBER_DETAIL_STORE_CONTEXT_TOKEN); + #manager = new UmbEntityWorkspaceManager(this.host, 'member', UMB_MEMBER_DETAIL_STORE_CONTEXT_TOKEN); public readonly data = this.#manager.state.asObservable(); public readonly name = this.#manager.state.getObservablePart((state) => state?.name); + constructor(host: UmbControllerHostInterface) { + super(host, new UmbMemberRepository(host)); + } + setPropertyValue(alias: string, value: string) { return; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts index e07767d67a..531531c39d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts @@ -6,25 +6,20 @@ import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDataTypeWorkspaceContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #dataTypeRepository: UmbDataTypeRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); key = this.#data.getObservablePart((data) => data?.key); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#dataTypeRepository = new UmbDataTypeRepository(this.#host); + super(host, new UmbDataTypeRepository(host)); } async load(key: string) { - const { data } = await this.#dataTypeRepository.requestByKey(key); + const { data } = await this.repository.requestByKey(key); if (data) { this.setIsNew(false); this.#data.update(data); @@ -32,7 +27,7 @@ export class UmbDataTypeWorkspaceContext } async createScaffold(parentKey: string | null) { - const { data } = await this.#dataTypeRepository.createScaffold(parentKey); + const { data } = await this.repository.createScaffold(parentKey); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -76,16 +71,16 @@ export class UmbDataTypeWorkspaceContext async save() { if (!this.#data.value) return; if (this.isNew) { - await this.#dataTypeRepository.create(this.#data.value); + await this.repository.create(this.#data.value); } else { - await this.#dataTypeRepository.save(this.#data.value); + await this.repository.save(this.#data.value); } // If it went well, then its not new anymore?. this.setIsNew(false); } async delete(key: string) { - await this.#dataTypeRepository.delete(key); + await this.repository.delete(key); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts index 8f1fd0b0f4..a31db582a7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts @@ -4,10 +4,7 @@ import type { LanguageModel } from '@umbraco-cms/backend-api'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { - #host: UmbControllerHostInterface; - #languageRepository: UmbLanguageRepository; - +export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { #data = new ObjectState(undefined); data = this.#data.asObservable(); @@ -16,13 +13,11 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { validationErrors = this.#validationErrors.asObservable(); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#languageRepository = new UmbLanguageRepository(this.#host); + super(host, new UmbLanguageRepository(host)); } async load(isoCode: string) { - const { data } = await this.#languageRepository.requestByIsoCode(isoCode); + const { data } = await this.repository.requestByIsoCode(isoCode); if (data) { this.setIsNew(false); this.#data.update(data); @@ -30,7 +25,7 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { } async createScaffold() { - const { data } = await this.#languageRepository.createScaffold(); + const { data } = await this.repository.createScaffold(); if (!data) return; this.setIsNew(true); this.#data.update(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts index ca0407059d..66c5cbab0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts @@ -7,14 +7,16 @@ import { DeepState } from '@umbraco-cms/observable-api'; TODO: We need to figure out if we like to keep using same alias for all workspace contexts. If so we need to align on a interface that all of these implements. otherwise consumers cant trust the workspace-context. */ -export abstract class UmbWorkspaceContext { - protected _host: UmbControllerHostInterface; +export abstract class UmbWorkspaceContext { + public host: UmbControllerHostInterface; + public repository: T; #isNew = new DeepState(false); isNew = this.#isNew.asObservable(); - constructor(host: UmbControllerHostInterface) { - this._host = host; + constructor(host: UmbControllerHostInterface, repository: T) { + this.host = host; + this.repository = repository; new UmbContextProviderController(host, 'umbWorkspaceContext', this); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts index d8d1080ead..9ee60311ee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts @@ -7,21 +7,16 @@ import type { DictionaryDetails } from '@umbraco-cms/models'; type EntityType = DictionaryDetails; export class UmbWorkspaceDictionaryContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #host: UmbControllerHostInterface; - #repo: UmbDictionaryRepository; - #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); dictionary = this.#data.getObservablePart((data) => data); constructor(host: UmbControllerHostInterface) { - super(host); - this.#host = host; - this.#repo = new UmbDictionaryRepository(this.#host); + super(host, new UmbDictionaryRepository(host)); } getData() { @@ -61,7 +56,7 @@ export class UmbWorkspaceDictionaryContext } async load(entityKey: string) { - const { data } = await this.#repo.requestByKey(entityKey); + const { data } = await this.repository.requestByKey(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); @@ -69,7 +64,7 @@ export class UmbWorkspaceDictionaryContext } async createScaffold(parentKey: string | null) { - const { data } = await this.#repo.createScaffold(parentKey); + const { data } = await this.repository.createScaffold(parentKey); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -77,7 +72,7 @@ export class UmbWorkspaceDictionaryContext async save() { if (!this.#data.value) return; - await this.#repo.save(this.#data.value); + await this.repository.save(this.#data.value); this.setIsNew(false); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts index 90f77a8f7b..dd6c5c0efe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts @@ -5,10 +5,10 @@ import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN } from '../user-group.store'; import type { UserGroupDetails } from '@umbraco-cms/models'; export class UmbWorkspaceUserGroupContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #manager = new UmbEntityWorkspaceManager(this._host, 'user-group', UMB_USER_GROUP_STORE_CONTEXT_TOKEN); + #manager = new UmbEntityWorkspaceManager(this.host, 'user-group', UMB_USER_GROUP_STORE_CONTEXT_TOKEN); public readonly data = this.#manager.state.asObservable(); public readonly name = this.#manager.state.getObservablePart((state) => state?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts index f7960b71c6..12a0088cda 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts @@ -5,10 +5,10 @@ import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/ import type { UserDetails } from '@umbraco-cms/models'; export class UmbWorkspaceUserContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { - #manager = new UmbEntityWorkspaceManager(this._host, 'user', UMB_USER_STORE_CONTEXT_TOKEN); + #manager = new UmbEntityWorkspaceManager(this.host, 'user', UMB_USER_STORE_CONTEXT_TOKEN); public readonly data = this.#manager.state.asObservable(); public readonly name = this.#manager.state.getObservablePart((state) => state?.name); From ed4ac9de17e3d401bb0a9d0cfb31313c3ca84ca0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 14:57:18 +0100 Subject: [PATCH 44/87] update workspace action to use repository from the workspace context --- .../workspace/actions/save-and-preview.action.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts index de24db885a..71b4ce30d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,14 +1,10 @@ import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceAction< - UmbDocumentRepository, - UmbDocumentWorkspaceContext -> { - constructor(host: UmbControllerHostInterface, repositoryAlias: string) { - super(host, repositoryAlias); +export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceAction { + constructor(host: UmbControllerHostInterface) { + super(host); } async execute() { @@ -17,6 +13,6 @@ export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceAction const document = this.workspaceContext.getData(); // TODO: handle errors if (!document) return; - this.repository?.saveAndPreview(); + this.workspaceContext.repository?.saveAndPreview(); } } From a6905662090702e171dedfc9ea8fb12f7234043d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:04:12 +0100 Subject: [PATCH 45/87] update all workspace actions --- .../workspace/actions/save-and-publish.action.ts | 12 ++++-------- .../workspace/actions/save-and-schedule.action.ts | 12 ++++-------- .../workspace-context/workspace-context.interface.ts | 1 + .../shared/workspace-actions/save.action.ts | 12 +++++++----- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts index 9d32a23225..1e0c6e368b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,14 +1,10 @@ import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceAction< - UmbDocumentRepository, - UmbDocumentWorkspaceContext -> { - constructor(host: UmbControllerHostInterface, repositoryAlias: string) { - super(host, repositoryAlias); +export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceAction { + constructor(host: UmbControllerHostInterface) { + super(host); } async execute() { @@ -17,6 +13,6 @@ export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceAction const document = this.workspaceContext.getData(); // TODO: handle errors if (!document) return; - this.repository?.saveAndPublish(); + this.workspaceContext.repository.saveAndPublish(); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts index 3c79e5fd37..58811ee248 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -1,14 +1,10 @@ import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; -import { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceAction< - UmbDocumentRepository, - UmbDocumentWorkspaceContext -> { - constructor(host: UmbControllerHostInterface, repositoryAlias: string) { - super(host, repositoryAlias); +export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceAction { + constructor(host: UmbControllerHostInterface) { + super(host); } async execute() { @@ -17,6 +13,6 @@ export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceActio const document = this.workspaceContext.getData(); // TODO: handle errors if (!document) return; - this.repository?.saveAndSchedule(); + this.workspaceContext.repository.saveAndSchedule(); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts index e372dfc228..c04061f3e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts @@ -1,6 +1,7 @@ import { Observable } from 'rxjs'; export interface UmbWorkspaceContextInterface { + repository: any; // TODO: add type isNew: Observable; getIsNew(): boolean; setIsNew(value: boolean): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts index 4719ead35b..8701ad850c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts @@ -3,9 +3,9 @@ import { UmbWorkspaceContextInterface } from '../components/workspace/workspace- import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: add interface for repo/partial repo/save-repo -export class UmbSaveWorkspaceAction extends UmbWorkspaceAction { - constructor(host: UmbControllerHostInterface, repositoryAlias: string) { - super(host, repositoryAlias); +export class UmbSaveWorkspaceAction extends UmbWorkspaceAction { + constructor(host: UmbControllerHostInterface) { + super(host); } /* TODO: we need a solution for all actions to notify the system that is has been executed. @@ -26,7 +26,8 @@ export class UmbSaveWorkspaceAction extends UmbWorkspaceAction Date: Mon, 27 Feb 2023 15:13:30 +0100 Subject: [PATCH 46/87] add host to interface --- .../workspace/workspace-context/workspace-context.interface.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts index c04061f3e1..c756452a21 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts @@ -1,6 +1,8 @@ import { Observable } from 'rxjs'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export interface UmbWorkspaceContextInterface { + host: UmbControllerHostInterface; repository: any; // TODO: add type isNew: Observable; getIsNew(): boolean; From 53605c24e89534f664d47a5f760c74cc3d99c0ef Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:13:56 +0100 Subject: [PATCH 47/87] temp user and user group repos to make typescript happy --- .../user-groups/repository/user-group.repository.ts | 11 +++++++++++ .../workspace/user-group-workspace.context.ts | 8 +++++++- .../users/users/repository/user.repository.ts | 11 +++++++++++ .../users/users/workspace/user-workspace.context.ts | 8 +++++++- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts new file mode 100644 index 0000000000..33e825330d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts @@ -0,0 +1,11 @@ +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +// TODO: implement +export class UmbUserGroupRepository { + #host: UmbControllerHostInterface; + + constructor(host: UmbControllerHostInterface) { + this.#host = host; + console.log(this.#host); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts index dd6c5c0efe..e91149211a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.context.ts @@ -2,10 +2,12 @@ import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN } from '../user-group.store'; +import { UmbUserGroupRepository } from '../repository/user-group.repository'; import type { UserGroupDetails } from '@umbraco-cms/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbWorkspaceUserGroupContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { #manager = new UmbEntityWorkspaceManager(this.host, 'user-group', UMB_USER_GROUP_STORE_CONTEXT_TOKEN); @@ -13,6 +15,10 @@ export class UmbWorkspaceUserGroupContext public readonly data = this.#manager.state.asObservable(); public readonly name = this.#manager.state.getObservablePart((state) => state?.name); + constructor(host: UmbControllerHostInterface) { + super(host, new UmbUserGroupRepository(host)); + } + setName(name: string) { this.#manager.state.update({ name: name }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.repository.ts new file mode 100644 index 0000000000..25ad4bc740 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.repository.ts @@ -0,0 +1,11 @@ +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +// TODO: implement +export class UmbUserRepository { + #host: UmbControllerHostInterface; + + constructor(host: UmbControllerHostInterface) { + this.#host = host; + console.log(this.#host); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts index 12a0088cda..5a6bd37a0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.context.ts @@ -2,10 +2,12 @@ import { UMB_USER_STORE_CONTEXT_TOKEN } from '../../users/user.store'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; +import { UmbUserRepository } from '../repository/user.repository'; import type { UserDetails } from '@umbraco-cms/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbWorkspaceUserContext - extends UmbWorkspaceContext + extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface { #manager = new UmbEntityWorkspaceManager(this.host, 'user', UMB_USER_STORE_CONTEXT_TOKEN); @@ -16,6 +18,10 @@ export class UmbWorkspaceUserContext // TODO: remove this magic connection, instead create the necessary methods to update parts. update = this.#manager.state.update; + constructor(host: UmbControllerHostInterface) { + super(host, new UmbUserRepository(host)); + } + setName(name: string) { this.#manager.state.update({ name: name }); } From 93bb443e5075da10ed2b1072615d991f4a8cc5c5 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:23:11 +0100 Subject: [PATCH 48/87] create workspace lib folder --- .../workspace/workspace-action => libs/workspace}/index.ts | 0 .../documents/workspace/actions/save-and-preview.action.ts | 2 +- .../documents/workspace/actions/save-and-publish.action.ts | 2 +- .../documents/workspace/actions/save-and-schedule.action.ts | 2 +- .../src/backoffice/shared/workspace-actions/save.action.ts | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/components/workspace/workspace-action => libs/workspace}/index.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/index.ts rename to src/Umbraco.Web.UI.Client/libs/workspace/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts index 71b4ce30d7..d6788ef100 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; +import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts index 1e0c6e368b..d29396584e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; +import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts index 58811ee248..402c0d0160 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../shared/components/workspace/workspace-action'; +import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts index 8701ad850c..7c068f369a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../components/workspace/workspace-action'; +import { UmbWorkspaceAction } from '../../../../libs/workspace'; import { UmbWorkspaceContextInterface } from '../components/workspace/workspace-context/workspace-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; From 0ba19a77d45890bb70f2b86749c4a9dbc3dbfdac Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:26:34 +0100 Subject: [PATCH 49/87] add import alias --- .../documents/workspace/actions/save-and-preview.action.ts | 2 +- .../documents/workspace/actions/save-and-publish.action.ts | 2 +- .../documents/workspace/actions/save-and-schedule.action.ts | 2 +- .../src/backoffice/shared/workspace-actions/save.action.ts | 2 +- src/Umbraco.Web.UI.Client/tsconfig.json | 1 + src/Umbraco.Web.UI.Client/web-test-runner.config.mjs | 1 + 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts index d6788ef100..50e484bbd6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts index d29396584e..857f245cdb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts index 402c0d0160..8b1dfc746f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../../../libs/workspace'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts index 7c068f369a..ba5102f651 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts @@ -1,4 +1,4 @@ -import { UmbWorkspaceAction } from '../../../../libs/workspace'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbWorkspaceContextInterface } from '../components/workspace/workspace-context/workspace-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 4647c8f2be..1e55e986af 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -33,6 +33,7 @@ "@umbraco-cms/observable-api": ["libs/observable-api"], "@umbraco-cms/events": ["libs/events"], "@umbraco-cms/entity-action": ["libs/entity-action"], + "@umbraco-cms/workspace": ["libs/workspace"], "@umbraco-cms/utils": ["libs/utils"], "@umbraco-cms/router": ["libs/router"], "@umbraco-cms/test-utils": ["libs/test-utils"], diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 4743a46991..bcdbcb895c 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -50,6 +50,7 @@ export default { '@umbraco-cms/observable-api': './libs/observable-api/index.ts', '@umbraco-cms/events': './libs/events/index.ts', '@umbraco-cms/entity-action': './libs/entity-action/index.ts', + '@umbraco-cms/workspace': './libs/workspace/index.ts', '@umbraco-cms/store': './libs/store/index.ts', '@umbraco-cms/utils': './libs/utils/index.ts', '@umbraco-cms/test-utils': './libs/test-utils/index.ts', From 9c1e97813d0ad013ae8164a7b5310816f47bad1c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:27:32 +0100 Subject: [PATCH 50/87] add import barrel --- src/Umbraco.Web.UI.Client/libs/workspace/index.ts | 15 +-------------- .../libs/workspace/workspace-action.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts index 3e34bacce2..ad091e75cc 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts @@ -1,14 +1 @@ -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; - -export class UmbWorkspaceAction { - host: UmbControllerHostInterface; - workspaceContext?: WorkspaceType; - constructor(host: UmbControllerHostInterface) { - this.host = host; - - new UmbContextConsumerController(this.host, 'umbWorkspaceContext', (instance: WorkspaceType) => { - this.workspaceContext = instance; - }); - } -} +export * from './workspace-action'; diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts b/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts new file mode 100644 index 0000000000..3e34bacce2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts @@ -0,0 +1,14 @@ +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/context-api'; + +export class UmbWorkspaceAction { + host: UmbControllerHostInterface; + workspaceContext?: WorkspaceType; + constructor(host: UmbControllerHostInterface) { + this.host = host; + + new UmbContextConsumerController(this.host, 'umbWorkspaceContext', (instance: WorkspaceType) => { + this.workspaceContext = instance; + }); + } +} From 2ec4ee4d7249db7e41c19ad6f9a11b02808ad825 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:29:02 +0100 Subject: [PATCH 51/87] add UmbWorkspace interface --- .../libs/workspace/workspace-action.ts | 7 ++++++- .../documents/workspace/actions/save-and-preview.action.ts | 4 ++-- .../documents/workspace/actions/save-and-publish.action.ts | 4 ++-- .../workspace/actions/save-and-schedule.action.ts | 4 ++-- .../src/backoffice/shared/workspace-actions/save.action.ts | 4 ++-- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts b/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts index 3e34bacce2..caef4aab16 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts @@ -1,7 +1,12 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -export class UmbWorkspaceAction { +export interface UmbWorkspaceAction { + host: UmbControllerHostInterface; + workspaceContext?: T; +} + +export class UmbWorkspaceActionBase implements UmbWorkspaceAction { host: UmbControllerHostInterface; workspaceContext?: WorkspaceType; constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts index 50e484bbd6..d244219c4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,8 +1,8 @@ -import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceAction { +export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { super(host); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts index 857f245cdb..1e7c66ef3d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,8 +1,8 @@ -import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceAction { +export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { super(host); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts index 8b1dfc746f..b7b2821a84 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -1,8 +1,8 @@ -import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceAction { +export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { super(host); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts index ba5102f651..224082f5b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts @@ -1,9 +1,9 @@ -import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbWorkspaceContextInterface } from '../components/workspace/workspace-context/workspace-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: add interface for repo/partial repo/save-repo -export class UmbSaveWorkspaceAction extends UmbWorkspaceAction { +export class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { super(host); } From 2030fd915c0c923cb623792804556532d22597b1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:31:12 +0100 Subject: [PATCH 52/87] add rollup config --- src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js new file mode 100644 index 0000000000..945c0afe88 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js @@ -0,0 +1,4 @@ +import config from '../../utils/rollup.config.js'; +export default { + ...config, +}; From baa4309304bb81e7d41b2a1c38fc6e63c42bd749 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:35:25 +0100 Subject: [PATCH 53/87] organize workspace actions in folder --- src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts | 1 + .../{workspace-action.ts => actions/workspace-action-base.ts} | 0 src/Umbraco.Web.UI.Client/libs/workspace/index.ts | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts rename src/Umbraco.Web.UI.Client/libs/workspace/{workspace-action.ts => actions/workspace-action-base.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts new file mode 100644 index 0000000000..a712317492 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts @@ -0,0 +1 @@ +export * from './workspace-action-base'; diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/workspace/workspace-action.ts rename to src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts index ad091e75cc..485f1b10af 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts @@ -1 +1 @@ -export * from './workspace-action'; +export * from './actions'; From f2dd81a2f981721ec978781dce1ba5323f95aa66 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 15:43:25 +0100 Subject: [PATCH 54/87] move default save action to lib folder --- src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts | 1 + .../workspace/actions/save}/save.action.ts | 2 +- .../src/backoffice/documents/documents/workspace/manifests.ts | 2 +- .../src/backoffice/members/member-groups/workspace/manifests.ts | 2 +- .../settings/languages/workspace/language/manifests.ts | 2 +- .../src/backoffice/templating/templates/workspace/manifests.ts | 2 +- .../backoffice/translation/dictionary/workspace/manifests.ts | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/workspace-actions => libs/workspace/actions/save}/save.action.ts (91%) diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts index a712317492..d1092c53e3 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/actions/index.ts @@ -1 +1,2 @@ export * from './workspace-action-base'; +export * from './save/save.action'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts rename to src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts index 224082f5b5..17912c9e96 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/workspace-actions/save.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts @@ -1,5 +1,5 @@ import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; -import { UmbWorkspaceContextInterface } from '../components/workspace/workspace-context/workspace-context.interface'; +import { UmbWorkspaceContextInterface } from '../../../../src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: add interface for repo/partial repo/save-repo diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts index 85832b0aa3..f8ad770b6b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts @@ -1,5 +1,5 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { DOCUMENT_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbSaveWorkspaceAction } from '../../../shared/workspace-actions/save.action'; import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action'; import { UmbDocumentSaveAndPreviewWorkspaceAction } from './actions/save-and-preview.action'; import { UmbSaveAndScheduleDocumentWorkspaceAction } from './actions/save-and-schedule.action'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts index b6258433fb..baeaa85733 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts @@ -1,5 +1,5 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbSaveWorkspaceAction } from '../../../shared/workspace-actions/save.action'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts index b2581f133d..6f7310c7cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts @@ -1,4 +1,4 @@ -import { UmbSaveWorkspaceAction } from '../../../../shared/workspace-actions/save.action'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { LANGUAGE_REPOSITORY_ALIAS } from '../../repository/manifests'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts index ec7fa7daef..1d85fbefcf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts @@ -1,5 +1,5 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { TEMPLATE_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbSaveWorkspaceAction } from '../../../shared/workspace-actions/save.action'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts index 55b41e8202..44a49d808c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts @@ -1,5 +1,5 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { DICTIONARY_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbSaveWorkspaceAction } from '../../../../backoffice/shared/workspace-actions/save.action'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspaceAlias = 'Umb.Workspace.Dictionary'; From 5d2d757708273fb9e3534ad7115ca86e85848ba1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:01:04 +0100 Subject: [PATCH 55/87] move default actions to lib folder --- .../entity-action/actions}/copy/copy.action.ts | 0 .../entity-action/actions}/delete/delete.action.ts | 0 .../libs/entity-action/actions/index.ts | 5 +++++ .../entity-action/actions}/move/move.action.ts | 0 .../sort-children-of/sort-children-of.action.ts | 0 .../entity-action/actions}/trash/trash.action.ts | 0 src/Umbraco.Web.UI.Client/libs/entity-action/index.ts | 1 + .../documents/documents/entity-actions/manifests.ts | 10 ++++++---- .../media/media-types/entity-actions/manifests.ts | 6 ++---- .../backoffice/media/media/entity-actions/manifests.ts | 2 +- .../members/member-groups/entity-actions/manifests.ts | 2 +- .../members/member-types/entity-actions/manifests.ts | 2 +- .../members/members/entity-actions/manifests.ts | 2 +- .../settings/languages/entity-actions/manifests.ts | 2 +- .../templating/templates/entity-actions/manifests.ts | 2 +- .../translation/dictionary/entity-actions/manifests.ts | 3 +-- 16 files changed, 21 insertions(+), 16 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action/actions}/copy/copy.action.ts (100%) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action/actions}/delete/delete.action.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action/actions}/move/move.action.ts (100%) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action/actions}/sort-children-of/sort-children-of.action.ts (100%) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/entity-actions => libs/entity-action/actions}/trash/trash.action.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/copy/copy.action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/delete/delete.action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts new file mode 100644 index 0000000000..b8fa3d3206 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts @@ -0,0 +1,5 @@ +export * from './copy/copy.action'; +export * from './delete/delete.action'; +export * from './move/move.action'; +export * from './sort-children-of/sort-children-of.action'; +export * from './trash/trash.action'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/move/move.action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/sort-children-of/sort-children-of.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/sort-children-of/sort-children-of.action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/actions/sort-children-of/sort-children-of.action.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/trash/trash.action.ts rename to src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts index 56f0bb40f5..9503bc670b 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/index.ts @@ -1,3 +1,4 @@ export * from './action'; export * from './entity-action'; export * from './entity-bulk-action'; +export * from './actions'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts index cbe3767e0d..fe90e1a223 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts @@ -1,7 +1,9 @@ -import { UmbCopyEntityAction } from '../../../shared/entity-actions/copy/copy.action'; -import { UmbMoveEntityAction } from '../../../shared/entity-actions/move/move.action'; -import { UmbTrashEntityAction } from '../../../shared/entity-actions/trash/trash.action'; -import { UmbSortChildrenOfEntityAction } from '../../../shared/entity-actions/sort-children-of/sort-children-of.action'; +import { + UmbCopyEntityAction, + UmbMoveEntityAction, + UmbTrashEntityAction, + UmbSortChildrenOfEntityAction, +} from '@umbraco-cms/entity-action'; import { UmbCreateDocumentEntityAction } from './create.action'; import { UmbPublishDocumentEntityAction } from './publish.action'; import { UmbDocumentCultureAndHostnamesEntityAction } from './culture-and-hostnames.action'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts index 32332fbc1b..184035db8b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts @@ -1,7 +1,5 @@ -import { UmbDeleteEntityAction } from '../../../../backoffice/shared/entity-actions/delete/delete.action'; -import { UmbMoveEntityAction } from '../../../../backoffice/shared/entity-actions/move/move.action'; +import { UmbDeleteEntityAction, UmbMoveEntityAction, UmbCopyEntityAction } from '@umbraco-cms/entity-action'; import { MEDIA_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbCopyEntityAction } from '../../../../backoffice/shared/entity-actions/copy/copy.action'; import { UmbCreateMediaTypeEntityAction } from './create.action'; import UmbReloadMediaTypeEntityAction from './reload.action'; import type { ManifestEntityAction } from '@umbraco-cms/models'; @@ -62,7 +60,7 @@ const entityActions: Array = [ api: UmbDeleteEntityAction, }, }, - { + { type: 'entityAction', alias: 'Umb.EntityAction.MediaType.Reload', name: 'Reload Media Type Entity Action', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts index edab42e14f..07c8ca11f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbTrashEntityAction } from '../../../shared/entity-actions/trash/trash.action'; +import { UmbTrashEntityAction } from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts index 6b010cf284..5e84d8d6db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../shared/entity-actions/delete/delete.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts index 1926cca973..9974310ea0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../../backoffice/shared/entity-actions/delete/delete.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { MEMBER_TYPES_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestEntityAction } from '@umbraco-cms/models'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts index 679b387dbf..6f040a256b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../shared/entity-actions/delete/delete.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts index 84b57075b0..e8846b75a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../shared/entity-actions/delete/delete.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from '@umbraco-cms/extensions-registry'; const entityType = 'language'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts index 35518ab257..513d490bd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../shared/entity-actions/delete/delete.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { UmbCreateEntityAction } from './create/create.action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts index b83f66480b..fb6e0f716a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts @@ -1,5 +1,4 @@ -import { UmbDeleteEntityAction } from '../../../../backoffice/shared/entity-actions/delete/delete.action'; -import { UmbMoveEntityAction } from '../../../../backoffice/shared/entity-actions/move/move.action'; +import { UmbDeleteEntityAction, UmbMoveEntityAction } from '@umbraco-cms/entity-action'; import { DICTIONARY_REPOSITORY_ALIAS } from '../repository/manifests'; import UmbReloadDictionaryEntityAction from './reload.action'; import UmbImportDictionaryEntityAction from './import/import.action'; From c19819b8eb3f49f03f45e70ad366e0179d2ec3f9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:02:22 +0100 Subject: [PATCH 56/87] rename as it doesn't include all the actions too --- .../entity-bulk-action.element.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{entity-bulk-actions => entity-bulk-action}/entity-bulk-action.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-actions/entity-bulk-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-action/entity-bulk-action.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-actions/entity-bulk-action.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-action/entity-bulk-action.element.ts From 3ee9fb0ef1aed38c88ae259c183fd00012cc5f68 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:03:00 +0100 Subject: [PATCH 57/87] move to components --- .../shared/collection/collection-selection-actions.element.ts | 2 +- .../entity-bulk-action/entity-bulk-action.element.ts | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{ => components}/entity-bulk-action/entity-bulk-action.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts index dd7d75eba1..099877a7b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-selection-actions.element.ts @@ -8,7 +8,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbExecutedEvent } from '@umbraco-cms/events'; -import '../entity-bulk-actions/entity-bulk-action.element'; +import '../components/entity-bulk-action/entity-bulk-action.element'; @customElement('umb-collection-selection-actions') export class UmbCollectionSelectionActionsElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-action/entity-bulk-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-bulk-action/entity-bulk-action.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts From 9c152ca7eec3a2d0c3382cd5ee3c74cfe987c6b2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:03:38 +0100 Subject: [PATCH 58/87] rename folder --- .../src/backoffice/shared/components/index.ts | 4 ++-- .../entity-action-list.element.ts | 0 .../entity-action.element.ts | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{entity-actions => entity-action}/entity-action-list.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{entity-actions => entity-action}/entity-action.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts index 3909530f60..266c051937 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts @@ -1,8 +1,8 @@ //TODO: we need to figure out what components should be available for extensions and load them upfront // TODO: we need to move these files into their respective folders/silos. We then need a way for a silo to globally register a component -import '../entity-actions/entity-action-list.element'; -import '../entity-actions/entity-action.element'; +import '../entity-action/entity-action-list.element'; +import '../entity-action/entity-action.element'; import './backoffice-frame/backoffice-header.element'; import './backoffice-frame/backoffice-main.element'; import './backoffice-frame/backoffice-modal-container.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action-list.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/entity-action-list.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action-list.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/entity-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-actions/entity-action.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action.element.ts From 375071317800c4bed4ca1dff7e16b8cde5b08846 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:04:31 +0100 Subject: [PATCH 59/87] move to components folder --- .../entity-action/entity-action-list.element.ts | 0 .../{ => components}/entity-action/entity-action.element.ts | 0 .../src/backoffice/shared/components/index.ts | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{ => components}/entity-action/entity-action-list.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/{ => components}/entity-action/entity-action.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action-list.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/entity-action/entity-action.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts index 266c051937..bdc95016b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/index.ts @@ -1,8 +1,8 @@ //TODO: we need to figure out what components should be available for extensions and load them upfront // TODO: we need to move these files into their respective folders/silos. We then need a way for a silo to globally register a component -import '../entity-action/entity-action-list.element'; -import '../entity-action/entity-action.element'; +import './entity-action/entity-action-list.element'; +import './entity-action/entity-action.element'; import './backoffice-frame/backoffice-header.element'; import './backoffice-frame/backoffice-main.element'; import './backoffice-frame/backoffice-modal-container.element'; From 61f6459503ace9fdc089b536baa4774c8d2aecf9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:06:09 +0100 Subject: [PATCH 60/87] delete legacy workspace action element --- .../workspace-action-node-save.element.ts | 61 ------------------- 1 file changed, 61 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element.ts deleted file mode 100644 index 29fac1453f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import type { UUIButtonState } from '@umbraco-ui/uui'; -import { UmbWorkspaceEntityContextInterface } from '../../workspace-context/workspace-entity-context.interface'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { ManifestWorkspaceAction } from '@umbraco-cms/models'; - -@customElement('umb-workspace-action-node-save') -export class UmbWorkspaceActionNodeSaveElement extends UmbLitElement { - static styles = [UUITextStyles, css``]; - - @state() - private _saveButtonState?: UUIButtonState; - - private _workspaceContext?: UmbWorkspaceEntityContextInterface; - - public manifest?: ManifestWorkspaceAction; - - constructor() { - super(); - - // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (instance) => { - this._workspaceContext = instance; - }); - } - - private async _onSave() { - if (!this._workspaceContext) return; - - this._saveButtonState = 'waiting'; - await this._workspaceContext - .save() - .then(() => { - this._saveButtonState = 'success'; - }) - .catch(() => { - this._saveButtonState = 'failed'; - }); - } - - render() { - return html` - - `; - } -} - -export default UmbWorkspaceActionNodeSaveElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-workspace-action-node-save': UmbWorkspaceActionNodeSaveElement; - } -} From 1ec0a805ee0486e13187c1e3d0925f60b9a27d2b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:11:04 +0100 Subject: [PATCH 61/87] add execute to WorkspaceAction interface --- .../libs/workspace/actions/workspace-action-base.ts | 5 +++-- .../workspace/workspace-action/workspace-action.element.ts | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts index caef4aab16..95d16263ce 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/actions/workspace-action-base.ts @@ -1,12 +1,13 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -export interface UmbWorkspaceAction { +export interface UmbWorkspaceAction { host: UmbControllerHostInterface; workspaceContext?: T; + execute(): Promise; } -export class UmbWorkspaceActionBase implements UmbWorkspaceAction { +export class UmbWorkspaceActionBase { host: UmbControllerHostInterface; workspaceContext?: WorkspaceType; constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts index 88e0fcac15..f8bd507cfd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts @@ -2,6 +2,7 @@ import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import type { UUIButtonState } from '@umbraco-ui/uui'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbExecutedEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import type { ManifestWorkspaceAction } from '@umbraco-cms/models'; @@ -33,9 +34,10 @@ export class UmbWorkspaceActionElement extends UmbLitElement { this.#api = new this._manifest.meta.api(this, this._manifest.meta.repositoryAlias); } - #api: any; + #api?: UmbWorkspaceAction; private async _onClick() { + if (!this.#api) return; await this.#api.execute(); this.dispatchEvent(new UmbExecutedEvent()); } From def704e6e69d1625c2085324d4bad6596ece57cc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:14:10 +0100 Subject: [PATCH 62/87] use new workspace api --- .../documents/document-types/workspace/manifests.ts | 4 ++-- .../src/backoffice/media/media/workspace/manifests.ts | 4 ++-- .../backoffice/settings/data-types/workspace/manifests.ts | 4 ++-- .../user-groups/workspace/user-group-workspace.element.ts | 5 ++--- .../src/backoffice/users/users/workspace/manifests.ts | 4 ++-- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts index 82229b33e1..10c8bf8745 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts @@ -1,3 +1,4 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { @@ -31,12 +32,11 @@ const workspaceActions: Array = [ type: 'workspaceAction', alias: 'Umb.WorkspaceAction.DocumentType.Save', name: 'Save Document Type Workspace Action', - loader: () => - import('../../../shared/components/workspace/workspace-action/save/workspace-action-node-save.element'), meta: { workspaces: ['Umb.Workspace.DocumentType'], look: 'primary', color: 'positive', + api: UmbSaveWorkspaceAction, }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts index 34a4e9137d..1833ddeb56 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts @@ -1,3 +1,4 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, @@ -68,12 +69,11 @@ const workspaceActions: Array = [ type: 'workspaceAction', alias: 'Umb.WorkspaceAction.Media.Save', name: 'Save Media Workspace Action', - loader: () => - import('src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element'), meta: { workspaces: ['Umb.Workspace.Media'], look: 'primary', color: 'positive', + api: UmbSaveWorkspaceAction, }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts index 952199ab0b..ee6d7641c9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts @@ -1,3 +1,4 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { @@ -44,12 +45,11 @@ const workspaceActions: Array = [ type: 'workspaceAction', alias: 'Umb.WorkspaceAction.DataType.Save', name: 'Save Data Type Workspace Action', - loader: () => - import('src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element'), meta: { workspaces: ['Umb.Workspace.DataType'], look: 'primary', color: 'positive', + api: UmbSaveWorkspaceAction, }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts index 64c508556c..fba683ce0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { distinctUntilChanged } from 'rxjs'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/users/user.store'; import { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbWorkspaceUserGroupContext } from './user-group-workspace.context'; @@ -224,12 +224,11 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo type: 'workspaceAction', alias: 'Umb.WorkspaceAction.UserGroup.Save', name: 'Save User Group Workspace Action', - loader: () => - import('../../../shared/components/workspace/workspace-action/save/workspace-action-node-save.element'), meta: { workspaces: ['Umb.Workspace.UserGroup'], look: 'primary', color: 'positive', + api: UmbSaveWorkspaceAction, }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts index 566eed14f1..fb82e91989 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts @@ -1,3 +1,4 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { @@ -16,12 +17,11 @@ const workspaceActions: Array = [ type: 'workspaceAction', alias: 'Umb.WorkspaceAction.User.Save', name: 'Save User Workspace Action', - loader: () => - import('src/backoffice/shared/components/workspace/workspace-action/save/workspace-action-node-save.element'), meta: { workspaces: ['Umb.Workspace.User'], look: 'primary', color: 'positive', + api: UmbSaveWorkspaceAction, }, }, ]; From a242939ad38b40aa1662a36a21f8217008f561e1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 16:26:49 +0100 Subject: [PATCH 63/87] update extension model to always include api, remove repository + add interface to extension model --- .../libs/extensions-registry/workspace-action.models.ts | 5 +++-- .../documents/document-types/workspace/manifests.ts | 1 + .../backoffice/documents/documents/workspace/manifests.ts | 4 ---- .../src/backoffice/media/media/workspace/manifests.ts | 1 + .../backoffice/members/member-groups/workspace/manifests.ts | 1 - .../backoffice/settings/data-types/workspace/manifests.ts | 1 + .../settings/languages/workspace/language/manifests.ts | 1 - .../workspace/workspace-action/workspace-action.element.ts | 2 +- .../backoffice/templating/templates/workspace/manifests.ts | 1 - .../backoffice/translation/dictionary/workspace/manifests.ts | 1 - .../user-groups/workspace/user-group-workspace.element.ts | 1 + .../src/backoffice/users/users/workspace/manifests.ts | 1 + 12 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts index e8fc7fe8f9..9c7f69de04 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts @@ -1,5 +1,7 @@ +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import type { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types/index'; import type { ManifestElement } from './models'; +import type { ClassConstructor } from '@umbraco-cms/models'; export interface ManifestWorkspaceAction extends ManifestElement { type: 'workspaceAction'; @@ -11,6 +13,5 @@ export interface MetaWorkspaceAction { label?: string; //TODO: Use or implement additional label-key look?: InterfaceLook; color?: InterfaceColor; - repositoryAlias?: string; // TODO: make mandatory when repositories are fully implemented - api?: any; //TODO: Implement UmbEntityAction + api: ClassConstructor; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts index 10c8bf8745..114efb3e7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/manifests.ts @@ -34,6 +34,7 @@ const workspaceActions: Array = [ name: 'Save Document Type Workspace Action', meta: { workspaces: ['Umb.Workspace.DocumentType'], + label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts index f8ad770b6b..8d556aaae0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts @@ -81,7 +81,6 @@ const workspaceActions: Array = [ label: 'Save And Publish', look: 'primary', color: 'positive', - repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentSaveAndPublishWorkspaceAction, }, }, @@ -94,7 +93,6 @@ const workspaceActions: Array = [ workspaces: ['Umb.Workspace.Document'], label: 'Save', look: 'secondary', - repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbSaveWorkspaceAction, }, }, @@ -106,7 +104,6 @@ const workspaceActions: Array = [ meta: { workspaces: ['Umb.Workspace.Document'], label: 'Save And Preview', - repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentSaveAndPreviewWorkspaceAction, }, }, @@ -118,7 +115,6 @@ const workspaceActions: Array = [ meta: { workspaces: ['Umb.Workspace.Document'], label: 'Save And Schedule', - repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbSaveAndScheduleDocumentWorkspaceAction, }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts index 1833ddeb56..29af2a95c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/manifests.ts @@ -71,6 +71,7 @@ const workspaceActions: Array = [ name: 'Save Media Workspace Action', meta: { workspaces: ['Umb.Workspace.Media'], + label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts index baeaa85733..6626a0860b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts @@ -38,7 +38,6 @@ const workspaceActions: Array = [ label: 'Save', look: 'primary', color: 'positive', - repositoryAlias: MEMBER_GROUP_REPOSITORY_ALIAS, api: UmbSaveWorkspaceAction, }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts index ee6d7641c9..f23cb76d4e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/manifests.ts @@ -47,6 +47,7 @@ const workspaceActions: Array = [ name: 'Save Data Type Workspace Action', meta: { workspaces: ['Umb.Workspace.DataType'], + label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts index 6f7310c7cc..13ed952fea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts @@ -38,7 +38,6 @@ const workspaceActions: Array = [ look: 'primary', color: 'positive', label: 'Save', - repositoryAlias: LANGUAGE_REPOSITORY_ALIAS, api: UmbSaveWorkspaceAction, }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts index f8bd507cfd..17fea95c41 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action/workspace-action.element.ts @@ -31,7 +31,7 @@ export class UmbWorkspaceActionElement extends UmbLitElement { #createApi() { if (!this._manifest?.meta.api) return; - this.#api = new this._manifest.meta.api(this, this._manifest.meta.repositoryAlias); + this.#api = new this._manifest.meta.api(this); } #api?: UmbWorkspaceAction; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts index 1d85fbefcf..f866f11e39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts @@ -25,7 +25,6 @@ const workspaceActions: Array = [ color: 'positive', workspaces: ['Umb.Workspace.Template'], label: 'Save', - repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, api: UmbSaveWorkspaceAction, }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts index 44a49d808c..2dca6646c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts @@ -41,7 +41,6 @@ const workspaceActions: Array = [ label: 'Save', look: 'primary', color: 'positive', - repositoryAlias: DICTIONARY_REPOSITORY_ALIAS, api: UmbSaveWorkspaceAction, }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts index fba683ce0c..5f865152ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts @@ -226,6 +226,7 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo name: 'Save User Group Workspace Action', meta: { workspaces: ['Umb.Workspace.UserGroup'], + label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts index fb82e91989..eeb5c42f4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/manifests.ts @@ -19,6 +19,7 @@ const workspaceActions: Array = [ name: 'Save User Workspace Action', meta: { workspaces: ['Umb.Workspace.User'], + label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, From d6f54a544ba767a1984d81e792d62345eb5194d5 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 20:36:04 +0100 Subject: [PATCH 64/87] add type to element --- src/Umbraco.Web.UI.Client/libs/entity-action/action.ts | 2 +- .../entity-bulk-action/entity-bulk-action.element.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts index 5c1ab79fd5..70c4a25985 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts @@ -2,7 +2,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/extensions-api'; import { UmbObserverController } from '@umbraco-cms/observable-api'; -export interface UmbAction { +export interface UmbAction { host: UmbControllerHostInterface; repository: RepositoryType; execute(): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts index 530ec2ab46..bc8ae75228 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts @@ -4,6 +4,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbExecutedEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestEntityBulkAction } from '@umbraco-cms/extensions-registry'; +import { UmbAction } from '@umbraco-cms/entity-action'; @customElement('umb-entity-bulk-action') class UmbEntityBulkActionElement extends UmbLitElement { @@ -40,9 +41,10 @@ class UmbEntityBulkActionElement extends UmbLitElement { this.#api = new this._manifest.meta.api(this, this._manifest.meta.repositoryAlias, this._selection); } - #api: any; + #api?: UmbAction; async #onClick(event: PointerEvent) { + if (!this.#api) return; event.stopPropagation(); await this.#api.execute(); this.dispatchEvent(new UmbExecutedEvent()); From 00654fb1a088b3c6a3971026ff608e072ae48f4b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Feb 2023 20:46:13 +0100 Subject: [PATCH 65/87] update bulk action interface --- .../libs/entity-action/entity-bulk-action.ts | 5 +++-- .../entity-bulk-action/entity-bulk-action.element.ts | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts index 508af4d9c1..a75ae2e498 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-bulk-action.ts @@ -1,11 +1,12 @@ import { UmbAction, UmbActionBase } from './action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export interface UmbEntityBulkAction extends UmbAction { +export interface UmbEntityBulkAction extends UmbAction { selection: Array; + setSelection(selection: Array): void; } -export class UmbEntityBulkActionBase extends UmbActionBase { +export class UmbEntityBulkActionBase extends UmbActionBase { selection: Array; constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts index bc8ae75228..01b150f737 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-bulk-action/entity-bulk-action.element.ts @@ -1,10 +1,10 @@ import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UmbEntityBulkAction } from '@umbraco-cms/entity-action'; import { UmbExecutedEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestEntityBulkAction } from '@umbraco-cms/extensions-registry'; -import { UmbAction } from '@umbraco-cms/entity-action'; @customElement('umb-entity-bulk-action') class UmbEntityBulkActionElement extends UmbLitElement { @@ -41,7 +41,7 @@ class UmbEntityBulkActionElement extends UmbLitElement { this.#api = new this._manifest.meta.api(this, this._manifest.meta.repositoryAlias, this._selection); } - #api?: UmbAction; + #api?: UmbEntityBulkAction; async #onClick(event: PointerEvent) { if (!this.#api) return; From 8e1590500b58e101162285d39974eab59562713e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:13:17 +0100 Subject: [PATCH 66/87] add manifest models --- .../libs/extensions-registry/models.ts | 3 +++ .../extensions-registry/section-sidebar-item.models.ts | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index 4f4e401993..e01b4e8766 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -11,6 +11,7 @@ import type { ManifestPropertyAction } from './property-action.models'; import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './property-editor.models'; import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; +import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; import type { ManifestSidebarMenu } from './sidebar-menu.models'; import type { ManifestSidebarMenuItem } from './sidebar-menu-item.models'; import type { ManifestTheme } from './theme.models'; @@ -37,6 +38,7 @@ export * from './property-action.models'; export * from './property-editor.models'; export * from './section-view.models'; export * from './section.models'; +export * from './section-sidebar-item.models'; export * from './sidebar-menu.models'; export * from './sidebar-menu-item.models'; export * from './theme.models'; @@ -66,6 +68,7 @@ export type ManifestTypes = | ManifestPropertyEditorUI | ManifestRepository | ManifestSection + | ManifestSectionSidebarItem | ManifestSectionView | ManifestSidebarMenu | ManifestSidebarMenuItem diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts new file mode 100644 index 0000000000..c94bc5bb45 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts @@ -0,0 +1,10 @@ +import type { ManifestElement } from './models'; + +export interface ManifestSectionSidebarItem extends ManifestElement { + type: 'sectionSidebarItem'; + meta: MetaSectionSidebarItem; +} + +export interface MetaSectionSidebarItem { + sections: Array; +} From 15b96b99832f12e22cb03cc1fbf4ce168a751c63 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:13:50 +0100 Subject: [PATCH 67/87] format --- .../src/backoffice/backoffice.element.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts index d6d8504ce2..f3c2efadfe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -39,7 +39,10 @@ import { UmbTemplateTreeStore } from './templating/templates/tree/data/template. import { UmbTemplateDetailStore } from './templating/templates/workspace/data/template.detail.store'; import { UmbThemeContext } from './themes/theme.context'; import { UmbLanguageStore } from './settings/languages/repository/language.store'; -import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './settings/languages/app-language.context'; +import { + UMB_APP_LANGUAGE_CONTEXT_TOKEN, + UmbAppLanguageContext, +} from './settings/languages/app-language-select/app-language.context'; import { UmbPackageStore } from './packages/repository/package.store'; import { UmbServerExtensionController } from './packages/repository/server-extension.controller'; import { UmbNotificationService, UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/notification'; From 4922926b94a046e2b75ac690b78f365cb9378904 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:14:21 +0100 Subject: [PATCH 68/87] move to folder --- .../{ => app-language-select}/app-language-select.element.ts | 4 +++- .../{ => app-language-select}/app-language.context.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/{ => app-language-select}/app-language-select.element.ts (96%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/{ => app-language-select}/app-language.context.ts (95%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts similarity index 96% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts index 1415471f37..d0a2f1604d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UUIMenuItemEvent } from '@umbraco-ui/uui'; -import { UmbLanguageRepository } from './repository/language.repository'; +import { UmbLanguageRepository } from '../repository/language.repository'; import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './app-language.context'; import { UmbLitElement } from '@umbraco-cms/element'; import { LanguageModel } from '@umbraco-cms/backend-api'; @@ -142,6 +142,8 @@ export class UmbAppLanguageSelectElement extends UmbLitElement { } } +export default UmbAppLanguageSelectElement; + declare global { interface HTMLElementTagNameMap { 'umb-app-language-select': UmbAppLanguageSelectElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts similarity index 95% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language.context.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts index 603e2e4955..82c2d32649 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts @@ -1,4 +1,4 @@ -import { UmbLanguageRepository } from './repository/language.repository'; +import { UmbLanguageRepository } from '../repository/language.repository'; import { ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; From 141ea67c7382ed1b85a2a4ab16329d4bd31f60da Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:14:45 +0100 Subject: [PATCH 69/87] add language select as section-sidebar-item --- .../languages/app-language-select/manifests.ts | 15 +++++++++++++++ .../backoffice/settings/languages/manifests.ts | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts new file mode 100644 index 0000000000..34dd3dcf69 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts @@ -0,0 +1,15 @@ +import { ManifestSectionSidebarItem } from '@umbraco-cms/extensions-registry'; + +const entityActions: Array = [ + { + type: 'sectionSidebarItem', + alias: 'Umb.SectionSidebarItem.LanguageSelect', + name: 'App Language Select Section Sidebar Item', + loader: () => import('./app-language-select.element'), + meta: { + sections: ['Umb.Section.Content'], + }, + }, +]; + +export const manifests = [...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts index c7e92f8c72..bc14ccd93e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts @@ -2,5 +2,12 @@ import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as treeManifests } from './sidebar-menu-item/manifests'; import { manifests as entityActions } from './entity-actions/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; +import { manifests as appLanguageSelect } from './app-language-select/manifests'; -export const manifests = [...repositoryManifests, ...entityActions, ...treeManifests, ...workspaceManifests]; +export const manifests = [ + ...repositoryManifests, + ...entityActions, + ...treeManifests, + ...workspaceManifests, + ...appLanguageSelect, +]; From fc499d2769973dda7bd367219ec28b38bd4871bc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:14:59 +0100 Subject: [PATCH 70/87] render section-sidebar-items --- .../shared/components/section/section.element.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 03440f01c1..6b77194c5f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -11,7 +11,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; import './section-sidebar-menu/section-sidebar-menu.element.ts'; import './section-views/section-views.element.ts'; -import '../../../settings/languages/app-language-select.element.ts'; +import '../../../settings/languages/app-language-select/app-language-select.element.ts'; import { UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; @customElement('umb-section') @@ -200,8 +200,11 @@ export class UmbSectionElement extends UmbLitElement { ${this._menus && this._menus.length > 0 ? html` - - + + items.meta.sections.includes(this._sectionAlias || '')}> + items.meta.sections.includes(this._sectionAlias || '')} From 1856b7d0e09108f050fa596dd2400fa2a247a871 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:46:32 +0100 Subject: [PATCH 71/87] rename sidebar menu extension + add menu extension --- .../libs/extensions-registry/menu.models.ts | 10 ++++++++++ .../libs/extensions-registry/models.ts | 6 +++--- .../section-sidebar-menu.models.ts | 11 +++++++++++ .../libs/extensions-registry/sidebar-menu.models.ts | 11 ----------- .../src/backoffice/documents/section.manifests.ts | 8 ++++---- .../src/backoffice/media/section.manifests.ts | 13 +++++++------ .../src/backoffice/members/section.manifests.ts | 13 +++++++------ .../src/backoffice/settings/section.manifests.ts | 12 ++++++------ .../section-sidebar-menu.element.ts | 4 ++-- .../shared/components/section/section.element.ts | 12 ++++++------ .../src/backoffice/templating/manifests.ts | 13 +++++++------ 11 files changed, 63 insertions(+), 50 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts new file mode 100644 index 0000000000..82e12e0f89 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts @@ -0,0 +1,10 @@ +import type { ManifestElement } from './models'; + +export interface ManifestMenu extends ManifestElement { + type: 'menu'; + meta: MetaMenu; +} + +export interface MetaMenu { + label: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index e01b4e8766..df31b3dd18 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -12,7 +12,7 @@ import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './pr import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; -import type { ManifestSidebarMenu } from './sidebar-menu.models'; +import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; import type { ManifestSidebarMenuItem } from './sidebar-menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; @@ -39,7 +39,7 @@ export * from './property-editor.models'; export * from './section-view.models'; export * from './section.models'; export * from './section-sidebar-item.models'; -export * from './sidebar-menu.models'; +export * from './section-sidebar-menu.models'; export * from './sidebar-menu-item.models'; export * from './theme.models'; export * from './tree-item-action.models'; @@ -70,7 +70,7 @@ export type ManifestTypes = | ManifestSection | ManifestSectionSidebarItem | ManifestSectionView - | ManifestSidebarMenu + | ManifestSectionSidebarMenu | ManifestSidebarMenuItem | ManifestTheme | ManifestTree diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts new file mode 100644 index 0000000000..429b2a1a8c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts @@ -0,0 +1,11 @@ +import type { ManifestElement } from './models'; + +export interface ManifestSectionSidebarMenu extends ManifestElement { + type: 'sectionSidebarMenu'; + meta: MetaSectionSidebarMenu; +} + +export interface MetaSectionSidebarMenu { + label: string; + sections: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts deleted file mode 100644 index 4c48bb3be0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu.models.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { ManifestElement } from './models'; - -export interface ManifestSidebarMenu extends ManifestElement { - type: 'sidebarMenu'; - meta: MetaSidebarMenu; -} - -export interface MetaSidebarMenu { - label: string; - sections: Array; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts index 4787f76123..499499e8ca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; @@ -13,8 +13,8 @@ const section: ManifestSection = { }, }; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, @@ -24,4 +24,4 @@ const sidebarMenu: ManifestSidebarMenu = { }, }; -export const manifests = [section, sidebarMenu]; +export const manifests = [section, sectionSidebarMenu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts index 05557e3e1a..aea51e5969 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboardCollection, ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboardCollection, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Media'; @@ -29,15 +29,16 @@ const dashboards: Array = [ }, ]; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Media', - name: 'Media Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Media', + name: 'Media Section Sidebar Menu', weight: 100, meta: { label: 'Media', sections: [sectionAlias], + menu: 'Umb.Menu.Media', }, }; -export const manifests = [section, sidebarMenu, ...dashboards]; +export const manifests = [section, sectionSidebarMenu, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts index aa94eb7b7a..7cf1af267e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Members'; @@ -28,15 +28,16 @@ const dashboards: Array = [ }, ]; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Members', - name: 'Members Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Members', + name: 'Members Section Sidebar Menu', weight: 100, meta: { label: 'Members', sections: [sectionAlias], + menu: 'Umb.Menu.Members', }, }; -export const manifests = [section, sidebarMenu, ...dashboards]; +export const manifests = [section, sectionSidebarMenu, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts index fa9ce27835..eaebc24e31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Settings'; @@ -13,10 +13,10 @@ const section: ManifestSection = { }, }; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Settings', - name: 'Settings Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Settings', + name: 'Settings Section Sidebar Menu', weight: 100, meta: { label: 'Settings', @@ -24,4 +24,4 @@ const sidebarMenu: ManifestSidebarMenu = { }, }; -export const manifests = [section, sidebarMenu]; +export const manifests = [section, sectionSidebarMenu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts index f355df2597..23cd5688d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestSidebarMenu, ManifestSidebarMenuItem } from '@umbraco-cms/extensions-registry'; +import { ManifestSectionSidebarMenu, ManifestSidebarMenuItem } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import './sidebar-menu-item.element.ts'; @@ -18,7 +18,7 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { ]; @property() - manifest?: ManifestSidebarMenu; + manifest?: ManifestSectionSidebarMenu; render() { // TODO: link to dashboards when clicking on the menu item header diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 6b77194c5f..7976ab2d7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -5,7 +5,7 @@ import { map } from 'rxjs'; import { IRoutingInfo } from 'router-slot'; import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { ManifestSectionView, ManifestWorkspace, ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSectionView, ManifestWorkspace, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -40,7 +40,7 @@ export class UmbSectionElement extends UmbLitElement { private _routes: Array = []; @state() - private _menus?: Array; + private _menus?: Array; @state() private _views?: Array; @@ -84,7 +84,7 @@ export class UmbSectionElement extends UmbLitElement { if (sectionAlias) { this.observe( umbExtensionsRegistry - ?.extensionsOfType('sidebarMenu') + ?.extensionsOfType('sectionSidebarMenu') .pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))), (manifests) => { this._menus = manifests; @@ -202,12 +202,12 @@ export class UmbSectionElement extends UmbLitElement { + .filter=${(items: ManifestSectionSidebarMenu) => items.meta.sections.includes(this._sectionAlias || '')}> items.meta.sections.includes(this._sectionAlias || '')} + type="sectionSidebarMenu" + .filter=${(items: ManifestSectionSidebarMenu) => items.meta.sections.includes(this._sectionAlias || '')} default-element="umb-section-sidebar-menu"> ` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts index 5b76467241..ef23bca158 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts @@ -1,14 +1,15 @@ -import type { ManifestSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSectionSidebarMenu } from '@umbraco-cms/models'; -const sidebarMenu: ManifestSidebarMenu = { - type: 'sidebarMenu', - alias: 'Umb.SidebarMenu.Templating', - name: 'Settings Sidebar Menu', +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Templating', + name: 'Templating Section Sidebar Menu', weight: 100, meta: { label: 'Templating', sections: ['Umb.Section.Settings'], + menu: 'Umb.Menu.Templating', }, }; -export const manifests = [sidebarMenu]; +export const manifests = [sectionSidebarMenu]; From 323138bbf92a98fd88fb3740be87f14a77450612 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:46:42 +0100 Subject: [PATCH 72/87] register content menu --- .../src/backoffice/documents/index.ts | 2 ++ .../src/backoffice/documents/menu.manifests.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts index 4c63eb521f..5f5aac6a97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts @@ -1,5 +1,6 @@ import { manifests as dashboardManifests } from './dashboards/manifests'; import { manifests as contentSectionManifests } from './section.manifests'; +import { manifests as contentMenuManifest } from './menu.manifests'; import { manifests as documentBlueprintManifests } from './document-blueprints/manifests'; import { manifests as documentTypeManifests } from './document-types/manifests'; import { manifests as documentManifests } from './documents/manifests'; @@ -17,6 +18,7 @@ const registerExtensions = (manifests: Array) => { registerExtensions([ ...dashboardManifests, ...contentSectionManifests, + ...contentMenuManifest, ...documentBlueprintManifests, ...documentTypeManifests, ...documentManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts new file mode 100644 index 0000000000..a30c353093 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts @@ -0,0 +1,12 @@ +import { ManifestMenu } from 'libs/extensions-registry/menu.models'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Content', + name: 'Content Menu', + meta: { + label: 'Content', + }, +}; + +export const manifests = [menu]; From 9d2ce1298268bc0f3888ec617b1d47a353688021 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 14:59:17 +0100 Subject: [PATCH 73/87] rename sidebar-menu-item to menu-item --- .../libs/extensions-registry/models.ts | 4 ++-- .../sidebar-menu-item.models.ts | 10 +++++----- .../documents/document-blueprints/manifests.ts | 4 ++-- .../sidebar-menu-item/manifests.ts | 10 +++++----- .../documents/document-types/manifests.ts | 4 ++-- .../document-types/sidebar-menu-item/manifests.ts | 10 +++++----- .../backoffice/documents/documents/manifests.ts | 4 ++-- .../documents/sidebar-menu-item/manifests.ts | 14 +++++++------- .../src/backoffice/media/media-types/manifests.ts | 4 ++-- .../media-types/sidebar-menu-item/manifests.ts | 14 +++++++------- .../src/backoffice/media/media/manifests.ts | 4 ++-- .../media/media/sidebar-menu-item/manifests.ts | 14 +++++++------- .../backoffice/members/member-groups/manifests.ts | 4 ++-- .../member-groups/sidebar-menu-item/manifests.ts | 14 +++++++------- .../backoffice/members/member-types/manifests.ts | 8 ++++---- .../member-types/sidebar-menu-item/manifests.ts | 14 +++++++------- .../src/backoffice/members/members/manifests.ts | 4 ++-- .../members/members/sidebar-menu-item/manifests.ts | 14 +++++++------- .../backoffice/settings/data-types/manifests.ts | 4 ++-- .../data-types/sidebar-menu-item/manifests.ts | 14 +++++++------- .../backoffice/settings/extensions/manifests.ts | 4 ++-- .../extensions/sidebar-menu-item/manifests.ts | 14 +++++++------- .../languages/sidebar-menu-item/manifests.ts | 14 +++++++------- .../logviewer/sidebar-menu-item/manifests.ts | 14 +++++++------- .../section-sidebar-menu.element.ts | 6 +++--- .../sidebar-menu-item.element.ts | 4 ++-- .../backoffice/templating/templates/manifests.ts | 4 ++-- .../templates/sidebar-menu-item/manifests.ts | 14 +++++++------- .../backoffice/translation/dictionary/manifests.ts | 4 ++-- .../dictionary/sidebar-menu-item/manifests.ts | 14 +++++++------- 30 files changed, 132 insertions(+), 132 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index df31b3dd18..700d08fe83 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -13,7 +13,7 @@ import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; -import type { ManifestSidebarMenuItem } from './sidebar-menu-item.models'; +import type { ManifestMenuItem } from './sidebar-menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; import type { ManifestTreeItemAction } from './tree-item-action.models'; @@ -71,7 +71,7 @@ export type ManifestTypes = | ManifestSectionSidebarItem | ManifestSectionView | ManifestSectionSidebarMenu - | ManifestSidebarMenuItem + | ManifestMenuItem | ManifestTheme | ManifestTree | ManifestTreeItemAction diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts index 044d2090e5..783713e834 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts @@ -1,13 +1,13 @@ import type { ManifestElement } from './models'; -export interface ManifestSidebarMenuItem extends ManifestElement { - type: 'sidebarMenuItem'; - meta: MetaSidebarMenuItem; +export interface ManifestMenuItem extends ManifestElement { + type: 'menuItem'; + meta: MetaMenuItem; } -export interface MetaSidebarMenuItem { +export interface MetaMenuItem { label: string; icon: string; - sidebarMenus: Array; + menus: Array; entityType?: string; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts index 91d087379a..bc9da36a52 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; -export const manifests = [...sidebarMenuItemManifests, ...workspaceManifests]; +export const manifests = [...menuItemManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts index e85282727e..77fb3b310d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', +const menuItem: ManifestMenuItem = { + type: 'menuItem', alias: 'Umb.SidebarMenuItem.DocumentBlueprints', name: 'Document Blueprints Sidebar Menu Item', weight: 90, meta: { label: 'Document Blueprints', icon: 'umb:blueprint', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], entityType: 'document-blueprint-root', }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts index 50f50fc98b..ff6e2dd898 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts @@ -1,6 +1,6 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; -export const manifests = [...sidebarMenuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests]; +export const manifests = [...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts index 1d6e662307..086b0b9148 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts @@ -1,7 +1,7 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', +const menuItem: ManifestMenuItem = { + type: 'menuItem', alias: 'Umb.SidebarMenuItem.DocumentTypes', name: 'Document Types Sidebar Menu Item', weight: 10, @@ -9,8 +9,8 @@ const sidebarMenuItem: ManifestSidebarMenuItem = { meta: { label: 'Document Types', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/manifests.ts index b7818bc6b0..b36ebb6e5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/manifests.ts @@ -1,5 +1,5 @@ import { manifests as collectionManifests } from './collection/manifests'; -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; @@ -8,7 +8,7 @@ import { manifests as entityBulkActionManifests } from './entity-bulk-actions/ma export const manifests = [ ...collectionManifests, - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts index 2273b73a4a..e4bfc4a260 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Documents', - name: 'Documents Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Documents', + name: 'Documents Menu Item', weight: 100, loader: () => import('./document-sidebar-menu-item.element'), meta: { label: 'Documents', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Content'], + menus: ['Umb.Menu.Content'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts index 860a44f996..7d17b201ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts @@ -1,11 +1,11 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; export const manifests = [ - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts index 2ecc9391f3..b6ee122b0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.MediaTypes', - name: 'Media Types Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.MediaTypes', + name: 'Media Types Menu Item', weight: 20, loader: () => import('./media-types-sidebar-menu-item.element'), meta: { label: 'Media Types', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts index 762dafa12d..90b6cc7181 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts @@ -1,5 +1,5 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as entityActionsManifests } from './entity-actions/manifests'; @@ -7,7 +7,7 @@ import { manifests as entityBulkActionsManifests } from './entity-bulk-actions/m export const manifests = [ ...repositoryManifests, - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...workspaceManifests, ...entityActionsManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts index f14f90cc8c..432a6481c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Media', - name: 'Media Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Media', + name: 'Media Menu Item', weight: 100, loader: () => import('./media-sidebar-menu-item.element'), meta: { label: 'Media', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Media'], + menus: ['Umb.Menu.Media'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts index 629f81b657..49ccba6ad7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts @@ -1,13 +1,13 @@ import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; export const manifests = [ ...repositoryManifests, ...entityActionManifests, - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...workspaceManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts index d3caac84de..f4c6a13402 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.MemberGroups', - name: 'Member Groups Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.MemberGroups', + name: 'Member Groups Menu Item', weight: 800, loader: () => import('./member-groups-sidebar-menu-item.element'), meta: { label: 'Member Groups', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Members'], + menus: ['Umb.Menu.Members'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts index cfe54ac0a3..05813ed2ae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts @@ -1,13 +1,13 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; -import { manifests as respositoryManifests } from './repository/manifests'; +import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; export const manifests = [ - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, - ...respositoryManifests, + ...repositoryManifests, ...workspaceManifests, ...entityActionManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts index e62397b44b..162b03aa0d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.MemberTypes', - name: 'Member Types Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.MemberTypes', + name: 'Member Types Menu Item', weight: 30, loader: () => import('./member-types-sidebar-menu-item.element'), meta: { label: 'Member Types', icon: 'umb:folder', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts index 629f81b657..49ccba6ad7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts @@ -1,13 +1,13 @@ import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; export const manifests = [ ...repositoryManifests, ...entityActionManifests, - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...workspaceManifests, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts index c8935378c2..6a66de948c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts @@ -1,17 +1,17 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Members', - name: 'Members Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Members', + name: 'Members Menu Item', weight: 400, loader: () => import('./members-sidebar-menu-item.element'), meta: { label: 'Members', icon: 'umb:folder', entityType: 'member', - sidebarMenus: ['Umb.SidebarMenu.Members'], + menus: ['Umb.Menu.Members'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts index 7fddd3f55d..40e8e8dcf0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts @@ -1,6 +1,6 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; -export const manifests = [...repositoryManifests, ...sidebarMenuItemManifests, ...treeManifests, ...workspaceManifests]; +export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts index 5d8ce90554..a1a4699185 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts @@ -1,17 +1,17 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.DataTypes', - name: 'Data Types Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.DataTypes', + name: 'Data Types Menu Item', weight: 40, loader: () => import('./data-types-sidebar-menu-item.element'), meta: { label: 'Data Types', icon: 'umb:folder', entityType: 'data-type', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts index 91d087379a..bc9da36a52 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; -export const manifests = [...sidebarMenuItemManifests, ...workspaceManifests]; +export const manifests = [...menuItemManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts index 12b25aaf7f..aa8ba20a12 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Extensions', - name: 'Extensions Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Extensions', + name: 'Extensions Menu Item', weight: 100, meta: { label: 'Extensions', icon: 'umb:wand', entityType: 'extension-root', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts index c9f1fa57d3..258f0a95c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Languages', - name: 'Languages Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Languages', + name: 'Languages Menu Item', weight: 80, meta: { label: 'Languages', icon: 'umb:globe', entityType: 'language-root', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts index 95c4bc26f5..dc7b08158f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts @@ -1,16 +1,16 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.LogViewer', - name: 'LogViewer Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.LogViewer', + name: 'LogViewer Menu Item', weight: 70, meta: { label: 'Log Viewer', icon: 'umb:box-alt', entityType: 'logviewer-root', - sidebarMenus: ['Umb.SidebarMenu.Settings'], + menus: ['Umb.Menu.Settings'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts index 23cd5688d2..f35ad38997 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestSectionSidebarMenu, ManifestSidebarMenuItem } from '@umbraco-cms/extensions-registry'; +import { ManifestSectionSidebarMenu, ManifestMenuItem } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import './sidebar-menu-item.element.ts'; @@ -24,8 +24,8 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { // TODO: link to dashboards when clicking on the menu item header return html`

    ${this.manifest?.meta.label}

    items.meta.sidebarMenus.includes(this.manifest!.alias)} + type="menuItem" + .filter=${(items: ManifestMenuItem) => items.meta.menus.includes(this.manifest!.alias)} default-element="umb-sidebar-menu-item">`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts index 81df6319d5..c5fc090ea9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; @customElement('umb-sidebar-menu-item') export class UmbSidebarMenuItem extends UmbLitElement { @@ -12,7 +12,7 @@ export class UmbSidebarMenuItem extends UmbLitElement { private _key = uuidv4(); @property({ type: Object, attribute: false }) - manifest!: ManifestSidebarMenuItem; + manifest!: ManifestMenuItem; render() { return html` import('./templates-sidebar-menu-item.element'), meta: { label: 'Templates', icon: 'umb:folder', entityType: 'template', - sidebarMenus: ['Umb.SidebarMenu.Templating'], + menus: ['Umb.Menu.Templating'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts index 6c4d56a671..05813ed2ae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts @@ -1,11 +1,11 @@ -import { manifests as sidebarMenuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; export const manifests = [ - ...sidebarMenuItemManifests, + ...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts index 68a080417a..58303dbb6b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts @@ -1,17 +1,17 @@ -import type { ManifestSidebarMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/models'; -const sidebarMenuItem: ManifestSidebarMenuItem = { - type: 'sidebarMenuItem', - alias: 'Umb.SidebarMenuItem.Dictionary', - name: 'Dictionary Sidebar Menu Item', +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.Dictionary', + name: 'Dictionary Menu Item', weight: 400, loader: () => import('./dictionary-sidebar-menu-item.element'), meta: { label: 'Dictionary', icon: 'umb:book-alt', entityType: 'dictionary-item', - sidebarMenus: ['Umb.SidebarMenu.Translation'], + menus: ['Umb.Menu.Translation'], }, }; -export const manifests = [sidebarMenuItem]; +export const manifests = [menuItem]; From 864707fd398198913fdacbedea18f08508555ddd Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 15:22:37 +0100 Subject: [PATCH 74/87] rename to menu and menu items --- ...enu-item.models.ts => menu-item.models.ts} | 0 .../libs/extensions-registry/models.ts | 7 +++-- .../section-sidebar-menu.models.ts | 1 + .../backoffice/documents/section.manifests.ts | 1 + .../menu-item.element.ts} | 8 ++--- .../shared/components/menu/menu.element.ts | 30 +++++++++++++++++++ .../section-sidebar-menu.element.ts | 10 +++---- 7 files changed, 46 insertions(+), 11 deletions(-) rename src/Umbraco.Web.UI.Client/libs/extensions-registry/{sidebar-menu-item.models.ts => menu-item.models.ts} (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/{section/section-sidebar-menu/sidebar-menu-item.element.ts => menu-item/menu-item.element.ts} (76%) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/extensions-registry/sidebar-menu-item.models.ts rename to src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index 700d08fe83..9150d8aa95 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -13,7 +13,8 @@ import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; -import type { ManifestMenuItem } from './sidebar-menu-item.models'; +import type { ManifestMenu } from './menu.models'; +import type { ManifestMenuItem } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; import type { ManifestTreeItemAction } from './tree-item-action.models'; @@ -40,7 +41,8 @@ export * from './section-view.models'; export * from './section.models'; export * from './section-sidebar-item.models'; export * from './section-sidebar-menu.models'; -export * from './sidebar-menu-item.models'; +export * from './menu.models'; +export * from './menu-item.models'; export * from './theme.models'; export * from './tree-item-action.models'; export * from './tree.models'; @@ -71,6 +73,7 @@ export type ManifestTypes = | ManifestSectionSidebarItem | ManifestSectionView | ManifestSectionSidebarMenu + | ManifestMenu | ManifestMenuItem | ManifestTheme | ManifestTree diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts index 429b2a1a8c..996031e4d5 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts @@ -8,4 +8,5 @@ export interface ManifestSectionSidebarMenu extends ManifestElement { export interface MetaSectionSidebarMenu { label: string; sections: Array; + menu: string; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts index 499499e8ca..c3f218b315 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts @@ -21,6 +21,7 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { meta: { label: 'Content', sections: [sectionAlias], + menu: 'Umb.Menu.Content', }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts index c5fc090ea9..22fa6c93c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts @@ -5,8 +5,8 @@ import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; import type { ManifestMenuItem } from '@umbraco-cms/models'; -@customElement('umb-sidebar-menu-item') -export class UmbSidebarMenuItem extends UmbLitElement { +@customElement('umb-menu-item') +export class UmbMenuItem extends UmbLitElement { static styles = [UUITextStyles, css``]; private _key = uuidv4(); @@ -19,12 +19,12 @@ export class UmbSidebarMenuItem extends UmbLitElement { .key="${this._key}" .label=${this.manifest.meta.label || this.manifest.name} .icon=${this.manifest.meta.icon} - .entityType=${this.manifest.meta.entityType}>`; + .entityType=${this.manifest.meta.entityType || ''}>`; } } declare global { interface HTMLElementTagNameMap { - 'umb-sidebar-menu-item': UmbSidebarMenuItem; + 'umb-menu-item': UmbMenuItem; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts new file mode 100644 index 0000000000..6e5e62bbd6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu.element.ts @@ -0,0 +1,30 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { html } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { ManifestMenu, ManifestMenuItem } from '@umbraco-cms/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/element'; + +import '../menu-item/menu-item.element'; + +@customElement('umb-menu') +export class UmbMenuElement extends UmbLitElement { + static styles = [UUITextStyles]; + + @property() + manifest?: ManifestMenu; + + render() { + return html` items.meta.menus.includes(this.manifest!.alias)} + default-element="umb-menu-item">`; + } +} + +export default UmbMenuElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-menu': UmbMenuElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts index f35ad38997..b85a182390 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestSectionSidebarMenu, ManifestMenuItem } from '@umbraco-cms/extensions-registry'; +import { ManifestMenu, ManifestSectionSidebarMenu } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; -import './sidebar-menu-item.element.ts'; +import '../../menu/menu.element'; @customElement('umb-section-sidebar-menu') export class UmbSectionSidebarMenuElement extends UmbLitElement { @@ -24,9 +24,9 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { // TODO: link to dashboards when clicking on the menu item header return html`

    ${this.manifest?.meta.label}

    items.meta.menus.includes(this.manifest!.alias)} - default-element="umb-sidebar-menu-item">`; + type="menu" + .filter=${(menu: ManifestMenu) => menu.alias === this.manifest!.meta.menu} + default-element="umb-menu">
    `; } } From 7c418d84c8e21205adae6782f0bcb8317ea1f4b7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 19:34:45 +0100 Subject: [PATCH 75/87] register media menu --- .../src/backoffice/media/index.ts | 3 ++- .../src/backoffice/media/menu.manifests.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts index 2ee56ad17b..7afe8c49db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts @@ -1,4 +1,5 @@ import { manifests as mediaSectionManifests } from './section.manifests'; +import { manifests as mediaMenuManifests } from './menu.manifests'; import { manifests as mediaManifests } from './media/manifests'; import { manifests as mediaTypesManifests } from './media-types/manifests'; @@ -12,4 +13,4 @@ const registerExtensions = (manifests: Array) => { }); }; -registerExtensions([...mediaSectionManifests, ...mediaManifests, ...mediaTypesManifests]); +registerExtensions([...mediaSectionManifests, ...mediaMenuManifests, ...mediaManifests, ...mediaTypesManifests]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts new file mode 100644 index 0000000000..cdaab53e72 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts @@ -0,0 +1,12 @@ +import { ManifestMenu } from 'libs/extensions-registry/menu.models'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Media', + name: 'Media Menu', + meta: { + label: 'Media', + }, +}; + +export const manifests = [menu]; From 0edbe541fc5b3c1d4449e245f29745d3c2986cd6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 19:34:57 +0100 Subject: [PATCH 76/87] register members menu --- .../src/backoffice/members/index.ts | 9 ++++++++- .../src/backoffice/members/menu.manifests.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts index 4ffc37485b..0f5f91f7e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts @@ -1,4 +1,5 @@ import { manifests as memberSectionManifests } from './section.manifests'; +import { manifests as menuSectionManifests } from './menu.manifests'; import { manifests as memberGroupManifests } from './member-groups/manifests'; import { manifests as memberTypeManifests } from './member-types/manifests'; import { manifests as memberManifests } from './members/manifests'; @@ -13,4 +14,10 @@ const registerExtensions = (manifests: Array) => { }); }; -registerExtensions([...memberSectionManifests, ...memberGroupManifests, ...memberTypeManifests, ...memberManifests]); +registerExtensions([ + ...memberSectionManifests, + ...menuSectionManifests, + ...memberGroupManifests, + ...memberTypeManifests, + ...memberManifests, +]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts new file mode 100644 index 0000000000..cc27a51660 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts @@ -0,0 +1,12 @@ +import { ManifestMenu } from 'libs/extensions-registry/menu.models'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Members', + name: 'Members Menu', + meta: { + label: 'Members', + }, +}; + +export const manifests = [menu]; From 1a3b42a4a293160a2746060a50eb953e066fddc0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 19:42:08 +0100 Subject: [PATCH 77/87] add settings menu --- .../src/backoffice/settings/index.ts | 2 ++ .../src/backoffice/settings/menu.manifests.ts | 12 ++++++++++++ .../src/backoffice/settings/section.manifests.ts | 1 + 3 files changed, 15 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts index 43ef6bfa40..f566504513 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts @@ -1,4 +1,5 @@ import { manifests as settingsSectionManifests } from './section.manifests'; +import { manifests as settingsMenuManifests } from './menu.manifests'; import { manifests as dashboardManifests } from './dashboards/manifests'; import { manifests as dataTypeManifests } from './data-types/manifests'; import { manifests as extensionManifests } from './extensions/manifests'; @@ -18,6 +19,7 @@ const registerExtensions = (manifests: Array) => { registerExtensions([ ...settingsSectionManifests, + ...settingsMenuManifests, ...dashboardManifests, ...dataTypeManifests, ...extensionManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts new file mode 100644 index 0000000000..cd3cb071e5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts @@ -0,0 +1,12 @@ +import { ManifestMenu } from 'libs/extensions-registry/menu.models'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Settings', + name: 'Settings Menu', + meta: { + label: 'Settings', + }, +}; + +export const manifests = [menu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts index eaebc24e31..f133ccb5ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts @@ -21,6 +21,7 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { meta: { label: 'Settings', sections: [sectionAlias], + menu: 'Umb.Menu.Settings', }, }; From 76fc9f525e6a45a09be4a04af2a944a4337713b3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 19:42:25 +0100 Subject: [PATCH 78/87] add templating menu --- .../src/backoffice/templating/index.ts | 2 +- .../src/backoffice/templating/manifests.ts | 15 ----------- .../backoffice/templating/menu.manifests.ts | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts index 2666a82bfc..1a8e8d3ed7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts @@ -1,4 +1,4 @@ -import { manifests as menuManifests } from './manifests'; +import { manifests as menuManifests } from './menu.manifests'; import { manifests as templateManifests } from './templates/manifests'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { ManifestTypes } from '@umbraco-cms/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts deleted file mode 100644 index ef23bca158..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/manifests.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { ManifestSectionSidebarMenu } from '@umbraco-cms/models'; - -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', - alias: 'Umb.SectionSidebarMenu.Templating', - name: 'Templating Section Sidebar Menu', - weight: 100, - meta: { - label: 'Templating', - sections: ['Umb.Section.Settings'], - menu: 'Umb.Menu.Templating', - }, -}; - -export const manifests = [sectionSidebarMenu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts new file mode 100644 index 0000000000..69c5a33dc0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts @@ -0,0 +1,25 @@ +import { ManifestSectionSidebarMenu } from '@umbraco-cms/extensions-registry'; +import { ManifestMenu } from 'libs/extensions-registry/menu.models'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Templating', + name: 'Templating Menu', + meta: { + label: 'Templating', + }, +}; + +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SectionSidebarMenu.Templating', + name: 'Templating Section Sidebar Menu', + weight: 100, + meta: { + label: 'Templating', + sections: ['Umb.Section.Settings'], + menu: 'Umb.Menu.Templating', + }, +}; + +export const manifests = [menu, sectionSidebarMenu]; From 0af4e2dc1e106227f7714e6aff2d597144d2418f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 19:50:01 +0100 Subject: [PATCH 79/87] register dictionary menu --- .../src/backoffice/documents/menu.manifests.ts | 2 +- .../src/backoffice/media/menu.manifests.ts | 2 +- .../src/backoffice/members/menu.manifests.ts | 2 +- .../src/backoffice/settings/menu.manifests.ts | 2 +- .../src/backoffice/templating/menu.manifests.ts | 3 +-- .../translation/dictionary/manifests.ts | 2 ++ .../translation/dictionary/menu.manifests.ts | 12 ++++++++++++ .../dictionary/sidebar-menu-item/manifests.ts | 2 +- .../backoffice/translation/section.manifest.ts | 17 ++++++++++++++--- 9 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu.manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts index a30c353093..1595462273 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/menu.manifests.ts @@ -1,4 +1,4 @@ -import { ManifestMenu } from 'libs/extensions-registry/menu.models'; +import { ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts index cdaab53e72..48f15abb44 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/menu.manifests.ts @@ -1,4 +1,4 @@ -import { ManifestMenu } from 'libs/extensions-registry/menu.models'; +import { ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts index cc27a51660..1bd7ca6a85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/menu.manifests.ts @@ -1,4 +1,4 @@ -import { ManifestMenu } from 'libs/extensions-registry/menu.models'; +import { ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts index cd3cb071e5..9147a6a50a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/menu.manifests.ts @@ -1,4 +1,4 @@ -import { ManifestMenu } from 'libs/extensions-registry/menu.models'; +import { ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts index 69c5a33dc0..7063ab943b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts @@ -1,5 +1,4 @@ -import { ManifestSectionSidebarMenu } from '@umbraco-cms/extensions-registry'; -import { ManifestMenu } from 'libs/extensions-registry/menu.models'; +import { ManifestSectionSidebarMenu, ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts index 05813ed2ae..0760f0e676 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts @@ -1,3 +1,4 @@ +import { manifests as menuManifests } from './menu.manifests'; import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; @@ -5,6 +6,7 @@ import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; export const manifests = [ + ...menuManifests, ...menuItemManifests, ...treeManifests, ...repositoryManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu.manifests.ts new file mode 100644 index 0000000000..de5891031c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu.manifests.ts @@ -0,0 +1,12 @@ +import { ManifestMenu } from '@umbraco-cms/extensions-registry'; + +const menu: ManifestMenu = { + type: 'menu', + alias: 'Umb.Menu.Dictionary', + name: 'Dictionary Menu', + meta: { + label: 'Dictionary', + }, +}; + +export const manifests = [menu]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts index 58303dbb6b..86342918d5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts @@ -10,7 +10,7 @@ const menuItem: ManifestMenuItem = { label: 'Dictionary', icon: 'umb:book-alt', entityType: 'dictionary-item', - menus: ['Umb.Menu.Translation'], + menus: ['Umb.Menu.Dictionary'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts index 6e60134aa8..63bc12218f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestSection } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Translation'; @@ -13,6 +13,18 @@ const section: ManifestSection = { }, }; +const sectionSidebarMenu: ManifestSectionSidebarMenu = { + type: 'sectionSidebarMenu', + alias: 'Umb.SidebarMenu.Dictionary', + name: 'Dictionary Sidebar Menu', + weight: 100, + meta: { + label: 'Dictionary', + sections: [sectionAlias], + menu: 'Umb.Menu.Dictionary', + }, +}; + const dashboards: Array = [ { type: 'dashboard', @@ -28,5 +40,4 @@ const dashboards: Array = [ }, ]; - -export const manifests = [section, ...dashboards]; +export const manifests = [section, sectionSidebarMenu, ...dashboards]; From aea29378c6392ba70e780b35f3a46cd28272a2a0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 20:02:20 +0100 Subject: [PATCH 80/87] remove sidebar from menu-item name --- .../backoffice/documents/document-blueprints/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 4 ++-- .../src/backoffice/documents/document-types/manifests.ts | 2 +- .../document-types-menu-item.element.ts} | 0 .../{sidebar-menu-item => menu-item}/manifests.ts | 6 +++--- .../src/backoffice/media/media-types/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../media-types-menu-item.element.ts} | 8 ++++---- .../src/backoffice/media/media/manifests.ts | 2 +- .../media/{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../media-menu-item.element.ts} | 8 ++++---- .../src/backoffice/members/member-groups/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../member-groups-menu-item.element.ts} | 8 ++++---- .../src/backoffice/members/member-types/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../member-types-menu-item.element.ts} | 8 ++++---- .../src/backoffice/members/members/manifests.ts | 2 +- .../members/{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../members-menu-item.element.ts} | 8 ++++---- .../src/backoffice/settings/data-types/manifests.ts | 2 +- .../data-types-menu-item.element.ts} | 8 ++++---- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../src/backoffice/settings/extensions/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 0 .../src/backoffice/settings/languages/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 0 .../src/backoffice/settings/logviewer/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 0 .../src/backoffice/templating/templates/manifests.ts | 2 +- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- .../templates-menu-item.element.ts} | 8 ++++---- .../src/backoffice/translation/dictionary/manifests.ts | 2 +- .../dictionary-menu-item.element.ts} | 8 ++++---- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- 35 files changed, 58 insertions(+), 58 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/{sidebar-menu-item => menu-item}/manifests.ts (76%) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/{sidebar-menu-item/document-types-sidebar-menu-item.element.ts => menu-item/document-types-menu-item.element.ts} (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/{sidebar-menu-item => menu-item}/manifests.ts (62%) rename src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/{sidebar-menu-item => menu-item}/manifests.ts (83%) rename src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/{sidebar-menu-item/media-types-sidebar-menu-item.element.ts => menu-item/media-types-menu-item.element.ts} (78%) rename src/Umbraco.Web.UI.Client/src/backoffice/media/media/{sidebar-menu-item => menu-item}/manifests.ts (83%) rename src/Umbraco.Web.UI.Client/src/backoffice/media/media/{sidebar-menu-item/media-sidebar-menu-item.element.ts => menu-item/media-menu-item.element.ts} (54%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/{sidebar-menu-item => menu-item}/manifests.ts (83%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/{sidebar-menu-item/member-groups-sidebar-menu-item.element.ts => menu-item/member-groups-menu-item.element.ts} (77%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/{sidebar-menu-item => menu-item}/manifests.ts (83%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/{sidebar-menu-item/member-types-sidebar-menu-item.element.ts => menu-item/member-types-menu-item.element.ts} (77%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/members/{sidebar-menu-item => menu-item}/manifests.ts (84%) rename src/Umbraco.Web.UI.Client/src/backoffice/members/members/{sidebar-menu-item/members-sidebar-menu-item.element.ts => menu-item/members-menu-item.element.ts} (79%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/{sidebar-menu-item/data-types-sidebar-menu-item.element.ts => menu-item/data-types-menu-item.element.ts} (78%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/{sidebar-menu-item => menu-item}/manifests.ts (84%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/{sidebar-menu-item => menu-item}/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/{sidebar-menu-item => menu-item}/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/{sidebar-menu-item => menu-item}/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/{sidebar-menu-item => menu-item}/manifests.ts (84%) rename src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/{sidebar-menu-item/templates-sidebar-menu-item.element.ts => menu-item/templates-menu-item.element.ts} (78%) rename src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/{sidebar-menu-item/dictionary-sidebar-menu-item.element.ts => menu-item/dictionary-menu-item.element.ts} (52%) rename src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/{sidebar-menu-item => menu-item}/manifests.ts (84%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts index bc9da36a52..5bee1cd866 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; export const manifests = [...menuItemManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts index 77fb3b310d..976c314278 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts @@ -2,8 +2,8 @@ import type { ManifestMenuItem } from '@umbraco-cms/models'; const menuItem: ManifestMenuItem = { type: 'menuItem', - alias: 'Umb.SidebarMenuItem.DocumentBlueprints', - name: 'Document Blueprints Sidebar Menu Item', + alias: 'Umb.MenuItem.DocumentBlueprints', + name: 'Document Blueprints Menu Item', weight: 90, meta: { label: 'Document Blueprints', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts index ff6e2dd898..02774edbeb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/document-types-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/document-types-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts similarity index 62% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index 086b0b9148..a74b49aab2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -2,10 +2,10 @@ import type { ManifestMenuItem } from '@umbraco-cms/models'; const menuItem: ManifestMenuItem = { type: 'menuItem', - alias: 'Umb.SidebarMenuItem.DocumentTypes', - name: 'Document Types Sidebar Menu Item', + alias: 'Umb.MenuItem.DocumentTypes', + name: 'Document Types Menu Item', weight: 10, - loader: () => import('./document-types-sidebar-menu-item.element'), + loader: () => import('./document-types-menu-item.element'), meta: { label: 'Document Types', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts index 7d17b201ba..7e628554a5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index b6ee122b0b..5cb7de2e11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.MediaTypes', name: 'Media Types Menu Item', weight: 20, - loader: () => import('./media-types-sidebar-menu-item.element'), + loader: () => import('./media-types-menu-item.element'), meta: { label: 'Media Types', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/media-types-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/media-types-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts index 1ad71be2bb..f38a1bb8d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/sidebar-menu-item/media-types-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-media-types-sidebar-menu-item') -export class UmbMediaTypesSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-media-types-menu-item') +export class UmbMediaTypesMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -30,10 +30,10 @@ export class UmbMediaTypesSidebarMenuItemElement extends UmbLitElement { } } -export default UmbMediaTypesSidebarMenuItemElement; +export default UmbMediaTypesMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-media-types-sidebar-menu-item': UmbMediaTypesSidebarMenuItemElement; + 'umb-media-types-menu-item': UmbMediaTypesMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts index 90b6cc7181..49f889b97b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/manifests.ts @@ -1,5 +1,5 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as entityActionsManifests } from './entity-actions/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts index 432a6481c1..e4287b17f3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.Media', name: 'Media Menu Item', weight: 100, - loader: () => import('./media-sidebar-menu-item.element'), + loader: () => import('./media-menu-item.element'), meta: { label: 'Media', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/media-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/media-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts index a32ff11d13..6bba1af067 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/sidebar-menu-item/media-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts @@ -2,17 +2,17 @@ import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-media-sidebar-menu-item') -export class UmbMediaSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-media-menu-item') +export class UmbMediaMenuItemElement extends UmbLitElement { render() { return html``; } } -export default UmbMediaSidebarMenuItemElement; +export default UmbMediaMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-media-sidebar-menu-item': UmbMediaSidebarMenuItemElement; + 'umb-media-menu-item': UmbMediaMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts index 49ccba6ad7..bc9e01ae46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/manifests.ts @@ -1,6 +1,6 @@ import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index f4c6a13402..cccc4c0247 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.MemberGroups', name: 'Member Groups Menu Item', weight: 800, - loader: () => import('./member-groups-sidebar-menu-item.element'), + loader: () => import('./member-groups-menu-item.element'), meta: { label: 'Member Groups', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/member-groups-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts similarity index 77% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/member-groups-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts index 2ef51fc654..aaa72bd20a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/sidebar-menu-item/member-groups-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-member-groups-sidebar-menu-item') -export class UmbMemberGroupsSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-member-groups-menu-item') +export class UmbMemberGroupsMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -30,10 +30,10 @@ export class UmbMemberGroupsSidebarMenuItemElement extends UmbLitElement { } } -export default UmbMemberGroupsSidebarMenuItemElement; +export default UmbMemberGroupsMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-member-groups-sidebar-menu-item': UmbMemberGroupsSidebarMenuItemElement; + 'umb-member-groups-menu-item': UmbMemberGroupsMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts index 05813ed2ae..430748aa0f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 162b03aa0d..02892c46d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.MemberTypes', name: 'Member Types Menu Item', weight: 30, - loader: () => import('./member-types-sidebar-menu-item.element'), + loader: () => import('./member-types-menu-item.element'), meta: { label: 'Member Types', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/member-types-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts similarity index 77% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/member-types-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts index d23919ce4c..42e3449cc6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/sidebar-menu-item/member-types-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-member-types-sidebar-menu-item') -export class UmbMemberTypesSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-member-types-menu-item') +export class UmbMemberTypesMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -30,10 +30,10 @@ export class UmbMemberTypesSidebarMenuItemElement extends UmbLitElement { } } -export default UmbMemberTypesSidebarMenuItemElement; +export default UmbMemberTypesMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-member-types-sidebar-menu-item': UmbMemberTypesSidebarMenuItemElement; + 'umb-member-types-menu-item': UmbMemberTypesMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts index 49ccba6ad7..bc9e01ae46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/manifests.ts @@ -1,6 +1,6 @@ import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as entityActionManifests } from './entity-actions/manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index 6a66de948c..4ab22621b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.Members', name: 'Members Menu Item', weight: 400, - loader: () => import('./members-sidebar-menu-item.element'), + loader: () => import('./members-menu-item.element'), meta: { label: 'Members', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/members-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/members-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts index 8ab8e3b82e..a5ab1f7248 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/sidebar-menu-item/members-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-members-sidebar-menu-item') -export class UmbMembersSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-members-menu-item') +export class UmbMembersMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -30,10 +30,10 @@ export class UmbMembersSidebarMenuItemElement extends UmbLitElement { } } -export default UmbMembersSidebarMenuItemElement; +export default UmbMembersMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-members-sidebar-menu-item': UmbMembersSidebarMenuItemElement; + 'umb-members-menu-item': UmbMembersMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts index 40e8e8dcf0..ddaa4babdc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/manifests.ts @@ -1,5 +1,5 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/data-types-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/data-types-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts index cb94248015..2887568f1b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/data-types-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-data-types-sidebar-menu-item') -export class UmbDataTypesSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-data-types-menu-item') +export class UmbDataTypesMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -31,10 +31,10 @@ export class UmbDataTypesSidebarMenuItemElement extends UmbLitElement { } } -export default UmbDataTypesSidebarMenuItemElement; +export default UmbDataTypesMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-data-types-sidebar-menu-item': UmbDataTypesSidebarMenuItemElement; + 'umb-data-types-menu-item': UmbDataTypesMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index a1a4699185..25eb1fdef7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.DataTypes', name: 'Data Types Menu Item', weight: 40, - loader: () => import('./data-types-sidebar-menu-item.element'), + loader: () => import('./data-types-menu-item.element'), meta: { label: 'Data Types', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts index bc9da36a52..5bee1cd866 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; export const manifests = [...menuItemManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts index bc14ccd93e..4d649f5cd8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/manifests.ts @@ -1,5 +1,5 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as treeManifests } from './sidebar-menu-item/manifests'; +import { manifests as treeManifests } from './menu-item/manifests'; import { manifests as entityActions } from './entity-actions/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; import { manifests as appLanguageSelect } from './app-language-select/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/manifests.ts index 450deac4e9..767c99acee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/manifests.ts @@ -1,4 +1,4 @@ -import { manifests as treeManifests } from './sidebar-menu-item/manifests'; +import { manifests as treeManifests } from './menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; export const manifests = [...treeManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/manifests.ts index 443917ffb1..84c48ea0b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/manifests.ts @@ -1,5 +1,5 @@ import { manifests as repositoryManifests } from './repository/manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as entityActionsManifests } from './entity-actions/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts index 332ac221f9..1f84068f1d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.Templates', name: 'Templates Menu Item', weight: 40, - loader: () => import('./templates-sidebar-menu-item.element'), + loader: () => import('./templates-menu-item.element'), meta: { label: 'Templates', icon: 'umb:folder', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/templates-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/templates-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts index 866b1e58b7..d9b9600990 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/sidebar-menu-item/templates-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts @@ -2,8 +2,8 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-templates-sidebar-menu-item') -export class UmbTemplatesSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-templates-menu-item') +export class UmbTemplatesMenuItemElement extends UmbLitElement { @state() private _renderTree = false; @@ -31,10 +31,10 @@ export class UmbTemplatesSidebarMenuItemElement extends UmbLitElement { } } -export default UmbTemplatesSidebarMenuItemElement; +export default UmbTemplatesMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-templates-sidebar-menu-item': UmbTemplatesSidebarMenuItemElement; + 'umb-templates-menu-item': UmbTemplatesMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts index 0760f0e676..406f298371 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/manifests.ts @@ -1,5 +1,5 @@ import { manifests as menuManifests } from './menu.manifests'; -import { manifests as menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/dictionary-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/dictionary-menu-item.element.ts similarity index 52% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/dictionary-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/dictionary-menu-item.element.ts index f06a051ad3..98dffdf557 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/dictionary-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/dictionary-menu-item.element.ts @@ -2,17 +2,17 @@ import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -@customElement('umb-dictionary-sidebar-menu-item') -export class UmbDictionarySidebarMenuItemElement extends UmbLitElement { +@customElement('umb-dictionary-menu-item') +export class UmbDictionaryMenuItemElement extends UmbLitElement { render() { return html``; } } -export default UmbDictionarySidebarMenuItemElement; +export default UmbDictionaryMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-dictionary-sidebar-menu-item': UmbDictionarySidebarMenuItemElement; + 'umb-dictionary-menu-item': UmbDictionaryMenuItemElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts index 86342918d5..c62856cc82 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/sidebar-menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.Dictionary', name: 'Dictionary Menu Item', weight: 400, - loader: () => import('./dictionary-sidebar-menu-item.element'), + loader: () => import('./dictionary-menu-item.element'), meta: { label: 'Dictionary', icon: 'umb:book-alt', From f39037632ca2c9f18dbffdaab56cff702369a5a3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Feb 2023 20:15:21 +0100 Subject: [PATCH 81/87] remove unused label from menu model --- .../libs/extensions-registry/menu.models.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts index 82e12e0f89..5e5b0906de 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu.models.ts @@ -2,9 +2,4 @@ import type { ManifestElement } from './models'; export interface ManifestMenu extends ManifestElement { type: 'menu'; - meta: MetaMenu; -} - -export interface MetaMenu { - label: string; } From 864b1e01c1146bcd9cc153d7df333ed520110e89 Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Tue, 28 Feb 2023 20:49:39 +0000 Subject: [PATCH 82/87] Move the WebComponent/LitElement that was inside the story file to own file ESBuild errors was not happy it was inside a story file --- .../{ => stories}/notification.mdx | 0 .../stories/notification.stories.ts | 38 +++++++++++++++++ ...y-notification-default-example.element.ts} | 41 ++----------------- .../src/core/modal/{ => stories}/modal.mdx | 0 .../src/core/modal/stories/modal.stories.ts | 20 +++++++++ .../story-modal-service-example.element.ts} | 20 +-------- 6 files changed, 62 insertions(+), 57 deletions(-) rename src/Umbraco.Web.UI.Client/libs/notification/{ => stories}/notification.mdx (100%) create mode 100644 src/Umbraco.Web.UI.Client/libs/notification/stories/notification.stories.ts rename src/Umbraco.Web.UI.Client/libs/notification/{notification.stories.ts => stories/story-notification-default-example.element.ts} (61%) rename src/Umbraco.Web.UI.Client/src/core/modal/{ => stories}/modal.mdx (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts rename src/Umbraco.Web.UI.Client/src/core/modal/{modal.stories.ts => stories/story-modal-service-example.element.ts} (71%) diff --git a/src/Umbraco.Web.UI.Client/libs/notification/notification.mdx b/src/Umbraco.Web.UI.Client/libs/notification/stories/notification.mdx similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/notification/notification.mdx rename to src/Umbraco.Web.UI.Client/libs/notification/stories/notification.mdx diff --git a/src/Umbraco.Web.UI.Client/libs/notification/stories/notification.stories.ts b/src/Umbraco.Web.UI.Client/libs/notification/stories/notification.stories.ts new file mode 100644 index 0000000000..ce0460727a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/notification/stories/notification.stories.ts @@ -0,0 +1,38 @@ +import '../layouts/default'; + +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit'; + +import { UmbNotificationService } from '..'; + +export default { + title: 'API/Notifications/Overview', + component: 'ucp-notification-layout-default', + decorators: [ + (story) => + html` + ${story()} + `, + ], +} as Meta; + +const Template: Story = () => html``; + +export const Default = Template.bind({}); +Default.parameters = { + docs: { + source: { + language: 'js', + code: ` +const options: UmbNotificationOptions = { + data: { + headline: 'Headline', + message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit' + } +}; + +this._notificationService?.peek('positive', options); +`, + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/libs/notification/notification.stories.ts b/src/Umbraco.Web.UI.Client/libs/notification/stories/story-notification-default-example.element.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/libs/notification/notification.stories.ts rename to src/Umbraco.Web.UI.Client/libs/notification/stories/story-notification-default-example.element.ts index c890834387..b470aa71f7 100644 --- a/src/Umbraco.Web.UI.Client/libs/notification/notification.stories.ts +++ b/src/Umbraco.Web.UI.Client/libs/notification/stories/story-notification-default-example.element.ts @@ -1,28 +1,14 @@ -import './layouts/default'; - -import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; - -import type { UmbNotificationDefaultData } from './layouts/default'; +import { UmbNotificationDefaultData } from '../layouts/default'; import { UmbNotificationColor, UmbNotificationOptions, UmbNotificationService, - UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN, -} from '.'; + UMB_NOTIFICATION_SERVICE_CONTEXT_TOKEN +} from '..'; import { UmbLitElement } from '@umbraco-cms/element'; -export default { - title: 'API/Notifications/Overview', - component: 'ucp-notification-layout-default', - decorators: [ - (story) => - html` - ${story()} - `, - ], -} as Meta; @customElement('story-notification-default-example') export class StoryNotificationDefaultExampleElement extends UmbLitElement { @@ -69,24 +55,3 @@ export class StoryNotificationDefaultExampleElement extends UmbLitElement { `; } } - -const Template: Story = () => html``; - -export const Default = Template.bind({}); -Default.parameters = { - docs: { - source: { - language: 'js', - code: ` -const options: UmbNotificationOptions = { - data: { - headline: 'Headline', - message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit' - } -}; - -this._notificationService?.peek('positive', options); -`, - }, - }, -}; diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/modal.mdx b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx similarity index 100% rename from src/Umbraco.Web.UI.Client/src/core/modal/modal.mdx rename to src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts new file mode 100644 index 0000000000..b0ab354948 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts @@ -0,0 +1,20 @@ +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit-html'; + + +export default { + title: 'API/Modals', + id: 'umb-modal-service', + argTypes: { + modalLayout: { + control: 'select', + options: ['Confirm', 'Content Picker', 'Property Editor UI Picker', 'Icon Picker'], + }, + }, +} as Meta; + +const Template: Story = (props) => { + return html` `; +}; + +export const Overview = Template.bind({}); diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/modal.stories.ts b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/src/core/modal/modal.stories.ts rename to src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts index 0454bcf94e..c2f39bc7d6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts @@ -1,20 +1,8 @@ -import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; import { customElement, property, state } from 'lit/decorators.js'; - -import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '.'; +import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '..'; import { UmbLitElement } from '@umbraco-cms/element'; -export default { - title: 'API/Modals', - id: 'umb-modal-service', - argTypes: { - modalLayout: { - control: 'select', - options: ['Confirm', 'Content Picker', 'Property Editor UI Picker', 'Icon Picker'], - }, - }, -} as Meta; @customElement('story-modal-service-example') export class StoryModalServiceExampleElement extends UmbLitElement { @@ -61,9 +49,3 @@ export class StoryModalServiceExampleElement extends UmbLitElement { `; } } - -const Template: Story = (props) => { - return html` `; -}; - -export const Overview = Template.bind({}); From 2cd26f72a562be73286b50f0c1cc50b08ca2d6e9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 1 Mar 2023 13:05:50 +0100 Subject: [PATCH 83/87] rename section sidebar item to section sidebar app --- .../libs/extensions-registry/models.ts | 4 ++-- .../extensions-registry/section-sidebar-item.models.ts | 8 ++++---- .../settings/languages/app-language-select/manifests.ts | 6 +++--- .../shared/components/section/section.element.ts | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index 9150d8aa95..262d61e978 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -11,7 +11,7 @@ import type { ManifestPropertyAction } from './property-action.models'; import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './property-editor.models'; import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; -import type { ManifestSectionSidebarItem } from './section-sidebar-item.models'; +import type { ManifestSectionSidebarApp } from './section-sidebar-item.models'; import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; @@ -70,7 +70,7 @@ export type ManifestTypes = | ManifestPropertyEditorUI | ManifestRepository | ManifestSection - | ManifestSectionSidebarItem + | ManifestSectionSidebarApp | ManifestSectionView | ManifestSectionSidebarMenu | ManifestMenu diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts index c94bc5bb45..30a40c4d0b 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts @@ -1,10 +1,10 @@ import type { ManifestElement } from './models'; -export interface ManifestSectionSidebarItem extends ManifestElement { - type: 'sectionSidebarItem'; - meta: MetaSectionSidebarItem; +export interface ManifestSectionSidebarApp extends ManifestElement { + type: 'sectionSidebarApp'; + meta: MetaSectionSidebarApp; } -export interface MetaSectionSidebarItem { +export interface MetaSectionSidebarApp { sections: Array; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts index 34dd3dcf69..345c971563 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/manifests.ts @@ -1,8 +1,8 @@ -import { ManifestSectionSidebarItem } from '@umbraco-cms/extensions-registry'; +import { ManifestSectionSidebarApp } from '@umbraco-cms/extensions-registry'; -const entityActions: Array = [ +const entityActions: Array = [ { - type: 'sectionSidebarItem', + type: 'sectionSidebarApp', alias: 'Umb.SectionSidebarItem.LanguageSelect', name: 'App Language Select Section Sidebar Item', loader: () => import('./app-language-select.element'), diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 7976ab2d7e..3ec37dba60 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -199,9 +199,10 @@ export class UmbSectionElement extends UmbLitElement { return html` ${this._menus && this._menus.length > 0 ? html` + items.meta.sections.includes(this._sectionAlias || '')}> From 68d84edba3c7dc4598300253c2f4875c111dd0b8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 1 Mar 2023 13:29:38 +0100 Subject: [PATCH 84/87] rename to menu section sidebar app --- .../libs/extensions-registry/models.ts | 4 ++-- .../section-sidebar-menu.models.ts | 8 ++++---- .../src/backoffice/documents/section.manifests.ts | 8 ++++---- .../src/backoffice/media/section.manifests.ts | 8 ++++---- .../src/backoffice/members/section.manifests.ts | 8 ++++---- .../src/backoffice/settings/section.manifests.ts | 8 ++++---- .../section-sidebar-menu.element.ts | 4 ++-- .../shared/components/section/section.element.ts | 13 +++++++------ .../src/backoffice/templating/menu.manifests.ts | 8 ++++---- .../src/backoffice/translation/section.manifest.ts | 8 ++++---- 10 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index 262d61e978..b8fa1d57d1 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -12,7 +12,7 @@ import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './pr import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarApp } from './section-sidebar-item.models'; -import type { ManifestSectionSidebarMenu } from './section-sidebar-menu.models'; +import type { ManifestMenuSectionSidebarApp } from './section-sidebar-menu.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; @@ -72,7 +72,7 @@ export type ManifestTypes = | ManifestSection | ManifestSectionSidebarApp | ManifestSectionView - | ManifestSectionSidebarMenu + | ManifestMenuSectionSidebarApp | ManifestMenu | ManifestMenuItem | ManifestTheme diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts index 996031e4d5..bf08d33c24 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts @@ -1,11 +1,11 @@ import type { ManifestElement } from './models'; -export interface ManifestSectionSidebarMenu extends ManifestElement { - type: 'sectionSidebarMenu'; - meta: MetaSectionSidebarMenu; +export interface ManifestMenuSectionSidebarApp extends ManifestElement { + type: 'menuSectionSidebarApp'; + meta: MetaMenuSectionSidebarApp; } -export interface MetaSectionSidebarMenu { +export interface MetaMenuSectionSidebarApp { label: string; sections: Array; menu: string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts index c3f218b315..d8919a3689 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; @@ -13,8 +13,8 @@ const section: ManifestSection = { }, }; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, @@ -25,4 +25,4 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { }, }; -export const manifests = [section, sectionSidebarMenu]; +export const manifests = [section, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts index aea51e5969..e7f137f2b8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboardCollection, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboardCollection, ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Media'; @@ -29,8 +29,8 @@ const dashboards: Array = [ }, ]; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SectionSidebarMenu.Media', name: 'Media Section Sidebar Menu', weight: 100, @@ -41,4 +41,4 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { }, }; -export const manifests = [section, sectionSidebarMenu, ...dashboards]; +export const manifests = [section, menuSectionSidebarApp, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts index 7cf1af267e..bfc8719566 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Members'; @@ -28,8 +28,8 @@ const dashboards: Array = [ }, ]; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SectionSidebarMenu.Members', name: 'Members Section Sidebar Menu', weight: 100, @@ -40,4 +40,4 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { }, }; -export const manifests = [section, sectionSidebarMenu, ...dashboards]; +export const manifests = [section, menuSectionSidebarApp, ...dashboards]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts index f133ccb5ea..90b8cb4a4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/section.manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Settings'; @@ -13,8 +13,8 @@ const section: ManifestSection = { }, }; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SectionSidebarMenu.Settings', name: 'Settings Section Sidebar Menu', weight: 100, @@ -25,4 +25,4 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { }, }; -export const manifests = [section, sectionSidebarMenu]; +export const manifests = [section, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts index b85a182390..a3d5197748 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestMenu, ManifestSectionSidebarMenu } from '@umbraco-cms/extensions-registry'; +import { ManifestMenu, ManifestMenuSectionSidebarApp } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../menu/menu.element'; @@ -18,7 +18,7 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { ]; @property() - manifest?: ManifestSectionSidebarMenu; + manifest?: ManifestMenuSectionSidebarApp; render() { // TODO: link to dashboards when clicking on the menu item header diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts index 3ec37dba60..a144c9666c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.element.ts @@ -5,7 +5,7 @@ import { map } from 'rxjs'; import { IRoutingInfo } from 'router-slot'; import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { ManifestSectionView, ManifestWorkspace, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestSectionView, ManifestWorkspace, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -40,7 +40,7 @@ export class UmbSectionElement extends UmbLitElement { private _routes: Array = []; @state() - private _menus?: Array; + private _menus?: Array; @state() private _views?: Array; @@ -84,7 +84,7 @@ export class UmbSectionElement extends UmbLitElement { if (sectionAlias) { this.observe( umbExtensionsRegistry - ?.extensionsOfType('sectionSidebarMenu') + ?.extensionsOfType('menuSectionSidebarApp') .pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))), (manifests) => { this._menus = manifests; @@ -203,12 +203,13 @@ export class UmbSectionElement extends UmbLitElement { + .filter=${(items: ManifestMenuSectionSidebarApp) => items.meta.sections.includes(this._sectionAlias || '')}> items.meta.sections.includes(this._sectionAlias || '')} + type="menuSectionSidebarApp" + .filter=${(items: ManifestMenuSectionSidebarApp) => + items.meta.sections.includes(this._sectionAlias || '')} default-element="umb-section-sidebar-menu"> ` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts index 7063ab943b..700ff9b7be 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/menu.manifests.ts @@ -1,4 +1,4 @@ -import { ManifestSectionSidebarMenu, ManifestMenu } from '@umbraco-cms/extensions-registry'; +import { ManifestMenuSectionSidebarApp, ManifestMenu } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', @@ -9,8 +9,8 @@ const menu: ManifestMenu = { }, }; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SectionSidebarMenu.Templating', name: 'Templating Section Sidebar Menu', weight: 100, @@ -21,4 +21,4 @@ const sectionSidebarMenu: ManifestSectionSidebarMenu = { }, }; -export const manifests = [menu, sectionSidebarMenu]; +export const manifests = [menu, menuSectionSidebarApp]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts index 63bc12218f..aeaee59e29 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/section.manifest.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestSection, ManifestSectionSidebarMenu } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Translation'; @@ -13,8 +13,8 @@ const section: ManifestSection = { }, }; -const sectionSidebarMenu: ManifestSectionSidebarMenu = { - type: 'sectionSidebarMenu', +const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { + type: 'menuSectionSidebarApp', alias: 'Umb.SidebarMenu.Dictionary', name: 'Dictionary Sidebar Menu', weight: 100, @@ -40,4 +40,4 @@ const dashboards: Array = [ }, ]; -export const manifests = [section, sectionSidebarMenu, ...dashboards]; +export const manifests = [section, menuSectionSidebarApp, ...dashboards]; From 4593b2bdf6e24b1ec9f87a1272b1ef7f338769e3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 1 Mar 2023 13:30:29 +0100 Subject: [PATCH 85/87] rename file --- src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts | 4 ++-- ...n-sidebar-item.models.ts => section-sidebar-app.models.ts} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/libs/extensions-registry/{section-sidebar-item.models.ts => section-sidebar-app.models.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index b8fa1d57d1..b3e6ee01fa 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -11,7 +11,7 @@ import type { ManifestPropertyAction } from './property-action.models'; import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './property-editor.models'; import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; -import type { ManifestSectionSidebarApp } from './section-sidebar-item.models'; +import type { ManifestSectionSidebarApp } from './section-sidebar-app.models'; import type { ManifestMenuSectionSidebarApp } from './section-sidebar-menu.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; @@ -39,7 +39,7 @@ export * from './property-action.models'; export * from './property-editor.models'; export * from './section-view.models'; export * from './section.models'; -export * from './section-sidebar-item.models'; +export * from './section-sidebar-app.models'; export * from './section-sidebar-menu.models'; export * from './menu.models'; export * from './menu-item.models'; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-item.models.ts rename to src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts From 5d3af0a7a6c99ec45de05a27a9b478387ec8a5e0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 1 Mar 2023 13:35:15 +0100 Subject: [PATCH 86/87] move sidebar apps and sidebar menu app to same file and extend meta --- .../libs/extensions-registry/models.ts | 4 +--- .../section-sidebar-app.models.ts | 11 +++++++++++ .../section-sidebar-menu.models.ts | 12 ------------ 3 files changed, 12 insertions(+), 15 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts index b3e6ee01fa..47dfd66afc 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -11,8 +11,7 @@ import type { ManifestPropertyAction } from './property-action.models'; import type { ManifestPropertyEditorUI, ManifestPropertyEditorModel } from './property-editor.models'; import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; -import type { ManifestSectionSidebarApp } from './section-sidebar-app.models'; -import type { ManifestMenuSectionSidebarApp } from './section-sidebar-menu.models'; +import type { ManifestSectionSidebarApp, ManifestMenuSectionSidebarApp } from './section-sidebar-app.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; @@ -40,7 +39,6 @@ export * from './property-editor.models'; export * from './section-view.models'; export * from './section.models'; export * from './section-sidebar-app.models'; -export * from './section-sidebar-menu.models'; export * from './menu.models'; export * from './menu-item.models'; export * from './theme.models'; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts index 30a40c4d0b..544e64021e 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-app.models.ts @@ -8,3 +8,14 @@ export interface ManifestSectionSidebarApp extends ManifestElement { export interface MetaSectionSidebarApp { sections: Array; } + +// TODO: this is a temp solution until we implement kinds +export interface ManifestMenuSectionSidebarApp extends ManifestElement { + type: 'menuSectionSidebarApp'; + meta: MetaMenuSectionSidebarApp; +} + +export interface MetaMenuSectionSidebarApp extends MetaSectionSidebarApp { + label: string; + menu: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts deleted file mode 100644 index bf08d33c24..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-sidebar-menu.models.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { ManifestElement } from './models'; - -export interface ManifestMenuSectionSidebarApp extends ManifestElement { - type: 'menuSectionSidebarApp'; - meta: MetaMenuSectionSidebarApp; -} - -export interface MetaMenuSectionSidebarApp { - label: string; - sections: Array; - menu: string; -} From 7b6bd3fe3499a5c36ad2f2fe6c0d68fd69462396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 1 Mar 2023 13:55:04 +0100 Subject: [PATCH 87/87] lint fix --- .../extensions-registry/workspace-action.models.ts | 2 +- .../libs/workspace/actions/save/save.action.ts | 2 +- .../documents/documents/entity-actions/manifests.ts | 12 ++++++------ .../entity-bulk-actions/copy/copy.action.ts | 2 +- .../entity-bulk-actions/move/move.action.ts | 2 +- .../workspace/actions/save-and-preview.action.ts | 2 +- .../workspace/actions/save-and-publish.action.ts | 2 +- .../workspace/actions/save-and-schedule.action.ts | 2 +- .../documents/documents/workspace/manifests.ts | 2 +- .../media/media-types/entity-actions/manifests.ts | 2 +- .../media-types/entity-actions/reload.action.ts | 2 +- .../media/entity-bulk-actions/copy/copy.action.ts | 2 +- .../media/entity-bulk-actions/move/move.action.ts | 2 +- .../media/entity-bulk-actions/trash/trash.action.ts | 2 +- .../members/member-groups/workspace/manifests.ts | 2 +- .../members/member-types/entity-actions/manifests.ts | 2 +- .../languages/workspace/language/manifests.ts | 2 +- .../edit/edit-language-workspace-view.element.ts | 2 +- .../input-culture-select.element.ts | 2 +- .../input-language-picker.element.ts | 2 +- .../templating/templates/entity-actions/manifests.ts | 2 +- .../templating/templates/workspace/manifests.ts | 2 +- .../entity-actions/create/create.action.ts | 2 +- .../entity-actions/export/export.action.ts | 2 +- .../entity-actions/import/import.action.ts | 2 +- .../dictionary/entity-actions/manifests.ts | 2 +- .../dictionary/entity-actions/reload.action.ts | 2 +- .../translation/dictionary/workspace/manifests.ts | 2 +- .../workspace/user-group-workspace.element.ts | 2 +- 29 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts index 9c7f69de04..b18c358d5f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-action.models.ts @@ -1,6 +1,6 @@ -import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import type { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types/index'; import type { ManifestElement } from './models'; +import { UmbWorkspaceAction } from '@umbraco-cms/workspace'; import type { ClassConstructor } from '@umbraco-cms/models'; export interface ManifestWorkspaceAction extends ManifestElement { diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts b/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts index 17912c9e96..7b178ef44a 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/actions/save/save.action.ts @@ -1,5 +1,5 @@ -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbWorkspaceContextInterface } from '../../../../src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: add interface for repo/partial repo/save-repo diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts index fe90e1a223..7dc878c0b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/manifests.ts @@ -1,9 +1,3 @@ -import { - UmbCopyEntityAction, - UmbMoveEntityAction, - UmbTrashEntityAction, - UmbSortChildrenOfEntityAction, -} from '@umbraco-cms/entity-action'; import { UmbCreateDocumentEntityAction } from './create.action'; import { UmbPublishDocumentEntityAction } from './publish.action'; import { UmbDocumentCultureAndHostnamesEntityAction } from './culture-and-hostnames.action'; @@ -12,6 +6,12 @@ import { UmbDocumentPublicAccessEntityAction } from './public-access.action'; import { UmbDocumentPermissionsEntityAction } from './permissions.action'; import { UmbUnpublishDocumentEntityAction } from './unpublish.action'; import { UmbRollbackDocumentEntityAction } from './rollback.action'; +import { + UmbCopyEntityAction, + UmbMoveEntityAction, + UmbTrashEntityAction, + UmbSortChildrenOfEntityAction, +} from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from '@umbraco-cms/extensions-registry'; const entityType = 'document'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts index cdc26a0488..daf1482bed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/copy/copy.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbDocumentRepository } from '../../repository/document.repository'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentCopyEntityBulkAction extends UmbEntityBulkActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts index 680581722e..ebe5bb2a8a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/move/move.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbDocumentRepository } from '../../repository/document.repository'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentMoveEntityBulkAction extends UmbEntityBulkActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts index d244219c4d..10470f8d25 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-preview.action.ts @@ -1,5 +1,5 @@ -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts index 1e7c66ef3d..ef49816688 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-publish.action.ts @@ -1,5 +1,5 @@ -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts index b7b2821a84..aa630bbc6e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/actions/save-and-schedule.action.ts @@ -1,5 +1,5 @@ -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts index 8d556aaae0..be404bc875 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/manifests.ts @@ -1,8 +1,8 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { DOCUMENT_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action'; import { UmbDocumentSaveAndPreviewWorkspaceAction } from './actions/save-and-preview.action'; import { UmbSaveAndScheduleDocumentWorkspaceAction } from './actions/save-and-schedule.action'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts index 184035db8b..cd094dcd3d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/manifests.ts @@ -1,7 +1,7 @@ -import { UmbDeleteEntityAction, UmbMoveEntityAction, UmbCopyEntityAction } from '@umbraco-cms/entity-action'; import { MEDIA_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbCreateMediaTypeEntityAction } from './create.action'; import UmbReloadMediaTypeEntityAction from './reload.action'; +import { UmbDeleteEntityAction, UmbMoveEntityAction, UmbCopyEntityAction } from '@umbraco-cms/entity-action'; import type { ManifestEntityAction } from '@umbraco-cms/models'; const entityType = 'media-type'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts index cf5df6fcdd..e12ee63785 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/entity-actions/reload.action.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export default class UmbReloadMediaTypeEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts index dd13ad9754..273334c4b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/copy/copy.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbMediaCopyEntityBulkAction extends UmbEntityBulkActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts index 5e7a343e6a..03ae8d0722 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/move/move.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts index c654ac891c..b767646fee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/trash/trash.action.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import type { UmbMediaRepository } from '../../repository/media.repository'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts index 6626a0860b..da187f5066 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/manifests.ts @@ -1,5 +1,5 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts index 9974310ea0..71e673d409 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/entity-actions/manifests.ts @@ -1,5 +1,5 @@ -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { MEMBER_TYPES_REPOSITORY_ALIAS } from '../repository/manifests'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import type { ManifestEntityAction } from '@umbraco-cms/models'; const entityType = 'member-type'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts index 13ed952fea..94bc97a049 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/manifests.ts @@ -1,5 +1,5 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { LANGUAGE_REPOSITORY_ALIAS } from '../../repository/manifests'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts index d8bc8c3ebe..0c27e84f7d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts @@ -3,10 +3,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLanguageWorkspaceContext } from '../../language-workspace.context'; import UmbInputCultureSelectElement from '../../../../../../shared/components/input-culture-select/input-culture-select.element'; import UmbInputLanguagePickerElement from '../../../../../../shared/components/input-language-picker/input-language-picker.element'; +import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import { LanguageModel } from '@umbraco-cms/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts index 3e4d61e854..bdcf53b259 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-culture-select/input-culture-select.element.ts @@ -5,8 +5,8 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-ui/uui'; -import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbCultureRepository } from '../../../settings/cultures/repository/culture.repository'; +import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import { CultureModel } from '@umbraco-cms/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts index b44005a3df..2ef9748513 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-language-picker/input-language-picker.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '../../../../core/modal'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; +import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import type { LanguageModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts index 513d490bd4..b5ee6cf27b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/entity-actions/manifests.ts @@ -1,5 +1,5 @@ -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { UmbCreateEntityAction } from './create/create.action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts index f866f11e39..6330096a9c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/manifests.ts @@ -1,5 +1,5 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { TEMPLATE_REPOSITORY_ALIAS } from '../repository/manifests'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspace: ManifestWorkspace = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts index 1236f78b5b..73440c8f6b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create.action.ts @@ -1,11 +1,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, } from '../../../../../backoffice/shared/components/section/section-sidebar/section-sidebar.context'; import type { UmbCreateDictionaryModalResultData } from './create-dictionary-modal-layout.element'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts index 34591c7c33..6fe67c257c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export.action.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbExportDictionaryModalResultData } from './export-dictionary-modal-layout.element'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts index 9dc20d8f67..da5e2a7dfc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import.action.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import type { UmbImportDictionaryModalResultData } from './import-dictionary-modal-layout.element'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbModalService, UMB_MODAL_SERVICE_CONTEXT_TOKEN } from '@umbraco-cms/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts index fb6e0f716a..176e975a92 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/manifests.ts @@ -1,9 +1,9 @@ -import { UmbDeleteEntityAction, UmbMoveEntityAction } from '@umbraco-cms/entity-action'; import { DICTIONARY_REPOSITORY_ALIAS } from '../repository/manifests'; import UmbReloadDictionaryEntityAction from './reload.action'; import UmbImportDictionaryEntityAction from './import/import.action'; import UmbExportDictionaryEntityAction from './export/export.action'; import UmbCreateDictionaryEntityAction from './create/create.action'; +import { UmbDeleteEntityAction, UmbMoveEntityAction } from '@umbraco-cms/entity-action'; import type { ManifestEntityAction } from '@umbraco-cms/models'; const entityType = 'dictionary-item'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts index 0892bea9a5..dd31434f25 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/reload.action.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbDictionaryRepository } from '../repository/dictionary.repository'; +import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export default class UmbReloadDictionaryEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts index 2dca6646c2..38d81ac4bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/manifests.ts @@ -1,5 +1,5 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { DICTIONARY_REPOSITORY_ALIAS } from '../repository/manifests'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; const workspaceAlias = 'Umb.Workspace.Dictionary'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts index 5f865152ea..43d00f80d4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace.element.ts @@ -3,10 +3,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/users/user.store'; import { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbWorkspaceUserGroupContext } from './user-group-workspace.context'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspaceAction, UserGroupDetails } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api';