From 3af29a3e697afdb488f46a3b796d5f3554d62408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 25 Apr 2024 13:47:15 +0200 Subject: [PATCH] const rework --- .../components/backoffice-main.element.ts | 9 +++++---- .../packages/core/router/path-pattern.class.ts | 7 ++++++- .../src/packages/core/section/index.ts | 1 + .../src/packages/core/section/paths.ts | 3 +++ .../tree-picker/tree-picker-modal.element.ts | 18 ++++++++++-------- .../tree-picker/tree-picker-modal.token.ts | 1 + .../modals/document-type-picker-modal.token.ts | 7 ++++--- .../packages/documents/document-types/paths.ts | 7 ++++--- .../document-type-workspace.context.ts | 8 ++++---- .../src/packages/settings/index.ts | 1 + .../src/packages/settings/paths.ts | 6 ++++++ 11 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/section/paths.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/paths.ts diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts index a04f0fad35..edd3ff21f4 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-main.element.ts @@ -1,7 +1,7 @@ import type { UmbBackofficeContext } from '../backoffice.context.js'; import { UMB_BACKOFFICE_CONTEXT } from '../backoffice.context.js'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; -import { UmbSectionContext, UMB_SECTION_CONTEXT } from '@umbraco-cms/backoffice/section'; +import { UmbSectionContext, UMB_SECTION_CONTEXT, UMB_SECTION_PATH_PATTERN } from '@umbraco-cms/backoffice/section'; import type { UmbRoute, UmbRouterSlotChangeEvent } from '@umbraco-cms/backoffice/router'; import type { ManifestSection, UmbSectionElement } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbExtensionManifestInitializer } from '@umbraco-cms/backoffice/extension-api'; @@ -16,7 +16,6 @@ export class UmbBackofficeMainElement extends UmbLitElement { @state() private _sections: Array> = []; - private _routePrefix = 'section/'; private _backofficeContext?: UmbBackofficeContext; private _sectionContext?: UmbSectionContext; @@ -56,7 +55,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { } else { return { alias: section.alias, - path: this._routePrefix + (section.manifest as ManifestSection).meta.pathname, + path: UMB_SECTION_PATH_PATTERN.generateLocal({ name: section.manifest!.meta.pathname }), component: () => createExtensionElement(section.manifest!, 'umb-section-default'), setup: (component) => { (component as UmbSectionElement).manifest = section.manifest as ManifestSection; @@ -78,7 +77,9 @@ export class UmbBackofficeMainElement extends UmbLitElement { private _onRouteChange = async (event: UmbRouterSlotChangeEvent) => { const currentPath = event.target.localActiveViewPath || ''; - const section = this._sections.find((s) => this._routePrefix + s.manifest?.meta.pathname === currentPath); + const section = this._sections.find( + (s) => UMB_SECTION_PATH_PATTERN.generateLocal({ name: s.manifest!.meta.pathname }) === currentPath, + ); if (!section) return; await section.asPromise(); if (section.manifest) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/router/path-pattern.class.ts b/src/Umbraco.Web.UI.Client/src/packages/core/router/path-pattern.class.ts index 31ed8b8b57..3463046395 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/router/path-pattern.class.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/router/path-pattern.class.ts @@ -25,7 +25,12 @@ export class UmbPathPattern('section/:name'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.element.ts index dc441fe8df..0ba176209b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.element.ts @@ -24,6 +24,9 @@ export class UmbTreePickerModalElement { - return { data: createActionData.modalData }; + return { data: createAction.modalData }; }) .onSubmit((value) => { if (value) { this.value = { selection: [value.unique] }; this._submitModal(); } else { - throw new Error('No value returned from workspace modal'); this._rejectModal(); } }) .observeRouteBuilder((routeBuilder) => { const oldPath = this._createPath; this._createPath = - routeBuilder({}) + - createActionData.extendWithPathPattern.generateLocal(createActionData.extendWithPathParams); + routeBuilder({}) + createAction.extendWithPathPattern.generateLocal(createAction.extendWithPathParams); this.requestUpdate('_createPath', oldPath); }); } @@ -110,7 +112,7 @@ export class UmbTreePickerModalElement ${this._createPath ? html` ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.token.ts index 03f5152144..0f00085f53 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker/tree-picker-modal.token.ts @@ -4,6 +4,7 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; import type { UmbPathPattern, UmbPathPatternParamsType } from '@umbraco-cms/backoffice/router'; export interface UmbTreePickerModalCreateActionData { + label: string; modalData: UmbWorkspaceModalData; modalToken?: UmbModalToken; extendWithPathPattern: UmbPathPattern; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/modals/document-type-picker-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/modals/document-type-picker-modal.token.ts index 2221229a12..b0ca9278c6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/modals/document-type-picker-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/modals/document-type-picker-modal.token.ts @@ -1,4 +1,4 @@ -import { UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH } from '../paths.js'; +import { UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN } from '../paths.js'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; import type { UmbDocumentTypeTreeItemModel } from '@umbraco-cms/backoffice/document-type'; import { @@ -12,7 +12,7 @@ import { */ export type UmbDocumentTypePickerModalData = UmbTreePickerModalData< UmbDocumentTypeTreeItemModel, - typeof UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH.PARAMS + typeof UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN.PARAMS >; export interface UmbDocumentTypePickerModalValue extends UmbTreePickerModalValue {} @@ -28,11 +28,12 @@ export const UMB_DOCUMENT_TYPE_PICKER_MODAL = new UmbModalToken< data: { treeAlias: 'Umb.Tree.DocumentType', createAction: { + label: '#content_createEmpty', modalData: { entityType: 'document-type', preset: {}, }, - extendWithPathPattern: UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH, + extendWithPathPattern: UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN, extendWithPathParams: { entityType: 'document-type', parentUnique: null, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/paths.ts index c351f94b67..f96d75b927 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/paths.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/paths.ts @@ -1,3 +1,4 @@ +import { UMB_SETTINGS_SECTION_PATH } from '@umbraco-cms/backoffice/settings'; import type { UmbDocumentTypeEntityTypeUnion } from './entity.js'; import { UmbPathPattern } from '@umbraco-cms/backoffice/router'; @@ -13,10 +14,10 @@ export type UmbCreateDocumentTypeWorkspacePresetType = | UmbCreateDocumentTypeWorkspacePresetTemplateType | UmbCreateDocumentTypeWorkspacePresetElementType; -export const UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH = new UmbPathPattern<{ +export const UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN = new UmbPathPattern<{ entityType: UmbDocumentTypeEntityTypeUnion; parentUnique?: string | null; presetAlias?: UmbCreateDocumentTypeWorkspacePresetType | null; -}>('create/:entityType/:parentUnique/:presetAlias'); +}>('create/:entityType/:parentUnique/:presetAlias', UMB_SETTINGS_SECTION_PATH); -export const UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH = new UmbPathPattern<{ id: string }>('edit/:id'); +export const UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN = new UmbPathPattern<{ id: string }>('edit/:id'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts index 578df73d21..d927e650a7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/document-type-workspace.context.ts @@ -2,10 +2,10 @@ import { UmbDocumentTypeDetailRepository } from '../repository/detail/document-t import { UMB_DOCUMENT_TYPE_ENTITY_TYPE } from '../entity.js'; import type { UmbDocumentTypeDetailModel } from '../types.js'; import { - UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH, + UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN, UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PRESET_ELEMENT, UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PRESET_TEMPLATE, - UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH, + UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN, type UmbCreateDocumentTypeWorkspacePresetType, } from '../paths.js'; import { UmbDocumentTypeWorkspaceEditorElement } from './document-type-workspace-editor.element.js'; @@ -96,7 +96,7 @@ export class UmbDocumentTypeWorkspaceContext this.routes.setRoutes([ { - path: UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH.toString(), + path: UMB_CREATE_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN.toString(), component: UmbDocumentTypeWorkspaceEditorElement, setup: (_component, info) => { const parentEntityType = info.match.params.entityType; @@ -112,7 +112,7 @@ export class UmbDocumentTypeWorkspaceContext }, }, { - path: UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH.toString(), + path: UMB_EDIT_DOCUMENT_TYPE_WORKSPACE_PATH_PATTERN.toString(), component: UmbDocumentTypeWorkspaceEditorElement, setup: (_component, info) => { this.removeUmbControllerByAlias('isNewRedirectController'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/index.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/index.ts new file mode 100644 index 0000000000..b3031d9a5d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/index.ts @@ -0,0 +1 @@ +export * from './paths.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/paths.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/paths.ts new file mode 100644 index 0000000000..775dfe38cd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/paths.ts @@ -0,0 +1,6 @@ +import { UMB_SECTION_PATH_PATTERN } from '@umbraco-cms/backoffice/section'; + +export const UMB_SETTINGS_SECTION_PATHNAME = 'settings'; +export const UMB_SETTINGS_SECTION_PATH = UMB_SECTION_PATH_PATTERN.generateAbsolute({ + name: UMB_SETTINGS_SECTION_PATHNAME, +});