From 134f53674d36abe705f4d2622852531427158245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 19:52:58 +1300 Subject: [PATCH 001/550] npm generate api for relation type --- .../libs/backend-api/src/index.ts | 3 + .../models/CreateRelationTypeRequestModel.ts | 10 ++ .../src/models/RelationTypeBaseModel.ts | 12 +++ .../src/models/RelationTypeResponseModel.ts | 15 +++ .../src/services/RelationResource.ts | 26 ++++++ .../src/services/RelationTypeResource.ts | 92 +++++++++++++++++++ 6 files changed, 158 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts 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 dd1647bd85..f593e74cfa 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 @@ -136,6 +136,8 @@ export type { RedirectUrlModel } from './models/RedirectUrlModel'; export type { RedirectUrlStatusModel } from './models/RedirectUrlStatusModel'; export type { RelationItemModel } from './models/RelationItemModel'; export type { RelationModel } from './models/RelationModel'; +export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; +export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; export type { SavedLogSearchModel } from './models/SavedLogSearchModel'; export type { SearcherModel } from './models/SearcherModel'; @@ -159,6 +161,7 @@ export type { TemplateQuerySettingsModel } from './models/TemplateQuerySettingsM export type { TemplateScaffoldModel } from './models/TemplateScaffoldModel'; export type { TemplateUpdateModel } from './models/TemplateUpdateModel'; export type { TreeItemModel } from './models/TreeItemModel'; +export type { UpdateRelationTypeRequestModel } from './models/UpdateRelationTypeRequestModel'; export type { UpgradeSettingsModel } from './models/UpgradeSettingsModel'; export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; export type { UserGroupModel } from './models/UserGroupModel'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts new file mode 100644 index 0000000000..4c538765ed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type CreateRelationTypeRequestModel = (RelationTypeBaseModel & { + key?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts new file mode 100644 index 0000000000..0213197525 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type RelationTypeBaseModel = { + name?: string; + isBidirectional?: boolean; + parentObjectType?: string | null; + childObjectType?: string | null; + isDependency?: boolean; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts new file mode 100644 index 0000000000..0866014d89 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type RelationTypeResponseModel = (RelationTypeBaseModel & { + key?: string; + alias?: string | null; + path?: string; + isSystemRelationType?: boolean; + parentObjectTypeName?: string | null; + childObjectTypeName?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts index df5460a1e4..594e05cf7a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts @@ -60,4 +60,30 @@ export class RelationResource { }); } + /** + * @returns PagedRelationModel Success + * @throws ApiError + */ + public static getRelationTypeByKey({ + key, + skip, + take = 100, + }: { + key: string, + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation/type/{key}', + path: { + 'key': key, + }, + query: { + 'skip': skip, + 'take': take, + }, + }); + } + } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index 9d36d51255..f449ec9485 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -1,9 +1,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import type { CreateRelationTypeRequestModel } from '../models/CreateRelationTypeRequestModel'; import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; +import type { UpdateRelationTypeRequestModel } from '../models/UpdateRelationTypeRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,6 +14,95 @@ import { request as __request } from '../core/request'; export class RelationTypeResource { + /** + * @returns string Created + * @throws ApiError + */ + public static postRelationType({ + requestBody, + }: { + requestBody?: CreateRelationTypeRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/relation-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getRelationTypeByKey({ + key, + }: { + key: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteRelationTypeByKey({ + key, + }: { + key: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putRelationTypeByKey({ + key, + requestBody, + }: { + key: string, + requestBody?: UpdateRelationTypeRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + /** * @returns any Success * @throws ApiError From 8b88890a7e90ea05bcca622d6a9c3a3bab59dfd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 19:55:08 +1300 Subject: [PATCH 002/550] added missing model --- src/Umbraco.Web.UI.Client/libs/backend-api/src/index.ts | 1 + .../src/models/UpdateRelationTypeRequestModel.ts | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts 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 f593e74cfa..9bdac9c669 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 @@ -21,6 +21,7 @@ export type { ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypeProper export type { ContentUrlInfoModel } from './models/ContentUrlInfoModel'; export type { ContentViewModelBaseDocumentValueDocumentVariantModel } from './models/ContentViewModelBaseDocumentValueDocumentVariantModel'; export type { CultureModel } from './models/CultureModel'; +export type { CreateRelationTypeRequestModel } from './models/CreateRelationTypeRequestModel'; export type { DatabaseInstallModel } from './models/DatabaseInstallModel'; export type { DatabaseSettingsModel } from './models/DatabaseSettingsModel'; export type { DataTypeCopyModel } from './models/DataTypeCopyModel'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts new file mode 100644 index 0000000000..d4ec475f57 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type UpdateRelationTypeRequestModel = RelationTypeBaseModel; + From e366a46fc2f69f506aefbf4be9d4bf894f533e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:19:45 +1300 Subject: [PATCH 003/550] init files --- .../settings/relation-types/manifests.ts | 6 + .../relation-types/menu-item/manifests.ts | 17 ++ .../relation-types-menu-item.element.ts | 40 ++++ .../relation-types/repository/manifests.ts | 13 + .../repository/relation-type.repository.ts | 222 ++++++++++++++++++ .../repository/relation-type.store.ts | 53 +++++ .../repository/relation-type.tree.store.ts | 25 ++ .../sources/relation-type.server.data.ts | 157 +++++++++++++ .../sources/relation-type.tree.server.data.ts | 105 +++++++++ .../settings/relation-types/tree/manifests.ts | 13 + .../relation-types/workspace/manifests.ts | 58 +++++ .../relation-type-workspace.context.ts | 89 +++++++ .../relation-type-workspace.element.ts | 80 +++++++ .../relation-type-workspace.stories.ts | 18 ++ ...lation-type-workspace-view-edit.element.ts | 177 ++++++++++++++ ...lation-type-workspace-view-edit.stories.ts | 27 +++ ...rkspace-view-relation-type-info.element.ts | 69 ++++++ ...rkspace-view-relation-type-info.stories.ts | 27 +++ 18 files changed, 1196 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/manifests.ts new file mode 100644 index 0000000000..ddaa4babdc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/manifests.ts @@ -0,0 +1,6 @@ +import { manifests as repositoryManifests } from './repository/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; +import { manifests as treeManifests } from './tree/manifests'; +import { manifests as workspaceManifests } from './workspace/manifests'; + +export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts new file mode 100644 index 0000000000..ddc33ff64a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts @@ -0,0 +1,17 @@ +import type { ManifestMenuItem } from '@umbraco-cms/models'; + +const menuItem: ManifestMenuItem = { + type: 'menuItem', + alias: 'Umb.MenuItem.RelationTypes', + name: 'Data Types Menu Item', + weight: 40, + loader: () => import('./relation-types-menu-item.element'), + meta: { + label: 'Data Types', + icon: 'umb:folder', + entityType: 'relation-type', + menus: ['Umb.Menu.Settings'], + }, +}; + +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts new file mode 100644 index 0000000000..a3da83e00a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts @@ -0,0 +1,40 @@ +import { html, nothing } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-relation-types-menu-item') +export class UmbRelationTypesMenuItemElement extends UmbLitElement { + @state() + private _renderTree = false; + + private _onShowChildren() { + this._renderTree = true; + } + + private _onHideChildren() { + this._renderTree = false; + } + + // TODO: check if root has children before settings the has-children attribute + // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? + // TODO: can we make this reusable? + render() { + return html` + ${this._renderTree ? html`` : nothing} + `; + } +} + +export default UmbRelationTypesMenuItemElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-relation-types-menu-item': UmbRelationTypesMenuItemElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts new file mode 100644 index 0000000000..abda9ad7a2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts @@ -0,0 +1,13 @@ +import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import { ManifestRepository } from 'libs/extensions-registry/repository.models'; + +export const RELATION_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.RelationTypes'; + +const repository: ManifestRepository = { + type: 'repository', + alias: RELATION_TYPE_REPOSITORY_ALIAS, + name: 'Data Types Repository', + class: UmbRelationTypeRepository, +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts new file mode 100644 index 0000000000..215c40372c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -0,0 +1,222 @@ +import type { RepositoryTreeDataSource } from '../../../../../libs/repository/repository-tree-data-source.interface'; +import { UmbRelationTypeTreeStore, UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN } from './relation-type.tree.store'; +import { UmbRelationTypeServerDataSource } from './sources/relation-type.server.data'; +import { UmbRelationTypeStore, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN } from './relation-type.store'; +import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import { ProblemDetailsModel, RelationTypeModel } from '@umbraco-cms/backend-api'; +import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; +import { UmbDetailRepository } from '@umbraco-cms/repository'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; + +type ItemType = RelationTypeModel; + +// Move to documentation / JSdoc +/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ +// element -> context -> repository -> (store) -> data source +// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. +export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRepository { + #init!: Promise; + + #host: UmbControllerHostInterface; + + #treeSource: RepositoryTreeDataSource; + #treeStore?: UmbRelationTypeTreeStore; + + #detailDataSource: UmbRelationTypeServerDataSource; + #detailStore?: UmbRelationTypeStore; + + #notificationContext?: UmbNotificationContext; + + constructor(host: UmbControllerHostInterface) { + this.#host = host; + + // TODO: figure out how spin up get the correct data source + this.#treeSource = new RelationTypeTreeServerDataSource(this.#host); + this.#detailDataSource = new UmbRelationTypeServerDataSource(this.#host); + + this.#init = Promise.all([ + new UmbContextConsumerController(this.#host, UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN, (instance) => { + this.#treeStore = instance; + }), + + new UmbContextConsumerController(this.#host, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN, (instance) => { + this.#detailStore = instance; + }), + + new UmbContextConsumerController(this.#host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this.#notificationContext = instance; + }), + ]); + } + + // TODO: Trash + // TODO: Move + + async requestRootTreeItems() { + await this.#init; + + const { data, error } = await this.#treeSource.getRootItems(); + + if (data) { + this.#treeStore?.appendItems(data.items); + } + + return { data, error, asObservable: () => this.#treeStore!.rootItems }; + } + + async requestTreeItemsOf(parentKey: string | null) { + await this.#init; + + if (!parentKey) { + const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + return { data: undefined, error }; + } + + const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + + if (data) { + this.#treeStore?.appendItems(data.items); + } + + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + } + + async requestTreeItems(keys: Array) { + await this.#init; + + if (!keys) { + const error: ProblemDetailsModel = { title: 'Keys are missing' }; + return { data: undefined, error }; + } + + const { data, error } = await this.#treeSource.getItems(keys); + + return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + } + + async rootTreeItems() { + await this.#init; + return this.#treeStore!.rootItems; + } + + async treeItemsOf(parentKey: string | null) { + await this.#init; + return this.#treeStore!.childrenOf(parentKey); + } + + async treeItems(keys: Array) { + await this.#init; + return this.#treeStore!.items(keys); + } + + // DETAILS: + + async createScaffold(parentKey: string | null) { + await this.#init; + + if (!parentKey) { + throw new Error('Parent key is missing'); + } + + return this.#detailDataSource.createScaffold(parentKey); + } + + async requestByKey(key: string) { + await this.#init; + + // TODO: should we show a notification if the key is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!key) { + const error: ProblemDetailsModel = { title: 'Key is missing' }; + return { error }; + } + const { data, error } = await this.#detailDataSource.get(key); + + if (data) { + this.#detailStore?.append(data); + } + + return { data, error }; + } + + async byKey(key: string) { + await this.#init; + return this.#detailStore!.byKey(key); + } + + // Could potentially be general methods: + + async create(template: ItemType) { + await this.#init; + + if (!template || !template.key) { + throw new Error('Template is missing'); + } + + const { error } = await this.#detailDataSource.insert(template); + + if (!error) { + const notification = { data: { message: `Document created` } }; + this.#notificationContext?.peek('positive', notification); + } + + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + this.#detailStore?.append(template); + // TODO: Update tree store with the new item? or ask tree to request the new item? + + return { error }; + } + + async save(item: ItemType) { + await this.#init; + + if (!item || !item.key) { + throw new Error('Document-Type is missing'); + } + + const { error } = await this.#detailDataSource.update(item); + + if (!error) { + const notification = { data: { message: `Document saved` } }; + this.#notificationContext?.peek('positive', notification); + } + + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + this.#detailStore?.append(item); + this.#treeStore?.updateItem(item.key, { name: item.name }); + // TODO: would be nice to align the stores on methods/methodNames. + + return { error }; + } + + // General: + + async delete(key: string) { + await this.#init; + + if (!key) { + throw new Error('Document key is missing'); + } + + const { error } = await this.#detailDataSource.delete(key); + + if (!error) { + const notification = { data: { message: `Document deleted` } }; + this.#notificationContext?.peek('positive', notification); + } + + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a template is deleted from the store while someone is editing it. + this.#detailStore?.remove([key]); + this.#treeStore?.removeItem(key); + // TODO: would be nice to align the stores on methods/methodNames. + + return { error }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts new file mode 100644 index 0000000000..6604368ab3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts @@ -0,0 +1,53 @@ +import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import { UmbContextToken } from '@umbraco-cms/context-api'; +import { ArrayState } from '@umbraco-cms/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +export const UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbRelationTypeStore'); + +/** + * @export + * @class UmbRelationTypeStore + * @extends {UmbStoreBase} + * @description - Data Store for Template Details + */ +export class UmbRelationTypeStore extends UmbStoreBase { + #data = new ArrayState([], (x) => x.key); + + /** + * Creates an instance of UmbRelationTypeStore. + * @param {UmbControllerHostInterface} host + * @memberof UmbRelationTypeStore + */ + constructor(host: UmbControllerHostInterface) { + super(host, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN.toString()); + } + + /** + * Append a relation-type to the store + * @param {RelationTypeModel} RelationType + * @memberof UmbRelationTypeStore + */ + append(RelationType: RelationTypeModel) { + this.#data.append([RelationType]); + } + + /** + * Append a relation-type to the store + * @param {key} RelationTypeModel key. + * @memberof UmbRelationTypeStore + */ + byKey(key: RelationTypeModel['key']) { + return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + } + + /** + * Removes relation-types in the store with the given uniques + * @param {string[]} uniques + * @memberof UmbRelationTypeStore + */ + remove(uniques: Array) { + this.#data.remove(uniques); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts new file mode 100644 index 0000000000..b23208ba80 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts @@ -0,0 +1,25 @@ +import { UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbTreeStoreBase } from '@umbraco-cms/store'; + +/** + * @export + * @class UmbRelationTypeTreeStore + * @extends {UmbStoreBase} + * @description - Tree Data Store for relation-types + */ +// TODO: consider if tree store could be turned into a general EntityTreeStore class? +export class UmbRelationTypeTreeStore extends UmbTreeStoreBase { + /** + * Creates an instance of UmbRelationTypeTreeStore. + * @param {UmbControllerHostInterface} host + * @memberof UmbRelationTypeTreeStore + */ + constructor(host: UmbControllerHostInterface) { + super(host, UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN.toString()); + } +} + +export const UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( + 'UmbRelationTypeTreeStore' +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts new file mode 100644 index 0000000000..5eeea1957c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -0,0 +1,157 @@ +import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { + ProblemDetailsModel, + RelationTypeResource, + RelationTypeModel, + RelationTypeCreateModel, + RelationTypeUpdateModel, +} from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/resources'; + +/** + * A data source for the Data Type that fetches data from the server + * @export + * @class UmbRelationTypeServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSource { + #host: UmbControllerHostInterface; + + /** + * Creates an instance of UmbRelationTypeServerDataSource. + * @param {UmbControllerHostInterface} host + * @memberof UmbRelationTypeServerDataSource + */ + constructor(host: UmbControllerHostInterface) { + this.#host = host; + } + + /** + * Fetches a Data Type with the given key from the server + * @param {string} key + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async get(key: string) { + if (!key) { + const error: ProblemDetailsModel = { title: 'Key is missing' }; + return { error }; + } + + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.getRelationTypeByKey({ + key, + }) + ); + } + + /** + * Creates a new Data Type scaffold + * @param {(string | null)} parentKey + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async createScaffold(parentKey: string | null) { + const data: RelationTypeModel = { + $type: '', + parentKey: parentKey, + }; + + return { data }; + } + + /** + * Inserts a new Data Type on the server + * @param {Document} RelationType + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async insert(RelationType: RelationTypeModel) { + if (!RelationType.key) { + const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; + return { error }; + } + const requestBody: RelationTypeCreateModel = { ...RelationType }; + + // TODO: use resources when end point is ready: + return tryExecuteAndNotify( + this.#host, + // TODO: avoid this any?.. + tryExecuteAndNotify( + this.#host, + RelationTypeResource.postRelationType({ + requestBody, + }) + ) as any + ); + } + + /** + * Updates a RelationType on the server + * @param {RelationTypeModel} RelationType + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + // TODO: Error mistake in this: + async update(RelationType: RelationTypeModel) { + if (!RelationType.key) { + const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; + return { error }; + } + + const requestBody: RelationTypeUpdateModel = { ...RelationType }; + + // TODO: use resources when end point is ready: + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.putRelationTypeByKey({ + key: RelationType.key, + requestBody, + }) + ); + } + + /** + * Trash a Document on the server + * @param {Document} Document + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async trash(key: string) { + if (!key) { + const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; + return { error }; + } + + // TODO: use resources when end point is ready: + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.deleteRelationTypeByKey({ + key, + }) + ); + } + + /** + * Deletes a Data Type on the server + * @param {string} key + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async delete(key: string) { + if (!key) { + const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; + return { error }; + } + + // TODO: use resources when end point is ready: + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.deleteRelationTypeByKey({ + key, + }) + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts new file mode 100644 index 0000000000..b0fd7ee37d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -0,0 +1,105 @@ +import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; +import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/resources'; + +/** + * A data source for the Document tree that fetches data from the server + * @export + * @class DocumentTreeServerDataSource + * @implements {DocumentTreeDataSource} + */ +export class RelationTypeTreeServerDataSource implements RepositoryTreeDataSource { + #host: UmbControllerHostInterface; + + // TODO: how do we handle trashed items? + async trashItems(keys: Array) { + if (!keys) { + const error: ProblemDetailsModel = { title: 'RelationType keys is missing' }; + return { error }; + } + + // TODO: use resources when end point is ready: + /* + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.deleteRelationTypeByKey({ + key: keys, + }) + ); + */ + return Promise.resolve({ error: null, data: null }); + } + + async moveItems(keys: Array, destination: string) { + // TODO: use backend cli when available. + return tryExecuteAndNotify( + this.#host, + fetch('/umbraco/management/api/v1/relation-type/move', { + method: 'POST', + body: JSON.stringify({ keys, destination }), + headers: { + 'Content-Type': 'application/json', + }, + }) + ); + } + + /** + * Creates an instance of DocumentTreeServerDataSource. + * @param {UmbControllerHostInterface} host + * @memberof DocumentTreeServerDataSource + */ + constructor(host: UmbControllerHostInterface) { + this.#host = host; + } + + /** + * Fetches the root items for the tree from the server + * @return {*} + * @memberof DocumentTreeServerDataSource + */ + async getRootItems() { + return tryExecuteAndNotify(this.#host, RelationTypeResource.getTreeRelationTypeRoot({})); + } + + /** + * Fetches the children of a given parent key from the server + * @param {(string | null)} parentKey + * @return {*} + * @memberof DocumentTreeServerDataSource + */ + async getChildrenOf(parentKey: string | null) { + if (!parentKey) { + const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + return { error }; + } + + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.getTreeRelationTypeChildren({ + parentKey, + }) + ); + } + + /** + * Fetches the items for the given keys from the server + * @param {Array} keys + * @return {*} + * @memberof DocumentTreeServerDataSource + */ + async getItems(keys: Array) { + if (keys) { + const error: ProblemDetailsModel = { title: 'Keys are missing' }; + return { error }; + } + + return tryExecuteAndNotify( + this.#host, + RelationTypeResource.getTreeRelationTypeItem({ + key: keys, + }) + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts new file mode 100644 index 0000000000..ea51eb8b3a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts @@ -0,0 +1,13 @@ +import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import type { ManifestTree } from '@umbraco-cms/models'; + +const tree: ManifestTree = { + type: 'tree', + alias: 'Umb.Tree.RelationTypes', + name: 'Data Types Tree', + meta: { + repository: UmbRelationTypeRepository, + }, +}; + +export const manifests = [tree]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts new file mode 100644 index 0000000000..c175faaa32 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts @@ -0,0 +1,58 @@ +import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; +import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; + +const workspace: ManifestWorkspace = { + type: 'workspace', + alias: 'Umb.Workspace.RelationType', + name: 'Data Type Workspace', + loader: () => import('./relation-type-workspace.element'), + meta: { + entityType: 'relation-type', + }, +}; + +const workspaceViews: Array = [ + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.RelationType.Edit', + name: 'Data Type Workspace Edit View', + loader: () => import('./views/edit/relation-type-workspace-view-edit.element'), + weight: 90, + meta: { + workspaces: ['Umb.Workspace.RelationType'], + label: 'Edit', + pathname: 'edit', + icon: 'edit', + }, + }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.RelationType.Info', + name: 'Data Type Workspace Info View', + loader: () => import('./views/info/workspace-view-relation-type-info.element'), + weight: 90, + meta: { + workspaces: ['Umb.Workspace.RelationType'], + label: 'Info', + pathname: 'info', + icon: 'info', + }, + }, +]; + +const workspaceActions: Array = [ + { + type: 'workspaceAction', + alias: 'Umb.WorkspaceAction.RelationType.Save', + name: 'Save Data Type Workspace Action', + meta: { + workspaces: ['Umb.Workspace.RelationType'], + label: 'Save', + look: 'primary', + color: 'positive', + api: UmbSaveWorkspaceAction, + }, + }, +]; + +export const manifests = [workspace, ...workspaceViews, ...workspaceActions]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts new file mode 100644 index 0000000000..a0d31f60dd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -0,0 +1,89 @@ +import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; +import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +export class UmbRelationTypeWorkspaceContext + extends UmbWorkspaceContext + implements UmbWorkspaceEntityContextInterface +{ + #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, new UmbRelationTypeRepository(host)); + } + + async load(key: string) { + const { data } = await this.repository.requestByKey(key); + if (data) { + this.setIsNew(false); + this.#data.update(data); + } + } + + async createScaffold(parentKey: string | null) { + const { data } = await this.repository.createScaffold(parentKey); + if (!data) return; + this.setIsNew(true); + this.#data.next(data); + } + + getData() { + return this.#data.getValue(); + } + + getEntityKey() { + return this.getData()?.key || ''; + } + + getEntityType() { + return 'relation-type'; + } + + setName(name: string) { + this.#data.update({ name }); + } + + setPropertyEditorAlias(alias?: string) { + this.#data.update({ propertyEditorAlias: alias }); + } + setPropertyEditorUiAlias(alias?: string) { + this.#data.update({ propertyEditorUiAlias: alias }); + } + + // TODO: its not called a property in the model, but we do consider this way in our front-end + setPropertyValue(alias: string, value: unknown) { + const entry = { alias: alias, value: value }; + + const currentData = this.#data.value; + if (currentData) { + // TODO: make a partial update method for array of data, (idea/concept, use if this case is getting common) + const newDataSet = appendToFrozenArray(currentData.data || [], entry, (x) => x.alias); + this.#data.update({ data: newDataSet }); + } + } + + async save() { + if (!this.#data.value) return; + if (this.isNew) { + await this.repository.create(this.#data.value); + } else { + 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.repository.delete(key); + } + + public destroy(): void { + this.#data.complete(); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts new file mode 100644 index 0000000000..d5d89e20dd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -0,0 +1,80 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +/** + * @element umb-relation-type-workspace + * @description - Element for displaying a Data Type Workspace + */ +@customElement('umb-relation-type-workspace') +export class UmbRelationTypeWorkspaceElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + /* TODO: can this be applied from layout slot CSS? */ + margin: 0 var(--uui-size-layout-1); + flex: 1 1 auto; + } + `, + ]; + + #workspaceContext = new UmbRelationTypeWorkspaceContext(this); + + @state() + private _RelationTypeName = ''; + + public load(value: string) { + this.#workspaceContext?.load(value); + //this._unique = entityKey; + } + + public create(parentKey: string | null) { + this.#workspaceContext.createScaffold(parentKey); + } + + constructor() { + super(); + this.observe(this.#workspaceContext.name, (RelationTypeName) => { + if (RelationTypeName !== this._RelationTypeName) { + this._RelationTypeName = RelationTypeName ?? ''; + } + }); + } + + // TODO. find a way where we don't have to do this for all Workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbRelationTypeWorkspaceElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-relation-type-workspace': UmbRelationTypeWorkspaceElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts new file mode 100644 index 0000000000..899ea0d4f9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -0,0 +1,18 @@ +import './relation-type-workspace.element'; + +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit-html'; + +import { data } from '../../../../core/mocks/data/relation-type.data'; + +import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element'; + +export default { + title: 'Workspaces/Data Type', + component: 'umb-relation-type-workspace', + id: 'umb-relation-type-workspace', +} as Meta; + +export const AAAOverview: Story = () => + html` `; +AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts new file mode 100644 index 0000000000..a3cd6fd280 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts @@ -0,0 +1,177 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, nothing } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '../../../../../../core/modal'; +import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; + +import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; +import '../../../../../shared/components/ref-property-editor-ui/ref-property-editor-ui.element'; + +@customElement('umb-relation-type-workspace-view-edit') +export class UmbRelationTypeWorkspaceViewEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-layout-1); + } + `, + ]; + + @state() + _RelationType?: RelationTypeModel; + + @state() + private _propertyEditorUIIcon = ''; + + @state() + private _propertyEditorUIName = ''; + + @state() + private _propertyEditorUiAlias = ''; + + @state() + private _propertyEditorAlias = ''; + + @state() + private _data: Array = []; + + private _workspaceContext?: UmbRelationTypeWorkspaceContext; + private _modalContext?: UmbModalContext; + + constructor() { + super(); + + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + + // TODO: Figure out if this is the best way to consume a context or if it could be strongly typed using UmbContextToken + this.consumeContext('umbWorkspaceContext', (_instance) => { + this._workspaceContext = _instance; + this._observeRelationType(); + }); + } + + private _observeRelationType() { + if (!this._workspaceContext) { + return; + } + + this.observe(this._workspaceContext.data, (RelationType) => { + if (!RelationType) return; + + // TODO: handle if model is not of the type wanted. + this._RelationType = RelationType; + + if (this._RelationType.propertyEditorUiAlias !== this._propertyEditorUiAlias) { + this._observePropertyEditorUI(this._RelationType.propertyEditorUiAlias || undefined); + } + + if (this._RelationType.data && this._RelationType.data !== this._data) { + this._data = this._RelationType.data; + } + }); + } + + private _observePropertyEditorUI(propertyEditorUiAlias?: string) { + if (!propertyEditorUiAlias) return; + + this.observe( + umbExtensionsRegistry.getByTypeAndAlias('propertyEditorUI', propertyEditorUiAlias), + (propertyEditorUI) => { + // TODO: show error. We have stored a PropertyEditorUIAlias and can't find the PropertyEditorUI in the registry. + if (!propertyEditorUI) return; + + this._propertyEditorUIName = propertyEditorUI?.meta.label ?? propertyEditorUI?.name ?? ''; + this._propertyEditorUiAlias = propertyEditorUI?.alias ?? ''; + this._propertyEditorUIIcon = propertyEditorUI?.meta.icon ?? ''; + this._propertyEditorAlias = propertyEditorUI?.meta.propertyEditorModel ?? ''; + + this._workspaceContext?.setPropertyEditorAlias(this._propertyEditorAlias); + } + ); + } + + private _openPropertyEditorUIPicker() { + if (!this._RelationType) return; + + const modalHandler = this._modalContext?.propertyEditorUIPicker({ + selection: this._propertyEditorUiAlias ? [this._propertyEditorUiAlias] : [], + }); + + modalHandler?.onClose().then(({ selection } = {}) => { + if (!selection) return; + this._selectPropertyEditorUI(selection[0]); + }); + } + + private _selectPropertyEditorUI(propertyEditorUiAlias: string | undefined) { + if (!this._RelationType || this._RelationType.propertyEditorUiAlias === propertyEditorUiAlias) return; + this._workspaceContext?.setPropertyEditorUiAlias(propertyEditorUiAlias); + this._observePropertyEditorUI(propertyEditorUiAlias); + } + + render() { + return html` + ${this._renderPropertyEditorUI()} + ${this._renderConfig()} + `; + } + + private _renderPropertyEditorUI() { + return html` + + ${this._propertyEditorUiAlias + ? html` + + + + + + + + ` + : html` + + `} + + `; + } + + private _renderConfig() { + return html` + ${this._propertyEditorAlias && this._propertyEditorUiAlias + ? html` + + + + ` + : nothing} + `; + } +} + +export default UmbRelationTypeWorkspaceViewEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-relation-type-workspace-view-edit': UmbRelationTypeWorkspaceViewEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts new file mode 100644 index 0000000000..9738b11cf8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts @@ -0,0 +1,27 @@ +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit-html'; + +//import { data } from '../../../../../core/mocks/data/relation-type.data'; + +import type { UmbRelationTypeWorkspaceViewEditElement } from './relation-type-workspace-view-edit.element'; + +import './relation-type-workspace-view-edit.element'; +//import { UmbRelationTypeWorkspaceContext } from '../../workspace-relation-type.context'; + +export default { + title: 'Workspaces/Data Type/Views/Edit', + component: 'umb-relation-type-workspace-view-edit', + id: 'umb-relation-type-workspace-view-edit', + decorators: [ + (story) => { + return html`TODO: make use of mocked workspace context??`; + /*html` + ${story()} + `,*/ + }, + ], +} as Meta; + +export const AAAOverview: Story = () => + html` `; +AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts new file mode 100644 index 0000000000..633809eee5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts @@ -0,0 +1,69 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; + +import { UmbLitElement } from '@umbraco-cms/element'; +import { RelationTypeModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-workspace-view-relation-type-info') +export class UmbWorkspaceViewRelationTypeInfoElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @state() + _RelationType?: RelationTypeModel; + + private _workspaceContext?: UmbRelationTypeWorkspaceContext; + + constructor() { + super(); + + // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken + this.consumeContext('umbWorkspaceContext', (RelationTypeContext) => { + this._workspaceContext = RelationTypeContext; + this._observeRelationType(); + }); + } + + private _observeRelationType() { + if (!this._workspaceContext) return; + + this.observe(this._workspaceContext.data, (RelationType) => { + if (!RelationType) return; + this._RelationType = RelationType; + }); + } + + render() { + return html` ${this._renderGeneralInfo()}${this._renderReferences()} `; + } + + private _renderGeneralInfo() { + return html` + + +
${this._RelationType?.key}
+
+ +
${this._RelationType?.propertyEditorAlias}
+
+ + +
${this._RelationType?.propertyEditorUiAlias}
+
+
+ `; + } + + private _renderReferences() { + return html` `; + } +} + +export default UmbWorkspaceViewRelationTypeInfoElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace-view-relation-type-info': UmbWorkspaceViewRelationTypeInfoElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts new file mode 100644 index 0000000000..beeb74250f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts @@ -0,0 +1,27 @@ +import './workspace-view-relation-type-info.element'; + +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit-html'; + +//import { data } from '../../../../../core/mocks/data/relation-type.data'; +//import { UmbRelationTypeContext } from '../../relation-type.context'; + +import type { UmbWorkspaceViewRelationTypeInfoElement } from './workspace-view-relation-type-info.element'; + +export default { + title: 'Workspaces/Data Type/Views/Info', + component: 'umb-workspace-view-relation-type-info', + id: 'umb-workspace-view-relation-type-info', + decorators: [ + (story) => { + return html`TODO: make use of mocked workspace context??`; + /*html` + ${story()} + `,*/ + }, + ], +} as Meta; + +export const AAAOverview: Story = () => + html` `; +AAAOverview.storyName = 'Overview'; From 4e7aa6114285604d1e74d81379a04d3e2c605506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:25:18 +1300 Subject: [PATCH 004/550] using correct model --- .../repository/relation-type.repository.ts | 4 +-- .../repository/relation-type.store.ts | 14 ++++---- .../sources/relation-type.server.data.ts | 20 +++++------ .../relation-type-workspace.context.ts | 6 ++-- ...lation-type-workspace-view-edit.element.ts | 4 +-- ...rkspace-view-relation-type-info.element.ts | 4 +-- .../src/core/mocks/data/relation-type.data.ts | 33 +++++++++++++++++++ 7 files changed, 59 insertions(+), 26 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 215c40372c..7c9f951655 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -5,12 +5,12 @@ import { UmbRelationTypeStore, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN } from './r import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, RelationTypeModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = RelationTypeModel; +type ItemType = RelationTypeResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts index 6604368ab3..3faf944e08 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts @@ -1,4 +1,4 @@ -import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -13,7 +13,7 @@ export const UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbRelationTypeStore. @@ -26,19 +26,19 @@ export class UmbRelationTypeStore extends UmbStoreBase { /** * Append a relation-type to the store - * @param {RelationTypeModel} RelationType + * @param {RelationTypeResponseModel} RelationType * @memberof UmbRelationTypeStore */ - append(RelationType: RelationTypeModel) { + append(RelationType: RelationTypeResponseModel) { this.#data.append([RelationType]); } /** * Append a relation-type to the store - * @param {key} RelationTypeModel key. + * @param {key} RelationTypeResponseModel key. * @memberof UmbRelationTypeStore */ - byKey(key: RelationTypeModel['key']) { + byKey(key: RelationTypeResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -47,7 +47,7 @@ export class UmbRelationTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbRelationTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 5eeea1957c..4383b41676 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -2,7 +2,7 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; import { ProblemDetailsModel, RelationTypeResource, - RelationTypeModel, + RelationTypeResponseModel, RelationTypeCreateModel, RelationTypeUpdateModel, } from '@umbraco-cms/backend-api'; @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbRelationTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -54,7 +54,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbRelationTypeServerDataSource */ async createScaffold(parentKey: string | null) { - const data: RelationTypeModel = { + const data: RelationTypeResponseModel = { $type: '', parentKey: parentKey, }; @@ -68,7 +68,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async insert(RelationType: RelationTypeModel) { + async insert(RelationType: RelationTypeResponseModel) { if (!RelationType.key) { const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; return { error }; @@ -76,7 +76,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour const requestBody: RelationTypeCreateModel = { ...RelationType }; // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, // TODO: avoid this any?.. tryExecuteAndNotify( @@ -90,12 +90,12 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour /** * Updates a RelationType on the server - * @param {RelationTypeModel} RelationType + * @param {RelationTypeResponseModel} RelationType * @return {*} * @memberof UmbRelationTypeServerDataSource */ // TODO: Error mistake in this: - async update(RelationType: RelationTypeModel) { + async update(RelationType: RelationTypeResponseModel) { if (!RelationType.key) { const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; return { error }; @@ -104,7 +104,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour const requestBody: RelationTypeUpdateModel = { ...RelationType }; // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, RelationTypeResource.putRelationTypeByKey({ key: RelationType.key, @@ -126,7 +126,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, RelationTypeResource.deleteRelationTypeByKey({ key, @@ -147,7 +147,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, RelationTypeResource.deleteRelationTypeByKey({ key, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index a0d31f60dd..3beb6d781c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -1,15 +1,15 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; -import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRelationTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbWorkspaceEntityContextInterface { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); key = this.#data.getObservablePart((data) => data?.key); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts index a3cd6fd280..57ce265f66 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '../../../../../../core/modal'; import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { RelationTypeModel } from '@umbraco-cms/backend-api'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; @@ -23,7 +23,7 @@ export class UmbRelationTypeWorkspaceViewEditElement extends UmbLitElement { ]; @state() - _RelationType?: RelationTypeModel; + _RelationType?: RelationTypeResponseModel; @state() private _propertyEditorUIIcon = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts index 633809eee5..c2c93bbc9c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.element.ts @@ -4,14 +4,14 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { RelationTypeModel } from '@umbraco-cms/backend-api'; +import { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-relation-type-info') export class UmbWorkspaceViewRelationTypeInfoElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @state() - _RelationType?: RelationTypeModel; + _RelationType?: RelationTypeResponseModel; private _workspaceContext?: UmbRelationTypeWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts new file mode 100644 index 0000000000..550d074d03 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -0,0 +1,33 @@ +import { UmbEntityData } from './entity.data'; +import { createFolderTreeItem } from './utils'; +import type { FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; + +// TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel +export const data: Array = []; + +// Temp mocked database +// TODO: all properties are optional in the server schema. I don't think this is correct. +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +class UmbRelationTypeData extends UmbEntityData { + constructor() { + super(data); + } + + getTreeRoot(): Array { + const rootItems = this.data; + return rootItems.map((item) => createFolderTreeItem(item)); + } + + getTreeItemChildren(key: string): Array { + const childItems = this.data; + return childItems.map((item) => createFolderTreeItem(item)); + } + + getTreeItem(keys: Array): Array { + const items = this.data.filter((item) => keys.includes(item.key ?? '')); + return items.map((item) => createFolderTreeItem(item)); + } +} + +export const umbRelationTypeData = new UmbRelationTypeData(); From c7955e9e75caf1f08c64f0a416dd8851e255cd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:32:17 +1300 Subject: [PATCH 005/550] added to manifest --- .../src/backoffice/backoffice.element.ts | 4 ++++ .../src/backoffice/settings/index.ts | 2 ++ .../settings/relation-types/menu-item/manifests.ts | 4 ++-- .../menu-item/relation-types-menu-item.element.ts | 2 +- .../settings/relation-types/repository/manifests.ts | 2 +- .../repository/sources/relation-type.server.data.ts | 10 +++++----- .../settings/relation-types/tree/manifests.ts | 2 +- .../settings/relation-types/workspace/manifests.ts | 8 ++++---- .../workspace/relation-type-workspace.element.ts | 2 +- .../workspace/relation-type-workspace.stories.ts | 2 +- .../edit/relation-type-workspace-view-edit.stories.ts | 2 +- .../info/workspace-view-relation-type-info.stories.ts | 2 +- 12 files changed, 24 insertions(+), 18 deletions(-) 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 cee5fd1db9..938bf5c595 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -35,6 +35,8 @@ import { UmbDocumentBlueprintDetailStore } from './documents/document-blueprints import { UmbDocumentBlueprintTreeStore } from './documents/document-blueprints/document-blueprint.tree.store'; import { UmbDataTypeStore } from './settings/data-types/repository/data-type.store'; import { UmbDataTypeTreeStore } from './settings/data-types/repository/data-type.tree.store'; +import { UmbRelationTypeStore } from './settings/relation-types/repository/relation-type.store'; +import { UmbRelationTypeTreeStore } from './settings/relation-types/repository/relation-type.tree.store'; import { UmbTemplateTreeStore } from './templating/templates/tree/data/template.tree.store'; import { UmbTemplateDetailStore } from './templating/templates/workspace/data/template.detail.store'; import { UmbThemeContext } from './themes/theme.context'; @@ -94,6 +96,8 @@ export class UmbBackofficeElement extends UmbLitElement { new UmbMediaDetailStore(this); new UmbMediaTreeStore(this); new UmbDataTypeStore(this); + new UmbRelationTypeStore(this); + new UmbRelationTypeTreeStore(this); new UmbDataTypeTreeStore(this); new UmbUserStore(this); new UmbMediaTypeDetailStore(this); 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 f566504513..58c8214087 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts @@ -2,6 +2,7 @@ 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 relationTypeManifests } from './relation-types/manifests'; import { manifests as extensionManifests } from './extensions/manifests'; import { manifests as cultureManifests } from './cultures/manifests'; import { manifests as languageManifests } from './languages/manifests'; @@ -26,4 +27,5 @@ registerExtensions([ ...cultureManifests, ...languageManifests, ...logviewerManifests, + ...relationTypeManifests, ]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts index ddc33ff64a..d7f34b30ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts @@ -3,11 +3,11 @@ import type { ManifestMenuItem } from '@umbraco-cms/models'; const menuItem: ManifestMenuItem = { type: 'menuItem', alias: 'Umb.MenuItem.RelationTypes', - name: 'Data Types Menu Item', + name: 'Relation Types Menu Item', weight: 40, loader: () => import('./relation-types-menu-item.element'), meta: { - label: 'Data Types', + label: 'Relation Types', icon: 'umb:folder', entityType: 'relation-type', menus: ['Umb.Menu.Settings'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts index a3da83e00a..5057feee0a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts @@ -20,7 +20,7 @@ export class UmbRelationTypesMenuItemElement extends UmbLitElement { // TODO: can we make this reusable? render() { return html` import('./relation-type-workspace.element'), meta: { entityType: 'relation-type', @@ -15,7 +15,7 @@ const workspaceViews: Array = [ { type: 'workspaceView', alias: 'Umb.WorkspaceView.RelationType.Edit', - name: 'Data Type Workspace Edit View', + name: 'Relation Type Workspace Edit View', loader: () => import('./views/edit/relation-type-workspace-view-edit.element'), weight: 90, meta: { @@ -28,7 +28,7 @@ const workspaceViews: Array = [ { type: 'workspaceView', alias: 'Umb.WorkspaceView.RelationType.Info', - name: 'Data Type Workspace Info View', + name: 'Relation Type Workspace Info View', loader: () => import('./views/info/workspace-view-relation-type-info.element'), weight: 90, meta: { @@ -44,7 +44,7 @@ const workspaceActions: Array = [ { type: 'workspaceAction', alias: 'Umb.WorkspaceAction.RelationType.Save', - name: 'Save Data Type Workspace Action', + name: 'Save Relation Type Workspace Action', meta: { workspaces: ['Umb.Workspace.RelationType'], label: 'Save', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index d5d89e20dd..5e51f0801e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -7,7 +7,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; /** * @element umb-relation-type-workspace - * @description - Element for displaying a Data Type Workspace + * @description - Element for displaying a Relation Type Workspace */ @customElement('umb-relation-type-workspace') export class UmbRelationTypeWorkspaceElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts index 899ea0d4f9..eb6dfa676e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -8,7 +8,7 @@ import { data } from '../../../../core/mocks/data/relation-type.data'; import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element'; export default { - title: 'Workspaces/Data Type', + title: 'Workspaces/Relation Type', component: 'umb-relation-type-workspace', id: 'umb-relation-type-workspace', } as Meta; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts index 9738b11cf8..b07c51b892 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.stories.ts @@ -9,7 +9,7 @@ import './relation-type-workspace-view-edit.element'; //import { UmbRelationTypeWorkspaceContext } from '../../workspace-relation-type.context'; export default { - title: 'Workspaces/Data Type/Views/Edit', + title: 'Workspaces/Relation Type/Views/Edit', component: 'umb-relation-type-workspace-view-edit', id: 'umb-relation-type-workspace-view-edit', decorators: [ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts index beeb74250f..6abee6dff4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/info/workspace-view-relation-type-info.stories.ts @@ -9,7 +9,7 @@ import { html } from 'lit-html'; import type { UmbWorkspaceViewRelationTypeInfoElement } from './workspace-view-relation-type-info.element'; export default { - title: 'Workspaces/Data Type/Views/Info', + title: 'Workspaces/Relation Type/Views/Info', component: 'umb-workspace-view-relation-type-info', id: 'umb-workspace-view-relation-type-info', decorators: [ From 850399ee11fc50eedc0b42cb7d8f59fe62f59837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:35:33 +1300 Subject: [PATCH 006/550] added handler --- .../src/core/mocks/browser-handlers.ts | 2 + .../mocks/domains/relation-type.handlers.ts | 72 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts 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 014a4e8c61..9cc4f46619 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 @@ -1,4 +1,5 @@ import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; +import { handlers as relationTypeHandlers } from './domains/relation-type.handlers'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; import * as manifestsHandlers from './domains/manifests.handlers'; @@ -34,6 +35,7 @@ const handlers = [ ...documentHandlers, ...mediaHandlers, ...dataTypeHandlers, + ...relationTypeHandlers, ...documentTypeHandlers, ...telemetryHandlers, ...publishedStatusHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts new file mode 100644 index 0000000000..dd1bb5acd5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -0,0 +1,72 @@ +import { rest } from 'msw'; +import { umbRelationTypeData } from '../data/relation-type.data'; +import { umbracoPath } from '@umbraco-cms/utils'; + +// TODO: add schema +export const handlers = [ + rest.delete('/umbraco/backoffice/relation-type/:key', async (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + umbRelationTypeData.delete([key]); + + return res(ctx.status(200)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/root', (req, res, ctx) => { + const rootItems = umbRelationTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { + const parentKey = req.url.searchParams.get('parentKey'); + if (!parentKey) return; + + const children = umbRelationTypeData.getTreeItemChildren(parentKey); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { + const keys = req.url.searchParams.getAll('key'); + if (!keys) return; + const items = umbRelationTypeData.getTreeItem(keys); + return res(ctx.status(200), ctx.json(items)); + }), + + rest.get(umbracoPath('/relation-type/:key'), (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + const RelationType = umbRelationTypeData.getByKey(key); + + return res(ctx.status(200), ctx.json(RelationType)); + }), + + rest.post(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbRelationTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), + + rest.put(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbRelationTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), +]; From bcca6bc2d3794f5be055f5bd62a3a5ff7fe42a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 9 Mar 2023 20:48:47 +1300 Subject: [PATCH 007/550] add data --- .../src/core/mocks/data/relation-type.data.ts | 85 +++++++++++++++++-- 1 file changed, 79 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 550d074d03..88fed32efa 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -1,9 +1,80 @@ import { UmbEntityData } from './entity.data'; -import { createFolderTreeItem } from './utils'; +import { createEntityTreeItem, createFolderTreeItem } from './utils'; import type { FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel -export const data: Array = []; +export const data: Array = [ + { + key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + alias: 'relateDocumentOnCopy', + name: 'Relate Document On Copy', + path: '', + isSystemRelationType: true, + isBidirectional: false, + isDependency: false, + parentObjectType: 'Document', + childObjectType: 'Document', + parentObjectTypeName: 'Document', + childObjectTypeName: 'Document', + type: 'relation-type', + }, + { + key: 'ac68cde6-763f-4231-a751-1101b57defd2', + alias: 'relateParentDocumentOnDelete', + name: 'Relate Parent Document On Delete', + path: '', + isSystemRelationType: true, + isBidirectional: false, + isDependency: false, + parentObjectType: 'Document', + childObjectType: 'Document', + parentObjectTypeName: 'Document', + childObjectTypeName: 'Document', + type: 'relation-type', + }, + { + key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + alias: 'relateParentMediaFolderOnDelete', + name: 'Relate Parent Media Folder On Delete', + path: '', + isSystemRelationType: true, + isBidirectional: false, + isDependency: false, + parentObjectType: 'Document', + childObjectType: 'Document', + parentObjectTypeName: 'Document', + childObjectTypeName: 'Document', + type: 'relation-type', + }, + { + key: 'd421727d-43de-4205-b4c6-037404f309ad', + alias: 'relatedMedia', + name: 'Related Media', + path: '', + isSystemRelationType: true, + isBidirectional: false, + isDependency: false, + parentObjectType: 'Document', + childObjectType: 'Document', + parentObjectTypeName: 'Document', + childObjectTypeName: 'Document', + type: 'relation-type', + }, + { + key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + alias: 'relatedDocument', + name: 'Related Document', + path: '', + isSystemRelationType: true, + isBidirectional: false, + isDependency: false, + parentObjectType: 'Document', + childObjectType: 'Document', + parentObjectTypeName: 'Document', + childObjectTypeName: 'Document', + type: 'relation-type', + }, +]; // Temp mocked database // TODO: all properties are optional in the server schema. I don't think this is correct. @@ -14,19 +85,21 @@ class UmbRelationTypeData extends UmbEntityData { super(data); } + //TODO Can relation types have children? getTreeRoot(): Array { const rootItems = this.data; - return rootItems.map((item) => createFolderTreeItem(item)); + return rootItems.map((item) => createEntityTreeItem(item)); } - getTreeItemChildren(key: string): Array { + //TODO Can relation types have children? + getTreeItemChildren(): Array { const childItems = this.data; - return childItems.map((item) => createFolderTreeItem(item)); + return childItems.map((item) => createEntityTreeItem(item)); } getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); - return items.map((item) => createFolderTreeItem(item)); + return items.map((item) => createEntityTreeItem(item)); } } From f3985eae08a094f27ad0f2c23abdec080f60c589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 10 Mar 2023 12:43:08 +1300 Subject: [PATCH 008/550] now works --- .../repository-tree-data-source.interface.ts | 1 - .../repository/tree-repository.interface.ts | 5 --- .../repository/relation-type.repository.ts | 17 --------- .../sources/relation-type.tree.server.data.ts | 37 ++++--------------- .../shared/components/tree/tree.element.ts | 1 + .../src/core/mocks/data/relation-type.data.ts | 7 +++- 6 files changed, 15 insertions(+), 53 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index aff4ec4451..7e484c86c2 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -3,6 +3,5 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; export interface RepositoryTreeDataSource { getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index 2ef082005f..16d4d1ca51 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -7,11 +7,6 @@ export interface UmbTreeRepository { error: ProblemDetailsModel | undefined; asObservable?: () => Observable; }>; - requestTreeItemsOf: (parentKey: string | null) => Promise<{ - data: PagedEntityTreeItemModel | undefined; - error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; - }>; requestTreeItems: (keys: string[]) => Promise<{ data: Array | undefined; error: ProblemDetailsModel | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 7c9f951655..43772b2dba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -66,23 +66,6 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { - await this.#init; - - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; - return { data: undefined, error }; - } - - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); - - if (data) { - this.#treeStore?.appendItems(data.items); - } - - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; - } - async requestTreeItems(keys: Array) { await this.#init; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index b0fd7ee37d..afd31da447 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -1,15 +1,14 @@ -import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; /** - * A data source for the Document tree that fetches data from the server + * A data source for the RelationType tree that fetches data from the server * @export - * @class DocumentTreeServerDataSource - * @implements {DocumentTreeDataSource} + * @class RelationTypeTreeServerDataSource + * @implements {RelationTypeTreeDataSource} */ -export class RelationTypeTreeServerDataSource implements RepositoryTreeDataSource { +export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSource { #host: UmbControllerHostInterface; // TODO: how do we handle trashed items? @@ -46,9 +45,9 @@ export class RelationTypeTreeServerDataSource implements RepositoryTreeDataSourc } /** - * Creates an instance of DocumentTreeServerDataSource. + * Creates an instance of RelationTypeTreeServerDataSource. * @param {UmbControllerHostInterface} host - * @memberof DocumentTreeServerDataSource + * @memberof RelationTypeTreeServerDataSource */ constructor(host: UmbControllerHostInterface) { this.#host = host; @@ -57,37 +56,17 @@ export class RelationTypeTreeServerDataSource implements RepositoryTreeDataSourc /** * Fetches the root items for the tree from the server * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof RelationTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, RelationTypeResource.getTreeRelationTypeRoot({})); } - /** - * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey - * @return {*} - * @memberof DocumentTreeServerDataSource - */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; - return { error }; - } - - return tryExecuteAndNotify( - this.#host, - RelationTypeResource.getTreeRelationTypeChildren({ - parentKey, - }) - ); - } - /** * Fetches the items for the given keys from the server * @param {Array} keys * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof RelationTypeTreeServerDataSource */ async getItems(keys: Array) { if (keys) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 156ece1717..133b30cf17 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -73,6 +73,7 @@ export class UmbTreeElement extends UmbLitElement { .pipe(map((trees) => trees.find((tree) => tree.alias === this.alias))), async (tree) => { if (this._tree?.alias === tree?.alias) return; + this._tree = tree; this.#provideTreeContext(); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 88fed32efa..4f2694086a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -1,5 +1,5 @@ import { UmbEntityData } from './entity.data'; -import { createEntityTreeItem, createFolderTreeItem } from './utils'; +import { createEntityTreeItem } from './utils'; import type { FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel @@ -17,6 +17,7 @@ export const data: Array parentObjectTypeName: 'Document', childObjectTypeName: 'Document', type: 'relation-type', + parentKey: null, }, { key: 'ac68cde6-763f-4231-a751-1101b57defd2', @@ -31,6 +32,7 @@ export const data: Array parentObjectTypeName: 'Document', childObjectTypeName: 'Document', type: 'relation-type', + parentKey: null, }, { key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', @@ -45,6 +47,7 @@ export const data: Array parentObjectTypeName: 'Document', childObjectTypeName: 'Document', type: 'relation-type', + parentKey: null, }, { key: 'd421727d-43de-4205-b4c6-037404f309ad', @@ -59,6 +62,7 @@ export const data: Array parentObjectTypeName: 'Document', childObjectTypeName: 'Document', type: 'relation-type', + parentKey: null, }, { key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', @@ -73,6 +77,7 @@ export const data: Array parentObjectTypeName: 'Document', childObjectTypeName: 'Document', type: 'relation-type', + parentKey: null, }, ]; From 94bf7082362ccbef5ff96616dd6d5bf91c5ae0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 10 Mar 2023 21:28:25 +1300 Subject: [PATCH 009/550] data works --- .../src/core/mocks/data/relation-type.data.ts | 69 +++++++++++++++---- 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 4f2694086a..b9781cdc84 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -1,9 +1,9 @@ import { UmbEntityData } from './entity.data'; -import { createEntityTreeItem } from './utils'; -import type { FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { createEntityTreeItem, createFolderTreeItem } from './utils'; +import type { EntityTreeItemModel, FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel -export const data: Array = [ +export const data: Array = [ { key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', alias: 'relateDocumentOnCopy', @@ -16,8 +16,6 @@ export const data: Array childObjectType: 'Document', parentObjectTypeName: 'Document', childObjectTypeName: 'Document', - type: 'relation-type', - parentKey: null, }, { key: 'ac68cde6-763f-4231-a751-1101b57defd2', @@ -31,8 +29,6 @@ export const data: Array childObjectType: 'Document', parentObjectTypeName: 'Document', childObjectTypeName: 'Document', - type: 'relation-type', - parentKey: null, }, { key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', @@ -46,8 +42,6 @@ export const data: Array childObjectType: 'Document', parentObjectTypeName: 'Document', childObjectTypeName: 'Document', - type: 'relation-type', - parentKey: null, }, { key: 'd421727d-43de-4205-b4c6-037404f309ad', @@ -61,8 +55,6 @@ export const data: Array childObjectType: 'Document', parentObjectTypeName: 'Document', childObjectTypeName: 'Document', - type: 'relation-type', - parentKey: null, }, { key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', @@ -76,8 +68,54 @@ export const data: Array childObjectType: 'Document', parentObjectTypeName: 'Document', childObjectTypeName: 'Document', - type: 'relation-type', + }, +]; + +export const treeData: Array = [ + { + key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + $type: 'EntityTreeItemViewModel', + isContainer: false, parentKey: null, + name: 'Relate Document On Copy', + icon: 'umb:trafic', + type: 'relation-type', + }, + { + key: 'ac68cde6-763f-4231-a751-1101b57defd2', + $type: 'EntityTreeItemViewModel', + isContainer: false, + parentKey: null, + name: 'Relate Parent Document On Delete', + icon: 'umb:trafic', + type: 'relation-type', + }, + { + key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + $type: 'EntityTreeItemViewModel', + isContainer: false, + parentKey: null, + name: 'Relate Parent Media Folder On Delete', + icon: 'umb:trafic', + type: 'relation-type', + }, + { + key: 'd421727d-43de-4205-b4c6-037404f309ad', + $type: 'EntityTreeItemViewModel', + isContainer: false, + parentKey: null, + name: 'Related Media', + icon: 'umb:trafic', + type: 'relation-type', + }, + { + key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + $type: 'EntityTreeItemViewModel', + isContainer: false, + parentKey: null, + name: 'Related Document', + icon: 'umb:trafic', + type: 'relation-type', }, ]; @@ -86,24 +124,25 @@ export const data: Array // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore class UmbRelationTypeData extends UmbEntityData { + private treeData = treeData; constructor() { super(data); } //TODO Can relation types have children? getTreeRoot(): Array { - const rootItems = this.data; + const rootItems = this.treeData; return rootItems.map((item) => createEntityTreeItem(item)); } //TODO Can relation types have children? getTreeItemChildren(): Array { - const childItems = this.data; + const childItems = this.treeData; return childItems.map((item) => createEntityTreeItem(item)); } getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } } From 34c21c7c721c23d8c13a3c6bb960957620898e22 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:34:00 +0100 Subject: [PATCH 010/550] add api to workspace manifest --- .../libs/extensions-registry/workspace.models.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts index 4bbc012cd7..2cbaa9ca60 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts @@ -7,4 +7,5 @@ export interface ManifestWorkspace extends ManifestElement { export interface MetaEditor { entityType: string; + api: any; } From 56495503c64c8fb12c4d44f5529debead28a0894 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:34:42 +0100 Subject: [PATCH 011/550] add loader to data type workspace context --- .../src/backoffice/settings/data-types/workspace/manifests.ts | 1 + 1 file changed, 1 insertion(+) 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 f23cb76d4e..1e16044820 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 @@ -8,6 +8,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./data-type-workspace.element'), meta: { entityType: 'data-type', + api: () => import('./data-type-workspace.context'), }, }; From 27038c3826bb442dd7264abffbbc9e83ef65c026 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:55:28 +0100 Subject: [PATCH 012/550] remove hardcoded workspace routing paths --- .../components/section/section.element.ts | 151 +++++------------- 1 file changed, 39 insertions(+), 112 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 cb0656d8de..aaa12fc2b3 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 @@ -3,9 +3,9 @@ import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { IRoutingInfo } from 'router-slot'; -import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; +import UmbWorkspaceElement from '../workspace/workspace.element'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { ManifestSectionView, ManifestWorkspace, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { ManifestSectionView, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -13,6 +13,7 @@ import './section-sidebar-menu/section-sidebar-menu.element.ts'; import './section-views/section-views.element.ts'; import '../../../settings/languages/app-language-select/app-language-select.element.ts'; import { UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; +import UmbSectionViewElement from './section-views/section-view.element'; @customElement('umb-section') export class UmbSectionElement extends UmbLitElement { @@ -45,7 +46,6 @@ export class UmbSectionElement extends UmbLitElement { @state() private _views?: Array; - private _workspaces?: Array; private _sectionContext?: UmbSectionContext; private _sectionAlias?: string; @@ -56,25 +56,47 @@ export class UmbSectionElement extends UmbLitElement { this._sectionContext = instance; // TODO: currently they don't corporate, as they overwrite each other... - this._observeMenuItems(); - this._observeSection(); + this.#observeSectionAlias(); + this.#createRoutes(); }); } - private _observeMenuItems() { + #createRoutes() { + this._routes = []; + + this._routes = [ + { + path: 'dashboard', + component: () => import('./section-dashboards/section-dashboards.element'), + }, + { + path: 'view', + component: () => import('../section/section-views/section-view.element'), + }, + { + path: 'workspace/:entityType', + component: () => import('../workspace/workspace.element'), + setup: (element: UmbWorkspaceElement, info: IRoutingInfo) => { + element.entityType = info.match.params.entityType; + }, + }, + { + path: '**', + redirectTo: 'view', + }, + ]; + } + + #observeSectionAlias() { if (!this._sectionContext) return; - this.observe(this._sectionContext?.alias, (alias) => { - this._observeSidebarMenus(alias); - }); - - this.observe(umbExtensionsRegistry.extensionsOfType('workspace'), (workspaceExtensions) => { - this._workspaces = workspaceExtensions; - this._createWorkspaceRoutes(); + this.observe(this._sectionContext.alias, (alias) => { + this._sectionAlias = alias; + this.#observeSectionSidebarApps(alias); }); } - private _observeSidebarMenus(sectionAlias?: string) { + #observeSectionSidebarApps(sectionAlias?: string) { if (sectionAlias) { this.observe( umbExtensionsRegistry @@ -89,106 +111,14 @@ export class UmbSectionElement extends UmbLitElement { } } - private _createWorkspaceRoutes() { - if (!this._workspaces) return; - // TODO: find a way to make this reuseable across: - // TODO: Move workspace 'handlers/routes' to the workspace-element. So it becomes local. - const workspaceRoutes = this._workspaces?.map((workspace: ManifestWorkspace) => { - return [ - { - path: `${workspace.meta.entityType}/edit/:key`, - component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el) => { - el.load(info.match.params.key); - }); - }, - }, - { - path: `${workspace.meta.entityType}/create/root`, - component: () => createExtensionElement(workspace), - setup: (component: Promise) => { - component.then((el) => { - el.create(null); - }); - }, - }, - { - path: `${workspace.meta.entityType}/create/:parentKey`, - component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el) => { - el.create(info.match.params.parentKey); - }); - }, - }, - { - path: workspace.meta.entityType, - component: () => createExtensionElement(workspace), - }, - ]; - }); - - this._routes = [ - { - path: 'dashboard', - component: () => import('./section-dashboards/section-dashboards.element'), - }, - ...(workspaceRoutes?.flat() || []), - { - path: '**', - redirectTo: 'dashboard', - }, - ]; - } - - private _observeSection() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext.alias, (alias) => { - this._sectionAlias = alias; - this._observeViews(); - }); - } - - private _observeViews() { - this.observe(umbExtensionsRegistry?.extensionsOfType('sectionView'), (views) => { - const sectionViews = views - .filter((view) => { - return this._sectionAlias ? view.meta.sections.includes(this._sectionAlias) : false; - }) - .sort((a, b) => b.meta.weight - a.meta.weight); - if (sectionViews.length > 0) { - this._views = sectionViews; - this._createViewRoutes(); - } - }); - } - - private _createViewRoutes() { - this._routes = []; - this._routes = - this._views?.map((view) => { - return { - path: 'view/' + view.meta.pathname, - component: () => createExtensionElement(view), - }; - }) ?? []; - - if (this._views && this._views.length > 0) { - this._routes.push({ - path: '**', - redirectTo: 'view/' + this._views?.[0]?.meta.pathname, - }); - } - } - + /* private _onRouteChange = (event: UmbRouterSlotChangeEvent) => { const currentPath = event.target.localActiveViewPath; const view = this._views?.find((view) => 'view/' + view.meta.pathname === currentPath); if (!view) return; this._sectionContext?.setActiveView(view); }; + */ render() { return html` @@ -212,10 +142,7 @@ export class UmbSectionElement extends UmbLitElement { ${this._views && this._views.length > 0 ? html`` : nothing} ${this._routes && this._routes.length > 0 - ? html`` + ? html`` : nothing} From f305b775ec7d6e8c5796bab6d3829c5fe603a186 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:55:54 +0100 Subject: [PATCH 013/550] add method to get paths on workspace context --- .../workspace/data-type-workspace.context.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 531531c39d..93be9e3a3d 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 @@ -33,6 +33,19 @@ export class UmbDataTypeWorkspaceContext this.#data.next(data); } + async getPaths() { + return [ + { + name: 'edit', + path: 'edit/:key', + }, + { + name: 'create', + path: 'create/:parentKey', + }, + ]; + } + getData() { return this.#data.getValue(); } @@ -87,3 +100,5 @@ export class UmbDataTypeWorkspaceContext this.#data.complete(); } } + +export default UmbDataTypeWorkspaceContext; From 3b8a2f856f6b5bb269122edbdbb28e9f49282525 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:56:24 +0100 Subject: [PATCH 014/550] make generic workspace component to create dynamic workspace routes --- .../components/workspace/workspace.element.ts | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts new file mode 100644 index 0000000000..7d20fca2d2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -0,0 +1,96 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, nothing } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; +import { map } from 'rxjs'; +import { IRoute, IRoutingInfo } from 'router-slot'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; + +export interface UmbRouteLocation { + name?: string; + params: { + [key: string]: string; + }; +} + +export interface UmbWorkspaceEntityElement extends HTMLElement { + location: UmbRouteLocation; +} + +@customElement('umb-workspace') +export class UmbWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + private _entityType = ''; + @property() + public get entityType() { + return this._entityType; + } + public set entityType(value) { + const oldValue = this._entityType; + this._entityType = value; + this.#observeWorkspace(); + this.requestUpdate('entityType', oldValue); + } + + @state() + _element?: UmbWorkspaceElement; + + @state() + _routes: Array = []; + + async #createRoutes(workspaceManifest: ManifestWorkspace) { + const workspaceContextModule = await workspaceManifest.meta.api(); + const workspaceContext = new workspaceContextModule.default(this); + const paths = await workspaceContext.getPaths(); + + const routes = paths.map((path: any) => { + return { + path: path.path, + component: () => createExtensionElement(workspaceManifest), + setup: (component: Promise, info: IRoutingInfo) => { + component.then((element) => { + const location: UmbRouteLocation = { + name: path.name, + params: info.match.params, + }; + element.location = location; + }); + }, + }; + }); + + this._routes = routes; + } + + #observeWorkspace() { + this.observe( + umbExtensionsRegistry + .extensionsOfType('workspace') + .pipe( + map((workspaceManifests) => + workspaceManifests.find((manifest) => manifest.meta.entityType === this.entityType) + ) + ), + async (workspaceManifest) => { + // TODO: add fallback element if we can't find the workspace + if (!workspaceManifest) return; + this.#createRoutes(workspaceManifest); + } + ); + } + + render() { + if (this._routes.length === 0) return nothing; + return html``; + } +} + +export default UmbWorkspaceElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace': UmbWorkspaceElement; + } +} From a67c4f8de99a5cc83de182c84721c989d9756ea4 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:56:55 +0100 Subject: [PATCH 015/550] load or create data type based on location --- .../workspace/data-type-workspace.element.ts | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 9dbc32333b..8901080b22 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -1,9 +1,10 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { css, html, nothing } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; /** * @element umb-data-type-workspace @@ -28,22 +29,43 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { `, ]; - #workspaceContext = new UmbDataTypeWorkspaceContext(this); + @property() + manifest?: ManifestWorkspace; + + @property() + location?: any; @state() private _dataTypeName = ''; - public load(value: string) { - this.#workspaceContext?.load(value); - //this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } + #workspaceContext?: UmbDataTypeWorkspaceContext; constructor() { super(); + + this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { + this.#workspaceContext = workspaceContext; + + if (this.location?.name === 'create') { + this.#create(this.location?.params?.parentKey); + } else { + this.#load(this.location?.params?.key); + } + + this.#observeName(); + }); + } + + #load(key: string) { + this.#workspaceContext?.load(key); + } + + #create(parentKey: string | null) { + this.#workspaceContext?.createScaffold(parentKey); + } + + #observeName() { + if (!this.#workspaceContext) return; this.observe(this.#workspaceContext.name, (dataTypeName) => { if (dataTypeName !== this._dataTypeName) { this._dataTypeName = dataTypeName ?? ''; @@ -57,14 +79,15 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { const target = event.composedPath()[0] as UUIInputElement; if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); + this.#workspaceContext?.setName(target.value); } } } render() { + if (!this.manifest) return nothing; return html` - + `; From 59d0df57c0a1c6be99c4b420f394febfba56899e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 13:57:05 +0100 Subject: [PATCH 016/550] wip section view element --- .../section-views/section-view.element.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-view.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-view.element.ts new file mode 100644 index 0000000000..d9e29b26fe --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-view.element.ts @@ -0,0 +1,21 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-section-view') +export class UmbSectionViewElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + render() { + return html`
Render Section View
`; + } +} + +export default UmbSectionViewElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-section-view': UmbSectionViewElement; + } +} From 028c039287fa2b87131d739e2ef258d1aa4d3c2e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 14:03:38 +0100 Subject: [PATCH 017/550] temp - add workspace to hardcoded url --- .../src/backoffice/shared/components/tree/tree-item.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts index f64476795e..d45a8fdaa4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts @@ -162,7 +162,7 @@ export class UmbTreeItem extends UmbLitElement { // TODO: how do we handle this? private _constructPath(sectionPathname: string, type: string, key: string) { - return type ? `section/${sectionPathname}/${type}/edit/${key}` : undefined; + return type ? `section/${sectionPathname}/workspace/${type}/edit/${key}` : undefined; } // TODO: do we want to catch and emit a backoffice event here? From 2a41d690a455cbbfb85973de2b56ffdd2936a3b9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 14:21:45 +0100 Subject: [PATCH 018/550] add manifest to element --- .../backoffice/shared/components/workspace/workspace.element.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index 7d20fca2d2..000ffd4877 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -15,6 +15,7 @@ export interface UmbRouteLocation { } export interface UmbWorkspaceEntityElement extends HTMLElement { + manifest: ManifestWorkspace; location: UmbRouteLocation; } @@ -51,6 +52,7 @@ export class UmbWorkspaceElement extends UmbLitElement { component: () => createExtensionElement(workspaceManifest), setup: (component: Promise, info: IRoutingInfo) => { component.then((element) => { + element.manifest = workspaceManifest; const location: UmbRouteLocation = { name: path.name, params: info.match.params, From 8cefb878f3f72b22af32e7e7571fc8e28341fed8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 14:21:59 +0100 Subject: [PATCH 019/550] clean up --- .../workspace/data-type-workspace.element.ts | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 8901080b22..e9dfe54ba4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -5,6 +5,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; +import { UmbRouteLocation } from 'src/backoffice/shared/components/workspace/workspace.element'; /** * @element umb-data-type-workspace @@ -33,7 +34,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { manifest?: ManifestWorkspace; @property() - location?: any; + location?: UmbRouteLocation; @state() private _dataTypeName = ''; @@ -45,23 +46,17 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { this.#workspaceContext = workspaceContext; - - if (this.location?.name === 'create') { - this.#create(this.location?.params?.parentKey); - } else { - this.#load(this.location?.params?.key); - } - + this.#init(); this.#observeName(); }); } - #load(key: string) { - this.#workspaceContext?.load(key); - } - - #create(parentKey: string | null) { - this.#workspaceContext?.createScaffold(parentKey); + #init() { + if (this.location?.params?.parentKey) { + this.#workspaceContext?.createScaffold(this.location.params.parentKey); + } else if (this.location?.params?.key) { + this.#workspaceContext?.load(this.location.params.key); + } } #observeName() { @@ -88,7 +83,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { if (!this.manifest) return nothing; return html` - + `; } From 6209d995cf55829a6a792ee60af49cac1e6a3bac Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:07:44 +0100 Subject: [PATCH 020/550] redirect to create path --- .../documents/entity-actions/create/create.action.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index fcdcc7be3c..b44dbcbd82 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -28,8 +28,8 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Mon, 13 Mar 2023 15:07:58 +0100 Subject: [PATCH 021/550] add paths to workspace context --- .../workspace/document-workspace.context.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 f62c5943fc..a5e4fe9bfe 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 @@ -67,6 +67,19 @@ export class UmbDocumentWorkspaceContext return data || undefined; } + async getPaths() { + return [ + { + name: 'edit', + path: 'edit/:key', + }, + { + name: 'create', + path: 'create/:parentKey:/documentType', + }, + ]; + } + getData() { return this.#draft.getValue() || {}; } @@ -180,3 +193,5 @@ export class UmbDocumentWorkspaceContext this.#draft.complete(); } } + +export default UmbDocumentWorkspaceContext; From 5c74bd231f2bad9e5cd25c61898299ca5377098a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:08:30 +0100 Subject: [PATCH 022/550] add location and manifest props to document workspace element --- .../documents/workspace/document-workspace.element.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index d2f69c3f86..2e82e9439e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -1,7 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; +import { UmbRouterSlotInitEvent, UmbRouteLocation } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; @@ -10,7 +11,7 @@ import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; import { DocumentModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; @customElement('umb-document-workspace') export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { @@ -29,6 +30,12 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor //private _defaultVariant?: VariantViewModelBaseModel; private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); + @property() + manifest?: ManifestWorkspace; + + @property() + location?: UmbRouteLocation; + @state() _unique?: string; From 59455f67e67b752421b41ece85fa1b223866314d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:08:38 +0100 Subject: [PATCH 023/550] import context --- .../src/backoffice/documents/documents/workspace/manifests.ts | 1 + 1 file changed, 1 insertion(+) 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 be404bc875..e1538af24d 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 @@ -17,6 +17,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./document-workspace.element'), meta: { entityType: 'document', + api: () => import('./document-workspace.context'), }, }; From 63b386d67feebbc325cf4f56c22f10e60c2f5559 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:12:46 +0100 Subject: [PATCH 024/550] add location interface to router --- src/Umbraco.Web.UI.Client/src/core/router/index.ts | 1 + .../src/core/router/route-location.interface.ts | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index 75fd79f5e4..e05a188067 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -2,3 +2,4 @@ export * from 'router-slot'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; +export * from './route-location.interface'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts b/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts new file mode 100644 index 0000000000..ef5f56188f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts @@ -0,0 +1,6 @@ +export interface UmbRouteLocation { + name?: string; + params: { + [key: string]: string; + }; +} From e167f288bff35a7b8eb6f9c4b7ddb89a11517126 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:13:20 +0100 Subject: [PATCH 025/550] import from router module --- .../data-types/workspace/data-type-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index e9dfe54ba4..c3f2188cc6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -2,10 +2,10 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbRouteLocation } from '@umbraco-cms/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; -import { UmbRouteLocation } from 'src/backoffice/shared/components/workspace/workspace.element'; /** * @element umb-data-type-workspace From 12f3161debce3dd1c3545b6608d71229f17bad8d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:13:31 +0100 Subject: [PATCH 026/550] remove moved interface --- .../shared/components/workspace/workspace.element.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index 000ffd4877..68b6f5a867 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -4,16 +4,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbRouteLocation } from '@umbraco-cms/router'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; -export interface UmbRouteLocation { - name?: string; - params: { - [key: string]: string; - }; -} - export interface UmbWorkspaceEntityElement extends HTMLElement { manifest: ManifestWorkspace; location: UmbRouteLocation; From fd92ec5e69d67e496f0343b4b6b5bdf6d9e21492 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 15:15:42 +0100 Subject: [PATCH 027/550] fix order --- .../backoffice/shared/components/workspace/workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index 68b6f5a867..d3e6e97923 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -3,8 +3,8 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbLitElement } from '@umbraco-cms/element'; import { UmbRouteLocation } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/element'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; From 670d27c287788fe19937d3b6f5735d3e690f9515 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 16:08:49 +0100 Subject: [PATCH 028/550] return key instead of alias --- .../documents/documents/entity-actions/create/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/index.ts index 679f84e431..faa1ce6041 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/index.ts @@ -5,7 +5,7 @@ export interface UmbCreateDocumentModalData { } export interface UmbCreateDocumentModalResultData { - documentType: string; + documentTypeKey: string; } export const UMB_CREATE_DOCUMENT_MODAL_TOKEN = new UmbModalToken< From 28db9ffc1081005b4022ca7a061bfb960e594fbd Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 16:09:15 +0100 Subject: [PATCH 029/550] update modal to return document type key instead of alias --- .../create/create-document-modal.element.ts | 10 +++++----- .../documents/entity-actions/create/create.action.ts | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts index e438a3e3e4..0a805be309 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts @@ -18,8 +18,8 @@ export class UmbCreateDocumentModalElement extends UmbModalBaseElement< #onClick(event: PointerEvent) { event.stopPropagation(); const target = event.target as HTMLButtonElement; - const documentType = target.value; - this.modalHandler?.submit({ documentType }); + const documentTypeKey = target.value; + this.modalHandler?.submit({ documentTypeKey }); } render() { @@ -28,9 +28,9 @@ export class UmbCreateDocumentModalElement extends UmbModalBaseElement<
Render list of create options for ${this.data?.unique}
    -
  • -
  • -
  • +
  • +
  • +
Cancel diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index b44dbcbd82..7badca4769 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -28,8 +28,8 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Mon, 13 Mar 2023 16:09:54 +0100 Subject: [PATCH 030/550] pass document type key when creating a document scaffold --- .../documents/repository/sources/document.server.data.ts | 3 ++- .../documents/documents/repository/sources/index.ts | 1 + .../documents/workspace/document-workspace.context.ts | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 5fe01e86d2..9bd093eeea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -47,8 +47,9 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { + createScaffold(documentTypeKey: string): Promise; trash(key: string): Promise>; } 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 a5e4fe9bfe..dc0de5fdc6 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 @@ -57,8 +57,8 @@ export class UmbDocumentWorkspaceContext return data || undefined; } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(documentTypeKey: string) { + const { data } = await this.repository.createScaffold(documentTypeKey); if (!data) return undefined; this.setIsNew(true); @@ -75,7 +75,7 @@ export class UmbDocumentWorkspaceContext }, { name: 'create', - path: 'create/:parentKey:/documentType', + path: 'create/:parentKey/:documentTypeKey', }, ]; } From 36cc603c37bd8bdf2e161e0453e00f52e9ac60d9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 16:10:18 +0100 Subject: [PATCH 031/550] update document workspace element to new api --- .../workspace/document-workspace.element.ts | 52 +++++++++++-------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 2e82e9439e..a6f4eb1de9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -26,7 +26,6 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor `, ]; - private _workspaceContext: UmbDocumentWorkspaceContext = new UmbDocumentWorkspaceContext(this); //private _defaultVariant?: VariantViewModelBaseModel; private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); @@ -48,35 +47,44 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor @state() _workspaceSplitViews: Array = []; + #workspaceContext?: UmbDocumentWorkspaceContext; + constructor() { super(); - this.observe(this._workspaceContext.variants, (variants) => { + this.consumeContext('umbWorkspaceContext', (instance: UmbDocumentWorkspaceContext) => { + this.#workspaceContext = instance; + this.#observeVariants(); + this.#observeSplitViews(); + this.#init(); + }); + } + + #observeVariants() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.variants, (variants) => { this._availableVariants = variants; this._generateRoutes(); }); - this.observe(this._workspaceContext.splitView.activeVariantsInfo, (variants) => { + } + + #observeSplitViews() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.splitView.activeVariantsInfo, (variants) => { this._workspaceSplitViews = variants; }); } - public async load(entityKey: string) { - const data = await this._workspaceContext.load(entityKey); - this._gotDocumentData(data); - } + #init() { + const parentKey = this.location?.params?.parentKey; + const documentTypeKey = this.location?.params.documentTypeKey; + const key = this.location?.params?.key; - public async create(parentKey: string | null) { - const data = await this._workspaceContext.createScaffold(parentKey); - this._gotDocumentData(data); - } - - private _gotDocumentData(data: DocumentModel | undefined) { - if (data && data.variants && data.variants.length > 0) { - //this._defaultVariant = data.variants[0]; - this._unique = data.key; - // Maybe we need to re-generate routes here? - } else { - // Fail beautifully? + // TODO: implement actions "events" and show loading state + if (parentKey !== undefined && documentTypeKey) { + this.#workspaceContext?.createScaffold(documentTypeKey); + } else if (key) { + this.#workspaceContext?.load(key); } } @@ -84,7 +92,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor const variantSplit = folderPart.split('_'); const culture = variantSplit[0]; const segment = variantSplit[1]; - this._workspaceContext.splitView.setActiveVariant(index, culture, segment); + this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment); } private _generateRoutes() { @@ -119,7 +127,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor component: this.splitViewElement, setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { // cause we might come from a split-view, we need to reset index 1. - this._workspaceContext.splitView.removeActiveVariant(1); + this.#workspaceContext?.splitView.removeActiveVariant(1); this._handleVariantFolderPart(0, info.match.fragments.consumed); }, }); @@ -137,7 +145,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor } private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { - this._workspaceContext.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); + this.#workspaceContext?.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); }; render() { From 21a9e6bf30179cc32d1837ef908593f2ed079702 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 16:27:10 +0100 Subject: [PATCH 032/550] rename and move create document modal dialog to document-types silo --- .../allowed-document-types-modal.element.ts} | 16 ++++++++-------- .../modals/allowed-document-types/index.ts | 17 +++++++++++++++++ .../repository/document-type.repository.ts | 15 +++++++++++++++ .../sources/document-type.server.data.ts | 10 ++++++++++ .../entity-actions/create/create.action.ts | 12 ++++-------- .../documents/entity-actions/create/index.ts | 17 ----------------- .../documents/entity-actions/manifests.ts | 2 +- 7 files changed, 55 insertions(+), 34 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/{documents/entity-actions/create/create-document-modal.element.ts => document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts} (68%) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index 0a805be309..6ef5aeac38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create-document-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -1,13 +1,13 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; -import { UmbCreateDocumentModalData, UmbCreateDocumentModalResultData } from '.'; +import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; -@customElement('umb-create-document-modal') -export class UmbCreateDocumentModalElement extends UmbModalBaseElement< - UmbCreateDocumentModalData, - UmbCreateDocumentModalResultData +@customElement('umb-allowed-document-types-modal') +export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< + UmbAllowedDocumentTypesModalData, + UmbAllowedDocumentTypesModalResult > { static styles = [UUITextStyles]; @@ -25,7 +25,7 @@ export class UmbCreateDocumentModalElement extends UmbModalBaseElement< render() { return html` -
Render list of create options for ${this.data?.unique}
+
Render list of create options for ${this.data?.key}
  • @@ -39,10 +39,10 @@ export class UmbCreateDocumentModalElement extends UmbModalBaseElement< } } -export default UmbCreateDocumentModalElement; +export default UmbAllowedDocumentTypesModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-create-document-modal': UmbCreateDocumentModalElement; + 'umb-allowed-document-types-modal': UmbAllowedDocumentTypesModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts new file mode 100644 index 0000000000..940cbc3074 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts @@ -0,0 +1,17 @@ +import { UmbModalToken } from '@umbraco-cms/modal'; + +export interface UmbAllowedDocumentTypesModalData { + key: string | null; +} + +export interface UmbAllowedDocumentTypesModalResult { + documentTypeKey: string; +} + +export const UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN = new UmbModalToken< + UmbAllowedDocumentTypesModalData, + UmbAllowedDocumentTypesModalResult +>('Umb.Modal.AllowedDocumentTypes', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 683880d36e..db7805686b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -146,6 +146,21 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe return this.#detailStore!.byKey(key); } + async requestAllowedTypes(key: string) { + await this.#init; + + // TODO: should we show a notification if the key is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!key) { + const error: ProblemDetailsModel = { title: 'Key is missing' }; + return { error }; + } + + const { data, error } = await this.#detailDataSource.getAllowedChildrenOf(key); + + return { data, error }; + } + // Could potentially be general methods: async create(template: ItemType) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 5f1a282ed4..dc543ac5b3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -186,4 +186,14 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour ); */ } + + /** + * Get the allowed document types for a given parent key + * @param {string} key + * @return {*} + * @memberof UmbDocumentTypeServerDataSource + */ + async getAllowedChildrenOf(key: string) { + alert('get allowed children of', key); + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 7badca4769..1dd25e2232 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,14 +1,10 @@ +import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN } from '../../../document-types/modals/allowed-document-types'; import { UmbDocumentRepository } from '../../repository/document.repository'; -import type { UmbCreateDocumentModalResultData } from '.'; -import { UMB_CREATE_DOCUMENT_MODAL_TOKEN } from '.'; import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -// TODO: temp import -import './create-document-modal.element.ts'; - export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { #modalContext?: UmbModalContext; @@ -24,11 +20,11 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase('Umb.Modal.CreateDocument', { - type: 'sidebar', - size: 'small', -}); 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 3ae95fe8ee..c787c55c5a 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 @@ -176,7 +176,7 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.CreateDocument', name: 'Create Document Modal', - loader: () => import('./create/create-document-modal.element'), + loader: () => import('../../document-types/modals/allowed-document-types/allowed-document-types-modal.element'), }, ]; From 2c74397ecdb6fe6f9f5717b72096980722c5b85a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 16:29:26 +0100 Subject: [PATCH 033/550] register modal --- .../backoffice/documents/document-types/manifests.ts | 9 ++++++++- .../documents/document-types/modals/manifests.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts 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 02774edbeb..5a38adea8f 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 @@ -2,5 +2,12 @@ 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'; +import { manifests as modalManifests } from './modals/manifests'; -export const manifests = [...menuItemManifests, ...treeManifests, ...repositoryManifests, ...workspaceManifests]; +export const manifests = [ + ...menuItemManifests, + ...treeManifests, + ...repositoryManifests, + ...workspaceManifests, + ...modalManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts new file mode 100644 index 0000000000..f6be3880fb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts @@ -0,0 +1,12 @@ +import type { ManifestModal } from '@umbraco-cms/extensions-registry'; + +const modals: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.AllowedDocumentTypes', + name: 'Allowed Document Types Modal', + loader: () => import('./allowed-document-types/allowed-document-types-modal.element'), + }, +]; + +export const manifests = [...modals]; From ec21071e75554dc885bf1dc832993fe2f43d7d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 13 Mar 2023 16:50:39 +0100 Subject: [PATCH 034/550] POC modal router as part of umb router-slot --- .../src/core/router/route.context.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/route.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts new file mode 100644 index 0000000000..8fbb7cc61e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -0,0 +1,30 @@ +import { UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbModalToken } from '@umbraco-cms/modal'; + +type GetResultType = T extends UmbModalToken ? Result : unknown; + +export type UmbModalRoute = { + path: string; + onSetup: (routeInfo: any) => void; + onSubmit: (data: UmbModalTokenResult) => void; + onReject: () => void; +}; + +export class UmbRouteContext { + #host: UmbControllerHostInterface; + + constructor(host: UmbControllerHostInterface) { + this.#host = host; + new UmbContextProviderController(host, UMB_ROUTE_CONTEXT_TOKEN, this); + } + + public registerModal>( + modalAlias: T, + options: UmbModalRoute + ) { + console.log('registerModalRoutee', modalAlias.toString(), options); + } +} + +export const UMB_ROUTE_CONTEXT_TOKEN = new UmbContextToken('UmbSectionContext'); From f0692baf549b60b3a5b46cf64625ca326090349b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 13 Mar 2023 16:50:44 +0100 Subject: [PATCH 035/550] POC --- .../context-api/consume/context-consumer.ts | 15 +++--- .../input-multi-url-picker.element.ts | 48 +++++++++++++++++++ .../src/core/router/index.ts | 1 + .../src/core/router/route.context.ts | 31 ++++++++++-- .../src/core/router/router-slot.element.ts | 23 +++++++-- 5 files changed, 104 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts index 0fe4fc33d8..7d4d378078 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts @@ -7,10 +7,8 @@ import { UmbContextRequestEventImplementation, UmbContextCallback } from './cont * @class UmbContextConsumer */ export class UmbContextConsumer { - - _promise?: Promise; - _promiseResolver?: (instance:T) => void; + _promiseResolver?: (instance: T) => void; private _instance?: T; get instance() { @@ -38,15 +36,20 @@ export class UmbContextConsumer { + // TODO: check that this check is not giving us any problems: + if (this._instance === instance) return; this._instance = instance; this._callback?.(instance); this._promiseResolver?.(instance); }; public asPromise() { - return this._promise || (this._promise = new Promise((resolve) => { - this._instance ? resolve(this._instance) : (this._promiseResolver = resolve); - })); + return ( + this._promise || + (this._promise = new Promise((resolve) => { + this._instance ? resolve(this._instance) : (this._promiseResolver = resolve); + })) + ); } /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index be778585ad..dc71b0b20b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,6 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import { UmbRouteContext, UMB_ROUTE_CONTEXT_TOKEN } from '@umbraco-cms/router'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @@ -97,6 +98,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen private _urls: Array = []; private _modalContext?: UmbModalContext; + private _routeContext?: UmbRouteContext; constructor() { super(); @@ -114,6 +116,52 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { this._modalContext = instance; }); + + this.consumeContext(UMB_ROUTE_CONTEXT_TOKEN, (instance) => { + this._routeContext = instance; + + // Registre the routes of this UI: + // TODO: To avoid retriving the property alias, we might make use of the property context? + // Or maybe its not the property-alias, but something unique? as this might not be in a property?. + this._routeContext.registerModal(UMB_LINK_PICKER_MODAL_TOKEN, { + //path: `${'to-do-myPropertyAlias'}/:index`, + path: `modal`, + onSetup: (routeInfo) => { + // Get index from routeInfo: + const index = 0; + // Use the index to find data: + console.log('onSetup modal', routeInfo); + /* + modaldata = { + link: { + name: data?.name, + published: data?.published, + queryString: data?.queryString, + target: data?.target, + trashed: data?.trashed, + udi: data?.udi, + url: data?.url, + }, + config: { + hideAnchor: this.hideAnchor, + ignoreUserStartNodes: this.ignoreUserStartNodes, + overlaySize: this.overlaySize || 'small', + }, + }; + return modaldata; + */ + }, + onSubmit: (newUrl) => { + if (!newUrl) return; + + const index = 0; // TODO: get the index in some way?. + this._setSelection(newUrl, index); + }, + onReject: () => { + console.log('User cancelled dialog.'); + }, + }); + }); } private _removeItem(index: number) { diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index 75fd79f5e4..a6d871dbab 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,4 +1,5 @@ export * from 'router-slot'; +export * from './route.context'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 8fbb7cc61e..6b9fff800a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -1,9 +1,13 @@ -import { UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; +import { IRoute } from 'router-slot'; +import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalToken } from '@umbraco-cms/modal'; +// Get the second generic type of UmbModalToken: type GetResultType = T extends UmbModalToken ? Result : unknown; +const EmptyDiv = document.createElement('div'); + export type UmbModalRoute = { path: string; onSetup: (routeInfo: any) => void; @@ -13,18 +17,37 @@ export type UmbModalRoute = { export class UmbRouteContext { #host: UmbControllerHostInterface; + #contextRoutes: IRoute[] = []; - constructor(host: UmbControllerHostInterface) { + constructor(host: UmbControllerHostInterface, private _onGotModals: (contextRoutes: any) => void) { this.#host = host; new UmbContextProviderController(host, UMB_ROUTE_CONTEXT_TOKEN, this); + /*new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (context) => { + console.log('got a parent', this === context, this, context); + });*/ + + // Consider using this event, to stay up to date with current full-URL. which is necessary for Modal opening. + // window.addEventListener('navigationsuccess', this._onNavigationChanged); } public registerModal>( modalAlias: T, options: UmbModalRoute ) { - console.log('registerModalRoutee', modalAlias.toString(), options); + console.log('registerModalRoute', modalAlias.toString(), options); + + this.#contextRoutes.push({ + path: options.path, + component: EmptyDiv, + setup: (component, info) => { + console.log('modal open?', info); + options.onSetup(info); + }, + }); + + //TODO: move to a method: + this._onGotModals(this.#contextRoutes); } } -export const UMB_ROUTE_CONTEXT_TOKEN = new UmbContextToken('UmbSectionContext'); +export const UMB_ROUTE_CONTEXT_TOKEN = new UmbContextToken('UmbRouterContext'); diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 1269dcd227..f404efc65f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -1,9 +1,11 @@ import type { IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; -import { LitElement, PropertyValueMap } from 'lit'; +import { html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; +import { UmbRouteContext } from './route.context'; +import { UmbLitElement } from '@umbraco-cms/element'; /** * @element umb-router-slot-element @@ -13,8 +15,9 @@ import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; * @fires {UmbRouterSlotChangeEvent} change - fires when a path of this router is changed */ @customElement('umb-router-slot') -export class UmbRouterSlotElement extends LitElement { +export class UmbRouterSlotElement extends UmbLitElement { #router: RouterSlot = new RouterSlot(); + #modalRouter: RouterSlot = new RouterSlot(); #listening = false; @property() @@ -39,14 +42,26 @@ export class UmbRouterSlotElement extends LitElement { return this._routerPath + '/' + this._activeLocalPath; } + #routeContext = new UmbRouteContext(this, (contextRoutes) => { + (this.#modalRouter as any).routes = contextRoutes; + console.log(this.absoluteRouterPath, this.#router, this.#modalRouter, 'Router got context routes', contextRoutes); + // Force a render? + this.#modalRouter.render(); + }); + constructor() { super(); + this.#modalRouter.parent = this.#router; this.#router.addEventListener('changestate', this._onChangeState); - this.#router.appendChild(document.createElement('slot')); + //this.#router.appendChild(this.#modalRouter); + //this.#router.appendChild(document.createElement('slot')); } connectedCallback() { super.connectedCallback(); + // Currently we have to set this every time as RouteSlot looks for its parent every-time it is connected. Aka it has not way to explicitly set the parent. + // And we cannot insert the modal router as a slotted-child of the router, as it flushes its children on every route change. + this.#modalRouter.parent = this.#router; if (this.#listening === false) { window.addEventListener('navigationsuccess', this._onNavigationChanged); this.#listening = true; @@ -87,7 +102,7 @@ export class UmbRouterSlotElement extends LitElement { }; render() { - return this.#router; + return html`${this.#router}${this.#modalRouter}`; } } From b2828063c440815631e0a244c2df10c7a62b4be8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:02:36 +0100 Subject: [PATCH 036/550] throw errors when missing arguments --- .../repository/document-type.repository.ts | 84 ++++++------------- 1 file changed, 27 insertions(+), 57 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index db7805686b..0bf33feb4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -12,10 +12,6 @@ import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco type ItemType = DocumentTypeModel; -// Move to documentation / JSdoc -/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ -// element -> context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; @@ -114,24 +110,15 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe // DETAILS: async createScaffold(parentKey: string | null) { + if (!parentKey) throw new Error('Parent key is missing'); await this.#init; - - if (!parentKey) { - throw new Error('Parent key is missing'); - } - return this.#detailDataSource.createScaffold(parentKey); } async requestByKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; - // TODO: should we show a notification if the key is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } const { data, error } = await this.#detailDataSource.get(key); if (data) { @@ -142,69 +129,55 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe } async byKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; return this.#detailStore!.byKey(key); } async requestAllowedTypes(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; - - // TODO: should we show a notification if the key is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } - - const { data, error } = await this.#detailDataSource.getAllowedChildrenOf(key); - - return { data, error }; + return this.#detailDataSource.getAllowedChildrenOf(key); } // Could potentially be general methods: async create(template: ItemType) { + if (!template || !template.key) throw new Error('Template is missing'); await this.#init; - if (!template || !template.key) { - throw new Error('Template is missing'); - } - const { error } = await this.#detailDataSource.insert(template); if (!error) { const notification = { data: { message: `Document created` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - this.#detailStore?.append(template); - // TODO: Update tree store with the new item? or ask tree to request the new item? + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + this.#detailStore?.append(template); + // TODO: Update tree store with the new item? or ask tree to request the new item? + } return { error }; } async save(item: ItemType) { + if (!item || !item.key) throw new Error('Document-Type is missing'); await this.#init; - if (!item || !item.key) { - throw new Error('Document-Type is missing'); - } - const { error } = await this.#detailDataSource.update(item); if (!error) { const notification = { data: { message: `Document saved` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.key, { name: item.name }); - // TODO: would be nice to align the stores on methods/methodNames. + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + this.#detailStore?.append(item); + this.#treeStore?.updateItem(item.key, { name: item.name }); + // TODO: would be nice to align the stores on methods/methodNames. + } return { error }; } @@ -212,25 +185,22 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe // General: async delete(key: string) { + if (!key) throw new Error('Document key is missing'); await this.#init; - if (!key) { - throw new Error('Document key is missing'); - } - const { error } = await this.#detailDataSource.delete(key); if (!error) { const notification = { data: { message: `Document deleted` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server. - // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); - // TODO: would be nice to align the stores on methods/methodNames. + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a template is deleted from the store while someone is editing it. + this.#detailStore?.remove([key]); + this.#treeStore?.removeItem(key); + // TODO: would be nice to align the stores on methods/methodNames. + } return { error }; } From c94189ff2812045e03e89a9c9a8d6655e165be14 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:22:05 +0100 Subject: [PATCH 037/550] add conditions to collection view --- .../libs/extensions-registry/collection-view.models.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts index 7a5770e3fd..9a94a03c65 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts @@ -3,11 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestCollectionView extends ManifestElement { type: 'collectionView'; meta: MetaCollectionView; + conditions: ConditionsCollectionView; } export interface MetaCollectionView { label: string; icon: string; - entityType: string; pathName: string; } + +export interface ConditionsCollectionView { + entityType: string; +} From 299bd00e24a34e20f69d70c347633287f68b6f06 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:23:51 +0100 Subject: [PATCH 038/550] update collection view manifests --- .../documents/documents/collection/manifests.ts | 4 +++- .../shared/collection/collection-toolbar.element.ts | 2 +- .../shared/collection/collection.element.ts | 2 +- .../backoffice/shared/collection/views/manifests.ts | 12 +++++++++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts index 0942914f4a..46a81915a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts @@ -7,10 +7,12 @@ export const manifests: Array = [ name: 'Document Table Collection View', loader: () => import('./views/table/document-table-collection-view.element'), weight: 200, + conditions: { + entityType: 'document', + }, meta: { label: 'Table', icon: 'umb:box', - entityType: 'document', pathName: 'table', }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts index a3e6fcaa28..13a1c7e426 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts @@ -74,7 +74,7 @@ export class UmbCollectionToolbarElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('collectionView').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === 'media'); + return extensions.filter((extension) => extension.conditions.entityType === 'media'); }) ), (layouts) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts index 313aea4af4..5e1922a789 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts @@ -72,7 +72,7 @@ export class UmbCollectionElement extends UmbLitElement { // TODO: could we make some helper methods for this scenario: umbExtensionsRegistry?.extensionsOfType('collectionView').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this._entityType); + return extensions.filter((extension) => extension.conditions.entityType === this._entityType); }) ), (views) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts index 87f14782b3..e56717323b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts @@ -11,9 +11,11 @@ export const manifests: Array = [ meta: { label: 'Grid', icon: 'umb:grid', - entityType: 'media', pathName: 'grid', }, + conditions: { + entityType: 'media', + }, }, { type: 'collectionView', @@ -25,9 +27,11 @@ export const manifests: Array = [ meta: { label: 'Table', icon: 'umb:box', - entityType: 'media', pathName: 'table', }, + conditions: { + entityType: 'media', + }, }, { type: 'collectionView', @@ -39,8 +43,10 @@ export const manifests: Array = [ meta: { label: 'Test', icon: 'umb:newspaper', - entityType: 'media', pathName: 'test', }, + conditions: { + entityType: 'media', + }, }, ]; From 835425d8213368aae74eda2e5bc699428d4e8122 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:31:47 +0100 Subject: [PATCH 039/550] add conditions to collections and dashboards --- .../dashboard-collection.models.ts | 8 ++++-- .../extensions-registry/dashboard.models.ts | 6 +++- .../documents/dashboards/manifests.ts | 10 +++++-- .../src/backoffice/media/section.manifests.ts | 6 ++-- .../backoffice/members/section.manifests.ts | 4 ++- .../settings/dashboards/manifests.ts | 28 ++++++++++++++----- .../dashboard-collection.element.ts | 5 ++-- .../extension-slot/extension-slot.test.ts | 4 ++- .../section-dashboards.element.ts | 2 +- .../translation/section.manifest.ts | 4 ++- 10 files changed, 55 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts index b41add8d85..3255547b42 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard-collection.models.ts @@ -3,12 +3,16 @@ import type { ManifestBase } from './models'; export interface ManifestDashboardCollection extends ManifestBase { type: 'dashboardCollection'; meta: MetaDashboardCollection; + conditions: ConditionsDashboardCollection; } export interface MetaDashboardCollection { - sections: string[]; pathname: string; label?: string; - entityType: string; repositoryAlias: string; } + +export interface ConditionsDashboardCollection { + sections: string[]; + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts index 70bb0d379d..d4803e5c97 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts @@ -3,10 +3,14 @@ import type { ManifestElement } from './models'; export interface ManifestDashboard extends ManifestElement { type: 'dashboard'; meta: MetaDashboard; + conditions: ConditionsDashboard; } export interface MetaDashboard { - sections: string[]; pathname: string; label?: string; } + +export interface ConditionsDashboard { + sections: string[]; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts index c56e2a1154..6ebc283a4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts @@ -9,9 +9,11 @@ const dashboards: Array = [ weight: 10, meta: { label: 'Redirect Management', - sections: ['Umb.Section.Content'], pathname: 'redirect-management', }, + conditions: { + sections: ['Umb.Section.Content'], + }, }, { type: 'dashboard', @@ -21,10 +23,12 @@ const dashboards: Array = [ weight: 20, meta: { label: 'Welcome', - sections: ['Umb.Section.Content'], pathname: 'welcome', }, - } + conditions: { + sections: ['Umb.Section.Content'], + }, + }, ]; export const manifests = [...dashboards]; 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 9ba71485a5..26e1ec52e2 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 @@ -22,11 +22,13 @@ const dashboards: Array = [ weight: 10, meta: { label: 'Media', - sections: [sectionAlias], pathname: 'media-management', - entityType: 'media', repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + sections: [sectionAlias], + entityType: 'media', + }, }, ]; 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 bfc8719566..c9d79effba 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 @@ -22,9 +22,11 @@ const dashboards: Array = [ loader: () => import('./dashboards/welcome/dashboard-members-welcome.element'), meta: { label: 'Members', - sections: [sectionAlias], pathname: 'members', }, + conditions: { + sections: [sectionAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts index f3475347ba..45891534c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts @@ -10,9 +10,11 @@ const dashboards: Array = [ weight: 500, meta: { label: 'Welcome', - sections: ['Umb.Section.Settings'], pathname: 'welcome', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -23,9 +25,11 @@ const dashboards: Array = [ weight: 400, meta: { label: 'Examine Management', - sections: ['Umb.Section.Settings'], pathname: 'examine-management', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -36,9 +40,11 @@ const dashboards: Array = [ weight: 300, meta: { label: 'Models Builder', - sections: ['Umb.Section.Settings'], pathname: 'models-builder', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -49,9 +55,11 @@ const dashboards: Array = [ weight: 200, meta: { label: 'Published Status', - sections: ['Umb.Section.Settings'], pathname: 'published-status', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -62,9 +70,11 @@ const dashboards: Array = [ weight: 102, meta: { label: 'Health Check', - sections: ['Umb.Section.Settings'], pathname: 'health-check', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -75,9 +85,11 @@ const dashboards: Array = [ weight: 101, meta: { label: 'Profiling', - sections: ['Umb.Section.Settings'], pathname: 'profiling', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, { type: 'dashboard', @@ -88,9 +100,11 @@ const dashboards: Array = [ weight: 100, meta: { label: 'Telemetry Data', - sections: ['Umb.Section.Settings'], pathname: 'telemetry', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index d34573e22e..8c98fcf4a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -36,9 +36,8 @@ export class UmbDashboardCollectionElement extends UmbLitElement { super.connectedCallback(); if (!this._collectionContext) { - const manifestMeta = this.manifest.meta; - const repositoryAlias = manifestMeta.repositoryAlias; - this._entityType = manifestMeta.entityType; + const repositoryAlias = this.manifest.meta.repositoryAlias; + this._entityType = this.manifest.conditions.entityType; this._collectionContext = new UmbCollectionContext(this, this._entityType, null, '', repositoryAlias); this.provideContext(UMB_COLLECTION_CONTEXT_TOKEN, this._collectionContext); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts index b9d6afd8ba..1030779e98 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts @@ -54,9 +54,11 @@ describe('UmbExtensionSlotElement', () => { name: 'unit-test-extension', elementName: 'test-extension-slot-manifest-element', meta: { - sections: ['test'], pathname: 'test/test', }, + conditions: { + sections: ['test'], + }, }); }); 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 fdd455c893..87872bc289 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 @@ -94,7 +94,7 @@ export class UmbSectionDashboardsElement extends UmbLitElement { ?.extensionsOfTypes(['dashboard', 'dashboardCollection']) .pipe( map((extensions) => - extensions.filter((extension) => extension.meta.sections.includes(this._currentSectionAlias ?? '')) + extensions.filter((extension) => extension.conditions.sections.includes(this._currentSectionAlias ?? '')) ) ), (dashboards) => { 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 aeaee59e29..6d96223f88 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 @@ -34,9 +34,11 @@ const dashboards: Array = [ loader: () => import('./dashboards/dictionary/dashboard-translation-dictionary.element'), meta: { label: 'Dictionary overview', - sections: [sectionAlias], pathname: '', }, + conditions: { + sections: [sectionAlias], + }, }, ]; From 887bdd64a2dc5e01e2e1a747118bc929f6c94578 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:40:36 +0100 Subject: [PATCH 040/550] add conditions to entity action --- .../entity-action.models.ts | 6 ++- .../documents/entity-actions/manifests.ts | 48 ++++++++++++++----- .../media-types/entity-actions/manifests.ts | 20 ++++++-- .../media/media/entity-actions/manifests.ts | 4 +- .../member-groups/entity-actions/manifests.ts | 4 +- .../member-types/entity-actions/manifests.ts | 4 +- .../members/entity-actions/manifests.ts | 4 +- .../languages/entity-actions/manifests.ts | 4 +- .../entity-action-list.element.ts | 2 +- .../components/tree/tree-item.element.ts | 2 +- .../templates/entity-actions/manifests.ts | 8 +++- .../dictionary/entity-actions/manifests.ts | 24 +++++++--- .../src/stories/extending/entity-actions.mdx | 4 +- 13 files changed, 100 insertions(+), 34 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts index ddc7e5363b..dbea8f833f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-action.models.ts @@ -3,12 +3,16 @@ import type { ManifestElement } from './models'; export interface ManifestEntityAction extends ManifestElement { type: 'entityAction'; meta: MetaEntityAction; + conditions: ConditionsEntityAction; } export interface MetaEntityAction { icon?: string; label: string; - entityType: string; api: any; // create interface repositoryAlias: string; } + +export interface ConditionsEntityAction { + entityType: string; +} 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 3ae95fe8ee..2c7cbab501 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 @@ -24,12 +24,14 @@ const entityActions: Array = [ name: 'Create Document Entity Action', weight: 1000, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCreateDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -37,12 +39,14 @@ const entityActions: Array = [ name: 'Trash Document Entity Action', weight: 900, meta: { - entityType, icon: 'umb:trash', label: 'Trash', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbTrashEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -50,12 +54,14 @@ const entityActions: Array = [ name: 'Create Document Blueprint Entity Action', weight: 800, meta: { - entityType, icon: 'umb:blueprint', label: 'Create Content Template', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCreateDocumentBlueprintEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -63,12 +69,14 @@ const entityActions: Array = [ name: 'Move Document Entity Action', weight: 700, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -76,12 +84,14 @@ const entityActions: Array = [ name: 'Copy Document Entity Action', weight: 600, meta: { - entityType, icon: 'umb:documents', label: 'Copy', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbCopyEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -89,12 +99,14 @@ const entityActions: Array = [ name: 'Sort Document Entity Action', weight: 500, meta: { - entityType, icon: 'umb:navigation-vertical', label: 'Sort', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbSortChildrenOfEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -102,72 +114,84 @@ const entityActions: Array = [ name: 'Culture And Hostnames Document Entity Action', weight: 400, meta: { - entityType, icon: 'umb:home', label: 'Culture And Hostnames', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentCultureAndHostnamesEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Permissions', name: 'Document Permissions Entity Action', meta: { - entityType, icon: 'umb:vcard', label: 'Permissions', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentPermissionsEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.PublicAccess', name: 'Document Permissions Entity Action', meta: { - entityType, icon: 'umb:lock', label: 'Public Access', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentPublicAccessEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Publish', name: 'Publish Document Entity Action', meta: { - entityType, icon: 'umb:globe', label: 'Publish', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbPublishDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Unpublish', name: 'Unpublish Document Entity Action', meta: { - entityType, icon: 'umb:globe', label: 'Unpublish', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbUnpublishDocumentEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Document.Rollback', name: 'Rollback Document Entity Action', meta: { - entityType, icon: 'umb:undo', label: 'Rollback', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbRollbackDocumentEntityAction, }, + conditions: { + entityType, + }, }, ]; 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 cd094dcd3d..8970c9af81 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 @@ -14,12 +14,14 @@ const entityActions: Array = [ name: 'Create Media Type Entity Action', weight: 500, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias, api: UmbCreateMediaTypeEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -27,12 +29,14 @@ const entityActions: Array = [ name: 'Move Media Type Entity Action', weight: 400, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -40,12 +44,14 @@ const entityActions: Array = [ name: 'Copy Media Type Entity Action', weight: 300, meta: { - entityType, icon: 'umb:documents', label: 'Copy', repositoryAlias, api: UmbCopyEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -53,12 +59,14 @@ const entityActions: Array = [ name: 'Delete Media Type Entity Action', weight: 200, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -66,12 +74,14 @@ const entityActions: Array = [ name: 'Reload Media Type Entity Action', weight: 100, meta: { - entityType, icon: 'umb:refresh', label: 'Reload', repositoryAlias, api: UmbReloadMediaTypeEntityAction, }, + conditions: { + entityType, + }, }, ]; 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 e34ec47335..10d74bb1ae 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 @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Media.Trash', name: 'Trash Media Entity Action ', meta: { - entityType: 'media', icon: 'umb:trash', label: 'Trash', api: UmbTrashEntityAction, repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'media', + }, }, ]; 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 e132cc6f8f..35d0341dbb 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 @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.MemberGroup.Delete', name: 'Delete Member Group Entity Action ', meta: { - entityType: 'member-group', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: MEMBER_GROUP_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'member-group', + }, }, ]; 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 71e673d409..b569d782c6 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 @@ -12,12 +12,14 @@ const entityActions: Array = [ name: 'Delete Member Type Entity Action', weight: 100, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; 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 57654c41d0..cef15f5563 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 @@ -8,12 +8,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Member.Delete', name: 'Delete Member Entity Action ', meta: { - entityType: 'member', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: MEMBER_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'member', + }, }, ]; 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 7852f3e09c..b9dd61f2b9 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 @@ -10,12 +10,14 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Language.Delete', name: 'Delete Language Entity Action', meta: { - entityType, repositoryAlias: LANGUAGE_REPOSITORY_ALIAS, icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts index 920b3b91f5..6b1f0d61b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts @@ -32,7 +32,7 @@ class UmbEntityActionListElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('entityAction').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this.entityType); + return extensions.filter((extension) => extension.conditions.entityType === this.entityType); }) ), (actions) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts index f64476795e..7565ff860d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts @@ -153,7 +153,7 @@ export class UmbTreeItem extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfType('entityAction') - .pipe(map((actions) => actions.filter((action) => action.meta.entityType === this._entityType))), + .pipe(map((actions) => actions.filter((action) => action.conditions.entityType === this._entityType))), (actions) => { this._hasActions = actions.length > 0; } 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 eead35cbed..9ae77ff254 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 @@ -9,24 +9,28 @@ const entityActions: Array = [ alias: 'Umb.EntityAction.Template.Create', name: 'Create Template Entity Action', meta: { - entityType: 'template', icon: 'umb:add', label: 'Create', api: UmbCreateEntityAction, repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'template', + }, }, { type: 'entityAction', alias: 'Umb.EntityAction.Template.Delete', name: 'Delete Template Entity Action', meta: { - entityType: 'template', icon: 'umb:trash', label: 'Delete', api: UmbDeleteEntityAction, repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, }, + conditions: { + entityType: 'template', + }, }, ]; 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 7e75f56e94..2164157fed 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 @@ -16,12 +16,14 @@ const entityActions: Array = [ name: 'Create Dictionary Entity Action', weight: 600, meta: { - entityType, icon: 'umb:add', label: 'Create', repositoryAlias, api: UmbCreateDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -29,12 +31,14 @@ const entityActions: Array = [ name: 'Move Dictionary Entity Action', weight: 500, meta: { - entityType, icon: 'umb:enter', label: 'Move', repositoryAlias, api: UmbMoveEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -42,12 +46,14 @@ const entityActions: Array = [ name: 'Export Dictionary Entity Action', weight: 400, meta: { - entityType, icon: 'umb:download-alt', label: 'Export', repositoryAlias, api: UmbExportDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -55,12 +61,14 @@ const entityActions: Array = [ name: 'Import Dictionary Entity Action', weight: 300, meta: { - entityType, icon: 'umb:page-up', label: 'Import', repositoryAlias, api: UmbImportDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -68,12 +76,14 @@ const entityActions: Array = [ name: 'Reload Dictionary Entity Action', weight: 200, meta: { - entityType, icon: 'umb:refresh', label: 'Reload', repositoryAlias, api: UmbReloadDictionaryEntityAction, }, + conditions: { + entityType, + }, }, { type: 'entityAction', @@ -81,12 +91,14 @@ const entityActions: Array = [ name: 'Delete Dictionary Entity Action', weight: 100, meta: { - entityType, icon: 'umb:trash', label: 'Delete', repositoryAlias, api: UmbDeleteEntityAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx index e7847203d0..20dc016474 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx @@ -64,12 +64,14 @@ const manifest = { name: 'My Entity Action', weight: 10, meta: { - entityType: 'my-entity', icon: 'umb:add', label: 'My Entity Action', repositoryAlias: 'My.Repository', api: MyEntityAction, }, + conditions: { + entityType: 'my-entity', + }, }; extensionRegistry.register(manifest); From 00ce3b027504d5ed76cf66001943c1941d61d95f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:43:05 +0100 Subject: [PATCH 041/550] add conditions to bulk action manifest --- .../extensions-registry/entity-bulk-action.models.ts | 6 +++++- .../documents/entity-bulk-actions/manifests.ts | 8 ++++++-- .../media/media/entity-bulk-actions/manifests.ts | 12 +++++++++--- .../collection-selection-actions.element.ts | 2 +- .../src/stories/extending/entity-actions.mdx | 4 +++- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts index 51db3ce5fe..b2e8900754 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts @@ -3,11 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestEntityBulkAction extends ManifestElement { type: 'entityBulkAction'; meta: MetaEntityBulkAction; + conditions: ConditionsEntityBulkAction; } export interface MetaEntityBulkAction { label: string; - entityType: string; api: any; // create interface repositoryAlias: string; } + +export interface ConditionsEntityBulkAction { + entityType: string; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts index 7edd0952e3..b7032e2bc7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts @@ -12,11 +12,13 @@ const entityActions: Array = [ name: 'Move Document Entity Bulk Action', weight: 10, meta: { - entityType, label: 'Move', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -24,11 +26,13 @@ const entityActions: Array = [ name: 'Copy Document Entity Bulk Action', weight: 9, meta: { - entityType, label: 'Copy', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, api: UmbDocumentCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts index 86b84b2856..a7159898b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts @@ -13,11 +13,13 @@ const entityActions: Array = [ name: 'Move Media Entity Bulk Action', weight: 100, meta: { - entityType, label: 'Move', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaMoveEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -25,11 +27,13 @@ const entityActions: Array = [ name: 'Copy Media Entity Bulk Action', weight: 90, meta: { - entityType, label: 'Copy', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaCopyEntityBulkAction, }, + conditions: { + entityType, + }, }, { type: 'entityBulkAction', @@ -37,11 +41,13 @@ const entityActions: Array = [ name: 'Trash Media Entity Bulk Action', weight: 80, meta: { - entityType, label: 'Trash', repositoryAlias: MEDIA_REPOSITORY_ALIAS, api: UmbMediaTrashEntityBulkAction, }, + conditions: { + entityType, + }, }, ]; 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 099877a7b1..0b663112f6 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 @@ -94,7 +94,7 @@ export class UmbCollectionSelectionActionsElement extends UmbLitElement { this.observe( umbExtensionsRegistry.extensionsOfType('entityBulkAction').pipe( map((extensions) => { - return extensions.filter((extension) => extension.meta.entityType === this.entityType); + return extensions.filter((extension) => extension.conditions.entityType === this.entityType); }) ), (bulkActions) => { diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx index 20dc016474..3298aabe03 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/entity-actions.mdx @@ -157,12 +157,14 @@ const manifest = { name: 'My Entity Bulk Action', weight: 10, meta: { - entityType: 'my-entity', icon: 'umb:add', label: 'My Entity Bulk Action', repositoryAlias: 'My.Repository', api: MyEntityBulkAction, }, + conditions: { + entityType: 'my-entity', + }, }; extensionRegistry.register(manifest); From 520bda84abd79a9171adb202e64208908cc9ad2f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:47:58 +0100 Subject: [PATCH 042/550] add conditions to menu item --- .../libs/extensions-registry/menu-item.models.ts | 6 +++++- .../documents/document-blueprints/menu-item/manifests.ts | 4 +++- .../documents/document-types/menu-item/manifests.ts | 2 ++ .../documents/documents/sidebar-menu-item/manifests.ts | 2 ++ .../src/backoffice/media/media-types/menu-item/manifests.ts | 2 ++ .../src/backoffice/media/media/menu-item/manifests.ts | 2 ++ .../backoffice/members/member-groups/menu-item/manifests.ts | 2 ++ .../backoffice/members/member-types/menu-item/manifests.ts | 2 ++ .../src/backoffice/members/members/menu-item/manifests.ts | 2 ++ .../backoffice/settings/data-types/menu-item/manifests.ts | 2 ++ .../backoffice/settings/extensions/menu-item/manifests.ts | 2 ++ .../backoffice/settings/languages/menu-item/manifests.ts | 2 ++ .../backoffice/settings/logviewer/menu-item/manifests.ts | 2 ++ .../backoffice/templating/templates/menu-item/manifests.ts | 2 ++ .../translation/dictionary/menu-item/manifests.ts | 2 ++ 15 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts index 783713e834..56c81a7de8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts @@ -3,11 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestMenuItem extends ManifestElement { type: 'menuItem'; meta: MetaMenuItem; + conditions: ConditionsMenuItem; } export interface MetaMenuItem { label: string; icon: string; - menus: Array; entityType?: string; } + +export interface ConditionsMenuItem { + menus: Array; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts index 976c314278..fba786754b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts @@ -8,9 +8,11 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Document Blueprints', icon: 'umb:blueprint', - menus: ['Umb.Menu.Settings'], entityType: 'document-blueprint-root', }, + conditions: { + menus: ['Umb.Menu.Settings'], + }, }; export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index a74b49aab2..fd1020a010 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Document Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; 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 e4bfc4a260..06754de189 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 @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Documents', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Content'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index 5cb7de2e11..cdbdf67653 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Media Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts index e4287b17f3..337bb74407 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Media', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Media'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index cccc4c0247..e9880b658f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Member Groups', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Members'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 02892c46d9..02c64aa21a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { meta: { label: 'Member Types', icon: 'umb:folder', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index 4ab22621b1..375f8a5ac5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Members', icon: 'umb:folder', entityType: 'member', + }, + conditions: { menus: ['Umb.Menu.Members'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 25eb1fdef7..75408bab4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Data Types', icon: 'umb:folder', entityType: 'data-type', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts index aa8ba20a12..82c1c4b7a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Extensions', icon: 'umb:wand', entityType: 'extension-root', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts index 258f0a95c1..55fc1b1c0c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Languages', icon: 'umb:globe', entityType: 'language-root', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts index 558df963b7..160e8e0a5c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts @@ -9,6 +9,8 @@ const menuItem: ManifestMenuItem = { label: 'Log Viewer', icon: 'umb:box-alt', entityType: 'logviewer', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts index 1f84068f1d..6ae9d7ce71 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Templates', icon: 'umb:folder', entityType: 'template', + }, + conditions: { menus: ['Umb.Menu.Templating'], }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts index c62856cc82..03f15f69a3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Dictionary', icon: 'umb:book-alt', entityType: 'dictionary-item', + }, + conditions: { menus: ['Umb.Menu.Dictionary'], }, }; From a4db26de7d034cb370cff30d489d13f0987bcdd7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:50:48 +0100 Subject: [PATCH 043/550] add conditions to property actions manifest --- .../libs/extensions-registry/property-action.models.ts | 4 ++-- .../src/backoffice/shared/property-actions/manifests.ts | 4 ++-- .../property-action-menu/property-action-menu.element.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts index 640849b9d7..26148f2da9 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts @@ -2,9 +2,9 @@ import type { ManifestElement } from './models'; export interface ManifestPropertyAction extends ManifestElement { type: 'propertyAction'; - meta: MetaPropertyAction; + conditions: ConditionsPropertyAction; } -export interface MetaPropertyAction { +export interface ConditionsPropertyAction { propertyEditors: string[]; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts index 1b5a1b4307..cb7ae924dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/manifests.ts @@ -6,7 +6,7 @@ export const manifests: Array = [ alias: 'Umb.PropertyAction.Copy', name: 'Copy Property Action', loader: () => import('./copy/property-action-copy.element'), - meta: { + conditions: { propertyEditors: ['Umb.PropertyEditorUI.TextBox'], }, }, @@ -15,7 +15,7 @@ export const manifests: Array = [ alias: 'Umb.PropertyAction.Clear', name: 'Clear Property Action', loader: () => import('./clear/property-action-clear.element'), - meta: { + conditions: { propertyEditors: ['Umb.PropertyEditorUI.TextBox'], }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts index 1320ed1f17..ccaf533fdb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.element.ts @@ -78,7 +78,7 @@ export class UmbPropertyActionMenuElement extends UmbLitElement { this._actionsObserver = this.observe( umbExtensionsRegistry.extensionsOfType('propertyAction').pipe( map((propertyActions) => { - return propertyActions.filter((propertyAction) => propertyAction.meta.propertyEditors.includes(alias)); + return propertyActions.filter((propertyAction) => propertyAction.conditions.propertyEditors.includes(alias)); }) ), (manifests) => { From a2f6a4cdcc94bfca86c768558903e54456f2f915 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 20:59:55 +0100 Subject: [PATCH 044/550] add conditions to sidebar apps --- .../extensions-registry/section-sidebar-app.models.ts | 7 ++++--- .../src/backoffice/documents/section.manifests.ts | 4 +++- .../src/backoffice/media/section.manifests.ts | 4 +++- .../src/backoffice/members/section.manifests.ts | 4 +++- .../settings/languages/app-language-select/manifests.ts | 2 +- .../src/backoffice/settings/section.manifests.ts | 4 +++- .../src/backoffice/shared/components/menu/menu.element.ts | 2 +- .../shared/components/section/section.element.ts | 8 +++++--- .../src/backoffice/templating/menu.manifests.ts | 4 +++- .../src/backoffice/translation/section.manifest.ts | 4 +++- 10 files changed, 29 insertions(+), 14 deletions(-) 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 544e64021e..f4f6848d02 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 @@ -2,10 +2,10 @@ import type { ManifestElement } from './models'; export interface ManifestSectionSidebarApp extends ManifestElement { type: 'sectionSidebarApp'; - meta: MetaSectionSidebarApp; + conditions: ConditionsSectionSidebarApp; } -export interface MetaSectionSidebarApp { +export interface ConditionsSectionSidebarApp { sections: Array; } @@ -13,9 +13,10 @@ export interface MetaSectionSidebarApp { export interface ManifestMenuSectionSidebarApp extends ManifestElement { type: 'menuSectionSidebarApp'; meta: MetaMenuSectionSidebarApp; + conditions: ConditionsSectionSidebarApp; } -export interface MetaMenuSectionSidebarApp extends MetaSectionSidebarApp { +export interface MetaMenuSectionSidebarApp { label: string; 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 d8919a3689..a50e038ea8 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 @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Content', - sections: [sectionAlias], menu: 'Umb.Menu.Content', }, + conditions: { + sections: [sectionAlias], + }, }; 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 26e1ec52e2..c11cb83ab3 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 @@ -39,9 +39,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Media', - sections: [sectionAlias], menu: 'Umb.Menu.Media', }, + conditions: { + sections: [sectionAlias], + }, }; 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 c9d79effba..50b4a5b254 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 @@ -37,9 +37,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Members', - sections: [sectionAlias], menu: 'Umb.Menu.Members', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp, ...dashboards]; 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 345c971563..874da97023 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 @@ -6,7 +6,7 @@ const entityActions: Array = [ alias: 'Umb.SectionSidebarItem.LanguageSelect', name: 'App Language Select Section Sidebar Item', loader: () => import('./app-language-select.element'), - meta: { + conditions: { sections: ['Umb.Section.Content'], }, }, 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 90b8cb4a4c..c3a5633155 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 @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Settings', - sections: [sectionAlias], menu: 'Umb.Menu.Settings', }, + conditions: { + sections: [sectionAlias], + }, }; export const manifests = [section, menuSectionSidebarApp]; 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 index 6e5e62bbd6..86dffedd6f 100644 --- 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 @@ -16,7 +16,7 @@ export class UmbMenuElement extends UmbLitElement { render() { return html` items.meta.menus.includes(this.manifest!.alias)} + .filter=${(items: ManifestMenuItem) => items.conditions.menus.includes(this.manifest!.alias)} default-element="umb-menu-item">`; } } 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 1b211a40b9..47092599fa 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 @@ -78,7 +78,9 @@ export class UmbSectionElement extends UmbLitElement { this.observe( umbExtensionsRegistry ?.extensionsOfType('menuSectionSidebarApp') - .pipe(map((manifests) => manifests.filter((manifest) => manifest.meta.sections.includes(sectionAlias)))), + .pipe( + map((manifests) => manifests.filter((manifest) => manifest.conditions.sections.includes(sectionAlias))) + ), (manifests) => { this._menus = manifests; } @@ -198,12 +200,12 @@ export class UmbSectionElement extends UmbLitElement { - items.meta.sections.includes(this._sectionAlias || '')}> + items.conditions.sections.includes(this._sectionAlias || '')}> - items.meta.sections.includes(this._sectionAlias || '')} + items.conditions.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 700ff9b7be..cf14f344c1 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 @@ -16,9 +16,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Templating', - sections: ['Umb.Section.Settings'], menu: 'Umb.Menu.Templating', }, + conditions: { + sections: ['Umb.Section.Settings'], + }, }; 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 6d96223f88..59be737e0d 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 @@ -20,9 +20,11 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { weight: 100, meta: { label: 'Dictionary', - sections: [sectionAlias], menu: 'Umb.Menu.Dictionary', }, + conditions: { + sections: [sectionAlias], + }, }; const dashboards: Array = [ From c943c1d061c54638a264ccc1380ac76ef3f10363 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 21:04:50 +0100 Subject: [PATCH 045/550] add conditions to section view manifest --- .../section-view.models.ts | 7 +++- .../packages/package-section/manifests.ts | 18 +++++--- .../section-views/section-views.element.ts | 41 ++++++++++--------- .../components/section/section.element.ts | 8 ++-- .../users/user-section/manifests.ts | 12 ++++-- 5 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts index 37c59c90ba..59f08909cc 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts @@ -3,12 +3,15 @@ import type { ManifestElement } from './models'; export interface ManifestSectionView extends ManifestElement { type: 'sectionView'; meta: MetaSectionView; + conditions: ConditionsSectionView; } export interface MetaSectionView { - sections: Array; label: string; pathname: string; - weight: number; icon: string; } + +export interface ConditionsSectionView { + sections: Array; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts index 8272eb0470..c67ff995cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts @@ -19,39 +19,45 @@ const sectionsViews: Array = [ alias: 'Umb.SectionView.Packages.Repo', name: 'Packages Repo Section View', loader: () => import('./views/market-place/packages-market-place-section-view.element'), + weight: 300, meta: { - sections: [sectionAlias], label: 'Packages', pathname: 'packages', - weight: 300, icon: 'umb:cloud', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Packages.Installed', name: 'Installed Packages Section View', loader: () => import('./views/installed/installed-packages-section-view.element'), + weight: 200, meta: { - sections: [sectionAlias], label: 'Installed', pathname: 'installed', - weight: 200, icon: 'umb:box', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Packages.Builder', name: 'Packages Builder Section View', loader: () => import('./views/created/created-packages-section-view.element'), + weight: 100, meta: { - sections: [sectionAlias], label: 'Created', pathname: 'created', - weight: 100, icon: 'umb:files', }, + conditions: { + sections: [sectionAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index fe8129400f..44150aecff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -60,34 +60,37 @@ export class UmbSectionViewsElement extends UmbLitElement { private _observeViews() { if (!this._sectionContext) return; - this.observe(this._sectionContext.alias, (sectionAlias) => { - this._observeExtensions(sectionAlias); - }, 'viewsObserver') + this.observe( + this._sectionContext.alias, + (sectionAlias) => { + this._observeExtensions(sectionAlias); + }, + 'viewsObserver' + ); } private _observeExtensions(sectionAlias?: string) { this._extensionsObserver?.destroy(); - if(sectionAlias) { + if (sectionAlias) { this._extensionsObserver = this.observe( - umbExtensionsRegistry?.extensionsOfType('sectionView').pipe( - map((views) => - views - .filter((view) => view.meta.sections.includes(sectionAlias)) - .sort((a, b) => b.meta.weight - a.meta.weight) - ) - ) ?? of([]) - , - (views) => { - this._views = views; - } + umbExtensionsRegistry + ?.extensionsOfType('sectionView') + .pipe(map((views) => views.filter((view) => view.conditions.sections.includes(sectionAlias)))) ?? of([]), + (views) => { + this._views = views; + } ); } } private _observeActiveView() { - if(this._sectionContext) { - this.observe(this._sectionContext?.activeViewPathname, (pathname) => { - this._activeViewPathname = pathname; - }, 'activeViewPathnameObserver'); + if (this._sectionContext) { + this.observe( + this._sectionContext?.activeViewPathname, + (pathname) => { + this._activeViewPathname = pathname; + }, + 'activeViewPathnameObserver' + ); } } 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 47092599fa..c66880ec0e 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 @@ -154,11 +154,9 @@ export class UmbSectionElement extends UmbLitElement { private _observeViews() { this.observe(umbExtensionsRegistry?.extensionsOfType('sectionView'), (views) => { - const sectionViews = views - .filter((view) => { - return this._sectionAlias ? view.meta.sections.includes(this._sectionAlias) : false; - }) - .sort((a, b) => b.meta.weight - a.meta.weight); + const sectionViews = views.filter((view) => { + return this._sectionAlias ? view.conditions.sections.includes(this._sectionAlias) : false; + }); if (sectionViews.length > 0) { this._views = sectionViews; this._createViewRoutes(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts index 227eb3bb15..c1ab8f5cd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/manifests.ts @@ -19,26 +19,30 @@ const sectionsViews: Array = [ alias: 'Umb.SectionView.Users.Users', name: 'Users Section View', loader: () => import('./views/users/section-view-users.element'), + weight: 200, meta: { - sections: [sectionAlias], label: 'Users', pathname: 'users', - weight: 200, icon: 'umb:user', }, + conditions: { + sections: [sectionAlias], + }, }, { type: 'sectionView', alias: 'Umb.SectionView.Users.UserGroups', name: 'User Groups Section View', loader: () => import('./views/user-groups/section-view-user-groups.element'), + weight: 100, meta: { - sections: [sectionAlias], label: 'User Groups', pathname: 'user-groups', - weight: 100, icon: 'umb:users', }, + conditions: { + sections: [sectionAlias], + }, }, ]; From 5f4d3552d8282907710bd2ef0286363a32757b8f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 21:08:12 +0100 Subject: [PATCH 046/550] add conditions to workspace action manifest --- .../document-types/workspace/manifests.ts | 4 +++- .../documents/documents/workspace/manifests.ts | 16 ++++++++++++---- .../media/media/workspace/manifests.ts | 4 +++- .../members/member-groups/workspace/manifests.ts | 4 +++- .../settings/data-types/workspace/manifests.ts | 4 +++- .../languages/workspace/language/manifests.ts | 4 +++- .../templating/templates/workspace/manifests.ts | 4 +++- .../dictionary/workspace/manifests.ts | 4 +++- .../workspace/user-group-workspace.element.ts | 4 +++- .../users/users/workspace/manifests.ts | 4 +++- .../src/stories/extending/workspaces/actions.mdx | 4 +++- 11 files changed, 42 insertions(+), 14 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 114efb3e7e..ea80ac1857 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 @@ -33,12 +33,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.DocumentType.Save', name: 'Save Document Type Workspace Action', meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, ]; 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 be404bc875..9da05642a7 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 @@ -77,12 +77,14 @@ const workspaceActions: Array = [ name: 'Save And Publish Document Workspace Action', weight: 100, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Publish', look: 'primary', color: 'positive', api: UmbDocumentSaveAndPublishWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -90,11 +92,13 @@ const workspaceActions: Array = [ name: 'Save Document Workspace Action', weight: 90, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save', look: 'secondary', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -102,10 +106,12 @@ const workspaceActions: Array = [ name: 'Save And Preview Document Workspace Action', weight: 80, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Preview', api: UmbDocumentSaveAndPreviewWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceAction', @@ -113,10 +119,12 @@ const workspaceActions: Array = [ name: 'Save And Schedule Document Workspace Action', weight: 70, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Save And Schedule', api: UmbSaveAndScheduleDocumentWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, ]; 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 3c363283c7..38e0ddb8a4 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,12 +71,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Media.Save', name: 'Save Media Workspace Action', meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; 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 74c4fd94d3..a46364d6aa 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 @@ -33,12 +33,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.MemberGroup.SaveAndPublish', name: 'Save Member Group Workspace Action', meta: { - workspaces: ['Umb.Workspace.MemberGroup'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; 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 f23cb76d4e..c48647993d 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 @@ -46,12 +46,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.DataType.Save', name: 'Save Data Type Workspace Action', meta: { - workspaces: ['Umb.Workspace.DataType'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; 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 94bc97a049..38af5e4e8f 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 @@ -34,12 +34,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.Language.Save', name: 'Save Language Workspace Action', meta: { - workspaces: ['Umb.Workspace.Language'], look: 'primary', color: 'positive', label: 'Save', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Language'], + }, }, ]; 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 6330096a9c..efdf248d95 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 @@ -23,10 +23,12 @@ const workspaceActions: Array = [ meta: { look: 'primary', color: 'positive', - workspaces: ['Umb.Workspace.Template'], label: 'Save', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.Template'], + }, }, ]; 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 38d81ac4bb..dccdeef6af 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 @@ -37,12 +37,14 @@ const workspaceActions: Array = [ name: 'Save Dictionary Workspace Action', weight: 90, meta: { - workspaces: ['Umb.Workspace.Dictionary'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['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 733034d8a4..3b7ceeef31 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 @@ -225,12 +225,14 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo alias: 'Umb.WorkspaceAction.UserGroup.Save', name: 'Save User Group Workspace Action', meta: { - workspaces: ['Umb.Workspace.UserGroup'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.UserGroup'], + }, }, ]; 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 eeb5c42f4b..2193225a7b 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 @@ -18,12 +18,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.User.Save', name: 'Save User Workspace Action', meta: { - workspaces: ['Umb.Workspace.User'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.User'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx index 994c52edd7..ffb2564407 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/workspaces/actions.mdx @@ -26,10 +26,12 @@ const manifest = { alias: 'My.WorkspaceAction', name: 'My Workspace Action', meta: { - workspaces: ['My.Workspace'], label: 'My Action', api: MyWorkspaceAction, }, + conditions: { + workspaces: ['My.Workspace'], + }, }; extensionRegistry.register(manifest); From f0f094b736f4a4cf2357199e9a52cd11c609dbd8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 21:09:15 +0100 Subject: [PATCH 047/550] filter on conditions --- .../libs/extensions-registry/workspace-action.models.ts | 6 +++++- .../workspace-footer-layout.element.ts | 2 +- 2 files changed, 6 insertions(+), 2 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 b18c358d5f..2ba63ea647 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 @@ -6,12 +6,16 @@ import type { ClassConstructor } from '@umbraco-cms/models'; export interface ManifestWorkspaceAction extends ManifestElement { type: 'workspaceAction'; meta: MetaWorkspaceAction; + conditions: ConditionsWorkspaceAction; } export interface MetaWorkspaceAction { - workspaces: Array; label?: string; //TODO: Use or implement additional label-key look?: InterfaceLook; color?: InterfaceColor; api: ClassConstructor; } + +export interface ConditionsWorkspaceAction { + workspaces: Array; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts index 6af6b320fa..a979b5f533 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.element.ts @@ -61,7 +61,7 @@ export class UmbWorkspaceFooterLayout extends UmbLitElement { extension.meta.workspaces.includes(this.alias)} + .filter=${(extension: ManifestWorkspaceAction) => extension.conditions.workspaces.includes(this.alias)} default-element="umb-workspace-action"> From 08c8ca33649a38122167e0476ffaa9430c78e38e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 21:18:08 +0100 Subject: [PATCH 048/550] add conditions to workspace views --- .../workspace-view-collection.models.ts | 6 +++++- .../extensions-registry/workspace-view.models.ts | 6 +++++- .../documents/document-types/workspace/manifests.ts | 4 +++- .../documents/documents/workspace/manifests.ts | 12 +++++++++--- .../backoffice/media/media/workspace/manifests.ts | 12 +++++++++--- .../members/member-groups/workspace/manifests.ts | 4 +++- .../settings/data-types/workspace/manifests.ts | 8 ++++++-- .../languages/workspace/language/manifests.ts | 4 +++- .../logviewer-root-workspace.element.ts | 4 +++- .../logviewer/workspace/logviewer-root/manifests.ts | 8 ++++++-- .../workspace-layout/workspace-layout.element.ts | 4 +++- .../translation/dictionary/workspace/manifests.ts | 4 +++- 12 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts index 366dd3cdbe..908aa3f699 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts @@ -3,11 +3,11 @@ import type { ManifestBase } from './models'; export interface ManifestWorkspaceViewCollection extends ManifestBase { type: 'workspaceViewCollection'; meta: MetaEditorViewCollection; + conditions: ConditionsEditorViewCollection; } // TODO: Get rid of store alias, when we are done migrating to repositories(remember to enforce repositoryAlias): export interface MetaEditorViewCollection { - workspaces: string[]; pathname: string; label: string; icon: string; @@ -15,3 +15,7 @@ export interface MetaEditorViewCollection { storeAlias?: string; repositoryAlias?: string; } + +export interface ConditionsEditorViewCollection { + workspaces: string[]; +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts index acfc5e9062..3d147fc4bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts @@ -3,11 +3,15 @@ import type { ManifestWithView } from './models'; export interface ManifestWorkspaceView extends ManifestWithView { type: 'workspaceView'; meta: MetaEditorView; + conditions: ConditionsEditorView; } export interface MetaEditorView { - workspaces: string[]; pathname: string; label: string; icon: string; } + +export interface ConditionsEditorView { + workspaces: string[]; +} 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 ea80ac1857..c2f912764b 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 @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/design/workspace-view-document-type-design.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Design', pathname: 'design', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, ]; 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 9da05642a7..fd806795f8 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 @@ -28,11 +28,13 @@ const workspaceViews: Array = [ loader: () => import('./views/document-workspace-view-edit.element'), weight: 200, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Content', pathname: 'content', icon: 'document', }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, { type: 'workspaceView', @@ -42,11 +44,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + }, }, ]; @@ -59,13 +63,15 @@ const workspaceViewCollections: Array = [ name: 'Document Workspace Collection View', weight: 300, meta: { - workspaces: ['Umb.Workspace.Document'], label: 'Documents', pathname: 'collection', icon: 'umb:grid', entityType: 'document', repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, }, + conditions: { + workspaces: ['Umb.Workspace.Document'], + } }, */ ]; 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 38e0ddb8a4..5b26b451bc 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 @@ -26,11 +26,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element'), weight: 200, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Media', pathname: 'media', icon: 'umb:picture', }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, { type: 'workspaceView', @@ -40,11 +42,13 @@ const workspaceViews: Array = [ import('../../../shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; @@ -55,13 +59,15 @@ const workspaceViewCollections: Array = [ name: 'Media Workspace Collection View', weight: 300, meta: { - workspaces: ['Umb.Workspace.Media'], label: 'Media', pathname: 'collection', icon: 'umb:grid', entityType: 'media', repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, + conditions: { + workspaces: ['Umb.Workspace.Media'], + }, }, ]; 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 a46364d6aa..9a1f8802e9 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 @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/info/workspace-view-member-group-info.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.MemberGroup'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.MemberGroup'], + }, }, ]; 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 c48647993d..0b6548e5a0 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 @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/edit/data-type-workspace-view-edit.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.DataType'], label: 'Edit', pathname: 'edit', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.DataType'], + }, }, { type: 'workspaceView', @@ -32,11 +34,13 @@ const workspaceViews: Array = [ loader: () => import('./views/info/workspace-view-data-type-info.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.DataType'], label: 'Info', pathname: 'info', icon: 'info', }, + conditions: { + workspaces: ['Umb.Workspace.DataType'], + }, }, ]; 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 38af5e4e8f..2dd3e38d5b 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 @@ -20,11 +20,13 @@ const workspaceViews: Array = [ loader: () => import('./views/edit/edit-language-workspace-view.element'), weight: 90, meta: { - workspaces: ['Umb.Workspace.Language'], label: 'Edit', pathname: 'edit', icon: 'edit', }, + conditions: { + workspaces: ['Umb.Workspace.Language'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 8579ccc331..53d29fabfc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -84,7 +84,9 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfTypes(['workspaceView']) - .pipe(map((extensions) => extensions.filter((extension) => extension.meta.workspaces.includes(this._alias)))), + .pipe( + map((extensions) => extensions.filter((extension) => extension.conditions.workspaces.includes(this._alias))) + ), (workspaceViews) => { this._workspaceViews = workspaceViews; this._createRoutes(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index c740c29aa1..6e01d52f37 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -20,11 +20,13 @@ const workspaceViews: Array = [ loader: () => import('../views/overview/index'), weight: 300, meta: { - workspaces: [workspaceAlias], label: 'Overview', pathname: 'overview', icon: 'umb:box-alt', }, + conditions: { + workspaces: [workspaceAlias], + }, }, { type: 'workspaceView', @@ -33,11 +35,13 @@ const workspaceViews: Array = [ loader: () => import('../views/search/index'), weight: 200, meta: { - workspaces: [workspaceAlias], label: 'Search', pathname: 'search', icon: 'umb:search', }, + conditions: { + workspaces: [workspaceAlias], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index 8abacffa60..7831dd7202 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -99,7 +99,9 @@ export class UmbWorkspaceLayout extends UmbLitElement { this.observe( umbExtensionsRegistry .extensionsOfTypes(['workspaceView', 'workspaceViewCollection']) - .pipe(map((extensions) => extensions.filter((extension) => extension.meta.workspaces.includes(this.alias)))), + .pipe( + map((extensions) => extensions.filter((extension) => extension.conditions.workspaces.includes(this.alias))) + ), (workspaceViews) => { this._workspaceViews = workspaceViews; this._createRoutes(); 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 dccdeef6af..ba5e4c16ec 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 @@ -22,11 +22,13 @@ const workspaceViews: Array = [ loader: () => import('./views/edit/workspace-view-dictionary-edit.element'), weight: 100, meta: { - workspaces: [workspaceAlias], label: 'Edit', pathname: 'edit', icon: 'edit', }, + conditions: { + workspaces: [workspaceAlias], + }, }, ]; From 80e5df78075fcadc5558f0e212f3e60b8a192e6e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 13 Mar 2023 21:19:22 +0100 Subject: [PATCH 049/550] rename interfaces from editor to workspace --- .../libs/extensions-registry/workspace-view.models.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts index 3d147fc4bb..6f2898de75 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view.models.ts @@ -2,16 +2,16 @@ import type { ManifestWithView } from './models'; export interface ManifestWorkspaceView extends ManifestWithView { type: 'workspaceView'; - meta: MetaEditorView; - conditions: ConditionsEditorView; + meta: MetaWorkspaceView; + conditions: ConditionsWorkspaceView; } -export interface MetaEditorView { +export interface MetaWorkspaceView { pathname: string; label: string; icon: string; } -export interface ConditionsEditorView { +export interface ConditionsWorkspaceView { workspaces: string[]; } From e5744fe14ef9c8b79743926eb9fb62242eba9c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:50:04 +1300 Subject: [PATCH 050/550] bring back deleted function in interface --- .../libs/repository/repository-tree-data-source.interface.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index 7e484c86c2..aff4ec4451 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -3,5 +3,6 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; export interface RepositoryTreeDataSource { getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; getItems(key: Array): Promise>; } From bc66a92b2479181516d0c7038b83e65f72d55862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 13:12:22 +1300 Subject: [PATCH 051/550] custom RelationTypeTreeDataSource interface --- .../relation-types/repository/relation-type.repository.ts | 4 ++-- .../settings/relation-types/repository/sources/index.ts | 7 +++++++ .../repository/sources/relation-type.tree.server.data.ts | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 43772b2dba..9e4c5d0171 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -1,8 +1,8 @@ -import type { RepositoryTreeDataSource } from '../../../../../libs/repository/repository-tree-data-source.interface'; import { UmbRelationTypeTreeStore, UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN } from './relation-type.tree.store'; import { UmbRelationTypeServerDataSource } from './sources/relation-type.server.data'; import { UmbRelationTypeStore, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN } from './relation-type.store'; import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; +import { RelationTypeTreeDataSource } from './sources'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; @@ -21,7 +21,7 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: RelationTypeTreeDataSource; #treeStore?: UmbRelationTypeTreeStore; #detailDataSource: UmbRelationTypeServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts new file mode 100644 index 0000000000..261832c5f4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -0,0 +1,7 @@ +import type { DataSourceResponse } from '@umbraco-cms/models'; +import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; + +export interface RelationTypeTreeDataSource { + getRootItems(): Promise>; + getItems(key: Array): Promise>; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index afd31da447..42026680ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -1,5 +1,7 @@ +import { RelationTypeTreeDataSource } from '.'; import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + import { tryExecuteAndNotify } from '@umbraco-cms/resources'; /** From ad02cb0643b16321150a4e519644041b467be24d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:37:52 +1300 Subject: [PATCH 052/550] fix types --- .../repository/sources/relation-type.server.data.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 9e65430ffe..0ae8d21897 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -3,8 +3,8 @@ import { ProblemDetailsModel, RelationTypeResource, RelationTypeResponseModel, - RelationTypeCreateModel, - RelationTypeUpdateModel, + CreateRelationTypeRequestModel, + UpdateRelationTypeRequestModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -54,10 +54,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbRelationTypeServerDataSource */ async createScaffold(parentKey: string | null) { - const data: RelationTypeResponseModel = { - $type: '', - parentKey: parentKey, - }; + const data: RelationTypeResponseModel = {}; return { data }; } @@ -73,7 +70,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; return { error }; } - const requestBody: RelationTypeCreateModel = { ...RelationType }; + const requestBody: CreateRelationTypeRequestModel = { ...RelationType }; // TODO: use resources when end point is ready: return tryExecuteAndNotify( @@ -101,7 +98,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour return { error }; } - const requestBody: RelationTypeUpdateModel = { ...RelationType }; + const requestBody: UpdateRelationTypeRequestModel = { ...RelationType }; // TODO: use resources when end point is ready: return tryExecuteAndNotify( From 10a6e60ac125ee549ad90b369ac62d3e337d5f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:47:20 +1300 Subject: [PATCH 053/550] fix context --- .../sources/relation-type.server.data.ts | 1 + .../relation-type-workspace.context.ts | 30 +--- .../relation-type-workspace.element.ts | 2 + ...lation-type-workspace-view-edit.element.ts | 169 +++++------------- 4 files changed, 59 insertions(+), 143 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 0ae8d21897..1b1f87054e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -100,6 +100,7 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour const requestBody: UpdateRelationTypeRequestModel = { ...RelationType }; + console.log('AHSGd'); // TODO: use resources when end point is ready: return tryExecuteAndNotify( this.#host, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 3beb6d781c..ae67a90db7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -1,8 +1,8 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; -import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; +import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRelationTypeWorkspaceContext @@ -49,26 +49,9 @@ export class UmbRelationTypeWorkspaceContext this.#data.update({ name }); } - setPropertyEditorAlias(alias?: string) { - this.#data.update({ propertyEditorAlias: alias }); - } - setPropertyEditorUiAlias(alias?: string) { - this.#data.update({ propertyEditorUiAlias: alias }); - } - - // TODO: its not called a property in the model, but we do consider this way in our front-end - setPropertyValue(alias: string, value: unknown) { - const entry = { alias: alias, value: value }; - - const currentData = this.#data.value; - if (currentData) { - // TODO: make a partial update method for array of data, (idea/concept, use if this case is getting common) - const newDataSet = appendToFrozenArray(currentData.data || [], entry, (x) => x.alias); - this.#data.update({ data: newDataSet }); - } - } - async save() { + console.log('WORKSPACE SAVE'); + if (!this.#data.value) return; if (this.isNew) { await this.repository.create(this.#data.value); @@ -76,9 +59,14 @@ export class UmbRelationTypeWorkspaceContext await this.repository.save(this.#data.value); } // If it went well, then its not new anymore?. + this.setIsNew(false); } + update(key: K, value: RelationTypeBaseModel[K]) { + this.#data.next({ ...this.#data.value, [key]: value }); + } + async delete(key: string) { await this.repository.delete(key); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 5e51f0801e..3dc045bf38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -34,6 +34,8 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { private _RelationTypeName = ''; public load(value: string) { + console.log('load'); + this.#workspaceContext?.load(value); //this._unique = entityKey; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts index 57ce265f66..020c7c3076 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/edit/relation-type-workspace-view-edit.element.ts @@ -1,14 +1,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; +import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '../../../../../../core/modal'; +import { UUIBooleanInputEvent, UUIRadioGroupElement, UUIRadioGroupEvent, UUIToggleElement } from '@umbraco-ui/uui'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; - -import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; -import '../../../../../shared/components/ref-property-editor-ui/ref-property-editor-ui.element'; +import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-relation-type-workspace-view-edit') export class UmbRelationTypeWorkspaceViewEditElement extends UmbLitElement { @@ -23,148 +20,76 @@ export class UmbRelationTypeWorkspaceViewEditElement extends UmbLitElement { ]; @state() - _RelationType?: RelationTypeResponseModel; + private _relationType?: RelationTypeResponseModel; - @state() - private _propertyEditorUIIcon = ''; - - @state() - private _propertyEditorUIName = ''; - - @state() - private _propertyEditorUiAlias = ''; - - @state() - private _propertyEditorAlias = ''; - - @state() - private _data: Array = []; - - private _workspaceContext?: UmbRelationTypeWorkspaceContext; - private _modalContext?: UmbModalContext; + #workspaceContext?: UmbRelationTypeWorkspaceContext; constructor() { super(); - this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { - this._modalContext = instance; - }); - - // TODO: Figure out if this is the best way to consume a context or if it could be strongly typed using UmbContextToken - this.consumeContext('umbWorkspaceContext', (_instance) => { - this._workspaceContext = _instance; + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; this._observeRelationType(); }); } private _observeRelationType() { - if (!this._workspaceContext) { + if (!this.#workspaceContext) { return; } - this.observe(this._workspaceContext.data, (RelationType) => { - if (!RelationType) return; - - // TODO: handle if model is not of the type wanted. - this._RelationType = RelationType; - - if (this._RelationType.propertyEditorUiAlias !== this._propertyEditorUiAlias) { - this._observePropertyEditorUI(this._RelationType.propertyEditorUiAlias || undefined); - } - - if (this._RelationType.data && this._RelationType.data !== this._data) { - this._data = this._RelationType.data; - } + this.observe(this.#workspaceContext.data, (relationType) => { + if (!relationType) return; + this._relationType = relationType as RelationTypeBaseModel; }); } - private _observePropertyEditorUI(propertyEditorUiAlias?: string) { - if (!propertyEditorUiAlias) return; - - this.observe( - umbExtensionsRegistry.getByTypeAndAlias('propertyEditorUI', propertyEditorUiAlias), - (propertyEditorUI) => { - // TODO: show error. We have stored a PropertyEditorUIAlias and can't find the PropertyEditorUI in the registry. - if (!propertyEditorUI) return; - - this._propertyEditorUIName = propertyEditorUI?.meta.label ?? propertyEditorUI?.name ?? ''; - this._propertyEditorUiAlias = propertyEditorUI?.alias ?? ''; - this._propertyEditorUIIcon = propertyEditorUI?.meta.icon ?? ''; - this._propertyEditorAlias = propertyEditorUI?.meta.propertyEditorModel ?? ''; - - this._workspaceContext?.setPropertyEditorAlias(this._propertyEditorAlias); - } - ); + #handleDirectionChange(event: UUIRadioGroupEvent) { + const target = event.target as UUIRadioGroupElement; + const value = target.value === 'true'; + this.#workspaceContext?.update('isBidirectional', value); } - private _openPropertyEditorUIPicker() { - if (!this._RelationType) return; - - const modalHandler = this._modalContext?.propertyEditorUIPicker({ - selection: this._propertyEditorUiAlias ? [this._propertyEditorUiAlias] : [], - }); - - modalHandler?.onClose().then(({ selection } = {}) => { - if (!selection) return; - this._selectPropertyEditorUI(selection[0]); - }); - } - - private _selectPropertyEditorUI(propertyEditorUiAlias: string | undefined) { - if (!this._RelationType || this._RelationType.propertyEditorUiAlias === propertyEditorUiAlias) return; - this._workspaceContext?.setPropertyEditorUiAlias(propertyEditorUiAlias); - this._observePropertyEditorUI(propertyEditorUiAlias); + #handleIsDependencyChange(event: UUIBooleanInputEvent) { + const target = event.target as UUIToggleElement; + const value = target.checked; + this.#workspaceContext?.update('isDependency', value); } render() { return html` - ${this._renderPropertyEditorUI()} - ${this._renderConfig()} + + + + + + + + ${this.#renderParentProperty()} + ${this.#renderChildProperty()} + + + + `; } - private _renderPropertyEditorUI() { - return html` - - ${this._propertyEditorUiAlias - ? html` - - - - - - - - ` - : html` - - `} - - `; + #renderParentProperty() { + if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + + return html``; } - private _renderConfig() { - return html` - ${this._propertyEditorAlias && this._propertyEditorUiAlias - ? html` - - - - ` - : nothing} - `; + #renderChildProperty() { + if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + + return html``; } } From 0296eddc12045bd9fb3e4422cd6dc77902b74366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:53:06 +1300 Subject: [PATCH 054/550] added back mock data function --- .../src/core/mocks/data/relation-type.data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index b9781cdc84..7d95a4bea2 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -136,8 +136,8 @@ class UmbRelationTypeData extends UmbEntityData { } //TODO Can relation types have children? - getTreeItemChildren(): Array { - const childItems = this.treeData; + getTreeItemChildren(key: string): Array { + const childItems = this.treeData.filter((item) => item.parentKey === key); return childItems.map((item) => createEntityTreeItem(item)); } From af7cb18551b9288311c421bbcc9493deef8c6b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 16:04:25 +1300 Subject: [PATCH 055/550] fixed manifest --- .../relation-types/repository/manifests.ts | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts index e2e0848519..b12632ed53 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts @@ -1,13 +1,33 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import { UmbRelationTypeStore } from './relation-type.store'; +import { UmbRelationTypeTreeStore } from './relation-type.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; -export const RELATION_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.RelationTypes'; +export const RELATION_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.RelationType'; const repository: ManifestRepository = { type: 'repository', alias: RELATION_TYPE_REPOSITORY_ALIAS, - name: 'Relation Types Repository', + name: 'Relation Type Repository', class: UmbRelationTypeRepository, }; -export const manifests = [repository]; +export const RELATION_TYPE_STORE_ALIAS = 'Umb.Store.RelationType'; +export const RELATION_TYPE_TREE_STORE_ALIAS = 'Umb.Store.RelationTypeTree'; + +const store: ManifestStore = { + type: 'store', + alias: RELATION_TYPE_STORE_ALIAS, + name: 'Relation Type Store', + class: UmbRelationTypeStore, +}; + +const treeStore: ManifestTreeStore = { + type: 'treeStore', + alias: RELATION_TYPE_TREE_STORE_ALIAS, + name: 'Relation Type Tree Store', + class: UmbRelationTypeTreeStore, +}; + +export const manifests = [repository, store, treeStore]; From 87af34b4ac1bcb38788fd063e2d9bbae6b2f4ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 14 Mar 2023 16:08:04 +1300 Subject: [PATCH 056/550] remove console logs --- .../repository/sources/relation-type.server.data.ts | 1 - .../relation-types/workspace/relation-type-workspace.context.ts | 2 -- .../relation-types/workspace/relation-type-workspace.element.ts | 2 -- 3 files changed, 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 1b1f87054e..0ae8d21897 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -100,7 +100,6 @@ export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSour const requestBody: UpdateRelationTypeRequestModel = { ...RelationType }; - console.log('AHSGd'); // TODO: use resources when end point is ready: return tryExecuteAndNotify( this.#host, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index ae67a90db7..0342da9da1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -50,8 +50,6 @@ export class UmbRelationTypeWorkspaceContext } async save() { - console.log('WORKSPACE SAVE'); - if (!this.#data.value) return; if (this.isNew) { await this.repository.create(this.#data.value); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 3dc045bf38..5e51f0801e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -34,8 +34,6 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { private _RelationTypeName = ''; public load(value: string) { - console.log('load'); - this.#workspaceContext?.load(value); //this._unique = entityKey; } From 109156306b08921cde379eb4ff1c439485382691 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 14 Mar 2023 09:54:45 +0100 Subject: [PATCH 057/550] init --- .../document-type-workspace.element.ts | 16 +- .../document-types/workspace/manifests.ts | 41 ++++- ...space-view-document-type-design.element.ts | 140 +++++++++++++++++- ...-view-document-type-permissions.element.ts | 61 ++++++++ 4 files changed, 245 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 5e5a660c77..e2b78bd80a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -15,9 +15,6 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement implements Um UUITextStyles, css` :host { - display: block; - width: 100%; - height: 100%; } #header { @@ -110,7 +107,18 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement implements Um -
    Keyboard Shortcuts
    +
    + + Keyboard Shortcuts + + ALT + + + shift + + + k + + +
    `; } 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 114efb3e7e..c1b374e2fa 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 @@ -22,7 +22,46 @@ const workspaceViews: Array = [ workspaces: ['Umb.Workspace.DocumentType'], label: 'Design', pathname: 'design', - icon: 'edit', + icon: 'umb:document-dashed-line', + }, + }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.DocumentType.ListView', + name: 'Document Type Workspace Permissions ListView', + loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), + weight: 100, + meta: { + workspaces: ['Umb.Workspace.DocumentType'], + label: 'List View', + pathname: 'listview', + icon: 'umb:list', + }, + }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.DocumentType.Permissions', + name: 'Document Type Workspace Permissions View', + loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), + weight: 100, + meta: { + workspaces: ['Umb.Workspace.DocumentType'], + label: 'Permissions', + pathname: 'permissions', + icon: 'umb:keychain', + }, + }, + { + type: 'workspaceView', + alias: 'Umb.WorkspaceView.DocumentType.Templates', + name: 'Document Type Workspace Permissions View', + loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), + weight: 100, + meta: { + workspaces: ['Umb.Workspace.DocumentType'], + label: 'Templates', + pathname: 'templates', + icon: 'umb:layout', }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 3e48456f2d..4ecb16f4f3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -1,6 +1,8 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, query, state } from 'lit/decorators.js'; +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { repeat } from 'lit/directives/repeat.js'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; @@ -13,8 +15,66 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { css` :host { display: block; - margin: var(--uui-size-space-6); - padding: var(--uui-size-space-6); + } + + /** Tab group */ + + #workspace-tab-bar { + padding: 0 var(--uui-size-layout-1); + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--uui-color-surface); + flex-wrap: nowrap; + } + .tab-actions { + display: flex; + gap: var(--uui-size-space-4); + } + .tab-actions uui-button uui-icon { + padding-right: calc(-1 * var(--uui-size-space-4)); + } + + uui-tab { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + } + + uui-tab .trash { + display: flex; + align-items: stretch; + } + + uui-tab uui-input { + flex-grow: 1; + } + + uui-input:not(:focus) { + border: 1px solid transparent; + } + + uui-input:not(:hover, :focus) .trash { + opacity: 0; + } + + /** Property Group Wrapper */ + + #wrapper { + margin: var(--uui-size-layout-1); + } + + #add-group { + margin-top: var(--uui-size-layout-1); + width: 100%; + } + + .group-headline { + display: flex; + gap: var(--uui-size-space-4); + } + .group-headline uui-input { + flex-grow: 1; } `, ]; @@ -24,6 +84,12 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + @state() + private _tabs: any[] = []; + + @query('uui-tab-group') + private _tabgroup?: HTMLElement; + constructor() { super(); @@ -43,12 +109,70 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { } render() { - return html` Design of ${this._documentType?.name} - -
    - + //this._documentType?.name + return html` +
    + ${this.renderTabBar()} +
    + + + Compositions + + + + Recorder +
    - `; +
    +
    + +
    + + +
    + +
    + Add group +
    + `; + } + + #remove(index: number) { + this._tabs.splice(index, 1); + this.requestUpdate(); + } + async #addTab() { + this._tabs = [...this._tabs, { name: 'Test' }]; + } + + renderTabBar() { + return html` + ${repeat( + this._tabs, + (tab) => tab.name, + (tab, index) => { + //TODO: Should these tabs be part of routing? + return html` +
    + + + + + +
    +
    `; + } + )} + + + Add tab + +
    `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts new file mode 100644 index 0000000000..5e9b13ddea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts @@ -0,0 +1,61 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import '../../../../../shared/property-creator/property-creator.element.ts'; + +@customElement('umb-workspace-view-document-type-permissions') +export class UmbWorkspaceViewDocumentTypePermissionsElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-space-6); + padding: var(--uui-size-space-6); + } + `, + ]; + + @state() + _documentType?: DocumentTypeModel; + + private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + + constructor() { + super(); + + // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken + this.consumeContext('umbWorkspaceContext', (documentTypeContext) => { + this._workspaceContext = documentTypeContext; + this._observeDocumentType(); + }); + } + + private _observeDocumentType() { + if (!this._workspaceContext) return; + + this.observe(this._workspaceContext.data, (documentType) => { + this._documentType = documentType; + }); + } + + render() { + return html` Permissions of ${this._documentType?.name} + +
    + +
    +
    `; + } +} + +export default UmbWorkspaceViewDocumentTypePermissionsElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace-view-document-type-permissions': UmbWorkspaceViewDocumentTypePermissionsElement; + } +} From 4eb83036d014dada32f569e1b4ca5358a516f629 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:11:31 +0100 Subject: [PATCH 058/550] add simple doc and doc type mock data --- .../src/core/mocks/data/document-type.data.ts | 60 +++++++++++++++++++ .../src/core/mocks/data/document.data.ts | 32 ++++++++++ 2 files changed, 92 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 2b25677dfc..ef11f86957 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -889,6 +889,56 @@ export const data: Array = [ keepLatestVersionPerDayForDays: null, }, }, + { + allowedTemplateKeys: [], + defaultTemplateKey: null, + key: 'simple-document-type-key', + alias: 'simpleDocumentType', + name: 'Simple Document Type', + description: null, + icon: 'umb:document', + allowedAsRoot: true, + variesByCulture: false, + variesBySegment: false, + isElement: false, + properties: [ + { + key: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', + containerKey: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + alias: 'prop1', + name: 'Prop 1', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + ], + containers: [ + { + key: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + parentKey: null, + name: 'Content', + type: 'Group', + sortOrder: 0, + }, + ], + allowedContentTypes: [{ key: 'simple-document-type-key', sortOrder: 0 }], + compositions: [], + cleanup: { + preventCleanup: false, + keepAllVersionsNewerThanDays: null, + keepLatestVersionPerDayForDays: null, + }, + }, ]; export const treeData: Array = [ @@ -922,6 +972,16 @@ export const treeData: Array = [ parentKey: null, icon: '', }, + { + $type: 'DocumentTypeTreeItemViewModel', + name: 'Simple Document Type', + type: 'document-type', + hasChildren: false, + key: 'simple-document-type-key', + isContainer: false, + parentKey: null, + icon: '', + }, ]; // Temp mocked database diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 8f5b4bfd10..32bdf1caed 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -405,6 +405,23 @@ export const data: Array = [ }, ], }, + { + urls: [], + templateKey: null, + key: 'simple-document-key', + contentTypeKey: 'simple-document-type-key', + variants: [ + { + state: ContentStateModel.DRAFT, + publishDate: '2023-02-06T15:32:24.957009', + culture: 'en-us', + segment: null, + name: 'Blog post B', + createDate: '2023-02-06T15:32:05.350038', + updateDate: '2023-02-06T15:32:24.957009', + }, + ], + }, ]; export const treeData: Array = [ @@ -468,6 +485,21 @@ export const treeData: Array = [ isEdited: false, isTrashed: false, }, + { + $type: 'DocumentTreeItemViewModel', + name: 'Simple', + type: 'document', + icon: 'document', + hasChildren: false, + key: 'simple-document-key', + isContainer: false, + parentKey: null, + noAccess: false, + isProtected: false, + isPublished: false, + isEdited: false, + isTrashed: false, + }, ]; // Temp mocked database From 19c8e9f6ac9bdac3a96bf3a245323ba83254321a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:11:44 +0100 Subject: [PATCH 059/550] add type folder to url --- .../documents/documents/entity-actions/create/create.action.ts | 2 +- .../documents/documents/workspace/document-workspace.context.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 1dd25e2232..8656c5e56a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -26,6 +26,6 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Tue, 14 Mar 2023 11:52:35 +0100 Subject: [PATCH 060/550] add method to mock db to get allowed items of a doc type --- .../src/core/mocks/data/document-type.data.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index ef11f86957..47913c8464 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -1009,6 +1009,13 @@ class UmbDocumentTypeData extends UmbEntityData { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } + + getAllowedTypesOf(key: string): Array { + const documentType = this.getByKey(key); + const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.key) ?? []; + const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.key ?? '')); + return items.map((item) => createDocumentTypeTreeItem(item)); + } } export const umbDocumentTypeData = new UmbDocumentTypeData(); From 02212312991f605a2683bf276be86fc69a1efadf Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:53:01 +0100 Subject: [PATCH 061/550] add request interceptor to intercept allowed type of a doc type --- .../core/mocks/domains/document-type.handlers.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index bc06e3b5b8..61a6edb311 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -67,8 +67,17 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const document = umbDocumentTypeData.getByKey(key); + const documentType = umbDocumentTypeData.getByKey(key); - return res(ctx.status(200), ctx.json(document)); + return res(ctx.status(200), ctx.json(documentType)); + }), + + rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:key', (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + const items = umbDocumentTypeData.getAllowedTypesOf(key); + + return res(ctx.status(200), ctx.json(items)); }), ]; From 77bd8b7a3d50fcc530973645500e35cc50784908 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:53:15 +0100 Subject: [PATCH 062/550] add todo --- .../document-types/repository/document-type.repository.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 0bf33feb4c..a24232ec39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -134,7 +134,8 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe return this.#detailStore!.byKey(key); } - async requestAllowedTypes(key: string) { + // TODO: we need to figure out where to put this + async requestAllowedChildTypesOf(key: string) { if (!key) throw new Error('Key is missing'); await this.#init; return this.#detailDataSource.getAllowedChildrenOf(key); From a2260c4fe9bb42fe1aa960ef144ad018630eb017 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:53:37 +0100 Subject: [PATCH 063/550] mock fetch call to allowed children of a doc type --- .../sources/document-type.server.data.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index dc543ac5b3..899bf5f59c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -194,6 +194,23 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbDocumentTypeServerDataSource */ async getAllowedChildrenOf(key: string) { - alert('get allowed children of', key); + if (!key) throw new Error('Key is missing'); + + let problemDetails: ProblemDetailsModel | undefined = undefined; + let data = undefined; + + try { + const res = await fetch(`/umbraco/management/api/v1/document-type/allowed-children-of/${key}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + data = await res.json(); + } catch (error) { + problemDetails = { title: `Get allowed children of ${key} failed` }; + } + + return { data, error: problemDetails }; } } From 2d33b1922fd69eac88b986b77c3dd7142aac86b6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:54:09 +0100 Subject: [PATCH 064/550] request allowed types in modal --- .../allowed-document-types-modal.element.ts | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index 6ef5aeac38..b97f5c606c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -1,8 +1,11 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { DocumentTypeTreeItemModel } from '@umbraco-cms/backend-api'; @customElement('umb-allowed-document-types-modal') export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< @@ -11,6 +14,22 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< > { static styles = [UUITextStyles]; + #documentTypeRepository = new UmbDocumentTypeRepository(this); + + @state() + private _allowedDocumentTypes: DocumentTypeTreeItemModel[] = []; + + async firstUpdated() { + // TODO: show error + if (!this.data?.key) return; + + const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.key); + + if (data) { + this._allowedDocumentTypes = data; + } + } + private _handleCancel() { this.modalHandler?.reject(); } @@ -28,9 +47,14 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement<
    Render list of create options for ${this.data?.key}
      -
    • -
    • -
    • + ${this._allowedDocumentTypes.map( + (item) => + html` +
    • + +
    • + ` + )}
    Cancel From 126e2145fbc93e00484c9a1e11fd80a6ea27d3c3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 11:54:31 +0100 Subject: [PATCH 065/550] get selected type in create action --- .../entity-actions/create/create.action.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 8656c5e56a..f0b773ea35 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,5 +1,5 @@ import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN } from '../../../document-types/modals/allowed-document-types'; -import { UmbDocumentRepository } from '../../repository/document.repository'; +import type { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @@ -19,13 +19,18 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Tue, 14 Mar 2023 12:00:43 +0100 Subject: [PATCH 066/550] POC Modal deeplinking --- .../libs/modal/modal-handler.ts | 4 +- .../libs/modal/modal.context.ts | 2 +- .../libs/modal/token/modal-token.ts | 2 +- .../input-multi-url-picker.element.ts | 74 +++++++++++++------ .../shared/modals/link-picker/index.ts | 3 +- .../link-picker/link-picker-modal.element.ts | 6 +- ...erty-editor-ui-multi-url-picker.element.ts | 1 + .../src/core/mocks/data/document.data.ts | 12 ++- .../src/core/router/route.context.ts | 61 ++++++++++----- .../src/core/router/router-slot.element.ts | 1 - 10 files changed, 117 insertions(+), 49 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts index bf46856f13..01f370afcd 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts @@ -13,7 +13,7 @@ import { ManifestModal } from '@umbraco-cms/extensions-registry'; /** * Type which omits the real submit method, and replaces it with a submit method which accepts an optional argument depending on the generic type. */ -export type UmbModalHandler = Omit< +export type UmbModalHandler = Omit< UmbModalHandlerClass, 'submit' > & @@ -35,7 +35,7 @@ type OptionalSubmitArgumentIfUndefined = T extends undefined }; //TODO consider splitting this into two separate handlers -export class UmbModalHandlerClass { +export class UmbModalHandlerClass { private _submitPromise: Promise; private _submitResolver?: (value: ModalResult) => void; private _submitRejecter?: () => void; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts index aacb0f1646..3bf9eda86a 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts @@ -76,7 +76,7 @@ export class UmbModalContext { * @return {*} {UmbModalHandler} * @memberof UmbModalContext */ - public open( + public open( modalAlias: string | UmbModalToken, data?: ModalData, config?: UmbModalConfig diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/modal-token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/modal-token.ts index ab466d34d7..6dc7240081 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/modal-token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/modal-token.ts @@ -1,6 +1,6 @@ import { UmbModalConfig } from '../modal.context'; -export class UmbModalToken { +export class UmbModalToken { /** * Get the data type of the token's data. * diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index dc71b0b20b..7ba2791d09 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,10 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; -import { UmbRouteContext, UMB_ROUTE_CONTEXT_TOKEN } from '@umbraco-cms/router'; +import { UmbModalRouteBuilder, UmbRouteContext, UMB_ROUTE_CONTEXT_TOKEN } from '@umbraco-cms/router'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; /** * @element umb-input-multi-url-picker @@ -88,7 +87,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen @property({ attribute: false }) set urls(data: Array) { if (!data) return; - this._urls = data; + this._urls = [...data]; // Unfreeze data coming from State, so we can manipulate it. super.value = this._urls.map((x) => x.url).join(','); } @@ -97,9 +96,11 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen } private _urls: Array = []; - private _modalContext?: UmbModalContext; + //private _modalContext?: UmbModalContext; private _routeContext?: UmbRouteContext; + private _linkPickerURL?: UmbModalRouteBuilder; + constructor() { super(); this.addValidator( @@ -113,9 +114,11 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen () => !!this.max && this.urls.length > this.max ); + /* this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { this._modalContext = instance; }); + */ this.consumeContext(UMB_ROUTE_CONTEXT_TOKEN, (instance) => { this._routeContext = instance; @@ -123,16 +126,29 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen // Registre the routes of this UI: // TODO: To avoid retriving the property alias, we might make use of the property context? // Or maybe its not the property-alias, but something unique? as this might not be in a property?. - this._routeContext.registerModal(UMB_LINK_PICKER_MODAL_TOKEN, { - //path: `${'to-do-myPropertyAlias'}/:index`, - path: `modal`, - onSetup: (routeInfo) => { + this._linkPickerURL = this._routeContext.registerModal(UMB_LINK_PICKER_MODAL_TOKEN, { + path: `${'to-do-myPropertyAlias'}/:index`, + onSetup: (routingInfo) => { // Get index from routeInfo: - const index = 0; + const indexParam = routingInfo.match.params.index; + if (!indexParam) return false; + let index: number | null = parseInt(routingInfo.match.params.index); + if (Number.isNaN(index)) return false; + // Use the index to find data: - console.log('onSetup modal', routeInfo); - /* - modaldata = { + console.log('onSetup modal index:', index); + + let data: UmbLinkPickerLink | null = null; + if (index >= 0 && index < this.urls.length) { + data = this._getItemByIndex(index); + } else { + index = null; + } + + console.log('onSetup modal got data:', data); + + const modalData = { + index: index, link: { name: data?.name, published: data?.published, @@ -148,14 +164,12 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen overlaySize: this.overlaySize || 'small', }, }; - return modaldata; - */ + return modalData; }, - onSubmit: (newUrl) => { - if (!newUrl) return; - - const index = 0; // TODO: get the index in some way?. - this._setSelection(newUrl, index); + onSubmit: (submitData) => { + console.log('On submit in property editor input'); + if (!submitData) return; + this._setSelection(submitData.link, submitData.index); }, onReject: () => { console.log('User cancelled dialog.'); @@ -169,9 +183,16 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this._dispatchChangeEvent(); } - private _setSelection(selection: UmbLinkPickerLink, index?: number) { - if (index !== undefined && index >= 0) this.urls[index] = selection; - else this.urls.push(selection); + private _getItemByIndex(index: number) { + return this.urls[index]; + } + + private _setSelection(selection: UmbLinkPickerLink, index: number | null) { + if (index !== null && index >= 0) { + this.urls[index] = selection; + } else { + this.urls.push(selection); + } this._dispatchChangeEvent(); } @@ -182,6 +203,8 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen } private _openPicker(data?: UmbLinkPickerLink, index?: number) { + console.log('JS open picker, should fail for now,'); + /* const modalHandler = this._modalContext?.open(UMB_LINK_PICKER_MODAL_TOKEN, { link: { name: data?.name, @@ -203,11 +226,13 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this._setSelection(newUrl, index); }); + */ } render() { return html`${this.urls?.map((link, index) => this._renderItem(link, index))} - Add`; + Add`; + // "modal/Umb.Modal.LinkPicker/${'to-do-myPropertyAlias'}/-1" } private _renderItem(link: UmbLinkPickerLink, index: number) { @@ -217,10 +242,11 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen @open="${() => this._openPicker(link, index)}"> - Edit + Edit Remove `; + // "modal/Umb.Modal.LinkPicker/${'to-do-myPropertyAlias'}/${index}" } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts index ecbd202e43..da95dca1d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts @@ -2,11 +2,12 @@ import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbModalToken } from '@umbraco-cms/modal'; export interface UmbLinkPickerModalData { + index: number | null; link: UmbLinkPickerLink; config: UmbLinkPickerConfig; } -export type UmbLinkPickerModalResult = UmbLinkPickerLink; +export type UmbLinkPickerModalResult = { index: number | null; link: UmbLinkPickerLink }; export interface UmbLinkPickerLink { icon?: string | null; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts index 73b31ccc82..dcd9b9181f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts @@ -46,6 +46,9 @@ export class UmbLinkPickerModalElement extends UmbModalBaseElement = [ alias: 'multiUrlPicker', culture: null, segment: null, - value: null, + value: [ + { + name: undefined, + published: undefined, + queryString: undefined, + target: undefined, + trashed: undefined, + udi: 'umb://document/c05da24d7740447b9cdcbd8ce2172e38', + url: 'umb://document/c05da24d7740447b9cdcbd8ce2172e38', + }, + ], }, { alias: 'multiNodeTreePicker', diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 6b9fff800a..3fbc8458cb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -1,22 +1,23 @@ -import { IRoute } from 'router-slot'; +import { IRoute, IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalToken } from '@umbraco-cms/modal'; - -// Get the second generic type of UmbModalToken: -type GetResultType = T extends UmbModalToken ? Result : unknown; +import { UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; const EmptyDiv = document.createElement('div'); -export type UmbModalRoute = { +// TODO: Consider accepting the Token as a generic: +export type UmbModalRoute = { path: string; - onSetup: (routeInfo: any) => void; - onSubmit: (data: UmbModalTokenResult) => void; + onSetup: (routingInfo: IRoutingInfo) => UmbModalTokenData | false; + onSubmit: (data: UmbModalTokenResult) => void | PromiseLike; onReject: () => void; }; +export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; + export class UmbRouteContext { #host: UmbControllerHostInterface; + #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; #contextRoutes: IRoute[] = []; constructor(host: UmbControllerHostInterface, private _onGotModals: (contextRoutes: any) => void) { @@ -25,28 +26,54 @@ export class UmbRouteContext { /*new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (context) => { console.log('got a parent', this === context, this, context); });*/ + new UmbContextConsumerController(host, UMB_MODAL_CONTEXT_TOKEN, (context) => { + this.#modalContext = context; + }); // Consider using this event, to stay up to date with current full-URL. which is necessary for Modal opening. // window.addEventListener('navigationsuccess', this._onNavigationChanged); } - public registerModal>( - modalAlias: T, - options: UmbModalRoute - ) { - console.log('registerModalRoute', modalAlias.toString(), options); - + public registerModal( + modalAlias: UmbModalToken | string, + options: UmbModalRoute + ): UmbModalRouteBuilder { + const localPath = `modal/${modalAlias.toString()}/${options.path}`; this.#contextRoutes.push({ - path: options.path, + path: localPath, + pathMatch: 'suffix', component: EmptyDiv, setup: (component, info) => { - console.log('modal open?', info); - options.onSetup(info); + const modalData = options.onSetup(info); + if (modalData && this.#modalContext) { + const modalHandler = this.#modalContext.open(modalAlias, modalData); + modalHandler.onSubmit().then( + () => this._removeModalPath(info), + () => this._removeModalPath(info) + ); + modalHandler.onSubmit().then(options.onSubmit, options.onReject); + } }, }); //TODO: move to a method: this._onGotModals(this.#contextRoutes); + + return (params: { [key: string]: string | number }) => { + const localRoutePath = stripSlash( + localPath.replace(PARAM_IDENTIFIER, (substring: string, ...args: string[]) => { + return params[args[0]]; + //return `([^\/]+)`; + }) + ); + const baseRoutePath = window.location.href; + return (baseRoutePath.endsWith('/') ? baseRoutePath : baseRoutePath + '/') + localRoutePath; + }; + } + + private _removeModalPath(info: IRoutingInfo) { + window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); + console.log('ask to remove path', info.match.fragments.consumed); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index f404efc65f..fde2927bc8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -44,7 +44,6 @@ export class UmbRouterSlotElement extends UmbLitElement { #routeContext = new UmbRouteContext(this, (contextRoutes) => { (this.#modalRouter as any).routes = contextRoutes; - console.log(this.absoluteRouterPath, this.#router, this.#modalRouter, 'Router got context routes', contextRoutes); // Force a render? this.#modalRouter.render(); }); From 955434b1741cdabc2c9f7bdd3a647d4a1bb36f72 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 13:12:01 +0100 Subject: [PATCH 067/550] add icon --- .../src/core/mocks/data/document-type.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 47913c8464..1d1f78645e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -980,7 +980,7 @@ export const treeData: Array = [ key: 'simple-document-type-key', isContainer: false, parentKey: null, - icon: '', + icon: 'umb:document', }, ]; From b00bf847af6a346191499e1210f3b2515ddf1cd6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 13:12:20 +0100 Subject: [PATCH 068/550] render with uui-menu-item --- .../allowed-document-types-modal.element.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index b97f5c606c..251e807759 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -1,4 +1,4 @@ -import { html } from 'lit'; +import { html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; @@ -44,19 +44,17 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< render() { return html` -
    Render list of create options for ${this.data?.key}
    - -
      + + ${this._allowedDocumentTypes.length === 0 ? html`

      No allowed types

      ` : nothing} ${this._allowedDocumentTypes.map( (item) => html` -
    • - -
    • + + ${item.icon ? html`` : nothing} + ` )} -
    - + Cancel
    `; From 2a275a943f0a53eaa9c5235691a4838287530373 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 13:16:35 +0100 Subject: [PATCH 069/550] remove type folder --- .../documents/entity-actions/create/create.action.ts | 2 +- .../documents/workspace/document-workspace.context.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index f0b773ea35..864248e63a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -30,7 +30,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Tue, 14 Mar 2023 13:16:44 +0100 Subject: [PATCH 070/550] remove unused name --- .../data-types/workspace/data-type-workspace.context.ts | 2 -- 1 file changed, 2 deletions(-) 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 93be9e3a3d..b520392144 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 @@ -36,11 +36,9 @@ export class UmbDataTypeWorkspaceContext async getPaths() { return [ { - name: 'edit', path: 'edit/:key', }, { - name: 'create', path: 'create/:parentKey', }, ]; From dd4f6fc61b52f033e65d12d49522d263be2e8751 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 13:26:17 +0100 Subject: [PATCH 071/550] use data attr to get the document type key --- .../allowed-document-types-modal.element.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index 251e807759..b0533342b8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -37,7 +37,8 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< #onClick(event: PointerEvent) { event.stopPropagation(); const target = event.target as HTMLButtonElement; - const documentTypeKey = target.value; + const documentTypeKey = target.dataset.key; + if (!documentTypeKey) throw new Error('No document type key found'); this.modalHandler?.submit({ documentTypeKey }); } From 077b4997cfd66eec5365d75e9836f1251bb13472 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 14:04:48 +0100 Subject: [PATCH 072/550] add scaffolding data to create document --- .../repository/document.repository.ts | 10 +++------- .../repository/sources/document.server.data.ts | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index 104b9092df..0ebe9e0f59 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -113,14 +113,10 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailReposi // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(documentTypeKey: string) { + if (!documentTypeKey) throw new Error('Document type key is missing'); await this.#init; - - if (!parentKey) { - throw new Error('Parent key is missing'); - } - - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(documentTypeKey); } async requestByKey(key: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 9bd093eeea..8146e2972a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,7 +1,8 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentResource, ProblemDetailsModel, DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResource, ProblemDetailsModel, DocumentModel, ContentStateModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { v4 as uuidv4 } from 'uuid'; /** * A data source for the Document that fetches data from the server @@ -49,9 +50,22 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource Date: Tue, 14 Mar 2023 14:10:34 +0100 Subject: [PATCH 073/550] add second document type test option --- .../src/core/mocks/data/document-type.data.ts | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 1d1f78645e..177eb1b663 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -931,6 +931,78 @@ export const data: Array = [ sortOrder: 0, }, ], + allowedContentTypes: [ + { key: 'simple-document-type-key', sortOrder: 0 }, + { key: 'simple-document-type-2-key', sortOrder: 0 }, + ], + compositions: [], + cleanup: { + preventCleanup: false, + keepAllVersionsNewerThanDays: null, + keepLatestVersionPerDayForDays: null, + }, + }, + { + allowedTemplateKeys: [], + defaultTemplateKey: null, + key: 'simple-document-type-2-key', + alias: 'simpleDocumentType2', + name: 'Simple Document Type 2', + description: null, + icon: 'umb:document', + allowedAsRoot: true, + variesByCulture: false, + variesBySegment: false, + isElement: false, + properties: [ + { + key: '82d4b050-b128-42fe-ac8e-d5586e533592', + containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + alias: 'prop1', + name: 'Prop 1', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + { + key: 'beadc69a-d669-4d01-9919-98bafba31e57', + containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + alias: 'prop2', + name: 'Prop 2', + description: null, + dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + variesByCulture: false, + variesBySegment: false, + validation: { + mandatory: false, + mandatoryMessage: null, + regEx: null, + regExMessage: null, + }, + appearance: { + labelOnTop: false, + }, + }, + ], + containers: [ + { + key: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + parentKey: null, + name: 'Content', + type: 'Group', + sortOrder: 0, + }, + ], allowedContentTypes: [{ key: 'simple-document-type-key', sortOrder: 0 }], compositions: [], cleanup: { @@ -982,6 +1054,16 @@ export const treeData: Array = [ parentKey: null, icon: 'umb:document', }, + { + $type: 'DocumentTypeTreeItemViewModel', + name: 'Simple Document Type 2', + type: 'document-type', + hasChildren: false, + key: 'simple-document-type-2-key', + isContainer: false, + parentKey: null, + icon: 'umb:document', + }, ]; // Temp mocked database From 83cac9d361fb795bc2d4452f6c2e1526c7ebebf2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:11:00 +0100 Subject: [PATCH 074/550] use isocode in language table instead of key --- .../language-root-table-name-column-layout.element.ts | 4 ++-- .../language-root/language-root-workspace.element.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts index 5ffa2fd7c9..741de51621 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts @@ -7,12 +7,12 @@ export class UmbLanguageRootTableNameColumnLayoutElement extends LitElement { static styles = [UUITextStyles, css``]; @property({ attribute: false }) - value!: { key: string; name: string }; + value!: { isoCode: string; name: string }; render() { if (!this.value) return nothing; - return html`${this.value.name}`; + return html`${this.value.name}`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index aba3ffb008..72b4796f3c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -89,7 +89,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { columnAlias: 'languageName', value: { name: language.name, - key: language.isoCode, + isoCode: language.isoCode, }, }, { From 9b3b315269b244add9f0fc5b1eafdd671a03f41d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:11:15 +0100 Subject: [PATCH 075/550] dummy workspace context for language root --- .../workspace/language-root/language-root-workspace.context.ts | 3 +++ .../settings/languages/workspace/language-root/manifests.ts | 1 + 2 files changed, 4 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts new file mode 100644 index 0000000000..aa5f8f3a7c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts @@ -0,0 +1,3 @@ +export class UmbLanguageRootWorkspaceContext {} + +export default UmbLanguageRootWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts index c70acd49cc..ce7c12bec4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts @@ -7,6 +7,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-root-workspace.element'), meta: { entityType: 'language-root', + api: () => import('./language-root-workspace.context'), }, }; From 880e05b5f5c3a9653596a8096ad454c8864a8044 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:12:21 +0100 Subject: [PATCH 076/550] add paths for language workspace --- .../language/language-workspace.context.ts | 15 ++++++++ .../language/language-workspace.element.ts | 36 +++++++++++++------ .../languages/workspace/language/manifests.ts | 2 +- 3 files changed, 42 insertions(+), 11 deletions(-) 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 a31db582a7..085d8b327c 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 @@ -16,6 +16,19 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { - this._language = data; + this.consumeContext('umbWorkspaceContext', (context) => { + this.#workspaceContext = context; + this.#observeData(); + this.#init(); }); } - load(key: string): void { - this.#languageWorkspaceContext.load(key); + #init() { + const isoCode = this.location?.params?.isoCode; + + // TODO: implement actions "events" and show loading state + if (this.location?.name === 'create') { + this.#workspaceContext?.createScaffold(); + } else if (this.location?.name === 'edit' && isoCode) { + this.#workspaceContext?.load(isoCode); + } } - create(): void { - this.#languageWorkspaceContext.createScaffold(); + #observeData() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => { + this._language = data; + }); } #handleInput(event: UUIInputEvent) { @@ -51,7 +67,7 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor const target = event.composedPath()[0] as UUIInputElement; if (typeof target?.value === 'string') { - this.#languageWorkspaceContext?.setName(target.value); + this.#workspaceContext?.setName(target.value); } } } 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 94bc97a049..82190e8b94 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,3 @@ -import { LANGUAGE_REPOSITORY_ALIAS } from '../../repository/manifests'; import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; @@ -9,6 +8,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-workspace.element'), meta: { entityType: 'language', + api: () => import('./language-workspace.context'), }, }; From f6bc710353236937336867bbc198bb64774b52cc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:12:50 +0100 Subject: [PATCH 077/550] add catch all route --- .../components/workspace/workspace.element.ts | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index d3e6e97923..cd91525a5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -36,28 +36,44 @@ export class UmbWorkspaceElement extends UmbLitElement { _routes: Array = []; async #createRoutes(workspaceManifest: ManifestWorkspace) { - const workspaceContextModule = await workspaceManifest.meta.api(); - const workspaceContext = new workspaceContextModule.default(this); - const paths = await workspaceContext.getPaths(); + const workspaceContextModule = await workspaceManifest.meta.api?.(); + const workspaceContext = workspaceContextModule ? new workspaceContextModule.default(this) : undefined; + const paths = (await workspaceContext?.getPaths?.()) || []; const routes = paths.map((path: any) => { return { path: path.path, component: () => createExtensionElement(workspaceManifest), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((element) => { - element.manifest = workspaceManifest; - const location: UmbRouteLocation = { - name: path.name, - params: info.match.params, - }; - element.location = location; - }); - }, + setup: (component: Promise, info: IRoutingInfo) => + this.#onRouteSetup(component, info, path, workspaceManifest), }; }); - this._routes = routes; + this._routes = [ + ...routes, + { + path: '**', + component: () => createExtensionElement(workspaceManifest), + setup: (component: Promise, info: IRoutingInfo) => + this.#onRouteSetup(component, info, { name: 'catch-all', params: {} }, workspaceManifest), + }, + ]; + } + + #onRouteSetup( + component: Promise, + info: IRoutingInfo, + path: any, + workspaceManifest: ManifestWorkspace + ) { + component.then((element) => { + element.manifest = workspaceManifest; + const location: UmbRouteLocation = { + name: path.name, + params: info.match.params, + }; + element.location = location; + }); } #observeWorkspace() { From 0cbf8ce65a07c302a041eae3ed57df3308819a2c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:13:57 +0100 Subject: [PATCH 078/550] move table element sinto component folder --- .../language-root-table-delete-column-layout.element.ts | 0 .../language-root-table-name-column-layout.element.ts | 0 .../language-root/language-root-workspace.element.ts | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/{ => components}/language-root-table-delete-column-layout.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/{ => components}/language-root-table-name-column-layout.element.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-name-column-layout.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-name-column-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-name-column-layout.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index 72b4796f3c..03154b4ed0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -6,8 +6,8 @@ import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbLitElement } from '@umbraco-cms/element'; import { LanguageModel } from '@umbraco-cms/backend-api'; -import './language-root-table-delete-column-layout.element'; -import './language-root-table-name-column-layout.element'; +import './components/language-root-table-delete-column-layout.element'; +import './components/language-root-table-name-column-layout.element'; @customElement('umb-language-root-workspace') export class UmbLanguageRootWorkspaceElement extends UmbLitElement { From 06a2cdd3ebf87799f97f12f7b0f6af56a986ea0f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:15:09 +0100 Subject: [PATCH 079/550] add correct url to add language button --- .../workspace/language-root/language-root-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index 03154b4ed0..8bab20608f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -126,7 +126,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { label="Add language" look="outline" color="default" - href="section/settings/language/create/root"> + href="section/settings/workspace/language/create">
    From 766ef948e27903d12f296df0dc869bb77bd9fd04 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:16:50 +0100 Subject: [PATCH 080/550] rename language editor workspace view to details --- .../settings/languages/workspace/language/manifests.ts | 10 +++++----- .../language-details-workspace-view.element.ts} | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/{edit/edit-language-workspace-view.element.ts => details/language-details-workspace-view.element.ts} (100%) 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 82190e8b94..c0b2624968 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 @@ -15,14 +15,14 @@ const workspace: ManifestWorkspace = { const workspaceViews: Array = [ { type: 'workspaceView', - alias: 'Umb.WorkspaceView.Language.Edit', - name: 'Language Workspace Edit View', - loader: () => import('./views/edit/edit-language-workspace-view.element'), + alias: 'Umb.WorkspaceView.Language.Details', + name: 'Language Workspace Details View', + loader: () => import('./views/details/language-details-workspace-view.element'), weight: 90, meta: { workspaces: ['Umb.Workspace.Language'], - label: 'Edit', - pathname: 'edit', + label: 'Details', + pathname: 'details', icon: 'edit', }, }, 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/details/language-details-workspace-view.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/edit/edit-language-workspace-view.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts From 3121b2ce91ea40b5892e7ceeae997549d5ed4245 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 14 Mar 2023 15:18:12 +0100 Subject: [PATCH 081/550] update url in back button --- .../languages/workspace/language/language-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 5087e2df59..27a422098c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -78,7 +78,7 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor return html` `; - } -} - -export default UmbSectionViewElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-section-view': UmbSectionViewElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index fe8129400f..981a71f542 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; import type { ManifestSectionView } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; @@ -29,6 +29,9 @@ export class UmbSectionViewsElement extends UmbLitElement { `, ]; + @property({ type: String, attribute: 'section-alias' }) + public sectionAlias?: string; + @state() private _views: Array = []; @@ -38,6 +41,9 @@ export class UmbSectionViewsElement extends UmbLitElement { @state() private _activeViewPathname?: string; + @state() + private _routes: Array = []; + private _sectionContext?: UmbSectionContext; private _extensionsObserver?: UmbObserverController; @@ -57,65 +63,83 @@ export class UmbSectionViewsElement extends UmbLitElement { this._routerFolder = window.location.pathname.split('/view')[0]; } + async #createRoutes(viewManifests: Array) { + const routes = viewManifests.map((manifest: any) => { + return { + path: manifest.meta.pathname, + component: () => createExtensionElement(manifest), + }; + }); + + this._routes = [...routes, { path: '**', redirectTo: routes[0].path }]; + } + private _observeViews() { if (!this._sectionContext) return; - this.observe(this._sectionContext.alias, (sectionAlias) => { - this._observeExtensions(sectionAlias); - }, 'viewsObserver') + this.observe( + this._sectionContext.alias, + (sectionAlias) => { + this._observeExtensions(sectionAlias); + }, + 'viewsObserver' + ); } private _observeExtensions(sectionAlias?: string) { this._extensionsObserver?.destroy(); - if(sectionAlias) { + if (sectionAlias) { this._extensionsObserver = this.observe( - umbExtensionsRegistry?.extensionsOfType('sectionView').pipe( - map((views) => - views - .filter((view) => view.meta.sections.includes(sectionAlias)) - .sort((a, b) => b.meta.weight - a.meta.weight) - ) - ) ?? of([]) - , - (views) => { - this._views = views; - } + umbExtensionsRegistry + ?.extensionsOfType('sectionView') + .pipe(map((views) => views.filter((view) => view.meta.sections.includes(sectionAlias)))) ?? of([]), + (views) => { + this.#createRoutes(views); + this._views = views; + } ); } } private _observeActiveView() { - if(this._sectionContext) { - this.observe(this._sectionContext?.activeViewPathname, (pathname) => { - this._activeViewPathname = pathname; - }, 'activeViewPathnameObserver'); + if (this._sectionContext) { + this.observe( + this._sectionContext?.activeViewPathname, + (pathname) => { + this._activeViewPathname = pathname; + }, + 'activeViewPathnameObserver' + ); } } render() { - return html` ${this._views.length > 0 ? html` ` : nothing} `; - } - - private _renderViews() { return html` - ${this._views?.length > 0 + ${this._views.length > 0 ? html` - - ${this._views.map( - (view: ManifestSectionView) => html` - - - ${view.meta.label || view.name} - - ` - )} - + + ` : nothing} `; } + + #renderTabs() { + return html` + + ${this._views.map( + (view: ManifestSectionView) => html` + + + ${view.meta.label || view.name} + + ` + )} + + `; + } } export default UmbSectionViewsElement; 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 a9cb55cf96..5f8aa506a0 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 @@ -1,18 +1,17 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import type { IRoutingInfo } from '@umbraco-cms/router'; -import UmbWorkspaceElement from '../workspace/workspace.element'; +import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { ManifestSectionView, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { UmbSectionViewsElement } from './section-views/section-views.element'; +import type { ManifestSectionView, ManifestMenuSectionSidebarApp, ManifestSection } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; import './section-sidebar-menu/section-sidebar-menu.element'; -import './section-views/section-views.element'; -import '../../../settings/languages/app-language-select/app-language-select.element'; @customElement('umb-section') export class UmbSectionElement extends UmbLitElement { @@ -36,6 +35,9 @@ export class UmbSectionElement extends UmbLitElement { `, ]; + @property() + public manifest?: ManifestSection; + @state() private _routes?: Array; @@ -70,7 +72,10 @@ export class UmbSectionElement extends UmbLitElement { }, { path: 'view', - component: () => import('../section/section-views/section-view.element'), + component: () => import('../section/section-views/section-views.element'), + setup: (element: UmbSectionViewsElement) => { + element.sectionAlias = this.manifest?.alias; + }, }, { path: 'workspace/:entityType', @@ -139,7 +144,6 @@ export class UmbSectionElement extends UmbLitElement { ` : nothing} - ${this._views && this._views.length > 0 ? html`` : nothing} ${this._routes && this._routes.length > 0 ? html`` : nothing} From 879346b9480fd2394185a8081852f64fc1fb2daa Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 15 Mar 2023 09:12:49 +0100 Subject: [PATCH 100/550] rename api to context --- .../libs/extensions-registry/workspace.models.ts | 2 +- .../src/backoffice/documents/documents/workspace/manifests.ts | 2 +- .../src/backoffice/settings/data-types/workspace/manifests.ts | 2 +- .../settings/languages/workspace/language-root/manifests.ts | 2 +- .../settings/languages/workspace/language/manifests.ts | 2 +- .../backoffice/shared/components/workspace/workspace.element.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts index 2cbaa9ca60..2e74f8cab7 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts @@ -7,5 +7,5 @@ export interface ManifestWorkspace extends ManifestElement { export interface MetaEditor { entityType: string; - api: any; + context?: any; } 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 e1538af24d..518ff8243d 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 @@ -17,7 +17,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./document-workspace.element'), meta: { entityType: 'document', - api: () => import('./document-workspace.context'), + context: () => import('./document-workspace.context'), }, }; 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 1e16044820..f79821642b 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 @@ -8,7 +8,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./data-type-workspace.element'), meta: { entityType: 'data-type', - api: () => import('./data-type-workspace.context'), + context: () => import('./data-type-workspace.context'), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts index ce7c12bec4..a4111a84bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts @@ -7,7 +7,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-root-workspace.element'), meta: { entityType: 'language-root', - api: () => import('./language-root-workspace.context'), + context: () => import('./language-root-workspace.context'), }, }; 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 c0b2624968..09a1ff1b7c 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 @@ -8,7 +8,7 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-workspace.element'), meta: { entityType: 'language', - api: () => import('./language-workspace.context'), + context: () => import('./language-workspace.context'), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index cd91525a5b..b3ab044e53 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -36,7 +36,7 @@ export class UmbWorkspaceElement extends UmbLitElement { _routes: Array = []; async #createRoutes(workspaceManifest: ManifestWorkspace) { - const workspaceContextModule = await workspaceManifest.meta.api?.(); + const workspaceContextModule = await workspaceManifest.meta.context?.(); const workspaceContext = workspaceContextModule ? new workspaceContextModule.default(this) : undefined; const paths = (await workspaceContext?.getPaths?.()) || []; From baef73dd67236615d068e6225e055c2b62ba9634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 12:46:32 +0100 Subject: [PATCH 101/550] bring back slot --- .../src/core/router/router-slot.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 07ab280e56..5dc12dcc0b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -53,7 +53,7 @@ export class UmbRouterSlotElement extends UmbLitElement { this.#modalRouter.parent = this.#router; this.#router.addEventListener('changestate', this._onChangeState); //this.#router.appendChild(this.#modalRouter); - //this.#router.appendChild(document.createElement('slot')); + this.#router.appendChild(document.createElement('slot')); } connectedCallback() { From 4e5900c25fdb2a6c434be785227f121da277df00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 13:28:57 +0100 Subject: [PATCH 102/550] import order --- .../documents/documents/workspace/document-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index d2f69c3f86..7de8fefaa8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -2,6 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; @@ -10,7 +11,6 @@ import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; import { DocumentModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; @customElement('umb-document-workspace') export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { From ab08024e7f17d45799c01f43f83eb7e2f3ccb4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 14:02:11 +0100 Subject: [PATCH 103/550] fixing moving observable in DOM --- .../libs/context-api/consume/context-consumer.ts | 4 +++- src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts | 3 ++- .../workspace-context/workspace-split-view-manager.class.ts | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts index 7d4d378078..4f725c4767 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts @@ -37,7 +37,9 @@ export class UmbContextConsumer { // TODO: check that this check is not giving us any problems: - if (this._instance === instance) return; + if (this._instance === instance) { + return; + } this._instance = instance; this._callback?.(instance); this._promiseResolver?.(instance); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts index bf7210c284..dc0b7993c0 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts @@ -12,7 +12,8 @@ export class UmbObserver { // Notice controller class implements empty hostConnected(). hostDisconnected() { - this.#subscription.unsubscribe(); + // No cause then it cant re-connect, if the same element just was moved in DOM. + //this.#subscription.unsubscribe(); } destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts index d0e38cab9d..d1036b155b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts @@ -21,6 +21,10 @@ export class UmbWorkspaceSplitViewManager { constructor(host: UmbControllerHostInterface) { this.#host = host; + + this.activeVariantsInfo.subscribe((data) => { + console.log('— activeVariantsInfo 1 updated: ', data); + }); } private _routeBase?: string; From a5eacc214f328ab650bc4a3266afd8b75027e404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 14:02:26 +0100 Subject: [PATCH 104/550] remove test code --- .../workspace-context/workspace-split-view-manager.class.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts index d1036b155b..d0e38cab9d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts @@ -21,10 +21,6 @@ export class UmbWorkspaceSplitViewManager { constructor(host: UmbControllerHostInterface) { this.#host = host; - - this.activeVariantsInfo.subscribe((data) => { - console.log('— activeVariantsInfo 1 updated: ', data); - }); } private _routeBase?: string; From 21ad34ee09689ac2e5dd7e75197b71eeac3821d0 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 15 Mar 2023 14:51:43 +0100 Subject: [PATCH 105/550] template cards --- .../template-card-list.element.ts | 109 ++++++++++++ .../template-cards/template-card.element.ts | 168 ++++++++++++++++++ .../template-cards/template-card.stories.ts | 40 +++++ 3 files changed, 317 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card-list.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card-list.element.ts new file mode 100644 index 0000000000..784586eefb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card-list.element.ts @@ -0,0 +1,109 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbLitElement } from '@umbraco-cms/element'; +import './template-card.element'; +import UmbTemplateCardElement from './template-card.element'; + +export interface TemplateModel { + name: string; + key: string; +} + +@customElement('umb-template-card-list') +export class UmbTemplateCardListElement extends FormControlMixin(UmbLitElement) { + static styles = [ + UUITextStyles, + css` + :host { + box-sizing: border-box; + display: flex; + align-items: stretch; + gap: var(--uui-size-space-4); + min-height: 180px; + } + `, + ]; + + @property({ type: Array }) + templates: TemplateModel[] = [ + { + name: 'Named template', + key: '123', + }, + { + name: 'Named template 2', + key: '456', + }, + ]; + + private _selected?: number; + + private _templateCardElements: UmbTemplateCardElement[] = []; + + protected getFormElement() { + return undefined; + } + + #changeSelectedState(e: UmbTemplateCardElement) { + const newValue = e.value; + this._templateCardElements.forEach((el, index) => { + if ((el.value as string) === newValue) { + el.selected = true; + this._selected = index; + } else { + el.selected = false; + } + }); + this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); + } + + #delete(e: Event) { + const key = (e.target as UmbTemplateCardElement).value; + const i = this.templates.findIndex((x) => x.key === key); + this.templates.splice(i, 1); + this.templates = [...this.templates]; + } + + #openTemplate(e: Event) { + console.log(e.target); + const key = (e.target as UmbTemplateCardElement).value; + console.log('open', key); + } + + #openTemplatePicker() { + console.log('template picker'); + } + + #slotchange(e: Event) { + this._templateCardElements.forEach((el) => { + el.removeEventListener('selected', (e) => this.#changeSelectedState(e.target as UmbTemplateCardElement)); + el.removeEventListener('open', (e) => this.#openTemplate(e)); + }); + + this._templateCardElements = (e.target as HTMLSlotElement) + .assignedElements({ flatten: true }) + .filter((el) => el instanceof UmbTemplateCardElement) as UmbTemplateCardElement[]; + + if (this._templateCardElements.length === 0) return; + + this._templateCardElements.forEach((el) => { + el.addEventListener('selected', (e) => this.#changeSelectedState(e.target as UmbTemplateCardElement)); + el.addEventListener('open', (e) => this.#openTemplate(e)); + }); + } + + render() { + return html` `; + } +} + +export default UmbTemplateCardListElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-template-card-list': UmbTemplateCardListElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.element.ts new file mode 100644 index 0000000000..7015da267f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.element.ts @@ -0,0 +1,168 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; +import { UmbLitElement } from '@umbraco-cms/element'; + +/** + * @element umb-template-card + * @description wrap inside a umb-template-card-list + * @slot actions + * @fires open + * @fires selected + * + * + */ + +@customElement('umb-template-card') +export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { + static styles = [ + UUITextStyles, + css` + :host { + box-sizing: border-box; + display: contents; + position: relative; + + height: 100%; + border: 1px solid red; + margin: auto; + } + + #card { + box-sizing: border-box; + width: 100%; + max-width: 180px; + //width: 200px; + position: relative; + display: flex; + flex-direction: column; + align-items: stretch; + border-radius: var(--uui-border-radius); + border: 1px solid var(--uui-color-divider-emphasis); + background-color: var(--uui-color-background); + padding: var(--uui-size-space-4); + } + + :host([selected]) #card { + border: 1px solid var(--uui-color-selected); + outline: 1px solid var(--uui-color-selected); + } + + #bottom { + margin-top: auto; + } + + slot[name='actions'] { + position: absolute; + top: var(--uui-size-4); + right: var(--uui-size-4); + display: flex; + justify-content: right; + + opacity: 0; + transition: opacity 120ms; + } + + :host(:focus) slot[name='actions'], + :host(:focus-within) slot[name='actions'], + :host(:hover) slot[name='actions'] { + opacity: 1; + } + + #open-part { + border: none; + outline: none; + background: none; + text-align: center; + display: flex; + flex-direction: column; + font-weight: 700; + align-items: center; + cursor: pointer; + flex-grow: 1; + } + + #open-part, + #card { + gap: var(--uui-size-space-2); + } + + #open-part strong { + flex-grow: 1; + display: flex; + align-items: center; + } + + :host([disabled]) #open-part { + pointer-events: none; + } + + #open-part:focus-visible, + #open-part:focus-visible uui-icon, + #open-part:hover, + #open-part:hover uui-icon { + text-decoration: underline; + color: var(--uui-color-interactive-emphasis); + } + + #open-part uui-icon { + font-size: var(--uui-size-20); + color: var(--uui-color-divider-emphasis); + } + `, + ]; + + @property({ type: String }) + name = ''; + + @property({ type: Boolean, reflect: true }) + selected = false; + + _key = ''; + @property({ type: String }) + public set key(newKey: string) { + this._key = newKey; + super.value = newKey; + } + public get key() { + return this._key; + } + + protected getFormElement() { + return undefined; + } + + #setSelection(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + //this.selected = true; + this.dispatchEvent(new CustomEvent('selected', { bubbles: true, composed: true })); + } + #openTemplate(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dispatchEvent(new CustomEvent('open', { bubbles: true, composed: true })); + } + + render() { + return html`
    + + + + ${this.selected ? '(Default template)' : 'Set default'} + +
    `; + } +} + +export default UmbTemplateCardElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-template-card': UmbTemplateCardElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts new file mode 100644 index 0000000000..464e9bc44b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts @@ -0,0 +1,40 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import { html } from 'lit'; +import './template-card.element'; +import type { UmbTemplateCardElement } from './template-card.element'; + +const meta: Meta = { + title: 'Components/Template Card', + component: 'umb-template-card', +}; + +export default meta; +type Story = StoryObj; + +export const Overview: Story = { + args: { + name: 'Template with a name ', + }, +}; + +export const Default: Story = { + args: { + name: 'Just a template', + }, +}; + +export const LongName: Story = { + args: { + name: 'Another template that someone gave a way way too long name without really thinking twice about it', + }, +}; + +export const TemplateCardList: Story = { + render: () => html`
    + + + + +
    `, +}; From 5d1623cecd37957253218763006e9c927e28ed59 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 15 Mar 2023 14:52:04 +0100 Subject: [PATCH 106/550] tabs --- .../document-types/workspace/manifests.ts | 4 +- ...ace-view-document-type-listview.element.ts | 49 +++++++++++ ...-view-document-type-permissions.element.ts | 55 ++++++++++-- ...ce-view-document-type-templates.element.ts | 86 +++++++++++++++++++ .../src/backoffice/shared/components/index.ts | 4 + 5 files changed, 188 insertions(+), 10 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts 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 c1b374e2fa..16ee325068 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 @@ -29,7 +29,7 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DocumentType.ListView', name: 'Document Type Workspace Permissions ListView', - loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), + loader: () => import('./views/listview/workspace-view-document-type-listview.element'), weight: 100, meta: { workspaces: ['Umb.Workspace.DocumentType'], @@ -55,7 +55,7 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DocumentType.Templates', name: 'Document Type Workspace Permissions View', - loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), + loader: () => import('./views/templates/workspace-view-document-type-templates.element'), weight: 100, meta: { workspaces: ['Umb.Workspace.DocumentType'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts new file mode 100644 index 0000000000..31221d76b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts @@ -0,0 +1,49 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, query, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import '../../../../../shared/property-creator/property-creator.element.ts'; + +@customElement('umb-workspace-view-document-type-listview') +export class UmbWorkspaceViewDocumentTypeListviewElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @state() + _documentType?: DocumentTypeModel; + + private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + + constructor() { + super(); + + // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken + this.consumeContext('umbWorkspaceContext', (documentTypeContext) => { + this._workspaceContext = documentTypeContext; + this._observeDocumentType(); + }); + } + + private _observeDocumentType() { + if (!this._workspaceContext) return; + + this.observe(this._workspaceContext.data, (documentType) => { + this._documentType = documentType; + }); + } + + render() { + //this._documentType?.name + return html` Listview `; + } +} + +export default UmbWorkspaceViewDocumentTypeListviewElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace-view-document-type-listview': UmbWorkspaceViewDocumentTypeListviewElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts index 5e9b13ddea..c01cf2038d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts @@ -13,8 +13,15 @@ export class UmbWorkspaceViewDocumentTypePermissionsElement extends UmbLitElemen css` :host { display: block; - margin: var(--uui-size-space-6); - padding: var(--uui-size-space-6); + margin: var(--uui-size-layout-1); + } + uui-label, + umb-property-editor-ui-number { + display: block; + } + + uui-toggle { + display: flex; } `, ]; @@ -43,12 +50,44 @@ export class UmbWorkspaceViewDocumentTypePermissionsElement extends UmbLitElemen } render() { - return html` Permissions of ${this._documentType?.name} - -
    - -
    -
    `; + return html` + + +
    Allow editors to create content of this type in the root of the content tree.
    +
    +
    + +
    + Allow content of the specified types to be created underneath content of this type. +
    +
    + +
    +
    + +
    Allow editors to create content of different languages.
    +
    +
    + +
    + An Element Type is meant to be used for instance in Nested Content, and not in the tree.
    + A Document Type cannot be changed to an Element Type once it has been used to create one or more content + items. +
    +
    +
    + +
    Allow overriding the global history cleanup settings.
    +
    + + Keep all versions newer than days + + Keep latest version per day for days + +
    +
    +
    + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts new file mode 100644 index 0000000000..56e6a2cf47 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts @@ -0,0 +1,86 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, query, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import '../../../../../shared/property-creator/property-creator.element.ts'; + +@customElement('umb-workspace-view-document-type-templates') +export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-layout-1); + } + + #templates { + text-align: center; + } + + #template-card-wrapper { + display: flex; + gap: var(--uui-size-space-4); + align-items: stretch; + } + + umb-workspace-property-layout { + border-top: 1px solid var(--uui-color-border); + } + umb-workspace-property-layout:first-child { + padding-top: 0; + border: none; + } + `, + ]; + + @state() + _documentType?: DocumentTypeModel; + + private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + + constructor() { + super(); + + // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken + this.consumeContext('umbWorkspaceContext', (documentTypeContext) => { + this._workspaceContext = documentTypeContext; + this._observeDocumentType(); + }); + } + + private _observeDocumentType() { + if (!this._workspaceContext) return; + + this.observe(this._workspaceContext.data, (documentType) => { + this._documentType = documentType; + }); + } + + render() { + return html` + +
    Choose which templates editors are allowed to use on content of this type
    +
    + + + + + +
    + +
    +
    `; + } +} + +export default UmbWorkspaceViewDocumentTypeTemplatesElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-workspace-view-document-type-templates': UmbWorkspaceViewDocumentTypeTemplatesElement; + } +} 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 04c03284f7..c7b94c2d90 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 @@ -21,6 +21,7 @@ import './input-checkbox-list/input-checkbox-list.element'; import './input-color-picker/input-color-picker.element'; import './input-culture-select/input-culture-select.element'; import './input-document-picker/input-document-picker.element'; +import './input-document-type-picker/input-document-type-picker.element'; import './input-eye-dropper/input-eye-dropper.element'; import './input-language-picker/input-language-picker.element'; import './input-media-picker/input-media-picker.element'; @@ -46,4 +47,7 @@ import './workspace/workspace-layout/workspace-layout.element'; import './workspace/workspace-footer-layout/workspace-footer-layout.element'; +import './template-cards/template-card.element'; +import './template-cards/template-card-list.element'; + export const manifests = [...debugManifests]; From fc24e6c0d3f8f94901467c19f4a429ebc129c110 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 15 Mar 2023 14:52:09 +0100 Subject: [PATCH 107/550] picker --- .../input-document-type-picker.element.ts | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts new file mode 100644 index 0000000000..96dd248079 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -0,0 +1,182 @@ +import { css, html, nothing } from 'lit'; +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 { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/documents/repository/document.tree.store'; +import { UmbDocumentTypeTreeStore } from '../../../documents/document-types/repository/document-type.tree.store'; +import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbLitElement } from '@umbraco-cms/element'; +import type { DocumentTypeTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { UmbObserverController } from '@umbraco-cms/observable-api'; + +@customElement('umb-input-document-type-picker') +export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitElement) { + static styles = [ + UUITextStyles, + css` + #add-button { + width: 100%; + } + `, + ]; + /** + * This is a minimum amount of selected items in this input. + * @type {number} + * @attr + * @default undefined + */ + @property({ type: Number }) + min?: number; + + /** + * Min validation message. + * @type {boolean} + * @attr + * @default + */ + @property({ type: String, attribute: 'min-message' }) + minMessage = 'This field need more items'; + + /** + * This is a maximum amount of selected items in this input. + * @type {number} + * @attr + * @default undefined + */ + @property({ type: Number }) + max?: number; + + /** + * Max validation message. + * @type {boolean} + * @attr + * @default + */ + @property({ type: String, attribute: 'min-message' }) + maxMessage = 'This field exceeds the allowed amount of items'; + + // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. + private _selectedKeys: Array = []; + public get selectedKeys(): Array { + return this._selectedKeys; + } + public set selectedKeys(keys: Array) { + this._selectedKeys = keys; + super.value = keys.join(','); + this._observePickedDocuments(); + } + + @property() + public set value(keysString: string) { + if (keysString !== this._value) { + this.selectedKeys = keysString.split(/[ ,]+/); + } + } + + @state() + private _items?: Array; + + private _modalContext?: UmbModalContext; + private _documentStore?: UmbDocumentTypeTreeStore; + private _pickedItemsObserver?: UmbObserverController; + + constructor() { + super(); + + this.addValidator( + 'rangeUnderflow', + () => this.minMessage, + () => !!this.min && this._selectedKeys.length < this.min + ); + this.addValidator( + 'rangeOverflow', + () => this.maxMessage, + () => !!this.max && this._selectedKeys.length > this.max + ); + + this.consumeContext(UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN, (instance) => { + this._documentStore = instance; + this._observePickedDocuments(); + }); + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + } + + protected getFormElement() { + return undefined; + } + + private _observePickedDocuments() { + this._pickedItemsObserver?.destroy(); + + if (!this._documentStore) return; + + // TODO: consider changing this to the list data endpoint when it is available + this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedKeys), (items) => { + this._items = items; + }); + } + + private _openPicker() { + // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: + const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL_TOKEN, { + multiple: this.max === 1 ? false : true, + selection: [...this._selectedKeys], + }); + + modalHandler?.onSubmit().then(({ selection }: any) => { + this._setSelection(selection); + }); + } + + private async _removeItem(item: FolderTreeItemModel) { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + color: 'danger', + headline: `Remove ${item.name}?`, + content: 'Are you sure you want to remove this item', + confirmLabel: 'Remove', + }); + + await modalHandler?.onSubmit(); + const newSelection = this._selectedKeys.filter((value) => value !== item.key); + this._setSelection(newSelection); + } + + private _setSelection(newSelection: Array) { + this.selectedKeys = newSelection; + this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); + } + + render() { + return html` + ${this._items?.map((item) => this._renderItem(item))} + Add + `; + } + + private _renderItem(item: FolderTreeItemModel) { + // TODO: remove when we have a way to handle trashed items + const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + + return html` + + ${tempItem.isTrashed ? html` Trashed ` : nothing} + + this._removeItem(item)} label="Remove document ${item.name}">Remove + + + `; + } +} + +export default UmbInputDocumentTypePickerElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-input-document-type-picker': UmbInputDocumentTypePickerElement; + } +} From 3490132194683c2346f404e3a1473be5bbf876d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 17:14:35 +0100 Subject: [PATCH 108/550] variantID handling --- src/Umbraco.Web.UI.Client/src/app.ts | 1 + .../workspace-property.context.ts | 52 +++++++++--- .../clear/property-action-clear.element.ts | 10 ++- .../property-editor-ui-block-grid.element.ts | 31 ++++---- .../property-editor-ui-textarea.element.ts | 2 +- .../src/core/router/index.ts | 1 + .../src/core/router/route.context.ts | 2 +- .../src/core/router/router-slot.element.ts | 16 ++-- .../router/variant-router-slot.element.ts | 79 +++++++++++++++++++ 9 files changed, 154 insertions(+), 40 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 10fd0f49e3..1108ba4c71 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -9,6 +9,7 @@ import '@umbraco-ui/uui-modal-sidebar'; import 'element-internals-polyfill'; import './core/router/router-slot.element'; +import './core/router/variant-router-slot.element'; import './core/notification/layouts/default'; import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 5474e323a9..9140223273 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -3,8 +3,8 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspa import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; import type { DataTypeModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ObjectState, StringState, UmbObserverController } from '@umbraco-cms/observable-api'; -import { UmbContextConsumerController, UmbContextProviderController } from '@umbraco-cms/context-api'; +import { ClassState, ObjectState, StringState, UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; // If we get this from the server then we can consider using TypeScripts Partial<> around the model from the Management-API. export type WorkspacePropertyData = { @@ -28,12 +28,16 @@ export class UmbWorkspacePropertyContext { public readonly value = this._data.getObservablePart((data) => data.value); public readonly config = this._data.getObservablePart((data) => data.config); - private _variantId?: UmbVariantId; + #workspaceVariantId?: UmbVariantId; + + #variantId = new ClassState(undefined); + public readonly variantId = this.#variantId.asObservable(); private _variantDifference = new StringState(undefined); public readonly variantDifference = this._variantDifference.asObservable(); private _workspaceContext?: UmbWorkspaceVariableEntityContextInterface; + private _workspaceVariantConsumer?: UmbContextConsumerController; constructor(host: UmbControllerHostInterface) { this.#host = host; @@ -46,7 +50,32 @@ export class UmbWorkspacePropertyContext { } ); - this._providerController = new UmbContextProviderController(host, 'umbPropertyContext', this); + this._providerController = new UmbContextProviderController(host, UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, this); + + this.variantId.subscribe((propertyVariantId) => { + if (propertyVariantId) { + if (!this._workspaceVariantConsumer) { + this._workspaceVariantConsumer = new UmbContextConsumerController( + this.#host, + UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN, + (workspaceVariantContext) => { + new UmbObserverController(this.#host, workspaceVariantContext.variantId, (workspaceVariantId) => { + this.#workspaceVariantId = workspaceVariantId; + this._generateVariantDifferenceString(); + }); + } + ); + } else { + this._generateVariantDifferenceString(); + } + } + }); + } + + private _generateVariantDifferenceString() { + this._variantDifference.next( + this.#workspaceVariantId ? this.#variantId.getValue()?.toDifferencesString(this.#workspaceVariantId) : '' + ); } public setAlias(alias: WorkspacePropertyData['alias']) { @@ -67,22 +96,17 @@ export class UmbWorkspacePropertyContext { const alias = this._data.getValue().alias; if (alias) { - this._workspaceContext?.setPropertyValue(alias, value, this._variantId); + this._workspaceContext?.setPropertyValue(alias, value, this.#variantId.getValue()); } } public setConfig(config: WorkspacePropertyData['config']) { this._data.update({ config }); } public setVariantId(variantId: UmbVariantId | undefined) { - this._variantId = variantId; - new UmbContextConsumerController(this.#host, UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN, (variantContext) => { - new UmbObserverController(this.#host, variantContext.variantId, (variantId) => { - this._variantDifference.next(variantId ? this._variantId?.toDifferencesString(variantId) : ''); - }); - }); + this.#variantId.next(variantId); } public getVariantId() { - return this._variantId; + return this.#variantId.getValue(); } public resetValue() { @@ -94,3 +118,7 @@ export class UmbWorkspacePropertyContext { this._providerController.destroy(); // This would also be handled by the controller host, but if someone wanted to replace/remove this context without the host being destroyed. Then we have clean up out selfs here. } } + +export const UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN = new UmbContextToken( + 'UmbWorkspacePropertyContext' +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts index 6df5a91cc9..dd9b66440d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts @@ -2,12 +2,14 @@ import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; //import type { UmbPropertyActionMenuContext } from '../shared/property-action-menu/property-action-menu.context'; import { UmbPropertyAction } from '../shared/property-action/property-action.model'; -import type { UmbWorkspacePropertyContext } from '../../components/workspace-property/workspace-property.context'; +import { + UmbWorkspacePropertyContext, + UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, +} from '../../components/workspace-property/workspace-property.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-property-action-clear') export class UmbPropertyActionClearElement extends UmbLitElement implements UmbPropertyAction { - @property() value = ''; @@ -23,7 +25,7 @@ export class UmbPropertyActionClearElement extends UmbLitElement implements UmbP this._propertyActionMenuContext = propertyActionsContext; }); */ - this.consumeContext('umbPropertyContext', (propertyContext: UmbWorkspacePropertyContext) => { + this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (propertyContext: UmbWorkspacePropertyContext) => { this._propertyContext = propertyContext; }); } @@ -40,7 +42,7 @@ export class UmbPropertyActionClearElement extends UmbLitElement implements UmbP //this.value = '';// This is though bad as it assumes we are dealing with a string. So wouldn't work as a generalized element. //this.dispatchEvent(new CustomEvent('property-value-change')); // Or you can do this: - this._propertyContext?.resetValue();// This resets value to what the property wants. + this._propertyContext?.resetValue(); // This resets value to what the property wants. } render() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts index 88074e0bb5..8673788e1d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts @@ -2,10 +2,11 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../../../../shared/components/workspace/workspace-variant/workspace-variant.context'; -import { UmbVariantId } from '../../../../shared/variants/variant-id.class'; import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; +import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../../../../shared/components/workspace/workspace-variant/workspace-variant.context'; +import { UmbVariantId } from '../../../../shared/variants/variant-id.class'; +import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; import { UmbLitElement } from '@umbraco-cms/element'; /** @@ -38,10 +39,9 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement constructor() { super(); - this.consumeContext(UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN, (context) => { - this._variantContext = context; - this.observe(this._variantContext?.variantId, (variantId) => { - this._variantId = variantId; + this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (context) => { + this.observe(context?.variantId, (propertyVariantId) => { + this._variantId = propertyVariantId; this.setupRoutes(); }); }); @@ -52,7 +52,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement if (this._variantId !== undefined) { this._routes = [ { - path: this._variantId.toString() + '/modal-1', + path: 'modal-1', component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, @@ -64,7 +64,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement }, }, { - path: this._variantId.toString() + '/modal-2', + path: 'modal-2', //pathMatch: 'full', component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); @@ -88,17 +88,16 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement + href="${this._routerPath + '/'}modal-1" + .active=${this._routerPath + '/' + 'modal-1' === this._activePath}> + href="${this._routerPath + '/'}modal-2" + .active=${this._routerPath + '/' + 'modal-2' === this._activePath}> - { @@ -107,7 +106,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement @change=${(event: UmbRouterSlotChangeEvent) => { this._activePath = event.target.localActiveViewPath; }}> - + ` : 'loading...'; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts index de39bfcbd7..4bf9190ba7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts @@ -28,7 +28,7 @@ export class UmbPropertyEditorUITextareaElement extends UmbLitElement implements constructor() { super(); - this.consumeContext('umbPropertyContext', (instance: UmbWorkspacePropertyContext) => { + this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (instance: UmbWorkspacePropertyContext) => { this.propertyContext = instance; }); } diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index a6d871dbab..c1fffae64a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -3,3 +3,4 @@ export * from './route.context'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; +export * from './variant-router-slot.element'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 3f3851fb54..70b430ed27 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -81,7 +81,7 @@ export class UmbRouteContext { const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; return { path: localPath, - pathMatch: 'suffix', + //pathMatch: 'suffix', component: EmptyDiv, setup: modalRegistration.routeSetup, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 5dc12dcc0b..bdfad1f77b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -10,7 +10,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; /** * @element umb-router-slot-element * @description - Component for wrapping Router Slot element, providing some local events for implementation. - * @extends UmbRouterSlotElement + * @extends UmbLitElement * @fires {UmbRouterSlotInitEvent} init - fires when the router is connected * @fires {UmbRouterSlotChangeEvent} change - fires when a path of this router is changed */ @@ -51,11 +51,15 @@ export class UmbRouterSlotElement extends UmbLitElement { constructor() { super(); this.#modalRouter.parent = this.#router; - this.#router.addEventListener('changestate', this._onChangeState); + this.#router.addEventListener('changestate', this._updateRouterPath.bind(this)); //this.#router.appendChild(this.#modalRouter); this.#router.appendChild(document.createElement('slot')); } + protected _constructAbsoluteRouterPath() { + return this.#router.constructAbsolutePath('') || ''; + } + connectedCallback() { super.connectedCallback(); // Currently we have to set this every time as RouteSlot looks for its parent every-time it is connected. Aka it has not way to explicitly set the parent. @@ -75,13 +79,13 @@ export class UmbRouterSlotElement extends UmbLitElement { protected firstUpdated(_changedProperties: PropertyValueMap | Map): void { super.firstUpdated(_changedProperties); - this._routerPath = this.#router.constructAbsolutePath('') || ''; + this._routerPath = this._constructAbsoluteRouterPath(); this.#routeContext._internal_routerGotBasePath(this._routerPath); this.dispatchEvent(new UmbRouterSlotInitEvent()); } - private _onChangeState = () => { - const newAbsolutePath = this.#router.constructAbsolutePath('') || ''; + protected _updateRouterPath() { + const newAbsolutePath = this._constructAbsoluteRouterPath(); if (this._routerPath !== newAbsolutePath) { this._routerPath = newAbsolutePath; this.#routeContext._internal_routerGotBasePath(this._routerPath); @@ -93,7 +97,7 @@ export class UmbRouterSlotElement extends UmbLitElement { this.dispatchEvent(new UmbRouterSlotChangeEvent()); } } - }; + } private _onNavigationChanged = (event?: any) => { if (event.detail.slot === this.#router) { diff --git a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts new file mode 100644 index 0000000000..f9cb7c574f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts @@ -0,0 +1,79 @@ +import { customElement, property } from 'lit/decorators.js'; +import { IRoute } from 'router-slot'; +import { UmbVariantId } from '../../backoffice/shared/variants/variant-id.class'; +import { UmbRouterSlotElement } from './router-slot.element'; + +function variantIdsToString(variantIds: UmbVariantId[]): string { + return variantIds.map((id) => id.toString()).join('_&_'); +} + +/** + * @element umb-variant-router-slot-element + * @description - Component for wrapping Router Slot element, providing + * @extends UmbRouterSlotElement + * @fires {UmbRouterSlotInitEvent} init - fires when the router is connected + * @fires {UmbRouterSlotChangeEvent} change - fires when a path of this router is changed + */ +@customElement('umb-variant-router-slot') +export class UmbVariantRouterSlotElement extends UmbRouterSlotElement { + #variantIds: UmbVariantId[] = []; + + #getPathPrefix() { + return variantIdsToString(this.#variantIds); + } + + #currentPathPrefix = ''; + private _routes?: IRoute[]; + public get routes(): IRoute[] | undefined { + return this._routes; + } + public set routes(value: IRoute[] | undefined) { + this._routes = value; + if (this.#variantIds.length > 0) { + this._updateRoutes(); + } + } + + private _updateRoutes() { + const newPrefix = this.#getPathPrefix(); + if (newPrefix !== this.#currentPathPrefix) { + this.#currentPathPrefix = newPrefix; + const prepend = newPrefix === '' ? '' : newPrefix + '/'; + const mappedRoutes = this._routes?.map((route) => { + return { + ...route, + path: prepend + route.path, + }; + }); + super.routes = mappedRoutes; + this._updateRouterPath(); + } + } + + @property() + public get variantId(): UmbVariantId[] { + return this.#variantIds; + } + public set variantId(value: UmbVariantId[] | UmbVariantId) { + if (Array.isArray(value)) { + this.#variantIds = [...(value as UmbVariantId[])]; + } else if (value) { + this.#variantIds = [value]; + } else { + this.#variantIds = []; + } + if (this._routes) { + this._updateRoutes(); + } + } + + protected _constructAbsoluteRouterPath() { + return super._constructAbsoluteRouterPath() + (this.#currentPathPrefix !== '' ? '/' + this.#currentPathPrefix : ''); + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-router-slot': UmbRouterSlotElement; + } +} From 28b4ea55d868df56868e9d02f30be193f1899dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 20:17:52 +0100 Subject: [PATCH 109/550] make observer re-subscribe on hostConnected if unsubscribed by hostDisconnected --- .../libs/observable-api/observer.controller.ts | 4 ---- .../libs/observable-api/observer.ts | 13 +++++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts index 38f51421cc..cc223e1d48 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts @@ -22,8 +22,4 @@ export class UmbObserverController extends UmbObserver implement host.addController(this); } - - hostConnected() { - return; - } } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts index bf7210c284..0ce9ce6fef 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts @@ -1,15 +1,20 @@ import { Observable, Subscription } from 'rxjs'; export class UmbObserver { + #source!: Observable; + #callback!: (_value: T) => void; #subscription!: Subscription; constructor(source: Observable, callback: (_value: T) => void) { - this.#subscription = source.subscribe((value) => { - callback(value); - }); + this.#source = source; + this.#subscription = source.subscribe(callback); } - // Notice controller class implements empty hostConnected(). + hostConnected() { + if (this.#subscription.closed) { + this.#subscription = this.#source.subscribe(this.#callback); + } + } hostDisconnected() { this.#subscription.unsubscribe(); From 70ba4489ea1b049a892a9ff94855f5cf5b6d82a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 20:34:56 +0100 Subject: [PATCH 110/550] clean up --- .../document-workspace-view-edit.element.ts | 1 - .../input-multi-url-picker.element.ts | 42 ++----------------- .../src/core/router/route.context.ts | 12 +++--- 3 files changed, 10 insertions(+), 45 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts index 6dfc9ca79b..c9abb815fa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts @@ -68,7 +68,6 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { this.observe( this._workspaceContext.rootPropertyStructures(), (rootPropertyStructure) => { - console.log('rootPropertyStructure', rootPropertyStructure); this._hasRootProperties = rootPropertyStructure.length > 0; this._createRoutes(); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index a961a8d4f4..39e9082c4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -131,7 +131,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this._routeContext.registerModal(UMB_LINK_PICKER_MODAL_TOKEN, { path: `${'this.alias'}/:index`, onSetup: (routingInfo) => { - console.log('call onSetup'); // TODO: Make onSetup optional. // TODO: Maybe use UmbRouteLocation? // Get index from routeInfo: @@ -141,8 +140,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen if (Number.isNaN(index)) return false; // Use the index to find data: - console.log('onSetup modal index:', index); - let data: UmbLinkPickerLink | null = null; if (index >= 0 && index < this.urls.length) { data = this._getItemByIndex(index); @@ -150,8 +147,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen index = null; } - console.log('onSetup modal got data:', data); - return { index: index, lol: false, @@ -172,15 +167,10 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen }; }, onSubmit: (submitData) => { - console.log('On submit in property editor input'); if (!submitData) return; this._setSelection(submitData.link, submitData.index); }, - onReject: () => { - console.log('User cancelled dialog.'); - }, onUrlBuilder: (urlBuilder) => { - console.log('got onUrlBuilder'); this._linkPickerURL = urlBuilder; }, }); @@ -211,51 +201,27 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this.dispatchEvent(new CustomEvent('change', { composed: true, bubbles: true })); } - private _openPicker(data?: UmbLinkPickerLink, index?: number) { - console.log('JS open picker, should fail for now,'); - /* - const modalHandler = this._modalContext?.open(UMB_LINK_PICKER_MODAL_TOKEN, { - link: { - name: data?.name, - published: data?.published, - queryString: data?.queryString, - target: data?.target, - trashed: data?.trashed, - udi: data?.udi, - url: data?.url, - }, - config: { - hideAnchor: this.hideAnchor, - ignoreUserStartNodes: this.ignoreUserStartNodes, - overlaySize: this.overlaySize || 'small', - }, - }); - modalHandler?.onSubmit().then((newUrl: UmbLinkPickerLink) => { - if (!newUrl) return; - - this._setSelection(newUrl, index); - }); - */ + // TODO: We should get a href property on uui-ref-node, and not use this method: + private _temporary_onClick_editItem(index: number) { + window.history.pushState({}, '', this._linkPickerURL?.({ index: index || -1 })); } render() { return html`${this.urls?.map((link, index) => this._renderItem(link, index))} Add`; - // "modal/Umb.Modal.LinkPicker/${'to-do-myPropertyAlias'}/-1" } private _renderItem(link: UmbLinkPickerLink, index: number) { return html` + @open="${() => this._temporary_onClick_editItem(index)}"> Edit Remove `; - // "modal/Umb.Modal.LinkPicker/${'to-do-myPropertyAlias'}/${index}" } } diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 70b430ed27..65da282864 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -8,9 +8,9 @@ const EmptyDiv = document.createElement('div'); // TODO: Consider accepting the Token as a generic: export type UmbModalRouteOptions = { path: string; - onSetup: (routingInfo: IRoutingInfo) => UmbModalTokenData | false; - onSubmit: (data: UmbModalTokenResult) => void | PromiseLike; - onReject: () => void; + onSetup?: (routingInfo: IRoutingInfo) => UmbModalTokenData | false; + onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; + onReject?: () => void; onUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; }; @@ -51,9 +51,9 @@ export class UmbRouteContext { alias: alias, options: options, routeSetup: (component: HTMLElement, info: IRoutingInfo) => { - const modalData = options.onSetup(info); - if (modalData && this.#modalContext) { - const modalHandler = this.#modalContext.open(alias, modalData); + const modalData = options.onSetup?.(info); + if (modalData !== false && this.#modalContext) { + const modalHandler = this.#modalContext.open(alias, modalData || {}); modalHandler.onSubmit().then( () => this.#removeModalPath(info), () => this.#removeModalPath(info) From 4d329e6a1113ebe621c4ec03ef2bc73e4dc81e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 21:07:41 +0100 Subject: [PATCH 111/550] use our own Route type --- .../documents/workspace/document-workspace.element.ts | 8 +++----- src/Umbraco.Web.UI.Client/src/core/router/index.ts | 1 + .../src/core/router/route.interface.ts | 11 +++++++++++ .../src/core/router/router-slot.element.ts | 9 +++++---- .../src/core/router/variant-router-slot.element.ts | 8 ++++---- 5 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 7de8fefaa8..9db5e82a1e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import { UmbRoute, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; @@ -33,7 +33,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor _unique?: string; @state() - _routes?: Array; + _routes?: Array; @state() _availableVariants: Array = []; @@ -84,14 +84,13 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor if (!this._availableVariants || this._availableVariants.length === 0) return; // Generate split view routes for all available routes - const routes: Array = []; + const routes: Array = []; // Split view routes: this._availableVariants.forEach((variantA) => { this._availableVariants.forEach((variantB) => { routes.push({ path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), - //component: () => import('./document-workspace-split-view.element'), component: this.splitViewElement, setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { // Set split view/active info.. @@ -108,7 +107,6 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor this._availableVariants.forEach((variant) => { routes.push({ path: new UmbVariantId(variant).toString(), - //component: () => import('./document-workspace-split-view.element'), component: this.splitViewElement, setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { // cause we might come from a split-view, we need to reset index 1. diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index c1fffae64a..eafdca757c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,4 +1,5 @@ export * from 'router-slot'; +export * from './route.interface'; export * from './route.context'; export * from './router-slot.element'; export * from './router-slot-change.event'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts new file mode 100644 index 0000000000..0017d03325 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts @@ -0,0 +1,11 @@ +import type { IRoute } from 'router-slot/model'; +/* +type Optional = { [P in keyof T]?: T[P] }; + +type IRouteWithComponentRoute = Exclude; +type IComponentRouteWithOptionalComponent = Omit & + Optional>; + +export type UmbRoute = IRouteWithComponentRoute | IComponentRouteWithOptionalComponent; +*/ +export type UmbRoute = IRoute; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index bdfad1f77b..3f11fd66b6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -1,10 +1,11 @@ -import type { IRoute } from 'router-slot/model'; +import type { IComponentRoute, IRedirectRoute, IResolverRoute, IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; import { html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; import { UmbRouteContext } from './route.context'; +import { UmbRoute } from './route.interface'; import { UmbLitElement } from '@umbraco-cms/element'; /** @@ -21,11 +22,11 @@ export class UmbRouterSlotElement extends UmbLitElement { #listening = false; @property() - public get routes(): IRoute[] | undefined { + public get routes(): UmbRoute[] | undefined { return (this.#router as any).routes; } - public set routes(value: IRoute[] | undefined) { - (this.#router as any).routes = value; + public set routes(value: UmbRoute[] | undefined) { + this.#router.routes = (value as IRoute[]) || []; } private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts index f9cb7c574f..94983c5ec9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts @@ -1,6 +1,6 @@ import { customElement, property } from 'lit/decorators.js'; -import { IRoute } from 'router-slot'; import { UmbVariantId } from '../../backoffice/shared/variants/variant-id.class'; +import { UmbRoute } from './route.interface'; import { UmbRouterSlotElement } from './router-slot.element'; function variantIdsToString(variantIds: UmbVariantId[]): string { @@ -23,11 +23,11 @@ export class UmbVariantRouterSlotElement extends UmbRouterSlotElement { } #currentPathPrefix = ''; - private _routes?: IRoute[]; - public get routes(): IRoute[] | undefined { + private _routes?: UmbRoute[]; + public get routes(): UmbRoute[] | undefined { return this._routes; } - public set routes(value: IRoute[] | undefined) { + public set routes(value: UmbRoute[] | undefined) { this._routes = value; if (this.#variantIds.length > 0) { this._updateRoutes(); From 5f1f68570237bec841d28b6b901531e407412e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 21:08:27 +0100 Subject: [PATCH 112/550] remove unused type --- .../documents/documents/workspace/document-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 9db5e82a1e..396e6e4714 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from 'router-slot'; +import { IRoutingInfo } from 'router-slot'; import { UmbRoute, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; From 66102393dd706330dbf006b0fb5ebd00d8d37c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 21:11:13 +0100 Subject: [PATCH 113/550] clean up --- .../input-multi-url-picker/input-multi-url-picker.element.ts | 1 - .../property-editor-ui-multi-url-picker.element.ts | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 39e9082c4d..1f610b4281 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -100,7 +100,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen } private _urls: Array = []; - //private _modalContext?: UmbModalContext; private _routeContext?: UmbRouteContext; @state() diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index f4b1f0b068..0541dd9f46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -2,9 +2,9 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; @@ -53,7 +53,6 @@ export class UmbPropertyEditorUIMultiUrlPickerElement extends UmbLitElement impl private _onChange(event: CustomEvent) { this.value = (event.target as UmbInputMultiUrlPickerElement).urls; - console.log(this.value); this.dispatchEvent(new CustomEvent('property-value-change')); } From 42851af47b08bb73e0a28a6a77a014c2eb5baa69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 21:12:46 +0100 Subject: [PATCH 114/550] notes --- .../input-multi-url-picker.element.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 1f610b4281..e4fa4a1d97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -120,6 +120,19 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen // TODO: make a helper that get the context, watches one or more props to use to update the registration, can be or have something that is stateful so its easy to use the URLBuilder. + /* + + new UmbPropertyEditorModalRegistration(this, UMB_LINK_PICKER_MODAL_TOKEN, (modalToken) => { + ...FormControlMixin + }); + + */ + /* + + Or use a property context method..? + + */ + this.consumeContext(UMB_ROUTE_CONTEXT_TOKEN, (instance) => { this._routeContext = instance; From 6b86f31c9e81bb9e9d9606cf5230173d19739c96 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Thu, 16 Mar 2023 16:18:16 +1000 Subject: [PATCH 115/550] regenerate --- .../backend-api/src/core/CancelablePromise.ts | 197 +++++++------ .../libs/backend-api/src/index.ts | 274 ++++++++++-------- .../src/models/AuditLogBaseModel.ts | 1 - .../src/models/AuditLogResponseModel.ts | 1 - .../AuditLogWithUsernameResponseModel.ts | 5 +- ...el.ts => ConsentLevelPresentationModel.ts} | 3 +- ...ValueModelDocumentVariantResponseModel.ts} | 9 +- .../src/models/ContentTreeItemModel.ts | 12 - .../models/ContentTreeItemResponseModel.ts | 11 + .../src/models/ContentTypeCleanupModel.ts | 1 - .../src/models/ContentTypeCompositionModel.ts | 1 - ...TypePropertyTypeContainerResponseModel.ts} | 13 +- ...aTypePropertyTypeContainerResponseModel.ts | 24 ++ .../src/models/ContentTypeSortModel.ts | 1 - .../src/models/ContentUrlInfoModel.ts | 1 - ...veModel.ts => CopyDataTypeRequestModel.ts} | 3 +- ...ntValueModelDocumentVariantRequestModel.ts | 12 + ...MediaValueModelMediaVariantRequestModel.ts | 12 + ...Model.ts => CreateDataTypeRequestModel.ts} | 5 +- ...ts => CreateDictionaryItemRequestModel.ts} | 5 +- .../src/models/CreateDocumentRequestModel.ts | 10 + ...teModel.ts => CreateFolderRequestModel.ts} | 5 +- ...Model.ts => CreateLanguageRequestModel.ts} | 5 +- .../src/models/CreateMediaRequestModel.ts | 9 + ...eModel.ts => CreatePackageRequestModel.ts} | 3 +- .../models/CreateRelationTypeRequestModel.ts | 9 + ...Model.ts => CreateTemplateRequestModel.ts} | 3 +- ...CultureModel.ts => CultureReponseModel.ts} | 3 +- .../src/models/DataTypeModelBaseModel.ts | 5 +- ...s => DataTypePropertyPresentationModel.ts} | 3 +- .../models/DataTypePropertyReferenceModel.ts | 1 - ...l.ts => DataTypeReferenceResponseModel.ts} | 3 +- ...aTypeModel.ts => DataTypeResponseModel.ts} | 9 +- ...del.ts => DatabaseInstallResponseModel.ts} | 3 +- ...s => DatabaseSettingsPresentationModel.ts} | 3 +- .../models/DictionaryItemModelBaseModel.ts | 1 - ...odel.ts => DictionaryItemResponseModel.ts} | 7 +- .../models/DictionaryItemTranslationModel.ts | 1 - ....ts => DictionaryOverviewResponseModel.ts} | 3 +- .../src/models/DictionaryUploadModel.ts | 11 - .../models/DocumentBlueprintTreeItemModel.ts | 13 - .../DocumentBlueprintTreeItemResponseModel.ts | 12 + .../backend-api/src/models/DocumentModel.ts | 12 - .../src/models/DocumentResponseModel.ts | 11 + .../src/models/DocumentTreeItemModel.ts | 13 - .../models/DocumentTreeItemResponseModel.ts | 12 + .../src/models/DocumentTypeModel.ts | 11 - .../DocumentTypePropertyTypeContainerModel.ts | 8 - ...tTypePropertyTypeContainerResponseModel.ts | 7 + .../models/DocumentTypePropertyTypeModel.ts | 8 - .../DocumentTypePropertyTypeResponseModel.ts | 7 + .../src/models/DocumentTypeResponseModel.ts | 12 + .../src/models/DocumentTypeTreeItemModel.ts | 11 - .../DocumentTypeTreeItemResponseModel.ts | 10 + .../src/models/DocumentValueModel.ts | 7 +- .../src/models/DocumentVariantModel.ts | 12 - .../src/models/DocumentVariantRequestModel.ts | 9 + .../models/DocumentVariantResponseModel.ts | 12 + .../src/models/DomainPresentationModel.ts | 8 + .../DomainsPresentationModelBaseModel.ts | 10 + .../src/models/DomainsResponseModel.ts | 7 + .../src/models/EntityTreeItemModel.ts | 13 - .../src/models/EntityTreeItemResponseModel.ts | 12 + ...ieldModel.ts => FieldPresentationModel.ts} | 3 +- .../src/models/FileSystemTreeItemModel.ts | 11 - .../FileSystemTreeItemPresentationModel.ts | 10 + .../src/models/FolderModelBaseModel.ts | 1 - .../{FolderModel.ts => FolderReponseModel.ts} | 9 +- .../src/models/FolderTreeItemModel.ts | 11 - .../src/models/FolderTreeItemResponseModel.ts | 10 + ...el.ts => HealthCheckActionRequestModel.ts} | 3 +- .../src/models/HealthCheckGroupModel.ts | 11 - ... HealthCheckGroupPresentationBaseModel.ts} | 3 +- .../HealthCheckGroupPresentationModel.ts | 10 + .../models/HealthCheckGroupResponseModel.ts | 7 + .../models/HealthCheckGroupWithResultModel.ts | 10 - ...HealthCheckGroupWithResultResponseModel.ts | 9 + .../src/models/HealthCheckModel.ts | 5 +- .../src/models/HealthCheckModelBaseModel.ts | 1 - ...l.ts => HealthCheckResultResponseModel.ts} | 7 +- .../src/models/HealthCheckWithResultModel.ts | 11 - .../HealthCheckWithResultPresentationModel.ts | 10 + ...pPageModel.ts => HelpPageResponseModel.ts} | 3 +- ...ImportDictionaryItemsPresentationModel.ts} | 3 +- ...del.ts => ImportDictionaryRequestModel.ts} | 3 +- .../{IndexModel.ts => IndexResponseModel.ts} | 3 +- .../backend-api/src/models/InstallModel.ts | 14 - .../src/models/InstallSettingsModel.ts | 12 - .../models/InstallSettingsResponseModel.ts | 11 + .../src/models/InstallVResponseModel.ts | 13 + .../src/models/LanguageModelBaseModel.ts | 1 - ...guageModel.ts => LanguageResponseModel.ts} | 5 +- ...Model.ts => LogLevelCountsReponseModel.ts} | 3 +- ...=> LogMessagePropertyPresentationModel.ts} | 3 +- ...ageModel.ts => LogMessageResponseModel.ts} | 7 +- ...teModel.ts => LogTemplateResponseModel.ts} | 3 +- ...{LoggerModel.ts => LoggerResponseModel.ts} | 3 +- ...aTypePropertyTypeContainerResponseModel.ts | 7 + .../MediaTypePropertyTypeResponseModel.ts | 7 + .../src/models/MediaTypeResponseModel.ts | 7 + .../backend-api/src/models/MediaValueModel.ts | 9 + .../src/models/MediaVariantRequestModel.ts | 9 + .../src/models/MediaVariantResponseModel.ts | 9 + ...Model.ts => ModelsBuilderResponseModel.ts} | 3 +- ...veModel.ts => MoveDataTypeRequestModel.ts} | 3 +- ...Model.ts => MoveDictionaryRequestModel.ts} | 3 +- .../src/models/ObjectTypeResponseModel.ts | 8 + .../backend-api/src/models/OkResultModel.ts | 1 - ...del.ts => OutOfDateStatusResponseModel.ts} | 3 +- ...l.ts => PackageDefinitionResponseModel.ts} | 7 +- ...del.ts => PackageManifestResponseModel.ts} | 3 +- ...=> PackageMigrationStatusResponseModel.ts} | 3 +- .../src/models/PackageModelBaseModel.ts | 1 - .../src/models/PagedAuditLogResponseModel.ts | 1 - .../PagedAuditLogWithUsernameResponseModel.ts | 1 - .../src/models/PagedContentTreeItemModel.ts | 12 - .../PagedContentTreeItemResponseModel.ts | 11 + .../src/models/PagedCultureModel.ts | 11 - .../src/models/PagedCultureReponseModel.ts | 10 + .../models/PagedDictionaryOverviewModel.ts | 11 - .../PagedDictionaryOverviewResponseModel.ts | 10 + .../PagedDocumentBlueprintTreeItemModel.ts | 11 - ...dDocumentBlueprintTreeItemResponseModel.ts | 10 + .../src/models/PagedDocumentTreeItemModel.ts | 11 - .../PagedDocumentTreeItemResponseModel.ts | 10 + .../models/PagedDocumentTypeTreeItemModel.ts | 11 - .../PagedDocumentTypeTreeItemResponseModel.ts | 10 + .../src/models/PagedEntityTreeItemModel.ts | 16 - .../PagedEntityTreeItemResponseModel.ts | 15 + .../models/PagedFileSystemTreeItemModel.ts | 11 - ...agedFileSystemTreeItemPresentationModel.ts | 10 + .../src/models/PagedFolderTreeItemModel.ts | 12 - .../PagedFolderTreeItemResponseModel.ts | 11 + .../PagedHealthCheckGroupModelBaseModel.ts | 12 - .../PagedHealthCheckGroupResponseModel.ts | 10 + .../src/models/PagedHelpPageModel.ts | 11 - .../src/models/PagedHelpPageResponseModel.ts | 10 + .../backend-api/src/models/PagedIndexModel.ts | 11 - .../src/models/PagedIndexResponseModel.ts | 10 + .../src/models/PagedLanguageModel.ts | 11 - .../src/models/PagedLanguageResponseModel.ts | 10 + .../src/models/PagedLogMessageModel.ts | 11 - .../models/PagedLogMessageResponseModel.ts | 10 + .../src/models/PagedLogTemplateModel.ts | 11 - .../models/PagedLogTemplateResponseModel.ts | 10 + .../src/models/PagedLoggerModel.ts | 11 - .../src/models/PagedLoggerResponseModel.ts | 10 + .../models/PagedObjectTypeResponseModel.ts | 10 + .../src/models/PagedPackageDefinitionModel.ts | 11 - .../PagedPackageDefinitionResponseModel.ts | 10 + .../PagedPackageMigrationStatusModel.ts | 11 - ...agedPackageMigrationStatusResponseModel.ts | 10 + .../src/models/PagedRecycleBinItemModel.ts | 11 - .../PagedRecycleBinItemResponseModel.ts | 10 + .../src/models/PagedRedirectUrlModel.ts | 11 - .../models/PagedRedirectUrlResponseModel.ts | 10 + .../src/models/PagedRelationItemModel.ts | 11 - .../models/PagedRelationItemResponseModel.ts | 10 + .../src/models/PagedRelationModel.ts | 11 - .../src/models/PagedRelationResponseModel.ts | 10 + .../src/models/PagedSavedLogSearchModel.ts | 11 - .../PagedSavedLogSearchResponseModel.ts | 10 + .../src/models/PagedSearchResultModel.ts | 11 - .../models/PagedSearchResultResponseModel.ts | 10 + .../src/models/PagedSearcherModel.ts | 11 - .../src/models/PagedSearcherResponseModel.ts | 10 + .../src/models/PagedTelemetryModel.ts | 11 - .../src/models/PagedTelemetryResponseModel.ts | 10 + .../src/models/PagedUserGroupModel.ts | 11 - .../models/PagedUserGroupPresentationModel.ts | 10 + ...odel.ts => ProfilingStatusRequestModel.ts} | 3 +- .../models/ProfilingStatusResponseModel.ts | 7 + .../src/models/PropertyTypeAppearanceModel.ts | 1 - ...rtyTypeContainerResponseModelBaseModel.ts} | 3 +- ... => PropertyTypeResponseModelBaseModel.ts} | 3 +- .../src/models/PropertyTypeValidationModel.ts | 1 - ...odel.ts => RecycleBinItemResponseModel.ts} | 3 +- ...rlModel.ts => RedirectUrlResponseModel.ts} | 3 +- ...l.ts => RedirectUrlStatusResponseModel.ts} | 3 +- ...mModel.ts => RelationItemResponseModel.ts} | 3 +- ...ationModel.ts => RelationResponseModel.ts} | 3 +- .../src/models/RelationTypeBaseModel.ts | 11 + .../src/models/RelationTypeResponseModel.ts | 14 + ...eModel.ts => SaveUserGroupRequestModel.ts} | 3 +- ... => SavedLogSearchPresenationBaseModel.ts} | 3 +- .../src/models/SavedLogSearchRequestModel.ts | 7 + .../src/models/SavedLogSearchResponseModel.ts | 7 + .../src/models/SearchResultModel.ts | 13 - .../src/models/SearchResultResponseModel.ts | 12 + ...rcherModel.ts => SearcherResponseModel.ts} | 3 +- ...sModel.ts => ServerStatusResponseModel.ts} | 3 +- ...ts => TelemetryRepresentationBaseModel.ts} | 3 +- .../src/models/TelemetryRequestModel.ts | 7 + .../src/models/TelemetryResponseModel.ts | 7 + .../src/models/TemplateModelBaseModel.ts | 1 - ...ateQueryExecuteFilterPresentationModel.ts} | 3 +- .../src/models/TemplateQueryExecuteModel.ts | 5 +- .../models/TemplateQueryExecuteSortModel.ts | 1 - .../src/models/TemplateQueryOperatorModel.ts | 1 - ...TemplateQueryPropertyPresentationModel.ts} | 3 +- ...mplateQueryResultItemPresentationModel.ts} | 3 +- .../src/models/TemplateQueryResultModel.ts | 13 - .../TemplateQueryResultResponseModel.ts | 12 + ... => TemplateQuerySettingsResponseModel.ts} | 7 +- ...plateModel.ts => TemplateResponseModel.ts} | 7 +- ...el.ts => TemplateScaffoldResponseModel.ts} | 3 +- ...mModel.ts => TreeItemPresentationModel.ts} | 3 +- ...ntValueModelDocumentVariantRequestModel.ts | 11 + ...MediaValueModelMediaVariantRequestModel.ts | 11 + ...Model.ts => UpdateDataTypeRequestModel.ts} | 3 +- ...ts => UpdateDictionaryItemRequestModel.ts} | 3 +- .../src/models/UpdateDocumentRequestModel.ts | 9 + .../src/models/UpdateDomainsRequestModel.ts | 7 + ...teModel.ts => UpdateFolderReponseModel.ts} | 3 +- ...Model.ts => UpdateLanguageRequestModel.ts} | 3 +- .../src/models/UpdateMediaRequestModel.ts | 7 + ...eModel.ts => UpdatePackageRequestModel.ts} | 5 +- .../models/UpdateRelationTypeRequestModel.ts | 7 + ...Model.ts => UpdateTemplateRequestModel.ts} | 3 +- ...odel.ts => UpdateUserGroupRequestModel.ts} | 3 +- ...del.ts => UpgradeSettingsResponseModel.ts} | 3 +- .../models/UploadDictionaryResponseModel.ts | 10 + .../src/models/UserGroupBaseModel.ts | 1 - ...Model.ts => UserGroupPresentationModel.ts} | 7 +- ...llModel.ts => UserInstallResponseModel.ts} | 3 +- .../src/models/UserSettingsModel.ts | 5 +- ...delBaseModel.ts => ValueModelBaseModel.ts} | 4 +- .../src/models/VariantModelBaseModel.ts | 10 + ...el.ts => VariantResponseModelBaseModel.ts} | 4 +- ...ersionModel.ts => VersionResponseModel.ts} | 3 +- .../src/services/AuditLogResource.ts | 64 ++-- .../src/services/CultureResource.ts | 16 +- .../src/services/DataTypeResource.ts | 176 +++++------ .../src/services/DictionaryResource.ts | 150 +++++----- .../src/services/DocumentBlueprintResource.ts | 26 +- .../src/services/DocumentResource.ts | 225 ++++++++++---- .../src/services/DocumentTypeResource.ts | 62 ++-- .../src/services/HealthCheckResource.ts | 48 +-- .../backend-api/src/services/HelpResource.ts | 28 +- .../src/services/IndexerResource.ts | 34 +-- .../src/services/InstallResource.ts | 24 +- .../src/services/LanguageResource.ts | 58 ++-- .../src/services/LogViewerResource.ts | 145 ++++----- .../backend-api/src/services/MediaResource.ts | 186 +++++++++--- .../src/services/MediaTypeResource.ts | 76 +++-- .../src/services/MemberGroupResource.ts | 36 +-- .../src/services/MemberTypeResource.ts | 36 +-- .../src/services/ModelsBuilderResource.ts | 8 +- .../src/services/ObjectTypesResource.ts | 33 +++ .../src/services/PackageResource.ts | 94 +++--- .../src/services/PartialViewResource.ts | 44 +-- .../src/services/ProfilingResource.ts | 13 +- .../services/RedirectManagementResource.ts | 58 ++-- .../src/services/RelationResource.ts | 60 ++-- .../src/services/RelationTypeResource.ts | 120 +++++++- .../src/services/ScriptResource.ts | 44 +-- .../src/services/SearcherResource.ts | 40 +-- .../src/services/ServerResource.ts | 8 +- .../src/services/StaticFileResource.ts | 44 +-- .../src/services/StylesheetResource.ts | 44 +-- .../src/services/TelemetryResource.ts | 29 +- .../src/services/TemplateResource.ts | 114 ++++---- .../src/services/TrackedReferenceResource.ts | 68 ++--- .../src/services/UpgradeResource.ts | 4 +- .../src/services/UserGroupsResource.ts | 58 ++-- .../workspace-variant.context.ts | 8 +- ...roperty-editor-ui-checkbox-list.element.ts | 4 +- ...property-editor-ui-color-picker.element.ts | 4 +- .../property-editor-ui-eye-dropper.element.ts | 4 +- ...property-editor-ui-media-picker.element.ts | 4 +- ...erty-editor-ui-multi-url-picker.element.ts | 4 +- ...rty-editor-ui-radio-button-list.element.ts | 4 +- .../property-editor-ui-slider.element.ts | 4 +- .../property-editor-ui-toggle.element.ts | 4 +- .../core/mocks/domains/template.handlers.ts | 6 +- 275 files changed, 2523 insertions(+), 1940 deletions(-) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ConsentLevelModel.ts => ConsentLevelPresentationModel.ts} (81%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ContentViewModelBaseDocumentValueDocumentVariantModel.ts => ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts} (50%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts => ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts} (51%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryMoveModel.ts => CopyDataTypeRequestModel.ts} (71%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeCreateModel.ts => CreateDataTypeRequestModel.ts} (60%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryItemCreateModel.ts => CreateDictionaryItemRequestModel.ts} (59%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{FolderCreateModel.ts => CreateFolderRequestModel.ts} (61%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LanguageCreateModel.ts => CreateLanguageRequestModel.ts} (62%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PackageCreateModel.ts => CreatePackageRequestModel.ts} (69%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateUpdateModel.ts => CreateTemplateRequestModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{CultureModel.ts => CultureReponseModel.ts} (76%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypePropertyModel.ts => DataTypePropertyPresentationModel.ts} (68%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeReferenceModel.ts => DataTypeReferenceResponseModel.ts} (84%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeModel.ts => DataTypeResponseModel.ts} (54%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DatabaseInstallModel.ts => DatabaseInstallResponseModel.ts} (87%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DatabaseSettingsModel.ts => DatabaseSettingsPresentationModel.ts} (89%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryItemModel.ts => DictionaryItemResponseModel.ts} (60%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryOverviewModel.ts => DictionaryOverviewResponseModel.ts} (79%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{FieldModel.ts => FieldPresentationModel.ts} (75%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{FolderModel.ts => FolderReponseModel.ts} (54%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{HealthCheckActionModel.ts => HealthCheckActionRequestModel.ts} (88%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{HealthCheckGroupModelBaseModel.ts => HealthCheckGroupPresentationBaseModel.ts} (63%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{HealthCheckResultModel.ts => HealthCheckResultResponseModel.ts} (55%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{HelpPageModel.ts => HelpPageResponseModel.ts} (82%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryItemsImportModel.ts => ImportDictionaryItemsPresentationModel.ts} (72%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryImportModel.ts => ImportDictionaryRequestModel.ts} (73%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{IndexModel.ts => IndexResponseModel.ts} (90%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LanguageModel.ts => LanguageResponseModel.ts} (64%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LogLevelCountsModel.ts => LogLevelCountsReponseModel.ts} (80%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LogMessagePropertyModel.ts => LogMessagePropertyPresentationModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LogMessageModel.ts => LogMessageResponseModel.ts} (58%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LogTemplateModel.ts => LogTemplateResponseModel.ts} (76%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LoggerModel.ts => LoggerResponseModel.ts} (82%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ModelsBuilderModel.ts => ModelsBuilderResponseModel.ts} (89%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeMoveModel.ts => MoveDataTypeRequestModel.ts} (71%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeCopyModel.ts => MoveDictionaryRequestModel.ts} (70%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{OutOfDateStatusModel.ts => OutOfDateStatusResponseModel.ts} (79%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PackageDefinitionModel.ts => PackageDefinitionResponseModel.ts} (57%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PackageManifestModel.ts => PackageManifestResponseModel.ts} (76%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PackageMigrationStatusModel.ts => PackageMigrationStatusResponseModel.ts} (72%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts delete 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/PagedPackageDefinitionResponseModel.ts delete 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/models/PagedPackageMigrationStatusResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ProfilingStatusModel.ts => ProfilingStatusRequestModel.ts} (68%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PropertyTypeContainerViewModelBaseModel.ts => PropertyTypeContainerResponseModelBaseModel.ts} (76%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PropertyTypeViewModelBaseModel.ts => PropertyTypeResponseModelBaseModel.ts} (91%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{RecycleBinItemModel.ts => RecycleBinItemResponseModel.ts} (85%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{RedirectUrlModel.ts => RedirectUrlResponseModel.ts} (84%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{RedirectUrlStatusModel.ts => RedirectUrlStatusResponseModel.ts} (81%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{RelationItemModel.ts => RelationItemResponseModel.ts} (90%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{RelationModel.ts => RelationResponseModel.ts} (86%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{UserGroupSaveModel.ts => SaveUserGroupRequestModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{SavedLogSearchModel.ts => SavedLogSearchPresenationBaseModel.ts} (68%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{SearcherModel.ts => SearcherResponseModel.ts} (70%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ServerStatusModel.ts => ServerStatusResponseModel.ts} (80%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TelemetryModel.ts => TelemetryRepresentationBaseModel.ts} (78%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateQueryExecuteFilterModel.ts => TemplateQueryExecuteFilterPresentationModel.ts} (78%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateQueryPropertyModel.ts => TemplateQueryPropertyPresentationModel.ts} (80%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateQueryResultItemModel.ts => TemplateQueryResultItemPresentationModel.ts} (66%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateQuerySettingsModel.ts => TemplateQuerySettingsResponseModel.ts} (52%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateModel.ts => TemplateResponseModel.ts} (60%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateScaffoldModel.ts => TemplateScaffoldResponseModel.ts} (67%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TreeItemModel.ts => TreeItemPresentationModel.ts} (78%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DataTypeUpdateModel.ts => UpdateDataTypeRequestModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{DictionaryItemUpdateModel.ts => UpdateDictionaryItemRequestModel.ts} (66%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{FolderUpdateModel.ts => UpdateFolderReponseModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{LanguageUpdateModel.ts => UpdateLanguageRequestModel.ts} (69%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{PackageUpdateModel.ts => UpdatePackageRequestModel.ts} (61%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{TemplateCreateModel.ts => UpdateTemplateRequestModel.ts} (69%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{UserGroupUpdateModel.ts => UpdateUserGroupRequestModel.ts} (68%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{UpgradeSettingsModel.ts => UpgradeSettingsResponseModel.ts} (82%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{UserGroupModel.ts => UserGroupPresentationModel.ts} (60%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{UserInstallModel.ts => UserInstallResponseModel.ts} (81%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{ValueViewModelBaseModel.ts => ValueModelBaseModel.ts} (75%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{VariantViewModelBaseModel.ts => VariantResponseModelBaseModel.ts} (75%) rename src/Umbraco.Web.UI.Client/libs/backend-api/src/models/{VersionModel.ts => VersionResponseModel.ts} (71%) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts index 800d901ec4..26ad303915 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/CancelablePromise.ts @@ -2,122 +2,127 @@ /* tslint:disable */ /* eslint-disable */ export class CancelError extends Error { - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } - public get isCancelled(): boolean { - return true; - } + constructor(message: string) { + super(message); + this.name = 'CancelError'; + } + + public get isCancelled(): boolean { + return true; + } } export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; - (cancelHandler: () => void): void; + (cancelHandler: () => void): void; } export class CancelablePromise implements Promise { - readonly [Symbol.toStringTag]!: string; + readonly [Symbol.toStringTag]!: string; - private _isResolved: boolean; - private _isRejected: boolean; - private _isCancelled: boolean; - private readonly _cancelHandlers: (() => void)[]; - private readonly _promise: Promise; - private _resolve?: (value: T | PromiseLike) => void; - private _reject?: (reason?: any) => void; + private _isResolved: boolean; + private _isRejected: boolean; + private _isCancelled: boolean; + private readonly _cancelHandlers: (() => void)[]; + private readonly _promise: Promise; + private _resolve?: (value: T | PromiseLike) => void; + private _reject?: (reason?: any) => void; - constructor( - executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void - ) { - this._isResolved = false; - this._isRejected = false; - this._isCancelled = false; - this._cancelHandlers = []; - this._promise = new Promise((resolve, reject) => { - this._resolve = resolve; - this._reject = reject; + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: any) => void, + onCancel: OnCancel + ) => void + ) { + this._isResolved = false; + this._isRejected = false; + this._isCancelled = false; + this._cancelHandlers = []; + this._promise = new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; - const onResolve = (value: T | PromiseLike): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isResolved = true; - this._resolve?.(value); - }; + const onResolve = (value: T | PromiseLike): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isResolved = true; + this._resolve?.(value); + }; - const onReject = (reason?: any): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isRejected = true; - this._reject?.(reason); - }; + const onReject = (reason?: any): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isRejected = true; + this._reject?.(reason); + }; - const onCancel = (cancelHandler: () => void): void => { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._cancelHandlers.push(cancelHandler); - }; + const onCancel = (cancelHandler: () => void): void => { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._cancelHandlers.push(cancelHandler); + }; - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this._isResolved, - }); + Object.defineProperty(onCancel, 'isResolved', { + get: (): boolean => this._isResolved, + }); - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this._isRejected, - }); + Object.defineProperty(onCancel, 'isRejected', { + get: (): boolean => this._isRejected, + }); - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this._isCancelled, - }); + Object.defineProperty(onCancel, 'isCancelled', { + get: (): boolean => this._isCancelled, + }); - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this._promise.then(onFulfilled, onRejected); - } + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: any) => TResult2 | PromiseLike) | null + ): Promise { + return this._promise.then(onFulfilled, onRejected); + } - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this._promise.catch(onRejected); - } + public catch( + onRejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise { + return this._promise.catch(onRejected); + } - public finally(onFinally?: (() => void) | null): Promise { - return this._promise.finally(onFinally); - } + public finally(onFinally?: (() => void) | null): Promise { + return this._promise.finally(onFinally); + } - public cancel(): void { - if (this._isResolved || this._isRejected || this._isCancelled) { - return; - } - this._isCancelled = true; - if (this._cancelHandlers.length) { - try { - for (const cancelHandler of this._cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } - } - this._cancelHandlers.length = 0; - this._reject?.(new CancelError('Request aborted')); - } + public cancel(): void { + if (this._isResolved || this._isRejected || this._isCancelled) { + return; + } + this._isCancelled = true; + if (this._cancelHandlers.length) { + try { + for (const cancelHandler of this._cancelHandlers) { + cancelHandler(); + } + } catch (error) { + console.warn('Cancellation threw an error', error); + return; + } + } + this._cancelHandlers.length = 0; + this._reject?.(new CancelError('Request aborted')); + } - public get isCancelled(): boolean { - return this._isCancelled; - } + public get isCancelled(): boolean { + return this._isCancelled; + } } 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 dd1647bd85..5e9a463517 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 @@ -10,165 +10,198 @@ export type { AuditLogBaseModel } from './models/AuditLogBaseModel'; export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; export { AuditTypeModel } from './models/AuditTypeModel'; -export type { ConsentLevelModel } from './models/ConsentLevelModel'; +export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; +export type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; export { ContentStateModel } from './models/ContentStateModel'; -export type { ContentTreeItemModel } from './models/ContentTreeItemModel'; +export type { ContentTreeItemResponseModel } from './models/ContentTreeItemResponseModel'; export type { ContentTypeCleanupModel } from './models/ContentTypeCleanupModel'; export type { ContentTypeCompositionModel } from './models/ContentTypeCompositionModel'; export { ContentTypeCompositionTypeModel } from './models/ContentTypeCompositionTypeModel'; +export type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; +export type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; export type { ContentTypeSortModel } from './models/ContentTypeSortModel'; -export type { ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel } from './models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel'; export type { ContentUrlInfoModel } from './models/ContentUrlInfoModel'; -export type { ContentViewModelBaseDocumentValueDocumentVariantModel } from './models/ContentViewModelBaseDocumentValueDocumentVariantModel'; -export type { CultureModel } from './models/CultureModel'; -export type { DatabaseInstallModel } from './models/DatabaseInstallModel'; -export type { DatabaseSettingsModel } from './models/DatabaseSettingsModel'; -export type { DataTypeCopyModel } from './models/DataTypeCopyModel'; -export type { DataTypeCreateModel } from './models/DataTypeCreateModel'; -export type { DataTypeModel } from './models/DataTypeModel'; +export type { CopyDataTypeRequestModel } from './models/CopyDataTypeRequestModel'; +export type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; +export type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; +export type { CreateDataTypeRequestModel } from './models/CreateDataTypeRequestModel'; +export type { CreateDictionaryItemRequestModel } from './models/CreateDictionaryItemRequestModel'; +export type { CreateDocumentRequestModel } from './models/CreateDocumentRequestModel'; +export type { CreateFolderRequestModel } from './models/CreateFolderRequestModel'; +export type { CreateLanguageRequestModel } from './models/CreateLanguageRequestModel'; +export type { CreateMediaRequestModel } from './models/CreateMediaRequestModel'; +export type { CreatePackageRequestModel } from './models/CreatePackageRequestModel'; +export type { CreateRelationTypeRequestModel } from './models/CreateRelationTypeRequestModel'; +export type { CreateTemplateRequestModel } from './models/CreateTemplateRequestModel'; +export type { CultureReponseModel } from './models/CultureReponseModel'; +export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; +export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; export type { DataTypeModelBaseModel } from './models/DataTypeModelBaseModel'; -export type { DataTypeMoveModel } from './models/DataTypeMoveModel'; -export type { DataTypePropertyModel } from './models/DataTypePropertyModel'; +export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; -export type { DataTypeReferenceModel } from './models/DataTypeReferenceModel'; -export type { DataTypeUpdateModel } from './models/DataTypeUpdateModel'; -export type { DictionaryImportModel } from './models/DictionaryImportModel'; -export type { DictionaryItemCreateModel } from './models/DictionaryItemCreateModel'; -export type { DictionaryItemModel } from './models/DictionaryItemModel'; +export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; +export type { DataTypeResponseModel } from './models/DataTypeResponseModel'; export type { DictionaryItemModelBaseModel } from './models/DictionaryItemModelBaseModel'; -export type { DictionaryItemsImportModel } from './models/DictionaryItemsImportModel'; +export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; -export type { DictionaryItemUpdateModel } from './models/DictionaryItemUpdateModel'; -export type { DictionaryMoveModel } from './models/DictionaryMoveModel'; -export type { DictionaryOverviewModel } from './models/DictionaryOverviewModel'; -export type { DictionaryUploadModel } from './models/DictionaryUploadModel'; +export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; -export type { DocumentBlueprintTreeItemModel } from './models/DocumentBlueprintTreeItemModel'; -export type { DocumentModel } from './models/DocumentModel'; -export type { DocumentTreeItemModel } from './models/DocumentTreeItemModel'; -export type { DocumentTypeModel } from './models/DocumentTypeModel'; -export type { DocumentTypePropertyTypeContainerModel } from './models/DocumentTypePropertyTypeContainerModel'; -export type { DocumentTypePropertyTypeModel } from './models/DocumentTypePropertyTypeModel'; -export type { DocumentTypeTreeItemModel } from './models/DocumentTypeTreeItemModel'; +export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentResponseModel } from './models/DocumentResponseModel'; +export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; +export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; +export type { DocumentTypePropertyTypeResponseModel } from './models/DocumentTypePropertyTypeResponseModel'; +export type { DocumentTypeResponseModel } from './models/DocumentTypeResponseModel'; +export type { DocumentTypeTreeItemResponseModel } from './models/DocumentTypeTreeItemResponseModel'; export type { DocumentValueModel } from './models/DocumentValueModel'; -export type { DocumentVariantModel } from './models/DocumentVariantModel'; -export type { EntityTreeItemModel } from './models/EntityTreeItemModel'; -export type { FieldModel } from './models/FieldModel'; -export type { FileSystemTreeItemModel } from './models/FileSystemTreeItemModel'; -export type { FolderCreateModel } from './models/FolderCreateModel'; -export type { FolderModel } from './models/FolderModel'; +export type { DocumentVariantRequestModel } from './models/DocumentVariantRequestModel'; +export type { DocumentVariantResponseModel } from './models/DocumentVariantResponseModel'; +export type { DomainPresentationModel } from './models/DomainPresentationModel'; +export type { DomainsPresentationModelBaseModel } from './models/DomainsPresentationModelBaseModel'; +export type { DomainsResponseModel } from './models/DomainsResponseModel'; +export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; +export type { FieldPresentationModel } from './models/FieldPresentationModel'; +export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; export type { FolderModelBaseModel } from './models/FolderModelBaseModel'; -export type { FolderTreeItemModel } from './models/FolderTreeItemModel'; -export type { FolderUpdateModel } from './models/FolderUpdateModel'; -export type { HealthCheckActionModel } from './models/HealthCheckActionModel'; -export type { HealthCheckGroupModel } from './models/HealthCheckGroupModel'; -export type { HealthCheckGroupModelBaseModel } from './models/HealthCheckGroupModelBaseModel'; -export type { HealthCheckGroupWithResultModel } from './models/HealthCheckGroupWithResultModel'; +export type { FolderReponseModel } from './models/FolderReponseModel'; +export type { FolderTreeItemResponseModel } from './models/FolderTreeItemResponseModel'; +export type { HealthCheckActionRequestModel } from './models/HealthCheckActionRequestModel'; +export type { HealthCheckGroupPresentationBaseModel } from './models/HealthCheckGroupPresentationBaseModel'; +export type { HealthCheckGroupPresentationModel } from './models/HealthCheckGroupPresentationModel'; +export type { HealthCheckGroupResponseModel } from './models/HealthCheckGroupResponseModel'; +export type { HealthCheckGroupWithResultResponseModel } from './models/HealthCheckGroupWithResultResponseModel'; export type { HealthCheckModel } from './models/HealthCheckModel'; export type { HealthCheckModelBaseModel } from './models/HealthCheckModelBaseModel'; -export type { HealthCheckResultModel } from './models/HealthCheckResultModel'; -export type { HealthCheckWithResultModel } from './models/HealthCheckWithResultModel'; +export type { HealthCheckResultResponseModel } from './models/HealthCheckResultResponseModel'; +export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; export { HealthStatusModel } from './models/HealthStatusModel'; -export type { HelpPageModel } from './models/HelpPageModel'; -export type { IndexModel } from './models/IndexModel'; -export type { InstallModel } from './models/InstallModel'; -export type { InstallSettingsModel } from './models/InstallSettingsModel'; -export type { LanguageCreateModel } from './models/LanguageCreateModel'; -export type { LanguageModel } from './models/LanguageModel'; +export type { HelpPageResponseModel } from './models/HelpPageResponseModel'; +export type { ImportDictionaryItemsPresentationModel } from './models/ImportDictionaryItemsPresentationModel'; +export type { ImportDictionaryRequestModel } from './models/ImportDictionaryRequestModel'; +export type { IndexResponseModel } from './models/IndexResponseModel'; +export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; +export type { InstallVResponseModel } from './models/InstallVResponseModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; -export type { LanguageUpdateModel } from './models/LanguageUpdateModel'; -export type { LoggerModel } from './models/LoggerModel'; -export type { LogLevelCountsModel } from './models/LogLevelCountsModel'; +export type { LanguageResponseModel } from './models/LanguageResponseModel'; +export type { LoggerResponseModel } from './models/LoggerResponseModel'; +export type { LogLevelCountsReponseModel } from './models/LogLevelCountsReponseModel'; export { LogLevelModel } from './models/LogLevelModel'; -export type { LogMessageModel } from './models/LogMessageModel'; -export type { LogMessagePropertyModel } from './models/LogMessagePropertyModel'; -export type { LogTemplateModel } from './models/LogTemplateModel'; -export type { ModelsBuilderModel } from './models/ModelsBuilderModel'; +export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; +export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; +export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; +export type { MediaTypePropertyTypeContainerResponseModel } from './models/MediaTypePropertyTypeContainerResponseModel'; +export type { MediaTypePropertyTypeResponseModel } from './models/MediaTypePropertyTypeResponseModel'; +export type { MediaTypeResponseModel } from './models/MediaTypeResponseModel'; +export type { MediaValueModel } from './models/MediaValueModel'; +export type { MediaVariantRequestModel } from './models/MediaVariantRequestModel'; +export type { MediaVariantResponseModel } from './models/MediaVariantResponseModel'; +export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseModel'; export { ModelsModeModel } from './models/ModelsModeModel'; +export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; +export type { MoveDictionaryRequestModel } from './models/MoveDictionaryRequestModel'; +export type { ObjectTypeResponseModel } from './models/ObjectTypeResponseModel'; export type { OkResultModel } from './models/OkResultModel'; export { OperatorModel } from './models/OperatorModel'; -export type { OutOfDateStatusModel } from './models/OutOfDateStatusModel'; +export type { OutOfDateStatusResponseModel } from './models/OutOfDateStatusResponseModel'; export { OutOfDateTypeModel } from './models/OutOfDateTypeModel'; -export type { PackageCreateModel } from './models/PackageCreateModel'; -export type { PackageDefinitionModel } from './models/PackageDefinitionModel'; -export type { PackageManifestModel } from './models/PackageManifestModel'; -export type { PackageMigrationStatusModel } from './models/PackageMigrationStatusModel'; +export type { PackageDefinitionResponseModel } from './models/PackageDefinitionResponseModel'; +export type { PackageManifestResponseModel } from './models/PackageManifestResponseModel'; +export type { PackageMigrationStatusResponseModel } from './models/PackageMigrationStatusResponseModel'; export type { PackageModelBaseModel } from './models/PackageModelBaseModel'; -export type { PackageUpdateModel } from './models/PackageUpdateModel'; export type { PagedAuditLogResponseModel } from './models/PagedAuditLogResponseModel'; export type { PagedAuditLogWithUsernameResponseModel } from './models/PagedAuditLogWithUsernameResponseModel'; -export type { PagedContentTreeItemModel } from './models/PagedContentTreeItemModel'; -export type { PagedCultureModel } from './models/PagedCultureModel'; -export type { PagedDictionaryOverviewModel } from './models/PagedDictionaryOverviewModel'; -export type { PagedDocumentBlueprintTreeItemModel } from './models/PagedDocumentBlueprintTreeItemModel'; -export type { PagedDocumentTreeItemModel } from './models/PagedDocumentTreeItemModel'; -export type { PagedDocumentTypeTreeItemModel } from './models/PagedDocumentTypeTreeItemModel'; -export type { PagedEntityTreeItemModel } from './models/PagedEntityTreeItemModel'; -export type { PagedFileSystemTreeItemModel } from './models/PagedFileSystemTreeItemModel'; -export type { PagedFolderTreeItemModel } from './models/PagedFolderTreeItemModel'; -export type { PagedHealthCheckGroupModelBaseModel } from './models/PagedHealthCheckGroupModelBaseModel'; -export type { PagedHelpPageModel } from './models/PagedHelpPageModel'; -export type { PagedIndexModel } from './models/PagedIndexModel'; -export type { PagedLanguageModel } from './models/PagedLanguageModel'; -export type { PagedLoggerModel } from './models/PagedLoggerModel'; -export type { PagedLogMessageModel } from './models/PagedLogMessageModel'; -export type { PagedLogTemplateModel } from './models/PagedLogTemplateModel'; -export type { PagedPackageDefinitionModel } from './models/PagedPackageDefinitionModel'; -export type { PagedPackageMigrationStatusModel } from './models/PagedPackageMigrationStatusModel'; -export type { PagedRecycleBinItemModel } from './models/PagedRecycleBinItemModel'; -export type { PagedRedirectUrlModel } from './models/PagedRedirectUrlModel'; -export type { PagedRelationItemModel } from './models/PagedRelationItemModel'; -export type { PagedRelationModel } from './models/PagedRelationModel'; -export type { PagedSavedLogSearchModel } from './models/PagedSavedLogSearchModel'; -export type { PagedSearcherModel } from './models/PagedSearcherModel'; -export type { PagedSearchResultModel } from './models/PagedSearchResultModel'; -export type { PagedTelemetryModel } from './models/PagedTelemetryModel'; -export type { PagedUserGroupModel } from './models/PagedUserGroupModel'; +export type { PagedContentTreeItemResponseModel } from './models/PagedContentTreeItemResponseModel'; +export type { PagedCultureReponseModel } from './models/PagedCultureReponseModel'; +export type { PagedDictionaryOverviewResponseModel } from './models/PagedDictionaryOverviewResponseModel'; +export type { PagedDocumentBlueprintTreeItemResponseModel } from './models/PagedDocumentBlueprintTreeItemResponseModel'; +export type { PagedDocumentTreeItemResponseModel } from './models/PagedDocumentTreeItemResponseModel'; +export type { PagedDocumentTypeTreeItemResponseModel } from './models/PagedDocumentTypeTreeItemResponseModel'; +export type { PagedEntityTreeItemResponseModel } from './models/PagedEntityTreeItemResponseModel'; +export type { PagedFileSystemTreeItemPresentationModel } from './models/PagedFileSystemTreeItemPresentationModel'; +export type { PagedFolderTreeItemResponseModel } from './models/PagedFolderTreeItemResponseModel'; +export type { PagedHealthCheckGroupResponseModel } from './models/PagedHealthCheckGroupResponseModel'; +export type { PagedHelpPageResponseModel } from './models/PagedHelpPageResponseModel'; +export type { PagedIndexResponseModel } from './models/PagedIndexResponseModel'; +export type { PagedLanguageResponseModel } from './models/PagedLanguageResponseModel'; +export type { PagedLoggerResponseModel } from './models/PagedLoggerResponseModel'; +export type { PagedLogMessageResponseModel } from './models/PagedLogMessageResponseModel'; +export type { PagedLogTemplateResponseModel } from './models/PagedLogTemplateResponseModel'; +export type { PagedObjectTypeResponseModel } from './models/PagedObjectTypeResponseModel'; +export type { PagedPackageDefinitionResponseModel } from './models/PagedPackageDefinitionResponseModel'; +export type { PagedPackageMigrationStatusResponseModel } from './models/PagedPackageMigrationStatusResponseModel'; +export type { PagedRecycleBinItemResponseModel } from './models/PagedRecycleBinItemResponseModel'; +export type { PagedRedirectUrlResponseModel } from './models/PagedRedirectUrlResponseModel'; +export type { PagedRelationItemResponseModel } from './models/PagedRelationItemResponseModel'; +export type { PagedRelationResponseModel } from './models/PagedRelationResponseModel'; +export type { PagedSavedLogSearchResponseModel } from './models/PagedSavedLogSearchResponseModel'; +export type { PagedSearcherResponseModel } from './models/PagedSearcherResponseModel'; +export type { PagedSearchResultResponseModel } from './models/PagedSearchResultResponseModel'; +export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; +export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; -export type { ProfilingStatusModel } from './models/ProfilingStatusModel'; +export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; +export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; export type { PropertyTypeAppearanceModel } from './models/PropertyTypeAppearanceModel'; -export type { PropertyTypeContainerViewModelBaseModel } from './models/PropertyTypeContainerViewModelBaseModel'; +export type { PropertyTypeContainerResponseModelBaseModel } from './models/PropertyTypeContainerResponseModelBaseModel'; +export type { PropertyTypeResponseModelBaseModel } from './models/PropertyTypeResponseModelBaseModel'; export type { PropertyTypeValidationModel } from './models/PropertyTypeValidationModel'; -export type { PropertyTypeViewModelBaseModel } from './models/PropertyTypeViewModelBaseModel'; -export type { RecycleBinItemModel } from './models/RecycleBinItemModel'; +export type { RecycleBinItemResponseModel } from './models/RecycleBinItemResponseModel'; export { RedirectStatusModel } from './models/RedirectStatusModel'; -export type { RedirectUrlModel } from './models/RedirectUrlModel'; -export type { RedirectUrlStatusModel } from './models/RedirectUrlStatusModel'; -export type { RelationItemModel } from './models/RelationItemModel'; -export type { RelationModel } from './models/RelationModel'; +export type { RedirectUrlResponseModel } from './models/RedirectUrlResponseModel'; +export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusResponseModel'; +export type { RelationItemResponseModel } from './models/RelationItemResponseModel'; +export type { RelationResponseModel } from './models/RelationResponseModel'; +export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; +export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; -export type { SavedLogSearchModel } from './models/SavedLogSearchModel'; -export type { SearcherModel } from './models/SearcherModel'; -export type { SearchResultModel } from './models/SearchResultModel'; -export type { ServerStatusModel } from './models/ServerStatusModel'; +export type { SavedLogSearchPresenationBaseModel } from './models/SavedLogSearchPresenationBaseModel'; +export type { SavedLogSearchRequestModel } from './models/SavedLogSearchRequestModel'; +export type { SavedLogSearchResponseModel } from './models/SavedLogSearchResponseModel'; +export type { SaveUserGroupRequestModel } from './models/SaveUserGroupRequestModel'; +export type { SearcherResponseModel } from './models/SearcherResponseModel'; +export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; +export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; -export type { TelemetryModel } from './models/TelemetryModel'; -export type { TemplateCreateModel } from './models/TemplateCreateModel'; -export type { TemplateModel } from './models/TemplateModel'; +export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; +export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; +export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; export type { TemplateModelBaseModel } from './models/TemplateModelBaseModel'; -export type { TemplateQueryExecuteFilterModel } from './models/TemplateQueryExecuteFilterModel'; +export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; export type { TemplateQueryExecuteSortModel } from './models/TemplateQueryExecuteSortModel'; export type { TemplateQueryOperatorModel } from './models/TemplateQueryOperatorModel'; -export type { TemplateQueryPropertyModel } from './models/TemplateQueryPropertyModel'; +export type { TemplateQueryPropertyPresentationModel } from './models/TemplateQueryPropertyPresentationModel'; export { TemplateQueryPropertyTypeModel } from './models/TemplateQueryPropertyTypeModel'; -export type { TemplateQueryResultItemModel } from './models/TemplateQueryResultItemModel'; -export type { TemplateQueryResultModel } from './models/TemplateQueryResultModel'; -export type { TemplateQuerySettingsModel } from './models/TemplateQuerySettingsModel'; -export type { TemplateScaffoldModel } from './models/TemplateScaffoldModel'; -export type { TemplateUpdateModel } from './models/TemplateUpdateModel'; -export type { TreeItemModel } from './models/TreeItemModel'; -export type { UpgradeSettingsModel } from './models/UpgradeSettingsModel'; +export type { TemplateQueryResultItemPresentationModel } from './models/TemplateQueryResultItemPresentationModel'; +export type { TemplateQueryResultResponseModel } from './models/TemplateQueryResultResponseModel'; +export type { TemplateQuerySettingsResponseModel } from './models/TemplateQuerySettingsResponseModel'; +export type { TemplateResponseModel } from './models/TemplateResponseModel'; +export type { TemplateScaffoldResponseModel } from './models/TemplateScaffoldResponseModel'; +export type { TreeItemPresentationModel } from './models/TreeItemPresentationModel'; +export type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; +export type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; +export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; +export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; +export type { UpdateDocumentRequestModel } from './models/UpdateDocumentRequestModel'; +export type { UpdateDomainsRequestModel } from './models/UpdateDomainsRequestModel'; +export type { UpdateFolderReponseModel } from './models/UpdateFolderReponseModel'; +export type { UpdateLanguageRequestModel } from './models/UpdateLanguageRequestModel'; +export type { UpdateMediaRequestModel } from './models/UpdateMediaRequestModel'; +export type { UpdatePackageRequestModel } from './models/UpdatePackageRequestModel'; +export type { UpdateRelationTypeRequestModel } from './models/UpdateRelationTypeRequestModel'; +export type { UpdateTemplateRequestModel } from './models/UpdateTemplateRequestModel'; +export type { UpdateUserGroupRequestModel } from './models/UpdateUserGroupRequestModel'; +export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; +export type { UploadDictionaryResponseModel } from './models/UploadDictionaryResponseModel'; export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; -export type { UserGroupModel } from './models/UserGroupModel'; -export type { UserGroupSaveModel } from './models/UserGroupSaveModel'; -export type { UserGroupUpdateModel } from './models/UserGroupUpdateModel'; -export type { UserInstallModel } from './models/UserInstallModel'; +export type { UserGroupPresentationModel } from './models/UserGroupPresentationModel'; +export type { UserInstallResponseModel } from './models/UserInstallResponseModel'; export type { UserSettingsModel } from './models/UserSettingsModel'; -export type { ValueViewModelBaseModel } from './models/ValueViewModelBaseModel'; -export type { VariantViewModelBaseModel } from './models/VariantViewModelBaseModel'; -export type { VersionModel } from './models/VersionModel'; +export type { ValueModelBaseModel } from './models/ValueModelBaseModel'; +export type { VariantModelBaseModel } from './models/VariantModelBaseModel'; +export type { VariantResponseModelBaseModel } from './models/VariantResponseModelBaseModel'; +export type { VersionResponseModel } from './models/VersionResponseModel'; export { AuditLogResource } from './services/AuditLogResource'; export { CultureResource } from './services/CultureResource'; @@ -188,6 +221,7 @@ export { MediaTypeResource } from './services/MediaTypeResource'; export { MemberGroupResource } from './services/MemberGroupResource'; export { MemberTypeResource } from './services/MemberTypeResource'; export { ModelsBuilderResource } from './services/ModelsBuilderResource'; +export { ObjectTypesResource } from './services/ObjectTypesResource'; export { PackageResource } from './services/PackageResource'; export { PartialViewResource } from './services/PartialViewResource'; export { ProfilingResource } from './services/ProfilingResource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts index 8da67f825a..1e56192c01 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts @@ -13,4 +13,3 @@ export type AuditLogBaseModel = { comment?: string | null; parameters?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts index 53aaafdb87..150aed42b7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts @@ -5,4 +5,3 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogResponseModel = AuditLogBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts index eb768a7c43..3cc6f615f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts @@ -5,7 +5,6 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogWithUsernameResponseModel = (AuditLogBaseModel & { - userName?: string | null; - userAvatars?: Array | null; +userName?: string | null; +userAvatars?: Array | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts index 713ad10919..f8481a3c36 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts @@ -4,8 +4,7 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type ConsentLevelModel = { +export type ConsentLevelPresentationModel = { level?: TelemetryLevelModel; description?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts similarity index 50% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts index 4f95f27cbe..ed77830467 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentViewModelBaseDocumentValueDocumentVariantModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts @@ -3,12 +3,11 @@ /* eslint-disable */ import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantModel } from './DocumentVariantModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -export type ContentViewModelBaseDocumentValueDocumentVariantModel = { +export type ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel = { + values?: Array; + variants?: Array; key?: string; contentTypeKey?: string; - values?: Array; - variants?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts deleted file mode 100644 index 2144bc6a1f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type ContentTreeItemModel = (EntityTreeItemModel & { - $type: string; - noAccess?: boolean; - isTrashed?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts new file mode 100644 index 0000000000..d87dbd5e82 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type ContentTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +noAccess?: boolean; +isTrashed?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts index 7ea186e255..6d5a4bdf54 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts @@ -7,4 +7,3 @@ export type ContentTypeCleanupModel = { keepAllVersionsNewerThanDays?: number | null; keepLatestVersionPerDayForDays?: number | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts index eefcd22a19..55cd2c0c03 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts @@ -8,4 +8,3 @@ export type ContentTypeCompositionModel = { key?: string; compositionType?: ContentTypeCompositionTypeModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts similarity index 51% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts index f4edc901a6..34a78a67b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts @@ -2,13 +2,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; import type { ContentTypeCompositionModel } from './ContentTypeCompositionModel'; import type { ContentTypeSortModel } from './ContentTypeSortModel'; -import type { DocumentTypePropertyTypeContainerModel } from './DocumentTypePropertyTypeContainerModel'; -import type { DocumentTypePropertyTypeModel } from './DocumentTypePropertyTypeModel'; +import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentTypePropertyTypeContainerResponseModel'; +import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; -export type ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel = { +export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel = { key?: string; alias?: string; name?: string; @@ -18,10 +17,8 @@ export type ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypeProperty variesByCulture?: boolean; variesBySegment?: boolean; isElement?: boolean; - properties?: Array; - containers?: Array; + properties?: Array; + containers?: Array; allowedContentTypes?: Array; compositions?: Array; - cleanup?: ContentTypeCleanupModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..0cae4423f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeCompositionModel } from './ContentTypeCompositionModel'; +import type { ContentTypeSortModel } from './ContentTypeSortModel'; +import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePropertyTypeContainerResponseModel'; +import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; + +export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel = { + key?: string; + alias?: string; + name?: string; + description?: string | null; + icon?: string; + allowedAsRoot?: boolean; + variesByCulture?: boolean; + variesBySegment?: boolean; + isElement?: boolean; + properties?: Array; + containers?: Array; + allowedContentTypes?: Array; + compositions?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts index 63b6a44a11..bf4f78b7d6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts @@ -6,4 +6,3 @@ export type ContentTypeSortModel = { key?: string; sortOrder?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts index aabc5314c5..0afeb120d3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts @@ -6,4 +6,3 @@ export type ContentUrlInfoModel = { culture?: string | null; url?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts index c58b2262a1..d15502deef 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryMoveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryMoveModel = { +export type CopyDataTypeRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts new file mode 100644 index 0000000000..6e7608eca4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; + +export type CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { + values?: Array; + variants?: Array; + parentKey?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts new file mode 100644 index 0000000000..a8ecb5c7bb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; + +export type CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { + values?: Array; + variants?: Array; + parentKey?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts index 0c686d4136..df4380d8ad 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts @@ -4,7 +4,6 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeCreateModel = (DataTypeModelBaseModel & { - parentKey?: string | null; +export type CreateDataTypeRequestModel = (DataTypeModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts similarity index 59% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts index 211bed9e4f..fb32c43da5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts @@ -4,7 +4,6 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemCreateModel = (DictionaryItemModelBaseModel & { - parentKey?: string | null; +export type CreateDictionaryItemRequestModel = (DictionaryItemModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts new file mode 100644 index 0000000000..a789b2c4fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; + +export type CreateDocumentRequestModel = (CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { +contentTypeKey?: string; +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts index 1ae49bc7fa..6f23857001 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts @@ -4,7 +4,6 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderCreateModel = (FolderModelBaseModel & { - parentKey?: string | null; +export type CreateFolderRequestModel = (FolderModelBaseModel & { +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts similarity index 62% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts index 69149b0561..4eed24634f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts @@ -4,7 +4,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageCreateModel = (LanguageModelBaseModel & { - isoCode?: string; +export type CreateLanguageRequestModel = (LanguageModelBaseModel & { +isoCode?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts new file mode 100644 index 0000000000..bf4333b9da --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; + +export type CreateMediaRequestModel = (CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel & { +contentTypeKey?: string; +}); 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/CreatePackageRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts index 4061ed4560..2cfedb1c03 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts @@ -4,5 +4,4 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageCreateModel = PackageModelBaseModel; - +export type CreatePackageRequestModel = PackageModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts new file mode 100644 index 0000000000..de6232ee5c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type CreateRelationTypeRequestModel = (RelationTypeBaseModel & { +key?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts index 64da7cb574..e2d8afb847 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts @@ -4,5 +4,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateUpdateModel = TemplateModelBaseModel; - +export type CreateTemplateRequestModel = TemplateModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts index 8a6836bd00..3b17cfc739 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type CultureModel = { +export type CultureReponseModel = { name?: string; englishName?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts index 85a98bebfb..9c8b59ed42 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts @@ -2,12 +2,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypePropertyModel } from './DataTypePropertyModel'; +import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; export type DataTypeModelBaseModel = { name?: string; propertyEditorAlias?: string; propertyEditorUiAlias?: string | null; - data?: Array; + values?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts index 89e844f606..10ca3bc30c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypePropertyModel = { +export type DataTypePropertyPresentationModel = { alias?: string; value?: any; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts index f891dd3af0..d78ee8d9f8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts @@ -6,4 +6,3 @@ export type DataTypePropertyReferenceModel = { name?: string; alias?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts index fef54b8bec..4586e124d8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts @@ -4,9 +4,8 @@ import type { DataTypePropertyReferenceModel } from './DataTypePropertyReferenceModel'; -export type DataTypeReferenceModel = { +export type DataTypeReferenceResponseModel = { key?: string; type?: string; properties?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts index 18401c998f..ab8d3cef09 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts @@ -4,9 +4,8 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeModel = (DataTypeModelBaseModel & { - $type: string; - key?: string; - parentKey?: string | null; +export type DataTypeResponseModel = (DataTypeModelBaseModel & { +$type: string; +key?: string; +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts similarity index 87% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts index fca252ff44..48dac68577 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DatabaseInstallModel = { +export type DatabaseInstallResponseModel = { id: string; providerName: string; server?: string | null; @@ -12,4 +12,3 @@ export type DatabaseInstallModel = { useIntegratedAuthentication?: boolean; connectionString?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts similarity index 89% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts index 1dd2cfcf83..ed0057f69f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DatabaseSettingsModel = { +export type DatabaseSettingsPresentationModel = { id?: string; sortOrder?: number; displayName?: string; @@ -15,4 +15,3 @@ export type DatabaseSettingsModel = { supportsIntegratedAuthentication?: boolean; requiresConnectionTest?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts index cd1a89d95a..1ffac7af64 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts @@ -8,4 +8,3 @@ export type DictionaryItemModelBaseModel = { name?: string; translations?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts index 22e1edb1e3..b691fd7c96 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts @@ -4,8 +4,7 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemModel = (DictionaryItemModelBaseModel & { - $type: string; - key?: string; +export type DictionaryItemResponseModel = (DictionaryItemModelBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts index 9bc10a302f..37e5189a01 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts @@ -6,4 +6,3 @@ export type DictionaryItemTranslationModel = { isoCode?: string; translation?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts index 9955664ba7..f0744047dc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryOverviewModel = { +export type DictionaryOverviewResponseModel = { name?: string | null; key?: string; parentKey?: string | null; translatedIsoCodes?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts deleted file mode 100644 index b8191ffc6d..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryUploadModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemsImportModel } from './DictionaryItemsImportModel'; - -export type DictionaryUploadModel = { - dictionaryItems?: Array; - fileName?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts deleted file mode 100644 index f2a937ba4e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type DocumentBlueprintTreeItemModel = (EntityTreeItemModel & { - $type: string; - documentTypeKey?: string; - documentTypeAlias?: string; - documentTypeName?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts new file mode 100644 index 0000000000..6821ca9675 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type DocumentBlueprintTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +documentTypeKey?: string; +documentTypeAlias?: string; +documentTypeName?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts deleted file mode 100644 index dd0c6f24d0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; -import type { ContentViewModelBaseDocumentValueDocumentVariantModel } from './ContentViewModelBaseDocumentValueDocumentVariantModel'; - -export type DocumentModel = (ContentViewModelBaseDocumentValueDocumentVariantModel & { - urls?: Array; - templateKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts new file mode 100644 index 0000000000..af1dbfa151 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; +import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; + +export type DocumentResponseModel = (ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel & { +urls?: Array; +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts deleted file mode 100644 index 0376baedf3..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; - -export type DocumentTreeItemModel = (ContentTreeItemModel & { - $type: string; - isProtected?: boolean; - isPublished?: boolean; - isEdited?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts new file mode 100644 index 0000000000..2f49967d81 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; + +export type DocumentTreeItemResponseModel = (ContentTreeItemResponseModel & { +$type: string; +isProtected?: boolean; +isPublished?: boolean; +isEdited?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts deleted file mode 100644 index 6885b3e0c3..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel } from './ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel'; - -export type DocumentTypeModel = (ContentTypeViewModelBaseDocumentTypePropertyTypeDocumentTypePropertyTypeContainerModel & { - allowedTemplateKeys?: Array; - defaultTemplateKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts deleted file mode 100644 index 69737e93e0..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerModel.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeContainerViewModelBaseModel } from './PropertyTypeContainerViewModelBaseModel'; - -export type DocumentTypePropertyTypeContainerModel = PropertyTypeContainerViewModelBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..0aa23dce56 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; + +export type DocumentTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts deleted file mode 100644 index 6fa071b539..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeModel.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeViewModelBaseModel } from './PropertyTypeViewModelBaseModel'; - -export type DocumentTypePropertyTypeModel = PropertyTypeViewModelBaseModel; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts new file mode 100644 index 0000000000..2cd2e32d6e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; + +export type DocumentTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts new file mode 100644 index 0000000000..7e0adcb071 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; +import type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; + +export type DocumentTypeResponseModel = (ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel & { +allowedTemplateKeys?: Array; +defaultTemplateKey?: string | null; +cleanup?: ContentTypeCleanupModel; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts deleted file mode 100644 index 13f61975bb..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type DocumentTypeTreeItemModel = (FolderTreeItemModel & { - $type: string; - isElement?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts new file mode 100644 index 0000000000..f6737ab3af --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type DocumentTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { +$type: string; +isElement?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts index da3e425d98..3f856dc060 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts @@ -2,7 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ValueViewModelBaseModel } from './ValueViewModelBaseModel'; - -export type DocumentValueModel = ValueViewModelBaseModel; +import type { ValueModelBaseModel } from './ValueModelBaseModel'; +export type DocumentValueModel = (ValueModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts deleted file mode 100644 index b2d7431caa..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentStateModel } from './ContentStateModel'; -import type { VariantViewModelBaseModel } from './VariantViewModelBaseModel'; - -export type DocumentVariantModel = (VariantViewModelBaseModel & { - state?: ContentStateModel; - publishDate?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts new file mode 100644 index 0000000000..a362a5d53c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantModelBaseModel } from './VariantModelBaseModel'; + +export type DocumentVariantRequestModel = (VariantModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts new file mode 100644 index 0000000000..1ec48739e2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentStateModel } from './ContentStateModel'; +import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; + +export type DocumentVariantResponseModel = (VariantResponseModelBaseModel & { +$type: string; +state?: ContentStateModel; +publishDate?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts new file mode 100644 index 0000000000..05f340dbb8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DomainPresentationModel = { + domainName?: string; + isoCode?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts new file mode 100644 index 0000000000..0109e12809 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainPresentationModel } from './DomainPresentationModel'; + +export type DomainsPresentationModelBaseModel = { + defaultIsoCode?: string | null; + domains?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts new file mode 100644 index 0000000000..4ef04f4c24 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; + +export type DomainsResponseModel = DomainsPresentationModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts deleted file mode 100644 index 9dd2539305..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TreeItemModel } from './TreeItemModel'; - -export type EntityTreeItemModel = (TreeItemModel & { - $type: string; - key?: string; - isContainer?: boolean; - parentKey?: string | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts new file mode 100644 index 0000000000..7efeefad1e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; + +export type EntityTreeItemResponseModel = (TreeItemPresentationModel & { +$type: string; +key?: string; +isContainer?: boolean; +parentKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts index 0ef3d38779..14255377d9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type FieldModel = { +export type FieldPresentationModel = { name?: string; values?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts deleted file mode 100644 index 970c0ef60f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TreeItemModel } from './TreeItemModel'; - -export type FileSystemTreeItemModel = (TreeItemModel & { - path?: string; - isFolder?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts new file mode 100644 index 0000000000..98c014b13c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; + +export type FileSystemTreeItemPresentationModel = (TreeItemPresentationModel & { +path?: string; +isFolder?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts index bb5a9dab5b..f4fa285d6a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts @@ -5,4 +5,3 @@ export type FolderModelBaseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts index ab789bb8eb..c3606779e5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts @@ -4,9 +4,8 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderModel = (FolderModelBaseModel & { - $type: string; - key?: string; - parentKey?: string | null; +export type FolderReponseModel = (FolderModelBaseModel & { +$type: string; +key?: string; +parentKey?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts deleted file mode 100644 index 618a10ba2f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { EntityTreeItemModel } from './EntityTreeItemModel'; - -export type FolderTreeItemModel = (EntityTreeItemModel & { - $type: string; - isFolder?: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts new file mode 100644 index 0000000000..25c0f50fd2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; + +export type FolderTreeItemResponseModel = (EntityTreeItemResponseModel & { +$type: string; +isFolder?: boolean; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts similarity index 88% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts index 82f2cd7448..0a64ed3f60 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type HealthCheckActionModel = { +export type HealthCheckActionRequestModel = { healthCheckKey?: string; alias?: string | null; name?: string | null; @@ -12,4 +12,3 @@ export type HealthCheckActionModel = { providedValueValidation?: string | null; providedValueValidationRegex?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts deleted file mode 100644 index 7f452c35ed..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckGroupModelBaseModel } from './HealthCheckGroupModelBaseModel'; -import type { HealthCheckModel } from './HealthCheckModel'; - -export type HealthCheckGroupModel = (HealthCheckGroupModelBaseModel & { - checks?: Array; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts similarity index 63% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts index e024867963..fbc62be4ff 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type HealthCheckGroupModelBaseModel = { +export type HealthCheckGroupPresentationBaseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts new file mode 100644 index 0000000000..dfdf778e12 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; +import type { HealthCheckModel } from './HealthCheckModel'; + +export type HealthCheckGroupPresentationModel = (HealthCheckGroupPresentationBaseModel & { +checks?: Array; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts new file mode 100644 index 0000000000..5a038bd74e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; + +export type HealthCheckGroupResponseModel = HealthCheckGroupPresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts deleted file mode 100644 index 4fe58a6a10..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckWithResultModel } from './HealthCheckWithResultModel'; - -export type HealthCheckGroupWithResultModel = { - checks?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts new file mode 100644 index 0000000000..45f3b948df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckWithResultPresentationModel } from './HealthCheckWithResultPresentationModel'; + +export type HealthCheckGroupWithResultResponseModel = { + checks?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts index 9a85add96d..56ca3e0121 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts @@ -5,7 +5,6 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; export type HealthCheckModel = (HealthCheckModelBaseModel & { - name?: string; - description?: string | null; +name?: string; +description?: string | null; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts index 053af0b984..55f41c4618 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts @@ -5,4 +5,3 @@ export type HealthCheckModelBaseModel = { key?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts similarity index 55% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts index 4665a20f16..d5a99706b5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts @@ -2,13 +2,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckActionModel } from './HealthCheckActionModel'; +import type { HealthCheckActionRequestModel } from './HealthCheckActionRequestModel'; import type { StatusResultTypeModel } from './StatusResultTypeModel'; -export type HealthCheckResultModel = { +export type HealthCheckResultResponseModel = { message?: string; resultType?: StatusResultTypeModel; - actions?: Array | null; + actions?: Array | null; readMoreLink?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts deleted file mode 100644 index a75a4c52a8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; -import type { HealthCheckResultModel } from './HealthCheckResultModel'; - -export type HealthCheckWithResultModel = (HealthCheckModelBaseModel & { - results?: Array | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts new file mode 100644 index 0000000000..12929e62f8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; +import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; + +export type HealthCheckWithResultPresentationModel = (HealthCheckModelBaseModel & { +results?: Array | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts index 7a56b0085e..43a41c82c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type HelpPageModel = { +export type HelpPageResponseModel = { name?: string | null; description?: string | null; url?: string | null; type?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts index 73d0d2c31e..ae77e85dbc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemsImportModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryItemsImportModel = { +export type ImportDictionaryItemsPresentationModel = { key?: string; name?: string | null; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts similarity index 73% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts index 3f0b6be219..f08dd2599a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryImportModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type DictionaryImportModel = { +export type ImportDictionaryRequestModel = { fileName?: string; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts index a9aec87082..befb90a467 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts @@ -4,7 +4,7 @@ import type { HealthStatusModel } from './HealthStatusModel'; -export type IndexModel = { +export type IndexResponseModel = { name: string; healthStatus?: HealthStatusModel; canRebuild: boolean; @@ -13,4 +13,3 @@ export type IndexModel = { fieldCount: number; providerProperties?: Record | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts deleted file mode 100644 index d1898faede..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseInstallModel } from './DatabaseInstallModel'; -import type { TelemetryLevelModel } from './TelemetryLevelModel'; -import type { UserInstallModel } from './UserInstallModel'; - -export type InstallModel = { - user: UserInstallModel; - database: DatabaseInstallModel; - telemetryLevel?: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts deleted file mode 100644 index b5b8065fdf..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DatabaseSettingsModel } from './DatabaseSettingsModel'; -import type { UserSettingsModel } from './UserSettingsModel'; - -export type InstallSettingsModel = { - user?: UserSettingsModel; - databases?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts new file mode 100644 index 0000000000..2b432cb901 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DatabaseSettingsPresentationModel } from './DatabaseSettingsPresentationModel'; +import type { UserSettingsModel } from './UserSettingsModel'; + +export type InstallSettingsResponseModel = { + user?: UserSettingsModel; + databases?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts new file mode 100644 index 0000000000..0754a817a4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DatabaseInstallResponseModel } from './DatabaseInstallResponseModel'; +import type { TelemetryLevelModel } from './TelemetryLevelModel'; +import type { UserInstallResponseModel } from './UserInstallResponseModel'; + +export type InstallVResponseModel = { + user: UserInstallResponseModel; + database: DatabaseInstallResponseModel; + telemetryLevel?: TelemetryLevelModel; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts index eaff3e8d4e..b7dd8054d4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts @@ -8,4 +8,3 @@ export type LanguageModelBaseModel = { isMandatory?: boolean; fallbackIsoCode?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts similarity index 64% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts index cba035758b..77993ea4ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts @@ -4,7 +4,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageModel = (LanguageModelBaseModel & { - isoCode?: string; +export type LanguageResponseModel = (LanguageModelBaseModel & { +isoCode?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index 6fbb50efba..8a423396d7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type LogLevelCountsModel = { +export type LogLevelCountsReponseModel = { information?: number; debug?: number; warning?: number; error?: number; fatal?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts index 098e1d9228..51a22a6a2b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type LogMessagePropertyModel = { +export type LogMessagePropertyPresentationModel = { name?: string; value?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts similarity index 58% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts index 750fb168e8..38e9321909 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts @@ -3,14 +3,13 @@ /* eslint-disable */ import type { LogLevelModel } from './LogLevelModel'; -import type { LogMessagePropertyModel } from './LogMessagePropertyModel'; +import type { LogMessagePropertyPresentationModel } from './LogMessagePropertyPresentationModel'; -export type LogMessageModel = { +export type LogMessageResponseModel = { timestamp?: string; level?: LogLevelModel; messageTemplate?: string | null; renderedMessage?: string | null; - properties?: Array; + properties?: Array; exception?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts index 30919c8239..2731cd2df8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type LogTemplateModel = { +export type LogTemplateResponseModel = { messageTemplate?: string | null; count?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts index 2eeedc8142..6615168857 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts @@ -4,8 +4,7 @@ import type { LogLevelModel } from './LogLevelModel'; -export type LoggerModel = { +export type LoggerResponseModel = { name?: string; level?: LogLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts new file mode 100644 index 0000000000..dea0899aee --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; + +export type MediaTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts new file mode 100644 index 0000000000..30de030f1a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; + +export type MediaTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts new file mode 100644 index 0000000000..ba0ca6251c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; + +export type MediaTypeResponseModel = ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts new file mode 100644 index 0000000000..3df317dfed --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ValueModelBaseModel } from './ValueModelBaseModel'; + +export type MediaValueModel = (ValueModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts new file mode 100644 index 0000000000..49b8b7b4e6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantModelBaseModel } from './VariantModelBaseModel'; + +export type MediaVariantRequestModel = (VariantModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts new file mode 100644 index 0000000000..b76e970304 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; + +export type MediaVariantResponseModel = (VariantResponseModelBaseModel & { +$type: string; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts similarity index 89% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts index 745bba54df..cb7477ebdf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts @@ -4,7 +4,7 @@ import type { ModelsModeModel } from './ModelsModeModel'; -export type ModelsBuilderModel = { +export type ModelsBuilderResponseModel = { mode?: ModelsModeModel; canGenerate?: boolean; outOfDateModels?: boolean; @@ -13,4 +13,3 @@ export type ModelsBuilderModel = { modelsNamespace?: string | null; trackingOutOfDateModels?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts index 2c8513a405..2470cac98c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeMoveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypeMoveModel = { +export type MoveDataTypeRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts similarity index 70% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts index 163d127437..742605cfcc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeCopyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type DataTypeCopyModel = { +export type MoveDictionaryRequestModel = { targetKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts new file mode 100644 index 0000000000..4b5b44cb19 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ObjectTypeResponseModel = { + name?: string | null; + id?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts index 886e643b17..0b041f81ee 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts @@ -5,4 +5,3 @@ export type OkResultModel = { statusCode?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts index 7493102346..3525c5b9a3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts @@ -4,7 +4,6 @@ import type { OutOfDateTypeModel } from './OutOfDateTypeModel'; -export type OutOfDateStatusModel = { +export type OutOfDateStatusResponseModel = { status?: OutOfDateTypeModel; }; - 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/PackageDefinitionResponseModel.ts similarity index 57% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts index 70f174f33d..1e40334b1d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts @@ -4,8 +4,7 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageDefinitionModel = (PackageModelBaseModel & { - key?: string; - packagePath?: string; +export type PackageDefinitionResponseModel = (PackageModelBaseModel & { +key?: string; +packagePath?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts index 0c0518f0ed..1ac843ab9b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ -export type PackageManifestModel = { +export type PackageManifestResponseModel = { name?: string; version?: string | null; extensions?: Array; }; - 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/PackageMigrationStatusResponseModel.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts index a0317649c5..f2aa442a61 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type PackageMigrationStatusModel = { +export type PackageMigrationStatusResponseModel = { 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 index a405b0ecc2..4ccfb1eacf 100644 --- 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 @@ -18,4 +18,3 @@ export type PackageModelBaseModel = { languages?: Array; dictionaryItems?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts index 28e4883e9d..4d8cbdd238 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts @@ -8,4 +8,3 @@ export type PagedAuditLogResponseModel = { total: number; items: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts index 2faa8a352c..32531185f4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts @@ -8,4 +8,3 @@ export type PagedAuditLogWithUsernameResponseModel = { total: number; items: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts deleted file mode 100644 index 397bd30608..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; - -export type PagedContentTreeItemModel = { - total: number; - items: Array<(ContentTreeItemModel | DocumentTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts new file mode 100644 index 0000000000..baa7dc3c36 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; + +export type PagedContentTreeItemResponseModel = { + total: number; + items: Array<(ContentTreeItemResponseModel | DocumentTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts deleted file mode 100644 index 3c15f63914..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CultureModel } from './CultureModel'; - -export type PagedCultureModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts new file mode 100644 index 0000000000..266daa8cd2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CultureReponseModel } from './CultureReponseModel'; + +export type PagedCultureReponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts deleted file mode 100644 index 14418fbd87..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryOverviewModel } from './DictionaryOverviewModel'; - -export type PagedDictionaryOverviewModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts new file mode 100644 index 0000000000..990d186c40 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DictionaryOverviewResponseModel } from './DictionaryOverviewResponseModel'; + +export type PagedDictionaryOverviewResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts deleted file mode 100644 index 699f2e1741..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentBlueprintTreeItemModel } from './DocumentBlueprintTreeItemModel'; - -export type PagedDocumentBlueprintTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts new file mode 100644 index 0000000000..8dc4a5165e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; + +export type PagedDocumentBlueprintTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts deleted file mode 100644 index 3a919899d1..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; - -export type PagedDocumentTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts new file mode 100644 index 0000000000..d8dd2f0fc6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; + +export type PagedDocumentTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts deleted file mode 100644 index 36a53706fd..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; - -export type PagedDocumentTypeTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts new file mode 100644 index 0000000000..ba0f93c358 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; + +export type PagedDocumentTypeTreeItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts deleted file mode 100644 index ba5f939425..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ContentTreeItemModel } from './ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from './DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from './DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from './EntityTreeItemModel'; -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type PagedEntityTreeItemModel = { - total: number; - items: Array<(EntityTreeItemModel | ContentTreeItemModel | DocumentBlueprintTreeItemModel | DocumentTreeItemModel | DocumentTypeTreeItemModel | FolderTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts new file mode 100644 index 0000000000..9df2b4b601 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from './DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type PagedEntityTreeItemResponseModel = { + total: number; + items: Array<(EntityTreeItemResponseModel | ContentTreeItemResponseModel | DocumentBlueprintTreeItemResponseModel | DocumentTreeItemResponseModel | DocumentTypeTreeItemResponseModel | FolderTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts deleted file mode 100644 index 4b45c03949..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemTreeItemModel } from './FileSystemTreeItemModel'; - -export type PagedFileSystemTreeItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts new file mode 100644 index 0000000000..be96ca744e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileSystemTreeItemPresentationModel } from './FileSystemTreeItemPresentationModel'; + +export type PagedFileSystemTreeItemPresentationModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts deleted file mode 100644 index 25377aa29c..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeTreeItemModel } from './DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from './FolderTreeItemModel'; - -export type PagedFolderTreeItemModel = { - total: number; - items: Array<(FolderTreeItemModel | DocumentTypeTreeItemModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts new file mode 100644 index 0000000000..3543ba5636 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; + +export type PagedFolderTreeItemResponseModel = { + total: number; + items: Array<(FolderTreeItemResponseModel | DocumentTypeTreeItemResponseModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts deleted file mode 100644 index 8a2687142d..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HealthCheckGroupModel } from './HealthCheckGroupModel'; -import type { HealthCheckGroupModelBaseModel } from './HealthCheckGroupModelBaseModel'; - -export type PagedHealthCheckGroupModelBaseModel = { - total: number; - items: Array<(HealthCheckGroupModelBaseModel | HealthCheckGroupModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts new file mode 100644 index 0000000000..8bcb42c1d8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HealthCheckGroupResponseModel } from './HealthCheckGroupResponseModel'; + +export type PagedHealthCheckGroupResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts deleted file mode 100644 index a5fe785cea..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { HelpPageModel } from './HelpPageModel'; - -export type PagedHelpPageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts new file mode 100644 index 0000000000..fb379bf641 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HelpPageResponseModel } from './HelpPageResponseModel'; + +export type PagedHelpPageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts deleted file mode 100644 index ffb2a4a1ca..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { IndexModel } from './IndexModel'; - -export type PagedIndexModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts new file mode 100644 index 0000000000..a84e061c7c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { IndexResponseModel } from './IndexResponseModel'; + +export type PagedIndexResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts deleted file mode 100644 index 700a00b67c..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LanguageModel } from './LanguageModel'; - -export type PagedLanguageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts new file mode 100644 index 0000000000..d749a241cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LanguageResponseModel } from './LanguageResponseModel'; + +export type PagedLanguageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts deleted file mode 100644 index 2e0370b852..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogMessageModel } from './LogMessageModel'; - -export type PagedLogMessageModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts new file mode 100644 index 0000000000..88457e9701 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LogMessageResponseModel } from './LogMessageResponseModel'; + +export type PagedLogMessageResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts deleted file mode 100644 index eefc94d7d1..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LogTemplateModel } from './LogTemplateModel'; - -export type PagedLogTemplateModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts new file mode 100644 index 0000000000..801c440db4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LogTemplateResponseModel } from './LogTemplateResponseModel'; + +export type PagedLogTemplateResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts deleted file mode 100644 index 7f2e381960..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { LoggerModel } from './LoggerModel'; - -export type PagedLoggerModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts new file mode 100644 index 0000000000..273205e323 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { LoggerResponseModel } from './LoggerResponseModel'; + +export type PagedLoggerResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts new file mode 100644 index 0000000000..e72657d180 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ObjectTypeResponseModel } from './ObjectTypeResponseModel'; + +export type PagedObjectTypeResponseModel = { + total: number; + items: Array; +}; 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 deleted file mode 100644 index 3a596e659a..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* 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/PagedPackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts new file mode 100644 index 0000000000..8582af874a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageDefinitionResponseModel } from './PackageDefinitionResponseModel'; + +export type PagedPackageDefinitionResponseModel = { + 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 deleted file mode 100644 index b9a95529d8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* 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/models/PagedPackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts new file mode 100644 index 0000000000..114244e919 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PackageMigrationStatusResponseModel } from './PackageMigrationStatusResponseModel'; + +export type PagedPackageMigrationStatusResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts deleted file mode 100644 index 530f70a624..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RecycleBinItemModel } from './RecycleBinItemModel'; - -export type PagedRecycleBinItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts new file mode 100644 index 0000000000..4077e2d0d5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RecycleBinItemResponseModel } from './RecycleBinItemResponseModel'; + +export type PagedRecycleBinItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts deleted file mode 100644 index 6bd46c9a32..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RedirectUrlModel } from './RedirectUrlModel'; - -export type PagedRedirectUrlModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts new file mode 100644 index 0000000000..3026d71af4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RedirectUrlResponseModel } from './RedirectUrlResponseModel'; + +export type PagedRedirectUrlResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts deleted file mode 100644 index fc7f3bc0db..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationItemModel } from './RelationItemModel'; - -export type PagedRelationItemModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts new file mode 100644 index 0000000000..4ad8badc22 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationItemResponseModel } from './RelationItemResponseModel'; + +export type PagedRelationItemResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts deleted file mode 100644 index 155680334e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { RelationModel } from './RelationModel'; - -export type PagedRelationModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts new file mode 100644 index 0000000000..5a4d95e4c1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationResponseModel } from './RelationResponseModel'; + +export type PagedRelationResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts deleted file mode 100644 index 069463afc4..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SavedLogSearchModel } from './SavedLogSearchModel'; - -export type PagedSavedLogSearchModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts new file mode 100644 index 0000000000..6f5b02d4f3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchResponseModel } from './SavedLogSearchResponseModel'; + +export type PagedSavedLogSearchResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts deleted file mode 100644 index 849f5368a8..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearchResultModel } from './SearchResultModel'; - -export type PagedSearchResultModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts new file mode 100644 index 0000000000..2a95a2d85b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SearchResultResponseModel } from './SearchResultResponseModel'; + +export type PagedSearchResultResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts deleted file mode 100644 index 83c716fe93..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { SearcherModel } from './SearcherModel'; - -export type PagedSearcherModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts new file mode 100644 index 0000000000..b8c9c60dab --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SearcherResponseModel } from './SearcherResponseModel'; + +export type PagedSearcherResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts deleted file mode 100644 index a447d38f2e..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryModel } from './TelemetryModel'; - -export type PagedTelemetryModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts new file mode 100644 index 0000000000..6a8ddbabfd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryResponseModel } from './TelemetryResponseModel'; + +export type PagedTelemetryResponseModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts deleted file mode 100644 index c4d0191652..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { UserGroupModel } from './UserGroupModel'; - -export type PagedUserGroupModel = { - total: number; - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts new file mode 100644 index 0000000000..8a01377edf --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserGroupPresentationModel } from './UserGroupPresentationModel'; + +export type PagedUserGroupPresentationModel = { + total: number; + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts index b2a7cc321c..cc933cc8d4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type ProfilingStatusModel = { +export type ProfilingStatusRequestModel = { enabled?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts new file mode 100644 index 0000000000..98b69d1149 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ProfilingStatusResponseModel = { + enabled?: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts index e8138d4992..cdbf7325af 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts @@ -5,4 +5,3 @@ export type PropertyTypeAppearanceModel = { labelOnTop?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts index 7c8e755156..44c151e3a4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type PropertyTypeContainerViewModelBaseModel = { +export type PropertyTypeContainerResponseModelBaseModel = { key?: string; parentKey?: string | null; name?: string | null; type?: string; sortOrder?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts index 11fe857a2c..57f4f6c6dd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts @@ -5,7 +5,7 @@ import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -export type PropertyTypeViewModelBaseModel = { +export type PropertyTypeResponseModelBaseModel = { key?: string; containerKey?: string | null; alias?: string; @@ -17,4 +17,3 @@ export type PropertyTypeViewModelBaseModel = { validation?: PropertyTypeValidationModel; appearance?: PropertyTypeAppearanceModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts index 6966054e27..efdc5b51ec 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts @@ -8,4 +8,3 @@ export type PropertyTypeValidationModel = { regEx?: string | null; regExMessage?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts similarity index 85% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts index 17bef97f12..203b715fb4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RecycleBinItemModel = { +export type RecycleBinItemResponseModel = { $type: string; key?: string; name?: string; @@ -12,4 +12,3 @@ export type RecycleBinItemModel = { isContainer?: boolean; parentKey?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts index fe39dcab56..d2c743ba79 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RedirectUrlModel = { +export type RedirectUrlResponseModel = { key?: string; originalUrl?: string; destinationUrl?: string; @@ -10,4 +10,3 @@ export type RedirectUrlModel = { contentKey?: string; culture?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts index c97804bab7..6ef9f24316 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts @@ -4,8 +4,7 @@ import type { RedirectStatusModel } from './RedirectStatusModel'; -export type RedirectUrlStatusModel = { +export type RedirectUrlStatusResponseModel = { status?: RedirectStatusModel; userIsAdmin?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts index d99d9050a5..2b261d21d2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RelationItemModel = { +export type RelationItemResponseModel = { nodeKey?: string; nodeName?: string | null; nodeType?: string | null; @@ -14,4 +14,3 @@ export type RelationItemModel = { relationTypeIsBidirectional?: boolean; relationTypeIsDependency?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts similarity index 86% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts index 47de4a65d7..4fe5555e69 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type RelationModel = { +export type RelationResponseModel = { parentId?: number; parentName?: string | null; childId?: number; @@ -10,4 +10,3 @@ export type RelationModel = { createDate?: string; comment?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts new file mode 100644 index 0000000000..e7de6f1945 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type RelationTypeBaseModel = { + name?: string; + isBidirectional?: boolean; + parentObjectType?: string | null; + childObjectType?: string | null; + isDependency?: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts new file mode 100644 index 0000000000..dab718bbf1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts @@ -0,0 +1,14 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type RelationTypeResponseModel = (RelationTypeBaseModel & { +key?: string; +alias?: string | null; +path?: string; +isSystemRelationType?: boolean; +parentObjectTypeName?: string | null; +childObjectTypeName?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts index a729fbff90..14466b644d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupSaveModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts @@ -4,5 +4,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupSaveModel = UserGroupBaseModel; - +export type SaveUserGroupRequestModel = UserGroupBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts index f75781f02a..2cc7b02658 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type SavedLogSearchModel = { +export type SavedLogSearchPresenationBaseModel = { name?: string; query?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts new file mode 100644 index 0000000000..e2e7aecf61 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; + +export type SavedLogSearchRequestModel = SavedLogSearchPresenationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts new file mode 100644 index 0000000000..1a89ce91c6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; + +export type SavedLogSearchResponseModel = SavedLogSearchPresenationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts deleted file mode 100644 index 82f9cf64de..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FieldModel } from './FieldModel'; - -export type SearchResultModel = { - id?: string; - score?: number; - readonly fieldCount?: number; - fields?: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts new file mode 100644 index 0000000000..9706011ad7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FieldPresentationModel } from './FieldPresentationModel'; + +export type SearchResultResponseModel = { + id?: string; + score?: number; + readonly fieldCount?: number; + fields?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts similarity index 70% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts index e20520f4d6..898a4172a8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type SearcherModel = { +export type SearcherResponseModel = { name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts index 8c338954f5..5ba10b5849 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts @@ -4,7 +4,6 @@ import type { RuntimeLevelModel } from './RuntimeLevelModel'; -export type ServerStatusModel = { +export type ServerStatusResponseModel = { serverStatus?: RuntimeLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts index 9cf2ab4b30..1734020f3e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts @@ -4,7 +4,6 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type TelemetryModel = { +export type TelemetryRepresentationBaseModel = { telemetryLevel?: TelemetryLevelModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts new file mode 100644 index 0000000000..08f54adf7c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; + +export type TelemetryRequestModel = TelemetryRepresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts new file mode 100644 index 0000000000..3ddf37ec02 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; + +export type TelemetryResponseModel = TelemetryRepresentationBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts index 7471d8b826..11e0260809 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts @@ -7,4 +7,3 @@ export type TemplateModelBaseModel = { alias?: string; content?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts index 1befb86885..83a2625447 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts @@ -4,9 +4,8 @@ import type { OperatorModel } from './OperatorModel'; -export type TemplateQueryExecuteFilterModel = { +export type TemplateQueryExecuteFilterPresentationModel = { propertyAlias?: string; constraintValue?: string; operator?: OperatorModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts index 029409b196..29ad0c52ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts @@ -2,14 +2,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { TemplateQueryExecuteFilterModel } from './TemplateQueryExecuteFilterModel'; +import type { TemplateQueryExecuteFilterPresentationModel } from './TemplateQueryExecuteFilterPresentationModel'; import type { TemplateQueryExecuteSortModel } from './TemplateQueryExecuteSortModel'; export type TemplateQueryExecuteModel = { rootContentKey?: string | null; contentTypeAlias?: string | null; - filters?: Array | null; + filters?: Array | null; sort?: TemplateQueryExecuteSortModel | null; take?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts index d3a1b6cf56..a733632dcc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts @@ -6,4 +6,3 @@ export type TemplateQueryExecuteSortModel = { propertyAlias?: string; direction?: string | null; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts index 5b24f440a5..df264e1646 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts @@ -9,4 +9,3 @@ export type TemplateQueryOperatorModel = { operator?: OperatorModel; applicableTypes?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts similarity index 80% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts index 545d021964..dfd201f49e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts @@ -4,8 +4,7 @@ import type { TemplateQueryPropertyTypeModel } from './TemplateQueryPropertyTypeModel'; -export type TemplateQueryPropertyModel = { +export type TemplateQueryPropertyPresentationModel = { alias?: string; type?: TemplateQueryPropertyTypeModel; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts index 43d24a4c62..a2082853e0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts @@ -2,8 +2,7 @@ /* tslint:disable */ /* eslint-disable */ -export type TemplateQueryResultItemModel = { +export type TemplateQueryResultItemPresentationModel = { icon?: string; name?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts deleted file mode 100644 index 1839c4e456..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TemplateQueryResultItemModel } from './TemplateQueryResultItemModel'; - -export type TemplateQueryResultModel = { - queryExpression?: string; - sampleResults?: Array; - resultCount?: number; - executionTime?: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts new file mode 100644 index 0000000000..c32ff1d249 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TemplateQueryResultItemPresentationModel } from './TemplateQueryResultItemPresentationModel'; + +export type TemplateQueryResultResponseModel = { + queryExpression?: string; + sampleResults?: Array; + resultCount?: number; + executionTime?: number; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts similarity index 52% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts index 67723966b6..b49bbae056 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts @@ -3,11 +3,10 @@ /* eslint-disable */ import type { TemplateQueryOperatorModel } from './TemplateQueryOperatorModel'; -import type { TemplateQueryPropertyModel } from './TemplateQueryPropertyModel'; +import type { TemplateQueryPropertyPresentationModel } from './TemplateQueryPropertyPresentationModel'; -export type TemplateQuerySettingsModel = { +export type TemplateQuerySettingsResponseModel = { contentTypeAliases?: Array; - properties?: Array; + properties?: Array; operators?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts index 7f14861ddd..1044f35131 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts @@ -4,8 +4,7 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateModel = (TemplateModelBaseModel & { - $type: string; - key?: string; +export type TemplateResponseModel = (TemplateModelBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts similarity index 67% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts index 47040df1dc..d616c8c655 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type TemplateScaffoldModel = { +export type TemplateScaffoldResponseModel = { content?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts index b16725118d..e62a6043a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type TreeItemModel = { +export type TreeItemPresentationModel = { name?: string; type?: string; icon?: string; hasChildren?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts new file mode 100644 index 0000000000..c2d856a916 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; + +export type UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { + values?: Array; + variants?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts new file mode 100644 index 0000000000..5c95019eb1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; + +export type UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { + values?: Array; + variants?: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts index 9905f91b45..fce11fbc4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts @@ -4,5 +4,4 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeUpdateModel = DataTypeModelBaseModel; - +export type UpdateDataTypeRequestModel = DataTypeModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts index 7ec1024f75..2c4af9822a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts @@ -4,5 +4,4 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; -export type DictionaryItemUpdateModel = DictionaryItemModelBaseModel; - +export type UpdateDictionaryItemRequestModel = DictionaryItemModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts new file mode 100644 index 0000000000..2b10730abb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; + +export type UpdateDocumentRequestModel = (UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { +templateKey?: string | null; +}); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts new file mode 100644 index 0000000000..06caa5c458 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; + +export type UpdateDomainsRequestModel = DomainsPresentationModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts index cadefa91e6..1644854933 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts @@ -4,5 +4,4 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; -export type FolderUpdateModel = FolderModelBaseModel; - +export type UpdateFolderReponseModel = FolderModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts index 43ede0907e..45f9f1a76c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts @@ -4,5 +4,4 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; -export type LanguageUpdateModel = LanguageModelBaseModel; - +export type UpdateLanguageRequestModel = LanguageModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts new file mode 100644 index 0000000000..8363477f55 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; + +export type UpdateMediaRequestModel = UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel; 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/UpdatePackageRequestModel.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts index e8bbd052fe..ab91b916f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts @@ -4,7 +4,6 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; -export type PackageUpdateModel = (PackageModelBaseModel & { - packagePath?: string; +export type UpdatePackageRequestModel = (PackageModelBaseModel & { +packagePath?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts new file mode 100644 index 0000000000..df64f4fb41 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; + +export type UpdateRelationTypeRequestModel = RelationTypeBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts index 7096084213..a95046e2f9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateCreateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts @@ -4,5 +4,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateCreateModel = TemplateModelBaseModel; - +export type UpdateTemplateRequestModel = TemplateModelBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts similarity index 68% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts index 9d329770d4..7e357408c1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupUpdateModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts @@ -4,5 +4,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupUpdateModel = UserGroupBaseModel; - +export type UpdateUserGroupRequestModel = UserGroupBaseModel; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts index 0486d96ff8..8331fa652a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type UpgradeSettingsModel = { +export type UpgradeSettingsResponseModel = { currentState?: string; newState?: string; newVersion?: string; oldVersion?: string; readonly reportUrl?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts new file mode 100644 index 0000000000..3394ac66c7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ImportDictionaryItemsPresentationModel } from './ImportDictionaryItemsPresentationModel'; + +export type UploadDictionaryResponseModel = { + dictionaryItems?: Array; + fileName?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts index 3b22ff01eb..5da0876910 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts @@ -12,4 +12,3 @@ export type UserGroupBaseModel = { mediaStartNodeKey?: string | null; permissions?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts index 0aae1e4cf7..e812fc9384 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts @@ -4,8 +4,7 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; -export type UserGroupModel = (UserGroupBaseModel & { - $type: string; - key?: string; +export type UserGroupPresentationModel = (UserGroupBaseModel & { +$type: string; +key?: string; }); - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts index 9c89afe57b..c107963227 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts @@ -2,10 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -export type UserInstallModel = { +export type UserInstallResponseModel = { name: string; email: string; password: string; readonly subscribeToNewsletter?: boolean; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts index af052a9cc7..e5837a651d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts @@ -2,11 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ConsentLevelModel } from './ConsentLevelModel'; +import type { ConsentLevelPresentationModel } from './ConsentLevelPresentationModel'; export type UserSettingsModel = { minCharLength?: number; minNonAlphaNumericLength?: number; - consentLevels?: Array; + consentLevels?: Array; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts index f63bda6058..ef9d722992 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts @@ -2,10 +2,10 @@ /* tslint:disable */ /* eslint-disable */ -export type ValueViewModelBaseModel = { +export type ValueModelBaseModel = { + $type: string; culture?: string | null; segment?: string | null; alias?: string; value?: any; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts new file mode 100644 index 0000000000..b2227d9a71 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type VariantModelBaseModel = { + $type: string; + culture?: string | null; + segment?: string | null; + name?: string; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts index 6e2f7e0a05..a0b2fa88a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantViewModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts @@ -2,11 +2,11 @@ /* tslint:disable */ /* eslint-disable */ -export type VariantViewModelBaseModel = { +export type VariantResponseModelBaseModel = { + $type: string; culture?: string | null; segment?: string | null; name?: string; createDate?: string; updateDate?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts similarity index 71% rename from src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts rename to src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts index a4405a253b..b454174231 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts @@ -2,7 +2,6 @@ /* tslint:disable */ /* eslint-disable */ -export type VersionModel = { +export type VersionResponseModel = { version?: string; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts index 20a267dcb5..f1c3b47e92 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts @@ -17,16 +17,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLog({ - orderDirection, - sinceDate, - skip, - take = 100, - }: { - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +orderDirection, +sinceDate, +skip, +take = 100, +}: { +orderDirection?: DirectionModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log', @@ -44,18 +44,18 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLogByKey({ - key, - orderDirection, - sinceDate, - skip, - take = 100, - }: { - key: string, - orderDirection?: DirectionModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +key, +orderDirection, +sinceDate, +skip, +take = 100, +}: { +key: string, +orderDirection?: DirectionModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/{key}', @@ -76,16 +76,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLogTypeByLogType({ - logType, - sinceDate, - skip, - take = 100, - }: { - logType: AuditTypeModel, - sinceDate?: string, - skip?: number, - take?: number, - }): CancelablePromise { +logType, +sinceDate, +skip, +take = 100, +}: { +logType: AuditTypeModel, +sinceDate?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/type/{logType}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts index 1c0efea89e..16fe49b915 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedCultureModel } from '../models/PagedCultureModel'; +import type { PagedCultureReponseModel } from '../models/PagedCultureReponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,16 +10,16 @@ import { request as __request } from '../core/request'; export class CultureResource { /** - * @returns PagedCultureModel Success + * @returns PagedCultureReponseModel Success * @throws ApiError */ public static getCulture({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/culture', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts index 29f0ca82bd..dddb4cd14f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts @@ -1,18 +1,18 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeCopyModel } from '../models/DataTypeCopyModel'; -import type { DataTypeCreateModel } from '../models/DataTypeCreateModel'; -import type { DataTypeModel } from '../models/DataTypeModel'; -import type { DataTypeMoveModel } from '../models/DataTypeMoveModel'; -import type { DataTypeReferenceModel } from '../models/DataTypeReferenceModel'; -import type { DataTypeUpdateModel } from '../models/DataTypeUpdateModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderCreateModel } from '../models/FolderCreateModel'; -import type { FolderModel } from '../models/FolderModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { FolderUpdateModel } from '../models/FolderUpdateModel'; -import type { PagedFolderTreeItemModel } from '../models/PagedFolderTreeItemModel'; +import type { CopyDataTypeRequestModel } from '../models/CopyDataTypeRequestModel'; +import type { CreateDataTypeRequestModel } from '../models/CreateDataTypeRequestModel'; +import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; +import type { DataTypeReferenceResponseModel } from '../models/DataTypeReferenceResponseModel'; +import type { DataTypeResponseModel } from '../models/DataTypeResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderReponseModel } from '../models/FolderReponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MoveDataTypeRequestModel } from '../models/MoveDataTypeRequestModel'; +import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; +import type { UpdateDataTypeRequestModel } from '../models/UpdateDataTypeRequestModel'; +import type { UpdateFolderReponseModel } from '../models/UpdateFolderReponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -25,10 +25,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataType({ - requestBody, - }: { - requestBody?: DataTypeCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type', @@ -47,10 +47,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/{key}', @@ -68,10 +68,10 @@ export class DataTypeResource { * @throws ApiError */ public static deleteDataTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/data-type/{key}', @@ -90,12 +90,12 @@ export class DataTypeResource { * @throws ApiError */ public static putDataTypeByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/data-type/{key}', @@ -116,12 +116,12 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeByKeyCopy({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeCopyModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: CopyDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/{key}/copy', @@ -142,12 +142,12 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeByKeyMove({ - key, - requestBody, - }: { - key: string, - requestBody?: DataTypeMoveModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: MoveDataTypeRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/{key}/move', @@ -167,10 +167,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeByKeyReferences({ - key, - }: { - key: string, - }): CancelablePromise> { +key, +}: { +key: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/{key}/references', @@ -188,10 +188,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataTypeFolder({ - requestBody, - }: { - requestBody?: FolderCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateFolderRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/folder', @@ -206,10 +206,10 @@ export class DataTypeResource { * @throws ApiError */ public static getDataTypeFolderByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -227,10 +227,10 @@ export class DataTypeResource { * @throws ApiError */ public static deleteDataTypeFolderByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -248,12 +248,12 @@ export class DataTypeResource { * @throws ApiError */ public static putDataTypeFolderByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: FolderUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateFolderReponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/data-type/folder/{key}', @@ -269,20 +269,20 @@ export class DataTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeDataTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/children', @@ -300,10 +300,10 @@ export class DataTypeResource { * @throws ApiError */ public static getTreeDataTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/item', @@ -314,18 +314,18 @@ export class DataTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeDataTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts index 3b4d8125e7..b2a18ac44d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts @@ -1,16 +1,16 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DictionaryImportModel } from '../models/DictionaryImportModel'; -import type { DictionaryItemCreateModel } from '../models/DictionaryItemCreateModel'; -import type { DictionaryItemModel } from '../models/DictionaryItemModel'; -import type { DictionaryItemUpdateModel } from '../models/DictionaryItemUpdateModel'; -import type { DictionaryMoveModel } from '../models/DictionaryMoveModel'; -import type { DictionaryUploadModel } from '../models/DictionaryUploadModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedDictionaryOverviewModel } from '../models/PagedDictionaryOverviewModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; +import type { DictionaryItemResponseModel } from '../models/DictionaryItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { ImportDictionaryRequestModel } from '../models/ImportDictionaryRequestModel'; +import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequestModel'; +import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; +import type { UploadDictionaryResponseModel } from '../models/UploadDictionaryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -19,16 +19,16 @@ import { request as __request } from '../core/request'; export class DictionaryResource { /** - * @returns PagedDictionaryOverviewModel Success + * @returns PagedDictionaryOverviewResponseModel Success * @throws ApiError */ public static getDictionary({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary', @@ -44,10 +44,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionary({ - requestBody, - }: { - requestBody?: DictionaryItemCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateDictionaryItemRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary', @@ -67,10 +67,10 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionaryByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -88,10 +88,10 @@ export class DictionaryResource { * @throws ApiError */ public static deleteDictionaryByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -110,12 +110,12 @@ export class DictionaryResource { * @throws ApiError */ public static putDictionaryByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: DictionaryItemUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDictionaryItemRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/dictionary/{key}', @@ -136,12 +136,12 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionaryByKeyExport({ - key, - includeChildren = false, - }: { - key: string, - includeChildren?: boolean, - }): CancelablePromise { +key, +includeChildren = false, +}: { +key: string, +includeChildren?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary/{key}/export', @@ -162,12 +162,12 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryByKeyMove({ - key, - requestBody, - }: { - key: string, - requestBody?: DictionaryMoveModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: MoveDictionaryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/{key}/move', @@ -188,10 +188,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryImport({ - requestBody, - }: { - requestBody?: DictionaryImportModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: ImportDictionaryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/import', @@ -210,10 +210,10 @@ export class DictionaryResource { * @throws ApiError */ public static postDictionaryUpload({ - requestBody, - }: { - requestBody?: any, - }): CancelablePromise { +requestBody, +}: { +requestBody?: any, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/upload', @@ -225,18 +225,18 @@ export class DictionaryResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/children', @@ -253,10 +253,10 @@ export class DictionaryResource { * @throws ApiError */ public static getTreeDictionaryItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/item', @@ -267,16 +267,16 @@ export class DictionaryResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts index 3513d34d4e..5a31940e98 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { PagedDocumentBlueprintTreeItemModel } from '../models/PagedDocumentBlueprintTreeItemModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,10 +15,10 @@ export class DocumentBlueprintResource { * @throws ApiError */ public static getTreeDocumentBlueprintItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/item', @@ -29,16 +29,16 @@ export class DocumentBlueprintResource { } /** - * @returns PagedDocumentBlueprintTreeItemModel Success + * @returns PagedDocumentBlueprintTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentBlueprintRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts index 470fa0033c..8d30863d05 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts @@ -1,10 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentModel } from '../models/DocumentModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { PagedDocumentTreeItemModel } from '../models/PagedDocumentTreeItemModel'; -import type { PagedRecycleBinItemModel } from '../models/PagedRecycleBinItemModel'; +import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentResponseModel } from '../models/DocumentResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; +import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateDocumentRequestModel } from '../models/UpdateDocumentRequestModel'; +import type { UpdateDomainsRequestModel } from '../models/UpdateDomainsRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,15 +15,37 @@ import { request as __request } from '../core/request'; export class DocumentResource { + /** + * @returns string Created + * @throws ApiError + */ + public static postDocument({ +requestBody, +}: { +requestBody?: CreateDocumentRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + /** * @returns any Success * @throws ApiError */ public static getDocumentByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/document/{key}', @@ -34,18 +59,106 @@ export class DocumentResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns any Success + * @throws ApiError + */ + public static deleteDocumentByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document/{key}', + path: { + 'key': key, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByKey({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDocumentRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentByKeyDomains({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{key}/domains', + path: { + 'key': key, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByKeyDomains({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateDomainsRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{key}/domains', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/children', @@ -61,16 +174,16 @@ export class DocumentResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/root', @@ -85,22 +198,22 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemModel Success + * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentChildren({ - parentKey, - skip, - take = 100, - dataTypeKey, - culture, - }: { - parentKey?: string, - skip?: number, - take?: number, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise { +parentKey, +skip, +take = 100, +dataTypeKey, +culture, +}: { +parentKey?: string, +skip?: number, +take?: number, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/children', @@ -119,14 +232,14 @@ export class DocumentResource { * @throws ApiError */ public static getTreeDocumentItem({ - key, - dataTypeKey, - culture, - }: { - key?: Array, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise> { +key, +dataTypeKey, +culture, +}: { +key?: Array, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/item', @@ -139,20 +252,20 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemModel Success + * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentRoot({ - skip, - take = 100, - dataTypeKey, - culture, - }: { - skip?: number, - take?: number, - dataTypeKey?: string, - culture?: string, - }): CancelablePromise { +skip, +take = 100, +dataTypeKey, +culture, +}: { +skip?: number, +take?: number, +dataTypeKey?: string, +culture?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts index a36a6081cc..5d034deb83 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeModel } from '../models/DocumentTypeModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { PagedDocumentTypeTreeItemModel } from '../models/PagedDocumentTypeTreeItemModel'; +import type { DocumentTypeResponseModel } from '../models/DocumentTypeResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { PagedDocumentTypeTreeItemResponseModel } from '../models/PagedDocumentTypeTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -16,10 +16,10 @@ export class DocumentTypeResource { * @throws ApiError */ public static getDocumentTypeByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/document-type/{key}', @@ -33,20 +33,20 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemModel Success + * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/children', @@ -64,10 +64,10 @@ export class DocumentTypeResource { * @throws ApiError */ public static getTreeDocumentTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/item', @@ -78,18 +78,18 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemModel Success + * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError */ public static getTreeDocumentTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts index 1497c8ac6f..d7100791c1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts @@ -1,11 +1,11 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckActionModel } from '../models/HealthCheckActionModel'; -import type { HealthCheckGroupModel } from '../models/HealthCheckGroupModel'; -import type { HealthCheckGroupWithResultModel } from '../models/HealthCheckGroupWithResultModel'; -import type { HealthCheckResultModel } from '../models/HealthCheckResultModel'; -import type { PagedHealthCheckGroupModelBaseModel } from '../models/PagedHealthCheckGroupModelBaseModel'; +import type { HealthCheckActionRequestModel } from '../models/HealthCheckActionRequestModel'; +import type { HealthCheckGroupPresentationModel } from '../models/HealthCheckGroupPresentationModel'; +import type { HealthCheckGroupWithResultResponseModel } from '../models/HealthCheckGroupWithResultResponseModel'; +import type { HealthCheckResultResponseModel } from '../models/HealthCheckResultResponseModel'; +import type { PagedHealthCheckGroupResponseModel } from '../models/PagedHealthCheckGroupResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -14,16 +14,16 @@ import { request as __request } from '../core/request'; export class HealthCheckResource { /** - * @returns PagedHealthCheckGroupModelBaseModel Success + * @returns PagedHealthCheckGroupResponseModel Success * @throws ApiError */ public static getHealthCheckGroup({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group', @@ -39,10 +39,10 @@ export class HealthCheckResource { * @throws ApiError */ public static getHealthCheckGroupByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group/{name}', @@ -60,10 +60,10 @@ export class HealthCheckResource { * @throws ApiError */ public static postHealthCheckGroupByNameCheck({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check-group/{name}/check', @@ -81,10 +81,10 @@ export class HealthCheckResource { * @throws ApiError */ public static postHealthCheckExecuteAction({ - requestBody, - }: { - requestBody?: HealthCheckActionModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: HealthCheckActionRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check/execute-action', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts index 86bf5f9a4f..c9377a09fc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedHelpPageModel } from '../models/PagedHelpPageModel'; +import type { PagedHelpPageResponseModel } from '../models/PagedHelpPageResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,22 +10,22 @@ import { request as __request } from '../core/request'; export class HelpResource { /** - * @returns PagedHelpPageModel Success + * @returns PagedHelpPageResponseModel Success * @throws ApiError */ public static getHelp({ - section, - tree, - skip, - take, - baseUrl = 'https://our.umbraco.com', - }: { - section?: string, - tree?: string, - skip?: number, - take?: number, - baseUrl?: string, - }): CancelablePromise { +section, +tree, +skip, +take, +baseUrl = 'https://our.umbraco.com', +}: { +section?: string, +tree?: string, +skip?: number, +take?: number, +baseUrl?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/help', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts index e59bb94642..0ba53cc918 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { IndexModel } from '../models/IndexModel'; +import type { IndexResponseModel } from '../models/IndexResponseModel'; import type { OkResultModel } from '../models/OkResultModel'; -import type { PagedIndexModel } from '../models/PagedIndexModel'; +import type { PagedIndexResponseModel } from '../models/PagedIndexResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,16 +12,16 @@ import { request as __request } from '../core/request'; export class IndexerResource { /** - * @returns PagedIndexModel Success + * @returns PagedIndexResponseModel Success * @throws ApiError */ public static getIndexer({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer', @@ -37,10 +37,10 @@ export class IndexerResource { * @throws ApiError */ public static getIndexerByIndexName({ - indexName, - }: { - indexName: string, - }): CancelablePromise { +indexName, +}: { +indexName: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer/{indexName}', @@ -58,10 +58,10 @@ export class IndexerResource { * @throws ApiError */ public static postIndexerByIndexNameRebuild({ - indexName, - }: { - indexName: string, - }): CancelablePromise { +indexName, +}: { +indexName: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts index d5e8ae2949..dcf826bbcf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DatabaseInstallModel } from '../models/DatabaseInstallModel'; -import type { InstallModel } from '../models/InstallModel'; -import type { InstallSettingsModel } from '../models/InstallSettingsModel'; +import type { DatabaseInstallResponseModel } from '../models/DatabaseInstallResponseModel'; +import type { InstallSettingsResponseModel } from '../models/InstallSettingsResponseModel'; +import type { InstallVResponseModel } from '../models/InstallVResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,7 +15,7 @@ export class InstallResource { * @returns any Success * @throws ApiError */ - public static getInstallSettings(): CancelablePromise { + public static getInstallSettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/install/settings', @@ -31,10 +31,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallSetup({ - requestBody, - }: { - requestBody?: InstallModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: InstallVResponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/setup', @@ -52,10 +52,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallValidateDatabase({ - requestBody, - }: { - requestBody?: DatabaseInstallModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: DatabaseInstallResponseModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/validate-database', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts index b724860487..51967f3fce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts @@ -1,10 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { LanguageCreateModel } from '../models/LanguageCreateModel'; -import type { LanguageModel } from '../models/LanguageModel'; -import type { LanguageUpdateModel } from '../models/LanguageUpdateModel'; -import type { PagedLanguageModel } from '../models/PagedLanguageModel'; +import type { CreateLanguageRequestModel } from '../models/CreateLanguageRequestModel'; +import type { LanguageResponseModel } from '../models/LanguageResponseModel'; +import type { PagedLanguageResponseModel } from '../models/PagedLanguageResponseModel'; +import type { UpdateLanguageRequestModel } from '../models/UpdateLanguageRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,16 +13,16 @@ import { request as __request } from '../core/request'; export class LanguageResource { /** - * @returns PagedLanguageModel Success + * @returns PagedLanguageResponseModel Success * @throws ApiError */ public static getLanguage({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language', @@ -38,10 +38,10 @@ export class LanguageResource { * @throws ApiError */ public static postLanguage({ - requestBody, - }: { - requestBody?: LanguageCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateLanguageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/language', @@ -60,10 +60,10 @@ export class LanguageResource { * @throws ApiError */ public static getLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { +isoCode, +}: { +isoCode: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -81,10 +81,10 @@ export class LanguageResource { * @throws ApiError */ public static deleteLanguageByIsoCode({ - isoCode, - }: { - isoCode: string, - }): CancelablePromise { +isoCode, +}: { +isoCode: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -103,12 +103,12 @@ export class LanguageResource { * @throws ApiError */ public static putLanguageByIsoCode({ - isoCode, - requestBody, - }: { - isoCode: string, - requestBody?: LanguageUpdateModel, - }): CancelablePromise { +isoCode, +requestBody, +}: { +isoCode: string, +requestBody?: UpdateLanguageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/language/{isoCode}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index b768fba3a1..ef9b3cbf79 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -2,13 +2,14 @@ /* tslint:disable */ /* eslint-disable */ import type { DirectionModel } from '../models/DirectionModel'; -import type { LogLevelCountsModel } from '../models/LogLevelCountsModel'; +import type { LogLevelCountsReponseModel } from '../models/LogLevelCountsReponseModel'; import type { LogLevelModel } from '../models/LogLevelModel'; -import type { PagedLoggerModel } from '../models/PagedLoggerModel'; -import type { PagedLogMessageModel } from '../models/PagedLogMessageModel'; -import type { PagedLogTemplateModel } from '../models/PagedLogTemplateModel'; -import type { PagedSavedLogSearchModel } from '../models/PagedSavedLogSearchModel'; -import type { SavedLogSearchModel } from '../models/SavedLogSearchModel'; +import type { PagedLoggerResponseModel } from '../models/PagedLoggerResponseModel'; +import type { PagedLogMessageResponseModel } from '../models/PagedLogMessageResponseModel'; +import type { PagedLogTemplateResponseModel } from '../models/PagedLogTemplateResponseModel'; +import type { PagedSavedLogSearchResponseModel } from '../models/PagedSavedLogSearchResponseModel'; +import type { SavedLogSearchRequestModel } from '../models/SavedLogSearchRequestModel'; +import type { SavedLogSearchResponseModel } from '../models/SavedLogSearchResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -17,16 +18,16 @@ import { request as __request } from '../core/request'; export class LogViewerResource { /** - * @returns PagedLoggerModel Success + * @returns PagedLoggerResponseModel Success * @throws ApiError */ public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level', @@ -42,12 +43,12 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { +startDate, +endDate, +}: { +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level-count', @@ -62,26 +63,26 @@ export class LogViewerResource { } /** - * @returns PagedLogMessageModel Success + * @returns PagedLogMessageResponseModel Success * @throws ApiError */ public static getLogViewerLog({ - skip, - take = 100, - orderDirection, - filterExpression, - logLevel, - startDate, - endDate, - }: { - skip?: number, - take?: number, - orderDirection?: DirectionModel, - filterExpression?: string, - logLevel?: Array, - startDate?: string, - endDate?: string, - }): CancelablePromise { +skip, +take = 100, +orderDirection, +filterExpression, +logLevel, +startDate, +endDate, +}: { +skip?: number, +take?: number, +orderDirection?: DirectionModel, +filterExpression?: string, +logLevel?: Array, +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/log', @@ -98,20 +99,20 @@ export class LogViewerResource { } /** - * @returns PagedLogTemplateModel Success + * @returns PagedLogTemplateResponseModel Success * @throws ApiError */ public static getLogViewerMessageTemplate({ - skip, - take = 100, - startDate, - endDate, - }: { - skip?: number, - take?: number, - startDate?: string, - endDate?: string, - }): CancelablePromise { +skip, +take = 100, +startDate, +endDate, +}: { +skip?: number, +take?: number, +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/message-template', @@ -128,16 +129,16 @@ export class LogViewerResource { } /** - * @returns PagedSavedLogSearchModel Success + * @returns PagedSavedLogSearchResponseModel Success * @throws ApiError */ public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -153,10 +154,10 @@ export class LogViewerResource { * @throws ApiError */ public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: SavedLogSearchRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -174,10 +175,10 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -195,10 +196,10 @@ export class LogViewerResource { * @throws ApiError */ public static deleteLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -216,12 +217,12 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { +startDate, +endDate, +}: { +startDate?: string, +endDate?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts index 074a7704cb..bd2f3e59d6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts @@ -1,10 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { PagedContentTreeItemModel } from '../models/PagedContentTreeItemModel'; -import type { PagedRecycleBinItemModel } from '../models/PagedRecycleBinItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { CreateMediaRequestModel } from '../models/CreateMediaRequestModel'; +import type { DocumentResponseModel } from '../models/DocumentResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { PagedContentTreeItemResponseModel } from '../models/PagedContentTreeItemResponseModel'; +import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateMediaRequestModel } from '../models/UpdateMediaRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,18 +16,109 @@ import { request as __request } from '../core/request'; export class MediaResource { /** - * @returns PagedRecycleBinItemModel Success + * @returns string Created + * @throws ApiError + */ + public static postMedia({ +requestBody, +}: { +requestBody?: CreateMediaRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/media', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteMediaByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putMediaByKey({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateMediaRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/media/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinMediaChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/children', @@ -40,16 +134,16 @@ export class MediaResource { } /** - * @returns PagedRecycleBinItemModel Success + * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinMediaRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/root', @@ -64,20 +158,20 @@ export class MediaResource { } /** - * @returns PagedContentTreeItemModel Success + * @returns PagedContentTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaChildren({ - parentKey, - skip, - take = 100, - dataTypeKey, - }: { - parentKey?: string, - skip?: number, - take?: number, - dataTypeKey?: string, - }): CancelablePromise { +parentKey, +skip, +take = 100, +dataTypeKey, +}: { +parentKey?: string, +skip?: number, +take?: number, +dataTypeKey?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/children', @@ -95,12 +189,12 @@ export class MediaResource { * @throws ApiError */ public static getTreeMediaItem({ - key, - dataTypeKey, - }: { - key?: Array, - dataTypeKey?: string, - }): CancelablePromise> { +key, +dataTypeKey, +}: { +key?: Array, +dataTypeKey?: string, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/item', @@ -112,18 +206,18 @@ export class MediaResource { } /** - * @returns PagedContentTreeItemModel Success + * @returns PagedContentTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaRoot({ - skip, - take = 100, - dataTypeKey, - }: { - skip?: number, - take?: number, - dataTypeKey?: string, - }): CancelablePromise { +skip, +take = 100, +dataTypeKey, +}: { +skip?: number, +take?: number, +dataTypeKey?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts index 3f4b9b1eed..e8cd962868 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts @@ -1,9 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedFolderTreeItemModel } from '../models/PagedFolderTreeItemModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MediaTypeResponseModel } from '../models/MediaTypeResponseModel'; +import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,20 +13,41 @@ import { request as __request } from '../core/request'; export class MediaTypeResource { /** - * @returns PagedFolderTreeItemModel Success + * @returns any Success + * @throws ApiError + */ + public static getMediaTypeByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaTypeChildren({ - parentKey, - skip, - take = 100, - foldersOnly = false, - }: { - parentKey?: string, - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +parentKey, +skip, +take = 100, +foldersOnly = false, +}: { +parentKey?: string, +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/children', @@ -43,10 +65,10 @@ export class MediaTypeResource { * @throws ApiError */ public static getTreeMediaTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/item', @@ -57,18 +79,18 @@ export class MediaTypeResource { } /** - * @returns PagedFolderTreeItemModel Success + * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError */ public static getTreeMediaTypeRoot({ - skip, - take = 100, - foldersOnly = false, - }: { - skip?: number, - take?: number, - foldersOnly?: boolean, - }): CancelablePromise { +skip, +take = 100, +foldersOnly = false, +}: { +skip?: number, +take?: number, +foldersOnly?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts index 0229bafb93..d0845c8968 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts @@ -1,13 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -20,10 +20,10 @@ export class MemberGroupResource { * @throws ApiError */ public static getTreeMemberGroupItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/item', @@ -34,16 +34,16 @@ export class MemberGroupResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeMemberGroupRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts index c0bda15f8a..3336953d5a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts @@ -1,13 +1,13 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -20,10 +20,10 @@ export class MemberTypeResource { * @throws ApiError */ public static getTreeMemberTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/item', @@ -34,16 +34,16 @@ export class MemberTypeResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeMemberTypeRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts index 2d078b6c4c..de6f0498bc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ModelsBuilderResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ModelsBuilderModel } from '../models/ModelsBuilderModel'; -import type { OutOfDateStatusModel } from '../models/OutOfDateStatusModel'; +import type { ModelsBuilderResponseModel } from '../models/ModelsBuilderResponseModel'; +import type { OutOfDateStatusResponseModel } from '../models/OutOfDateStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -28,7 +28,7 @@ export class ModelsBuilderResource { * @returns any Success * @throws ApiError */ - public static getModelsBuilderDashboard(): CancelablePromise { + public static getModelsBuilderDashboard(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/models-builder/dashboard', @@ -39,7 +39,7 @@ export class ModelsBuilderResource { * @returns any Success * @throws ApiError */ - public static getModelsBuilderStatus(): CancelablePromise { + public static getModelsBuilderStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/models-builder/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts new file mode 100644 index 0000000000..c87823f5aa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts @@ -0,0 +1,33 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { PagedObjectTypeResponseModel } from '../models/PagedObjectTypeResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class ObjectTypesResource { + + /** + * @returns PagedObjectTypeResponseModel Success + * @throws ApiError + */ + public static getObjectTypes({ +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/object-types', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + +} 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 index 4af66aa239..d33c63d582 100644 --- 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 @@ -1,12 +1,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PackageCreateModel } from '../models/PackageCreateModel'; -import type { PackageDefinitionModel } from '../models/PackageDefinitionModel'; -import type { PackageManifestModel } from '../models/PackageManifestModel'; -import type { PackageUpdateModel } from '../models/PackageUpdateModel'; -import type { PagedPackageDefinitionModel } from '../models/PagedPackageDefinitionModel'; -import type { PagedPackageMigrationStatusModel } from '../models/PagedPackageMigrationStatusModel'; +import type { CreatePackageRequestModel } from '../models/CreatePackageRequestModel'; +import type { PackageDefinitionResponseModel } from '../models/PackageDefinitionResponseModel'; +import type { PackageManifestResponseModel } from '../models/PackageManifestResponseModel'; +import type { PagedPackageDefinitionResponseModel } from '../models/PagedPackageDefinitionResponseModel'; +import type { PagedPackageMigrationStatusResponseModel } from '../models/PagedPackageMigrationStatusResponseModel'; +import type { UpdatePackageRequestModel } from '../models/UpdatePackageRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -19,10 +19,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageByNameRunMigration({ - name, - }: { - name: string, - }): CancelablePromise { +name, +}: { +name: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/{name}/run-migration', @@ -37,16 +37,16 @@ export class PackageResource { } /** - * @returns PagedPackageDefinitionModel Success + * @returns PagedPackageDefinitionResponseModel Success * @throws ApiError */ public static getPackageCreated({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created', @@ -62,10 +62,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageCreated({ - requestBody, - }: { - requestBody?: PackageCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreatePackageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/created', @@ -84,10 +84,10 @@ export class PackageResource { * @throws ApiError */ public static getPackageCreatedByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created/{key}', @@ -105,10 +105,10 @@ export class PackageResource { * @throws ApiError */ public static deletePackageCreatedByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/package/created/{key}', @@ -126,12 +126,12 @@ export class PackageResource { * @throws ApiError */ public static putPackageCreatedByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: PackageUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdatePackageRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/package/created/{key}', @@ -151,10 +151,10 @@ export class PackageResource { * @throws ApiError */ public static getPackageCreatedByKeyDownload({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created/{key}/download', @@ -171,7 +171,7 @@ export class PackageResource { * @returns any Success * @throws ApiError */ - public static getPackageManifest(): CancelablePromise> { + public static getPackageManifest(): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/manifest', @@ -179,16 +179,16 @@ export class PackageResource { } /** - * @returns PagedPackageMigrationStatusModel Success + * @returns PagedPackageMigrationStatusResponseModel Success * @throws ApiError */ public static getPackageMigrationStatus({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/migration-status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts index 4ec4cce563..f249b42346 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class PartialViewResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreePartialViewChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/children', @@ -39,10 +39,10 @@ export class PartialViewResource { * @throws ApiError */ public static getTreePartialViewItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/item', @@ -53,16 +53,16 @@ export class PartialViewResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreePartialViewRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts index c5d65d6bdc..ddd5d31988 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts @@ -1,7 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ProfilingStatusModel } from '../models/ProfilingStatusModel'; +import type { ProfilingStatusRequestModel } from '../models/ProfilingStatusRequestModel'; +import type { ProfilingStatusResponseModel } from '../models/ProfilingStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -13,7 +14,7 @@ export class ProfilingResource { * @returns any Success * @throws ApiError */ - public static getProfilingStatus(): CancelablePromise { + public static getProfilingStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/profiling/status', @@ -25,10 +26,10 @@ export class ProfilingResource { * @throws ApiError */ public static putProfilingStatus({ - requestBody, - }: { - requestBody?: ProfilingStatusModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: ProfilingStatusRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/profiling/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts index aa15ce40ac..2c82d24fcd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts @@ -1,9 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRedirectUrlModel } from '../models/PagedRedirectUrlModel'; +import type { PagedRedirectUrlResponseModel } from '../models/PagedRedirectUrlResponseModel'; import type { RedirectStatusModel } from '../models/RedirectStatusModel'; -import type { RedirectUrlStatusModel } from '../models/RedirectUrlStatusModel'; +import type { RedirectUrlStatusResponseModel } from '../models/RedirectUrlStatusResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -12,18 +12,18 @@ import { request as __request } from '../core/request'; export class RedirectManagementResource { /** - * @returns PagedRedirectUrlModel Success + * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ public static getRedirectManagement({ - filter, - skip, - take, - }: { - filter?: string, - skip?: number, - take?: number, - }): CancelablePromise { +filter, +skip, +take, +}: { +filter?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management', @@ -39,18 +39,18 @@ export class RedirectManagementResource { } /** - * @returns PagedRedirectUrlModel Success + * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ public static getRedirectManagementByKey({ - key, - skip, - take, - }: { - key: string, - skip?: number, - take?: number, - }): CancelablePromise { +key, +skip, +take, +}: { +key: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management/{key}', @@ -69,10 +69,10 @@ export class RedirectManagementResource { * @throws ApiError */ public static deleteRedirectManagementByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/redirect-management/{key}', @@ -86,7 +86,7 @@ export class RedirectManagementResource { * @returns any Success * @throws ApiError */ - public static getRedirectManagementStatus(): CancelablePromise { + public static getRedirectManagementStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management/status', @@ -98,10 +98,10 @@ export class RedirectManagementResource { * @throws ApiError */ public static postRedirectManagementStatus({ - status, - }: { - status?: RedirectStatusModel, - }): CancelablePromise { +status, +}: { +status?: RedirectStatusModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/redirect-management/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts index df5460a1e4..69d6c06860 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRelationModel } from '../models/PagedRelationModel'; -import type { RelationModel } from '../models/RelationModel'; +import type { PagedRelationResponseModel } from '../models/PagedRelationResponseModel'; +import type { RelationResponseModel } from '../models/RelationResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -15,10 +15,10 @@ export class RelationResource { * @throws ApiError */ public static getRelationById({ - id, - }: { - id: number, - }): CancelablePromise { +id, +}: { +id: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/{id}', @@ -32,20 +32,20 @@ export class RelationResource { } /** - * @returns PagedRelationModel Success + * @returns PagedRelationResponseModel Success * @throws ApiError */ public static getRelationChildRelationByChildId({ - childId, - skip, - take, - relationTypeAlias = '', - }: { - childId: number, - skip?: number, - take?: number, - relationTypeAlias?: string, - }): CancelablePromise { +childId, +skip, +take, +relationTypeAlias = '', +}: { +childId: number, +skip?: number, +take?: number, +relationTypeAlias?: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/child-relation/{childId}', @@ -60,4 +60,30 @@ export class RelationResource { }); } + /** + * @returns PagedRelationResponseModel Success + * @throws ApiError + */ + public static getRelationTypeByKey({ +key, +skip, +take = 100, +}: { +key: string, +skip?: number, +take?: number, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation/type/{key}', + path: { + 'key': key, + }, + query: { + 'skip': skip, + 'take': take, + }, + }); + } + } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index 9d36d51255..1c9c7bb266 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -1,9 +1,12 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; +import type { CreateRelationTypeRequestModel } from '../models/CreateRelationTypeRequestModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; +import type { UpdateRelationTypeRequestModel } from '../models/UpdateRelationTypeRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,15 +14,104 @@ import { request as __request } from '../core/request'; export class RelationTypeResource { + /** + * @returns string Created + * @throws ApiError + */ + public static postRelationType({ +requestBody, +}: { +requestBody?: CreateRelationTypeRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/relation-type', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getRelationTypeByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteRelationTypeByKey({ +key, +}: { +key: string, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putRelationTypeByKey({ +key, +requestBody, +}: { +key: string, +requestBody?: UpdateRelationTypeRequestModel, +}): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/relation-type/{key}', + path: { + 'key': key, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + /** * @returns any Success * @throws ApiError */ public static getTreeRelationTypeItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/item', @@ -30,16 +122,16 @@ export class RelationTypeResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeRelationTypeRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts index 0b36985d82..db3cb6e256 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class ScriptResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeScriptChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/children', @@ -39,10 +39,10 @@ export class ScriptResource { * @throws ApiError */ public static getTreeScriptItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/item', @@ -53,16 +53,16 @@ export class ScriptResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeScriptRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts index 7792b73095..b284454529 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedSearcherModel } from '../models/PagedSearcherModel'; -import type { PagedSearchResultModel } from '../models/PagedSearchResultModel'; +import type { PagedSearcherResponseModel } from '../models/PagedSearcherResponseModel'; +import type { PagedSearchResultResponseModel } from '../models/PagedSearchResultResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,16 +11,16 @@ import { request as __request } from '../core/request'; export class SearcherResource { /** - * @returns PagedSearcherModel Success + * @returns PagedSearcherResponseModel Success * @throws ApiError */ public static getSearcher({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher', @@ -32,20 +32,20 @@ export class SearcherResource { } /** - * @returns PagedSearchResultModel Success + * @returns PagedSearchResultResponseModel Success * @throws ApiError */ public static getSearcherBySearcherNameQuery({ - searcherName, - term, - skip, - take, - }: { - searcherName: string, - term?: string, - skip?: number, - take?: number, - }): CancelablePromise { +searcherName, +term, +skip, +take, +}: { +searcherName: string, +term?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher/{searcherName}/query', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts index a2351ca654..364c15ac2a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ServerResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ServerStatusModel } from '../models/ServerStatusModel'; -import type { VersionModel } from '../models/VersionModel'; +import type { ServerStatusResponseModel } from '../models/ServerStatusResponseModel'; +import type { VersionResponseModel } from '../models/VersionResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -14,7 +14,7 @@ export class ServerResource { * @returns any Success * @throws ApiError */ - public static getServerStatus(): CancelablePromise { + public static getServerStatus(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/server/status', @@ -28,7 +28,7 @@ export class ServerResource { * @returns any Success * @throws ApiError */ - public static getServerVersion(): CancelablePromise { + public static getServerVersion(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/server/version', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts index 2ed706ee95..240af80ee8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class StaticFileResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStaticFileChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/children', @@ -39,10 +39,10 @@ export class StaticFileResource { * @throws ApiError */ public static getTreeStaticFileItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/item', @@ -53,16 +53,16 @@ export class StaticFileResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStaticFileRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts index 1e48b59a58..b504ba6aab 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemModel } from '../models/FileSystemTreeItemModel'; -import type { PagedFileSystemTreeItemModel } from '../models/PagedFileSystemTreeItemModel'; +import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; +import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,18 +11,18 @@ import { request as __request } from '../core/request'; export class StylesheetResource { /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStylesheetChildren({ - path, - skip, - take = 100, - }: { - path?: string, - skip?: number, - take?: number, - }): CancelablePromise { +path, +skip, +take = 100, +}: { +path?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/children', @@ -39,10 +39,10 @@ export class StylesheetResource { * @throws ApiError */ public static getTreeStylesheetItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { +path, +}: { +path?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/item', @@ -53,16 +53,16 @@ export class StylesheetResource { } /** - * @returns PagedFileSystemTreeItemModel Success + * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError */ public static getTreeStylesheetRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts index 2c27fcfa93..289f0f8e46 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts @@ -1,8 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedTelemetryModel } from '../models/PagedTelemetryModel'; -import type { TelemetryModel } from '../models/TelemetryModel'; +import type { PagedTelemetryResponseModel } from '../models/PagedTelemetryResponseModel'; +import type { TelemetryRequestModel } from '../models/TelemetryRequestModel'; +import type { TelemetryResponseModel } from '../models/TelemetryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -11,16 +12,16 @@ import { request as __request } from '../core/request'; export class TelemetryResource { /** - * @returns PagedTelemetryModel Success + * @returns PagedTelemetryResponseModel Success * @throws ApiError */ public static getTelemetry({ - skip, - take, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry', @@ -35,7 +36,7 @@ export class TelemetryResource { * @returns any Success * @throws ApiError */ - public static getTelemetryLevel(): CancelablePromise { + public static getTelemetryLevel(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry/level', @@ -47,10 +48,10 @@ export class TelemetryResource { * @throws ApiError */ public static postTelemetryLevel({ - requestBody, - }: { - requestBody?: TelemetryModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: TelemetryRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/telemetry/level', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts index 32a9e49aae..d5133dc6a7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts @@ -1,20 +1,20 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemModel } from '../models/ContentTreeItemModel'; -import type { DocumentBlueprintTreeItemModel } from '../models/DocumentBlueprintTreeItemModel'; -import type { DocumentTreeItemModel } from '../models/DocumentTreeItemModel'; -import type { DocumentTypeTreeItemModel } from '../models/DocumentTypeTreeItemModel'; -import type { EntityTreeItemModel } from '../models/EntityTreeItemModel'; -import type { FolderTreeItemModel } from '../models/FolderTreeItemModel'; -import type { PagedEntityTreeItemModel } from '../models/PagedEntityTreeItemModel'; -import type { TemplateCreateModel } from '../models/TemplateCreateModel'; -import type { TemplateModel } from '../models/TemplateModel'; +import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; +import type { CreateTemplateRequestModel } from '../models/CreateTemplateRequestModel'; +import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; +import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; +import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; -import type { TemplateQueryResultModel } from '../models/TemplateQueryResultModel'; -import type { TemplateQuerySettingsModel } from '../models/TemplateQuerySettingsModel'; -import type { TemplateScaffoldModel } from '../models/TemplateScaffoldModel'; -import type { TemplateUpdateModel } from '../models/TemplateUpdateModel'; +import type { TemplateQueryResultResponseModel } from '../models/TemplateQueryResultResponseModel'; +import type { TemplateQuerySettingsResponseModel } from '../models/TemplateQuerySettingsResponseModel'; +import type { TemplateResponseModel } from '../models/TemplateResponseModel'; +import type { TemplateScaffoldResponseModel } from '../models/TemplateScaffoldResponseModel'; +import type { UpdateTemplateRequestModel } from '../models/UpdateTemplateRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -27,10 +27,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplate({ - requestBody, - }: { - requestBody?: TemplateCreateModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: CreateTemplateRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template', @@ -49,10 +49,10 @@ export class TemplateResource { * @throws ApiError */ public static getTemplateByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/{key}', @@ -70,10 +70,10 @@ export class TemplateResource { * @throws ApiError */ public static deleteTemplateByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/template/{key}', @@ -92,12 +92,12 @@ export class TemplateResource { * @throws ApiError */ public static putTemplateByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: TemplateUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateTemplateRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/template/{key}', @@ -118,10 +118,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplateQueryExecute({ - requestBody, - }: { - requestBody?: TemplateQueryExecuteModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: TemplateQueryExecuteModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template/query/execute', @@ -134,7 +134,7 @@ export class TemplateResource { * @returns any Success * @throws ApiError */ - public static getTemplateQuerySettings(): CancelablePromise { + public static getTemplateQuerySettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/query/settings', @@ -145,7 +145,7 @@ export class TemplateResource { * @returns any Success * @throws ApiError */ - public static getTemplateScaffold(): CancelablePromise { + public static getTemplateScaffold(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/template/scaffold', @@ -156,18 +156,18 @@ export class TemplateResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeTemplateChildren({ - parentKey, - skip, - take = 100, - }: { - parentKey?: string, - skip?: number, - take?: number, - }): CancelablePromise { +parentKey, +skip, +take = 100, +}: { +parentKey?: string, +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/children', @@ -184,10 +184,10 @@ export class TemplateResource { * @throws ApiError */ public static getTreeTemplateItem({ - key, - }: { - key?: Array, - }): CancelablePromise> { +key, +}: { +key?: Array, +}): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/item', @@ -198,16 +198,16 @@ export class TemplateResource { } /** - * @returns PagedEntityTreeItemModel Success + * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeTemplateRoot({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts index e5637971a9..3c1a145658 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedRelationItemModel } from '../models/PagedRelationItemModel'; +import type { PagedRelationItemResponseModel } from '../models/PagedRelationItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,20 +10,20 @@ import { request as __request } from '../core/request'; export class TrackedReferenceResource { /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceByKey({ - key, - skip, - take = 20, - filterMustBeIsDependency = false, - }: { - key: string, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +key, +skip, +take = 20, +filterMustBeIsDependency = false, +}: { +key: string, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/{key}', @@ -39,20 +39,20 @@ export class TrackedReferenceResource { } /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceDescendantsByParentKey({ - parentKey, - skip, - take, - filterMustBeIsDependency = true, - }: { - parentKey: string, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +parentKey, +skip, +take, +filterMustBeIsDependency = true, +}: { +parentKey: string, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentKey}', @@ -68,20 +68,20 @@ export class TrackedReferenceResource { } /** - * @returns PagedRelationItemModel Success + * @returns PagedRelationItemResponseModel Success * @throws ApiError */ public static getTrackedReferenceItem({ - key, - skip, - take = 20, - filterMustBeIsDependency = true, - }: { - key?: Array, - skip?: number, - take?: number, - filterMustBeIsDependency?: boolean, - }): CancelablePromise { +key, +skip, +take = 20, +filterMustBeIsDependency = true, +}: { +key?: Array, +skip?: number, +take?: number, +filterMustBeIsDependency?: boolean, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/item', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts index 472f46ea16..9ea941f41d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UpgradeResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { UpgradeSettingsModel } from '../models/UpgradeSettingsModel'; +import type { UpgradeSettingsResponseModel } from '../models/UpgradeSettingsResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -28,7 +28,7 @@ export class UpgradeResource { * @returns any Success * @throws ApiError */ - public static getUpgradeSettings(): CancelablePromise { + public static getUpgradeSettings(): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/upgrade/settings', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts index eefa1fcb91..4c9f40614a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts @@ -1,10 +1,10 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { PagedUserGroupModel } from '../models/PagedUserGroupModel'; -import type { UserGroupModel } from '../models/UserGroupModel'; -import type { UserGroupSaveModel } from '../models/UserGroupSaveModel'; -import type { UserGroupUpdateModel } from '../models/UserGroupUpdateModel'; +import type { PagedUserGroupPresentationModel } from '../models/PagedUserGroupPresentationModel'; +import type { SaveUserGroupRequestModel } from '../models/SaveUserGroupRequestModel'; +import type { UpdateUserGroupRequestModel } from '../models/UpdateUserGroupRequestModel'; +import type { UserGroupPresentationModel } from '../models/UserGroupPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -17,10 +17,10 @@ export class UserGroupsResource { * @throws ApiError */ public static postUserGroups({ - requestBody, - }: { - requestBody?: UserGroupSaveModel, - }): CancelablePromise { +requestBody, +}: { +requestBody?: SaveUserGroupRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/user-groups', @@ -34,16 +34,16 @@ export class UserGroupsResource { } /** - * @returns PagedUserGroupModel Success + * @returns PagedUserGroupPresentationModel Success * @throws ApiError */ public static getUserGroups({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { +skip, +take = 100, +}: { +skip?: number, +take?: number, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups', @@ -59,10 +59,10 @@ export class UserGroupsResource { * @throws ApiError */ public static getUserGroupsByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups/{key}', @@ -80,10 +80,10 @@ export class UserGroupsResource { * @throws ApiError */ public static deleteUserGroupsByKey({ - key, - }: { - key: string, - }): CancelablePromise { +key, +}: { +key: string, +}): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/user-groups/{key}', @@ -101,12 +101,12 @@ export class UserGroupsResource { * @throws ApiError */ public static putUserGroupsByKey({ - key, - requestBody, - }: { - key: string, - requestBody?: UserGroupUpdateModel, - }): CancelablePromise { +key, +requestBody, +}: { +key: string, +requestBody?: UpdateUserGroupRequestModel, +}): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/user-groups/{key}', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts index 9d2d06494d..7c50a77570 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts @@ -5,7 +5,7 @@ import { ActiveVariant } from '../workspace-context/workspace-split-view-manager import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ClassState, NumberState, ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; -import { DocumentVariantModel } from '@umbraco-cms/backend-api'; +import { DocumentVariantResponseModel } from '@umbraco-cms/backend-api'; //type EntityType = DocumentModel; @@ -20,7 +20,7 @@ export class UmbWorkspaceVariantContext { #index = new NumberState(undefined); index = this.#index.asObservable(); - #currentVariant = new ObjectState(undefined); + #currentVariant = new ObjectState(undefined); currentVariant = this.#currentVariant.asObservable(); name = this.#currentVariant.getObservablePart((x) => x?.name); @@ -49,7 +49,7 @@ export class UmbWorkspaceVariantContext { }); } - public switchVariant(variant: DocumentVariantModel) { + public switchVariant(variant: DocumentVariantResponseModel) { const index = this.#index.value; if (index === undefined) return; this.#workspaceContext?.splitView.switchVariant(index, new UmbVariantId(variant)); @@ -61,7 +61,7 @@ export class UmbWorkspaceVariantContext { this.#workspaceContext?.splitView.closeSplitView(index); } - public openSplitView(variant: DocumentVariantModel) { + public openSplitView(variant: DocumentVariantResponseModel) { this.#workspaceContext?.splitView.openSplitView(new UmbVariantId(variant)); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts index c46d39e441..17eecc2687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UmbInputCheckboxListElement } from '../../../components/input-checkbox-list/input-checkbox-list.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-checkbox-list @@ -23,7 +23,7 @@ export class UmbPropertyEditorUICheckboxListElement extends UmbLitElement implem } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const listData = config.find((x) => x.alias === 'items'); if (!listData) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts index eb68421589..edd33f33d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UUIColorSwatchesEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; import type { SwatchDetails } from '@umbraco-cms/models'; /** @@ -24,7 +24,7 @@ export class UmbPropertyEditorUIColorPickerElement extends UmbLitElement impleme private _swatches: SwatchDetails[] = []; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const useLabel = config.find((x) => x.alias === 'useLabel'); if (useLabel) this._showLabels = useLabel.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts index 96bb3ccbd2..dafc9c6cd3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.element.ts @@ -4,7 +4,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UUIColorPickerChangeEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-eye-dropper @@ -23,7 +23,7 @@ export class UmbPropertyEditorUIEyeDropperElement extends UmbLitElement implemen private _swatches: string[] = []; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const showAlpha = config.find((x) => x.alias === 'showAlpha'); if (showAlpha) this._opacity = showAlpha.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts index a4228b08eb..680ce17e96 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.element.ts @@ -3,7 +3,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbInputMediaPickerElement } from '../../../../../backoffice/shared/components/input-media-picker/input-media-picker.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-media-picker @@ -21,7 +21,7 @@ export class UmbPropertyEditorUIMediaPickerElement extends UmbLitElement impleme } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const validationLimit = config.find((x) => x.alias === 'validationLimit'); if (!validationLimit) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index 1d74448439..f770c86d23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -6,7 +6,7 @@ import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/inp import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-multi-url-picker @@ -20,7 +20,7 @@ export class UmbPropertyEditorUIMultiUrlPickerElement extends UmbLitElement impl value: UmbLinkPickerLink[] = []; @property({ type: Array, attribute: false }) - public set config(config: DataTypePropertyModel[]) { + public set config(config: DataTypePropertyPresentationModel[]) { const overlaySize = config.find((x) => x.alias === 'overlaySize'); if (overlaySize) this._overlaySize = overlaySize.value; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts index da082889df..2a7d1897b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.element.ts @@ -5,7 +5,7 @@ import '../../../components/input-radio-button-list/input-radio-button-list.elem import type { UmbInputRadioButtonListElement } from '../../../components/input-radio-button-list/input-radio-button-list.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-radio-button-list @@ -24,7 +24,7 @@ export class UmbPropertyEditorUIRadioButtonListElement extends UmbLitElement imp } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const listData = config.find((x) => x.alias === 'items'); if (!listData) return; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts index 6e81051161..b6e38081fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import UmbInputSliderElement from '../../../../shared/components/input-slider/input-slider.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-slider @@ -38,7 +38,7 @@ export class UmbPropertyEditorUISliderElement extends UmbLitElement implements U _max?: number; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const enableRange = config.find((x) => x.alias === 'enableRange'); if (enableRange) this._enableRange = enableRange.value as boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts index 7c942602c3..42f49b8b7b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbInputToggleElement } from '../../../components/input-toggle/input-toggle.element'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; /** * @element umb-property-editor-ui-toggle @@ -26,7 +26,7 @@ export class UmbPropertyEditorUIToggleElement extends UmbLitElement implements U _showLabels?: boolean; @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const defaultValue = config.find((x) => x.alias === 'default'); if (defaultValue) this.value = defaultValue.value as boolean; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index 6b159c625e..38bb5d16cb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbTemplateData } from '../data/template.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { TemplateCreateModel, TemplateUpdateModel } from '@umbraco-cms/backend-api'; +import { TemplateModelBaseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ @@ -42,7 +42,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { const key = req.params.key as string; const data = await req.json(); if (!key) return; @@ -51,7 +51,7 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.post(umbracoPath('/template'), async (req, res, ctx) => { + rest.post(umbracoPath('/template'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; From 396b85284121fb0c78a11ce0b7ea1be61d914928 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:43:19 +0100 Subject: [PATCH 116/550] add key to data type scaffold model --- .../data-types/repository/sources/data-type.server.data.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 2af70e06fe..1c93e7881d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -1,3 +1,4 @@ +import { v4 as uuidv4 } from 'uuid'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; import { ProblemDetailsModel, @@ -57,6 +58,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource Date: Thu, 16 Mar 2023 08:45:54 +0100 Subject: [PATCH 117/550] move routes into workspace element --- .../data-type-workspace-edit.element.ts | 88 +++++++++++++ .../workspace/data-type-workspace.context.ts | 18 +-- .../workspace/data-type-workspace.element.ts | 118 ++++++------------ .../data-types/workspace/manifests.ts | 7 +- ...ta-type-details-workspace-view.element.ts} | 8 +- ...ta-type-details-workspace-view.stories.ts} | 6 +- 6 files changed, 139 insertions(+), 106 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts rename src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/{edit/data-type-workspace-view-edit.element.ts => details/data-type-details-workspace-view.element.ts} (95%) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/{edit/data-type-workspace-view-edit.stories.ts => details/data-type-details-workspace-view.stories.ts} (76%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts new file mode 100644 index 0000000000..deded6d7e9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -0,0 +1,88 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; +import { UmbRouteLocation } from '@umbraco-cms/router'; +import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; + +/** + * @element umb-data-type-workspace-edit-element + * @description - Element for displaying the Data Type Workspace edit route. + */ +@customElement('umb-data-type-workspace-edit-element') +export class UmbDataTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + /* TODO: can this be applied from layout slot CSS? */ + margin: 0 var(--uui-size-layout-1); + flex: 1 1 auto; + } + `, + ]; + + @property() + manifest?: ManifestWorkspace; + + @property() + location?: UmbRouteLocation; + + @state() + private _dataTypeName = ''; + + #workspaceContext?: UmbDataTypeWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { + this.#workspaceContext = workspaceContext; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (dataTypeName) => { + if (dataTypeName !== this._dataTypeName) { + this._dataTypeName = dataTypeName ?? ''; + } + }); + } + + // TODO. find a way where we don't have to do this for all Workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbDataTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-data-type-workspace-edit-element': UmbDataTypeWorkspaceEditElement; + } +} 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 b520392144..5b3e1d454d 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 @@ -2,8 +2,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; import type { DataTypeModel } from '@umbraco-cms/backend-api'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; +import { appendToFrozenArray, ArrayState, ObjectState, partialUpdateFrozenArray } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbWorkspaceActionState } from 'src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext @@ -28,20 +29,9 @@ export class UmbDataTypeWorkspaceContext async createScaffold(parentKey: string | null) { const { data } = await this.repository.createScaffold(parentKey); - if (!data) return; this.setIsNew(true); this.#data.next(data); - } - - async getPaths() { - return [ - { - path: 'edit/:key', - }, - { - path: 'create/:parentKey', - }, - ]; + return { data }; } getData() { @@ -98,5 +88,3 @@ export class UmbDataTypeWorkspaceContext this.#data.complete(); } } - -export default UmbDataTypeWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index c3f2188cc6..efbe6e5626 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -1,98 +1,56 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; -import { UmbRouteLocation } from '@umbraco-cms/router'; +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; -/** - * @element umb-data-type-workspace - * @description - Element for displaying a Data Type Workspace - */ -@customElement('umb-data-type-workspace') -export class UmbDataTypeWorkspaceElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } +import './data-type-workspace-edit.element'; - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } - `, - ]; +@customElement('umb-language-workspace') +export class UmbLanguageWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; - @property() - manifest?: ManifestWorkspace; + #workspaceContext = new UmbDataTypeWorkspaceContext(this); - @property() - location?: UmbRouteLocation; + #routerPath? = ''; + + #element = document.createElement('umb-data-type-workspace-edit-element'); + #key = ''; @state() - private _dataTypeName = ''; - - #workspaceContext?: UmbDataTypeWorkspaceContext; - - constructor() { - super(); - - this.consumeContext('umbWorkspaceContext', (workspaceContext: UmbDataTypeWorkspaceContext) => { - this.#workspaceContext = workspaceContext; - this.#init(); - this.#observeName(); - }); - } - - #init() { - if (this.location?.params?.parentKey) { - this.#workspaceContext?.createScaffold(this.location.params.parentKey); - } else if (this.location?.params?.key) { - this.#workspaceContext?.load(this.location.params.key); - } - } - - #observeName() { - if (!this.#workspaceContext) return; - this.observe(this.#workspaceContext.name, (dataTypeName) => { - if (dataTypeName !== this._dataTypeName) { - this._dataTypeName = dataTypeName ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext?.setName(target.value); - } - } - } + _routes: IRoute[] = [ + { + path: 'create/:parentKey', + component: () => this.#element, + setup: async (component: HTMLElement, info: IRoutingInfo) => { + const parentKey = info.match.params.parentKey; + this.#workspaceContext.createScaffold(parentKey); + }, + }, + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - if (!this.manifest) return nothing; - return html` - - - - `; + return html` { + this.#routerPath = event.target.absoluteRouterPath; + }}>`; } } -export default UmbDataTypeWorkspaceElement; +export default UmbLanguageWorkspaceElement; declare global { interface HTMLElementTagNameMap { - 'umb-data-type-workspace': UmbDataTypeWorkspaceElement; + 'umb-language-workspace': UmbLanguageWorkspaceElement; } } 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 f79821642b..94aed04083 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 @@ -8,7 +8,6 @@ const workspace: ManifestWorkspace = { loader: () => import('./data-type-workspace.element'), meta: { entityType: 'data-type', - context: () => import('./data-type-workspace.context'), }, }; @@ -17,12 +16,12 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DataType.Edit', name: 'Data Type Workspace Edit View', - loader: () => import('./views/edit/data-type-workspace-view-edit.element'), + loader: () => import('./views/details/data-type-details-workspace-view.element'), weight: 90, meta: { workspaces: ['Umb.Workspace.DataType'], - label: 'Edit', - pathname: 'edit', + label: 'Details', + pathname: 'details', icon: 'edit', }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts similarity index 95% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts index fd12cca7b2..3c2f15306a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts @@ -11,8 +11,8 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; import '../../../../../shared/components/ref-property-editor-ui/ref-property-editor-ui.element'; -@customElement('umb-data-type-workspace-view-edit') -export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { +@customElement('umb-data-type-details-workspace-view') +export class UmbDataTypeDetailsWorkspaceViewEditElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -168,10 +168,10 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { } } -export default UmbDataTypeWorkspaceViewEditElement; +export default UmbDataTypeDetailsWorkspaceViewEditElement; declare global { interface HTMLElementTagNameMap { - 'umb-data-type-workspace-view-edit': UmbDataTypeWorkspaceViewEditElement; + 'umb-data-type-details-workspace-view': UmbDataTypeDetailsWorkspaceViewEditElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts similarity index 76% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts index 5e3aab4cdf..466e56d2b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts @@ -3,9 +3,9 @@ import { html } from 'lit-html'; //import { data } from '../../../../../core/mocks/data/data-type.data'; -import type { UmbDataTypeWorkspaceViewEditElement } from './data-type-workspace-view-edit.element'; +import type { UmbDataTypeDetailsWorkspaceViewEditElement } from './data-type-details-workspace-view.element'; -import './data-type-workspace-view-edit.element'; +import './data-type-details-workspace-view.element'; //import { UmbDataTypeWorkspaceContext } from '../../workspace-data-type.context'; export default { @@ -22,6 +22,6 @@ export default { ], } as Meta; -export const AAAOverview: Story = () => +export const AAAOverview: Story = () => html` `; AAAOverview.storyName = 'Overview'; From 862c39013cad36f669a94f74c06571d95bcffe3e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:51:55 +0100 Subject: [PATCH 118/550] fix element and class name --- .../data-types/workspace/data-type-workspace.element.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index efbe6e5626..a67f17a5bf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -7,8 +7,8 @@ import { UmbLitElement } from '@umbraco-cms/element'; import './data-type-workspace-edit.element'; -@customElement('umb-language-workspace') -export class UmbLanguageWorkspaceElement extends UmbLitElement { +@customElement('umb-data-type-workspace') +export class UmbDataTypeWorkspaceElement extends UmbLitElement { static styles = [UUITextStyles, css``]; #workspaceContext = new UmbDataTypeWorkspaceContext(this); @@ -47,10 +47,10 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement { } } -export default UmbLanguageWorkspaceElement; +export default UmbDataTypeWorkspaceElement; declare global { interface HTMLElementTagNameMap { - 'umb-language-workspace': UmbLanguageWorkspaceElement; + 'umb-data-type-workspace': UmbDataTypeWorkspaceElement; } } From d81e98480e6bc317d73db2ceb040fa1aea807c70 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:52:55 +0100 Subject: [PATCH 119/550] remove unused context --- .../workspace/language-root/language-root-workspace.context.ts | 3 --- .../settings/languages/workspace/language-root/manifests.ts | 1 - 2 files changed, 4 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts deleted file mode 100644 index aa5f8f3a7c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.context.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class UmbLanguageRootWorkspaceContext {} - -export default UmbLanguageRootWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts index a4111a84bb..c70acd49cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts @@ -7,7 +7,6 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-root-workspace.element'), meta: { entityType: 'language-root', - context: () => import('./language-root-workspace.context'), }, }; From fad9d25203b85b4f8aa80b0dc98cb1a279a0becf Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:53:21 +0100 Subject: [PATCH 120/550] move routing into the element --- .../language-workspace-edit.element.ts | 76 +++++++++++++ .../language/language-workspace.context.ts | 16 +-- .../language/language-workspace.element.ts | 107 +++++------------- .../languages/workspace/language/manifests.ts | 1 - ...language-details-workspace-view.element.ts | 8 +- 5 files changed, 108 insertions(+), 100 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts new file mode 100644 index 0000000000..90d6b010bb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -0,0 +1,76 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UmbLanguageWorkspaceContext } from './language-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { LanguageModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-language-workspace-thingy') +export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + #workspaceContext?: UmbLanguageWorkspaceContext; + + @state() + _language?: LanguageModel; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (context) => { + this.#workspaceContext = context; + this.#observeData(); + }); + } + + #observeData() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => { + this._language = data; + }); + } + + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + `; + } +} + +export default UmbLanguageWorkspaceThingyElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-language-workspace-thingy': UmbLanguageWorkspaceThingyElement; + } +} 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 085d8b327c..3e2f185b20 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 @@ -16,19 +16,6 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext import('./language-workspace-edit.element'), + setup: (component: HTMLElement, info: IRoutingInfo) => { + this.#languageWorkspaceContext.load(info.match.params.isoCode); + }, + }, ]; - @property({ type: Object, attribute: false }) - location?: UmbRouteLocation; - - @state() - _language?: LanguageModel; - - #workspaceContext?: UmbLanguageWorkspaceContext; - - constructor() { - super(); - - this.consumeContext('umbWorkspaceContext', (context) => { - this.#workspaceContext = context; - this.#observeData(); - this.#init(); - }); - } - - #init() { - const isoCode = this.location?.params?.isoCode; - - // TODO: implement actions "events" and show loading state - if (this.location?.name === 'create') { - this.#workspaceContext?.createScaffold(); - } else if (this.location?.name === 'edit' && isoCode) { - this.#workspaceContext?.load(isoCode); - } - } - - #observeData() { - if (!this.#workspaceContext) return; - this.observe(this.#workspaceContext.data, (data) => { - this._language = data; - }); - } - - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext?.setName(target.value); - } - } - } - render() { - if (!this._language) return nothing; - - return html` - - - - `; + return html` { + this.#routerPath = event.target.absoluteRouterPath; + }}>`; } } 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 09a1ff1b7c..5ea3b6533d 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 @@ -8,7 +8,6 @@ const workspace: ManifestWorkspace = { loader: () => import('./language-workspace.element'), meta: { entityType: 'language', - context: () => import('./language-workspace.context'), }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts index 0c27e84f7d..509af2682f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts @@ -10,8 +10,8 @@ import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; import { LanguageModel } from '@umbraco-cms/backend-api'; -@customElement('umb-edit-language-workspace-view') -export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { +@customElement('umb-language-details-workspace-view') +export class UmbLanguageDetailsWorkspaceViewElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -209,10 +209,10 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { } } -export default UmbEditLanguageWorkspaceViewElement; +export default UmbLanguageDetailsWorkspaceViewElement; declare global { interface HTMLElementTagNameMap { - 'umb-edit-language-workspace-view': UmbEditLanguageWorkspaceViewElement; + 'umb-language-details-workspace-view': UmbLanguageDetailsWorkspaceViewElement; } } From 07f45d141fab4600a671d1a0469bafcfed42137d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:55:24 +0100 Subject: [PATCH 121/550] remove unused imports --- .../data-types/workspace/data-type-workspace.context.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 5b3e1d454d..b972b7261a 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 @@ -2,9 +2,8 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; import type { DataTypeModel } from '@umbraco-cms/backend-api'; -import { appendToFrozenArray, ArrayState, ObjectState, partialUpdateFrozenArray } from '@umbraco-cms/observable-api'; +import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbWorkspaceActionState } from 'src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext From d257e00f283668accf1c41d43bb16525945041ab Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:57:01 +0100 Subject: [PATCH 122/550] remove unused import --- .../documents/documents/workspace/document-workspace.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index a6f4eb1de9..609d9d38c0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -10,7 +10,7 @@ import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { DocumentModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; @customElement('umb-document-workspace') From 61a76335af43aba66687f1e1b110582c41c17c81 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 08:57:10 +0100 Subject: [PATCH 123/550] remove context from manifest --- .../libs/extensions-registry/workspace.models.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts index 2e74f8cab7..4bbc012cd7 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace.models.ts @@ -7,5 +7,4 @@ export interface ManifestWorkspace extends ManifestElement { export interface MetaEditor { entityType: string; - context?: any; } From e7961af9d373fbbc61bad98a1bc1cd35098301f0 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Thu, 16 Mar 2023 18:02:40 +1000 Subject: [PATCH 124/550] fixes model changes --- .../e2e/installer.spec.ts | 4 +- .../e2e/upgrader.spec.ts | 4 +- .../libs/models/index.ts | 24 ++--- .../libs/property-editor/index.ts | 4 +- .../repository-tree-data-source.interface.ts | 8 +- .../repository/tree-repository.interface.ts | 20 ++--- .../libs/store/tree-store-base.ts | 8 +- .../dashboard-redirect-management.element.ts | 8 +- .../repository/document-type.repository.ts | 4 +- .../repository/document-type.store.ts | 10 +-- .../sources/document-type.server.data.ts | 16 ++-- .../document-type-workspace.context.ts | 4 +- .../document-type-workspace.element.ts | 4 +- ...space-view-document-type-design.element.ts | 4 +- .../document-table-collection-view.element.ts | 8 +- .../repository/document.repository.ts | 4 +- .../documents/repository/document.store.ts | 10 +-- .../sources/document.server.data.ts | 16 ++-- .../documents/repository/sources/index.ts | 6 +- .../workspace/document-workspace.context.ts | 4 +- .../workspace/document-workspace.element.ts | 6 +- ...-workspace-view-edit-properties.element.ts | 8 +- ...ocument-workspace-view-edit-tab.element.ts | 8 +- .../document-workspace-view-edit.element.ts | 4 +- .../media/repository/media.tree.store.ts | 4 +- .../members/repository/sources/index.ts | 6 +- .../workspace-package-builder.element.ts | 8 +- .../packages-created-overview.element.ts | 10 +-- .../packages/repository/package.store.ts | 6 +- .../cultures/repository/sources/index.ts | 4 +- .../modal-views/fields-viewer.element.ts | 4 +- .../views/section-view-examine-indexers.ts | 4 +- .../views/section-view-examine-overview.ts | 8 +- .../views/section-view-examine-searchers.ts | 8 +- .../dashboard-health-check.element.ts | 4 +- .../health-check/health-check.context.ts | 10 ++- .../views/health-check-action.element.ts | 4 +- ...health-check-group-box-overview.element.ts | 4 +- .../views/health-check-group.element.ts | 14 +-- .../dashboard-models-builder.element.ts | 4 +- .../telemetry/dashboard-telemetry.element.ts | 4 +- .../repository/data-type.repository.ts | 4 +- .../data-types/repository/data-type.store.ts | 10 +-- .../sources/data-type.server.data.ts | 27 +++--- .../workspace/data-type-workspace.context.ts | 10 +-- .../data-type-workspace-view-edit.element.ts | 8 +- .../workspace-view-data-type-info.element.ts | 4 +- .../app-language-select.element.ts | 6 +- .../app-language.context.ts | 6 +- .../languages/modals/language-picker/index.ts | 4 +- .../language-picker-modal.element.ts | 6 +- .../repository/language.repository.ts | 6 +- .../languages/repository/language.store.ts | 6 +- .../languages/repository/sources/index.ts | 12 +-- .../sources/language.server.data.ts | 12 +-- ...root-table-delete-column-layout.element.ts | 4 +- .../language-root-workspace.element.ts | 4 +- .../language/language-workspace.context.ts | 4 +- .../language/language-workspace.element.ts | 4 +- .../edit-language-workspace-view.element.ts | 6 +- .../logviewer/repository/sources/index.ts | 26 +++--- .../sources/log-viewer.server.data.ts | 4 +- .../logviewer/workspace/logviewer.context.ts | 20 ++--- .../log-viewer-log-level-overview.element.ts | 4 +- .../log-viewer-log-types-chart.element.ts | 5 +- ...ewer-message-templates-overview.element.ts | 6 +- ...-viewer-saved-searches-overview.element.ts | 6 +- .../overview/log-overview-view.element.ts | 4 +- .../components/log-viewer-message.element.ts | 6 +- .../log-viewer-messages-list.element.ts | 4 +- .../log-viewer-search-input.element.ts | 4 +- .../shared/collection/collection.context.ts | 8 +- .../dashboard-collection.element.ts | 4 +- .../collection-view-media-grid.element.ts | 16 ++-- .../collection-view-media-table.element.ts | 4 +- .../input-culture-select.element.ts | 4 +- .../input-document-picker.element.ts | 12 +-- .../input-language-picker.element.ts | 12 +-- .../input-media-picker.element.ts | 12 +-- .../property-type-based-property.element.ts | 14 +-- .../variant-selector.element.ts | 8 +- .../variantable-property.element.ts | 8 +- .../workspace-property.context.ts | 4 +- .../workspace-property.element.ts | 4 +- .../workspace-view-collection.element.ts | 4 +- .../workspace-view-content-info.element.ts | 6 +- .../entity-manager-controller.ts | 4 +- ...-invariantable-entity-context.interface.ts | 4 +- ...kspace-property-structure-manager.class.ts | 14 +-- ...space-variable-entity-context.interface.ts | 8 +- ...perty-editor-ui-document-picker.element.ts | 4 +- .../templates/repository/sources/index.ts | 8 +- .../sources/template.detail.server.data.ts | 16 ++-- .../repository/template.repository.ts | 8 +- .../templates/repository/template.store.ts | 6 +- .../workspace/template-workspace.context.ts | 4 +- ...ashboard-translation-dictionary.element.ts | 11 +-- .../import-dictionary-modal-layout.element.ts | 4 +- .../sources/dictionary.detail.server.data.ts | 4 +- ...ictionary.details.server.data.interface.ts | 20 ++--- .../workspace-view-dictionary-edit.element.ts | 8 +- .../src/core/mocks/data/culture.data.ts | 6 +- .../src/core/mocks/data/data-type.data.ts | 88 +++++++++---------- .../src/core/mocks/data/dictionary.data.ts | 8 +- .../src/core/mocks/data/document-type.data.ts | 16 ++-- .../src/core/mocks/data/document.data.ts | 75 ++++++++++++++-- .../src/core/mocks/data/examine.data.ts | 10 +-- .../src/core/mocks/data/health-check.data.ts | 8 +- .../src/core/mocks/data/languages.data.ts | 16 ++-- .../src/core/mocks/data/log-viewer.data.ts | 24 ++--- .../src/core/mocks/data/logs.data.ts | 4 +- .../src/core/mocks/data/media-type.data.ts | 8 +- .../src/core/mocks/data/media.data.ts | 8 +- .../src/core/mocks/data/member-group.data.ts | 8 +- .../src/core/mocks/data/member-type.data.ts | 8 +- .../src/core/mocks/data/member.data.ts | 8 +- .../src/core/mocks/data/template.data.ts | 28 +++--- .../src/core/mocks/data/utils.ts | 24 ++--- .../core/mocks/domains/dictionary.handlers.ts | 6 +- .../mocks/domains/document-type.handlers.ts | 6 +- .../core/mocks/domains/document.handlers.ts | 4 +- .../domains/examine-management.handlers.ts | 10 +-- .../mocks/domains/health-check.handlers.ts | 22 ++--- .../core/mocks/domains/install.handlers.ts | 12 +-- .../core/mocks/domains/language.handlers.ts | 6 +- .../core/mocks/domains/log-viewer.handlers.ts | 4 +- .../mocks/domains/modelsbuilder.handlers.ts | 10 +-- .../core/mocks/domains/package.handlers.ts | 24 ++--- .../domains/performance-profiling.handlers.ts | 4 +- .../domains/redirect-management.handlers.ts | 30 +++---- .../src/core/mocks/domains/server.handlers.ts | 10 +-- .../core/mocks/domains/telemetry.handlers.ts | 10 +-- .../core/mocks/domains/upgrade.handlers.ts | 4 +- .../consent/installer-consent.element.ts | 6 +- .../database/installer-database.element.ts | 20 ++--- .../database/installer-database.stories.ts | 4 +- .../src/installer/installer.context.ts | 12 +-- .../src/upgrader/upgrader-view.element.ts | 4 +- .../src/upgrader/upgrader.element.ts | 4 +- 139 files changed, 696 insertions(+), 640 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts index 82ff532414..1de975d7c8 100644 --- a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; import { expect, test } from './test'; test.describe('installer tests', () => { @@ -12,7 +12,7 @@ test.describe('installer tests', () => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.INSTALL, }) ); diff --git a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts index debb44f6cd..646f1811b5 100644 --- a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; import { expect, test } from './test'; test.describe('upgrader tests', () => { @@ -11,7 +11,7 @@ test.describe('upgrader tests', () => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.UPGRADE, }) ); diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 6a677de13d..9a0da3170f 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -1,9 +1,9 @@ import { - ContentTreeItemModel, + ContentTreeItemResponseModel, DictionaryItemTranslationModel, - EntityTreeItemModel, - FolderTreeItemModel, - PackageManifestModel, + EntityTreeItemResponseModel, + FolderTreeItemResponseModel, + PackageManifestResponseModel, ProblemDetailsModel, } from '@umbraco-cms/backend-api'; @@ -26,7 +26,7 @@ export interface Entity { parentKey: string | null; } -export interface ContentDetails extends ContentTreeItemModel { +export interface ContentDetails extends ContentTreeItemResponseModel { isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; //data: Array; @@ -80,7 +80,7 @@ export interface DataTypeProperty { */ // TODO: Make sure Entity Type/interface. -export interface MemberTypeDetails extends EntityTreeItemModel { +export interface MemberTypeDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; @@ -100,7 +100,7 @@ export interface ContentPropertyData { } // Media -export interface MediaDetails extends ContentTreeItemModel { +export interface MediaDetails extends ContentTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; @@ -111,23 +111,23 @@ export interface MediaDetails extends ContentTreeItemModel { // Media Types -export interface MediaTypeDetails extends FolderTreeItemModel { +export interface MediaTypeDetails extends FolderTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } // Member Groups -export interface MemberGroupDetails extends EntityTreeItemModel { +export interface MemberGroupDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed } -export interface MemberDetails extends EntityTreeItemModel { +export interface MemberDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed } // Dictionary -export interface DictionaryDetails extends EntityTreeItemModel { +export interface DictionaryDetails extends EntityTreeItemResponseModel { key: string; // TODO: Remove this when the backend is fixed translations: DictionaryItemTranslationModel[]; } @@ -153,7 +153,7 @@ export interface SwatchDetails { value: string; } -export type UmbPackage = PackageManifestModel; +export type UmbPackage = PackageManifestResponseModel; export type PackageManifestResponse = UmbPackage[]; diff --git a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts index e2a222e019..61b6a23c04 100644 --- a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts @@ -1,6 +1,6 @@ -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; export interface UmbPropertyEditorElement extends HTMLElement { value: unknown; - config: DataTypePropertyModel[]; + config: DataTypePropertyPresentationModel[]; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index aff4ec4451..7e51e5a566 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,8 +1,8 @@ -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; export interface RepositoryTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index 2ef082005f..b702adaaec 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -1,24 +1,24 @@ import type { Observable } from 'rxjs'; -import { EntityTreeItemModel, PagedEntityTreeItemModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; export interface UmbTreeRepository { requestRootTreeItems: () => Promise<{ - data: PagedEntityTreeItemModel | undefined; + data: PagedEntityTreeItemResponseModel | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; requestTreeItemsOf: (parentKey: string | null) => Promise<{ - data: PagedEntityTreeItemModel | undefined; + data: PagedEntityTreeItemResponseModel | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; requestTreeItems: (keys: string[]) => Promise<{ - data: Array | undefined; + data: Array | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - rootTreeItems: () => Promise>; - treeItemsOf: (parentKey: string | null) => Promise>; - treeItems: (keys: string[]) => Promise>; + rootTreeItems: () => Promise>; + treeItemsOf: (parentKey: string | null) => Promise>; + treeItems: (keys: string[]) => Promise>; } diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts index feab80cb01..0f199a1f3b 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts @@ -1,4 +1,4 @@ -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -10,14 +10,14 @@ import { UmbStoreBase } from '@umbraco-cms/store'; */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? export class UmbTreeStoreBase extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Appends items to the store * @param {Array} items * @memberof UmbTreeStoreBase */ - appendItems(items: Array) { + appendItems(items: Array) { this.#data.append(items); } @@ -27,7 +27,7 @@ export class UmbTreeStoreBase extends UmbStoreBase { * @param {Partial} data * @memberof UmbTreeStoreBase */ - updateItem(key: string, data: Partial) { + updateItem(key: string, data: Partial) { this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index cff6bf9108..45e447f840 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -5,7 +5,7 @@ import { UUIButtonState, UUIPaginationElement, UUIPaginationEvent } from '@umbra import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import { RedirectManagementResource, RedirectStatusModel, RedirectUrlModel } from '@umbraco-cms/backend-api'; +import { RedirectManagementResource, RedirectStatusModel, RedirectUrlResponseModel } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @customElement('umb-dashboard-redirect-management') @@ -83,7 +83,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { itemsPerPage = 20; @state() - private _redirectData?: RedirectUrlModel[]; + private _redirectData?: RedirectUrlResponseModel[]; @state() private _trackerStatus = true; @@ -126,7 +126,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { if (data && data.status) this._trackerStatus = data.status === RedirectStatusModel.ENABLED ? true : false; } - private _removeRedirectHandler(data: RedirectUrlModel) { + private _removeRedirectHandler(data: RedirectUrlResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { headline: 'Delete', content: html` @@ -145,7 +145,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { }); } - private async _removeRedirect(r: RedirectUrlModel) { + private async _removeRedirect(r: RedirectUrlResponseModel) { if (!r.key) return; const res = await tryExecuteAndNotify( this, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 683880d36e..e8792df3ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -5,12 +5,12 @@ import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DocumentTypeModel; +type ItemType = DocumentTypeResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index 7b38c47233..b1ff1f9bea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -1,4 +1,4 @@ -import { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -11,7 +11,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Document Types */ export class UmbDocumentTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDocumentTypeStore. @@ -27,7 +27,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - append(document: DocumentTypeModel) { + append(document: DocumentTypeResponseModel) { this.#data.append([document]); } @@ -36,7 +36,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - byKey(key: DocumentTypeModel['key']) { + byKey(key: DocumentTypeResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -45,7 +45,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 5f1a282ed4..52439fe784 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -1,5 +1,5 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDocumentTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -48,7 +48,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbDocumentTypeServerDataSource */ async createScaffold(parentKey: string | null) { - const data: DocumentTypeModel = { + const data: DocumentTypeResponseModel = { properties: [], }; @@ -61,7 +61,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @return {*} * @memberof UmbDocumentTypeServerDataSource */ - async insert(document: DocumentTypeModel) { + async insert(document: DocumentTypeResponseModel) { if (!document.key) { //const error: ProblemDetails = { title: 'Document key is missing' }; return Promise.reject(); @@ -78,7 +78,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } //return tryExecuteAndNotify(this.#host, DocumentTypeResource.postDocument(payload)); // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type', { method: 'POST', @@ -97,7 +97,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour * @memberof UmbDocumentTypeServerDataSource */ // TODO: Error mistake in this: - async update(document: DocumentTypeModel) { + async update(document: DocumentTypeResponseModel) { if (!document.key) { const error: ProblemDetailsModel = { title: 'Document key is missing' }; return { error }; @@ -114,7 +114,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch(`/umbraco/management/api/v1/document-type/${document.key}`, { method: 'PUT', @@ -139,7 +139,7 @@ export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSour } // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, fetch(`/umbraco/management/api/v1/document-type/${key}`, { method: 'DELETE', 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 4fcef85092..638545389c 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 @@ -1,11 +1,11 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; -type EntityType = DocumentTypeModel; +type EntityType = DocumentTypeResponseModel; export class UmbWorkspaceDocumentTypeContext extends UmbWorkspaceContext implements UmbWorkspaceEntityContextInterface diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 5e5a660c77..c2faf5e302 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -5,7 +5,7 @@ import { customElement, state } from 'lit/decorators.js'; import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @@ -50,7 +50,7 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement implements Um private _workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); @state() - private _documentType?: DocumentTypeModel; + private _documentType?: DocumentTypeResponseModel; private _modalContext?: UmbModalContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 3e48456f2d..2e453ded63 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-design') @@ -20,7 +20,7 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { ]; @state() - _documentType?: DocumentTypeModel; + _documentType?: DocumentTypeResponseModel; private _workspaceContext?: UmbWorkspaceDocumentTypeContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts index e669b51c40..18c642313e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts @@ -15,11 +15,11 @@ import { UmbTableSelectedEvent, } from '../../../../../shared/components/table'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTreeItemModel, EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import './column-layouts/document-table-actions-column-layout.element'; -type EntityType = DocumentTreeItemModel; +type EntityType = DocumentTreeItemResponseModel; @customElement('umb-document-table-collection-view') export class UmbDocumentTableCollectionViewElement extends UmbLitElement { @@ -42,7 +42,7 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { ]; @state() - private _items?: Array; + private _items?: Array; @state() private _tableConfig: UmbTableConfig = { @@ -94,7 +94,7 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { }); } - private _createTableItems(items: Array) { + private _createTableItems(items: Array) { this._tableItems = items.map((item) => { // TODO: use unique instead of key if (!item.key) throw new Error('Item key is missing.'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index 104b9092df..6d514ccc28 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -5,12 +5,12 @@ import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.s import { UmbDocumentServerDataSource } from './sources/document.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DocumentModel; +type ItemType = DocumentResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index 0dfd392794..2fb2a87fe4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -1,4 +1,4 @@ -import { DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -11,7 +11,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Template Details */ export class UmbDocumentStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDocumentDetailStore. @@ -27,7 +27,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentDetails} document * @memberof UmbDocumentDetailStore */ - append(document: DocumentModel) { + append(document: DocumentResponseModel) { this.#data.append([document]); } @@ -36,7 +36,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentModel} document * @memberof UmbDocumentStore */ - byKey(key: DocumentModel['key']) { + byKey(key: DocumentResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -45,7 +45,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentDetailStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 5fe01e86d2..9f2cd5c191 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,5 +1,5 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentResource, ProblemDetailsModel, DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResource, ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDocumentServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -48,7 +48,7 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/save', { method: 'POST', @@ -98,7 +98,7 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/save', { method: 'POST', @@ -140,7 +140,7 @@ export class UmbDocumentServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index c7cc44fc92..04b7b1ee75 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,7 +1,7 @@ -import { DocumentModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -export interface UmbDocumentDataSource extends RepositoryDetailDataSource { - trash(key: string): Promise>; +export interface UmbDocumentDataSource extends RepositoryDetailDataSource { + trash(key: string): Promise>; } 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 f62c5943fc..52bb67d842 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 @@ -5,14 +5,14 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../../../shared/comp import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO: should this context be called DocumentDraft instead of workspace? or should the draft be part of this? // TODO: Should we have a DocumentStructureContext and maybe even a DocumentDraftContext? -type EntityType = DocumentModel; +type EntityType = DocumentResponseModel; export class UmbDocumentWorkspaceContext extends UmbWorkspaceContext implements UmbWorkspaceVariableEntityContextInterface diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index d2f69c3f86..9dd5949e91 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -9,7 +9,7 @@ import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { DocumentModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel, VariantModelBaseModel } from '@umbraco-cms/backend-api'; import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; @customElement('umb-document-workspace') @@ -36,7 +36,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor _routes?: Array; @state() - _availableVariants: Array = []; + _availableVariants: Array = []; @state() _workspaceSplitViews: Array = []; @@ -63,7 +63,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWor this._gotDocumentData(data); } - private _gotDocumentData(data: DocumentModel | undefined) { + private _gotDocumentData(data: DocumentResponseModel | undefined) { if (data && data.variants && data.variants.length > 0) { //this._defaultVariant = data.variants[0]; this._unique = data.key; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts index 6bd3840d8a..e9bfd39eec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTypePropertyTypeModel, PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { DocumentTypePropertyTypeResponseModel, PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; @customElement('umb-document-workspace-view-edit-properties') export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement { @@ -45,10 +45,10 @@ export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement } @state() - _groupContainers: Array = []; + _groupContainers: Array = []; @state() - _propertyStructure: Array = []; + _propertyStructure: Array = []; private _workspaceContext?: UmbDocumentWorkspaceContext; @@ -81,7 +81,7 @@ export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement ); } - private _observePropertyStructureOfGroup(group: PropertyTypeContainerViewModelBaseModel) { + private _observePropertyStructureOfGroup(group: PropertyTypeContainerResponseModelBaseModel) { if (!this._workspaceContext || !group.key) return; // TODO: Should be no need to update this observable if its already there. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts index 9f1f88145d..8992495248 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; import './document-workspace-view-edit-properties.element'; @customElement('umb-document-workspace-view-edit-tab') @@ -55,13 +55,13 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { } @state() - _tabContainers: PropertyTypeContainerViewModelBaseModel[] = []; + _tabContainers: PropertyTypeContainerResponseModelBaseModel[] = []; @state() _hasTabProperties = false; @state() - _groups: Array = []; + _groups: Array = []; private _workspaceContext?: UmbDocumentWorkspaceContext; @@ -134,7 +134,7 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { ); } - private _insertGroupContainers = (groupContainers: PropertyTypeContainerViewModelBaseModel[]) => { + private _insertGroupContainers = (groupContainers: PropertyTypeContainerResponseModelBaseModel[]) => { groupContainers.forEach((group) => { if (group.name) { if (!this._groups.find((x) => x.name === group.name)) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts index 6dfc9ca79b..36032110ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts @@ -5,7 +5,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; @customElement('umb-document-workspace-view-edit') export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { @@ -26,7 +26,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { private _routes: IRoute[] = []; @state() - _tabs: Array = []; + _tabs: Array = []; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index a070665602..9028802a8d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -1,4 +1,4 @@ -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbTreeStoreBase } from '@umbraco-cms/store'; @@ -13,7 +13,7 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbMediaTreeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts index 66a63ad20d..8659bec685 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export interface MemberTreeDataSource { - getRootItems(): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 26b897a91b..4023dfd261 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -7,7 +7,7 @@ import { UmbInputDocumentPickerElement } from '../../../shared/components/input- import { UmbInputMediaPickerElement } from '../../../shared/components/input-media-picker/input-media-picker.element'; import { UmbInputLanguagePickerElement } from '../../../shared/components/input-language-picker/input-language-picker.element'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PackageDefinitionModel, PackageResource } from '@umbraco-cms/backend-api'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; @@ -41,7 +41,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { entityKey?: string; @state() - private _package: PackageDefinitionModel = {}; + private _package: PackageDefinitionResponseModel = {}; @query('#package-name-input') private _packageNameInput!: UUIInputElement; @@ -64,7 +64,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { if (!this.entityKey) return; const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByKey({ key: this.entityKey })); if (!data) return; - this._package = data as PackageDefinitionModel; + this._package = data as PackageDefinitionResponseModel; } async #download() { @@ -88,7 +88,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { PackageResource.postPackageCreated({ requestBody: this._package }) ); if (!response.data || response.error) return; - this._package = response.data as PackageDefinitionModel; + this._package = response.data as PackageDefinitionResponseModel; this.#navigateBack(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index 5d85638acc..02af893cbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; -import { PackageDefinitionModel, PackageResource } from '@umbraco-cms/backend-api'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @@ -44,7 +44,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { private _loading = true; @state() - private _createdPackages: PackageDefinitionModel[] = []; + private _createdPackages: PackageDefinitionResponseModel[] = []; @state() private _currentPage = 1; @@ -103,7 +103,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement {
    `; } - #renderPackageItem(p: PackageDefinitionModel) { + #renderPackageItem(p: PackageDefinitionResponseModel) { return html` this.#deletePackage(p)} label="Delete package"> @@ -113,7 +113,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { `; } - #packageBuilder(p: PackageDefinitionModel) { + #packageBuilder(p: PackageDefinitionResponseModel) { if (!p.key) return; window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.key}`); } @@ -133,7 +133,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { this.#getPackages(); } - async #deletePackage(p: PackageDefinitionModel) { + async #deletePackage(p: PackageDefinitionResponseModel) { if (!p.key) return; const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', 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 18120d46a9..f7bcfc0b11 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,7 +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 type { PackageMigrationStatusResponseModel } from '@umbraco-cms/backend-api'; import { ArrayState } from '@umbraco-cms/observable-api'; export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken('UmbPackageStore'); @@ -22,7 +22,7 @@ export class UmbPackageStore extends UmbStoreBase { #extensions = new ArrayState([], (e) => e.alias); - #migrations = new ArrayState([], (e) => e.packageName); + #migrations = new ArrayState([], (e) => e.packageName); /** * Observable of packages with extensions @@ -56,7 +56,7 @@ export class UmbPackageStore extends UmbStoreBase { this.#extensions.append(extensions); } - appendMigrations(migrations: PackageMigrationStatusModel[]) { + appendMigrations(migrations: PackageMigrationStatusResponseModel[]) { this.#migrations.append(migrations); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts index 8b3555ed3f..3abfe139d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { PagedCultureModel } from '@umbraco-cms/backend-api'; +import { PagedCultureReponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; // TODO: This is a temporary solution until we have a proper paging interface @@ -8,5 +8,5 @@ type paging = { }; export interface UmbCultureDataSource { - getCollection(paging: paging): Promise>; + getCollection(paging: paging): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts index 9ef00638de..84f319ab80 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts @@ -2,10 +2,10 @@ import { html, css, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; -import type { SearchResultModel } from '@umbraco-cms/backend-api'; +import type { SearchResultResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-modal-element-fields-viewer') -export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement { +export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement { static styles = [ UUITextStyles, css` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts index 99d08ebf41..05ff3cf331 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui-button'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { HealthStatusModel, IndexModel, IndexerResource } from '@umbraco-cms/backend-api'; +import { HealthStatusModel, IndexResponseModel, IndexerResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -85,7 +85,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private _buttonState?: UUIButtonState = undefined; @state() - private _indexData?: IndexModel; + private _indexData?: IndexResponseModel; @state() private _loading = true; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts index 3ac9fb989b..beb5218eed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts @@ -4,9 +4,9 @@ import { customElement, state } from 'lit/decorators.js'; import { HealthStatusModel, - IndexModel, + IndexResponseModel, IndexerResource, - SearcherModel, + SearcherResponseModel, SearcherResource, } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -58,10 +58,10 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { ]; @state() - private _indexers?: IndexModel[]; + private _indexers?: IndexResponseModel[]; @state() - private _searchers?: SearcherModel[]; + private _searchers?: SearcherResponseModel[]; @state() private _loadingIndexers = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts index fd7f1b6f14..62c8d2280d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { SearchResultModel, SearcherResource, FieldModel } from '@umbraco-cms/backend-api'; +import { SearchResultResponseModel, SearcherResource, FieldPresentationModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -106,7 +106,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { searcherName!: string; @state() - private _searchResults?: SearchResultModel[]; + private _searchResults?: SearchResultResponseModel[]; @state() private _exposedFields?: ExposedSearchResultField[]; @@ -202,7 +202,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { } // Find the field named 'nodeName' and return its value if it exists in the fields array - private getSearchResultNodeName(searchResult: SearchResultModel): string { + private getSearchResultNodeName(searchResult: SearchResultResponseModel): string { const nodeNameField = searchResult.fields?.find((field) => field.name?.toUpperCase() === 'NODENAME'); return nodeNameField?.values?.join(', ') ?? ''; } @@ -284,7 +284,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { })}`; } - renderBodyCells(cellData: FieldModel[]) { + renderBodyCells(cellData: FieldPresentationModel[]) { return html`${this._exposedFields?.map((slot) => { return cellData.map((field) => { return slot.exposed && field.name == slot.name diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts index ce95990d04..486f315d04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts @@ -11,7 +11,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestHealthCheck } from '@umbraco-cms/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { HealthCheckGroupModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { HealthCheckGroupResponseModel, HealthCheckResource } from '@umbraco-cms/backend-api'; @customElement('umb-dashboard-health-check') export class UmbDashboardHealthCheckElement extends UmbLitElement { @@ -53,7 +53,7 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { this.#register(manifests); }; - #createManifests(groups: HealthCheckGroupModel[]): Array { + #createManifests(groups: HealthCheckGroupResponseModel[]): Array { return groups.map((group) => { return { type: 'healthCheck', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts index 920af65be7..70cdf9d5bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts @@ -1,14 +1,18 @@ import { BehaviorSubject } from 'rxjs'; -import { HealthCheckGroupModel, HealthCheckGroupWithResultModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { + HealthCheckGroupPresentationModel, + HealthCheckGroupWithResultResponseModel, + HealthCheckResource, +} from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; export class UmbHealthCheckContext { - private _checks = new BehaviorSubject(undefined); + private _checks = new BehaviorSubject(undefined); public readonly checks = this._checks.asObservable(); - private _results = new BehaviorSubject(undefined); + private _results = new BehaviorSubject(undefined); public readonly results = this._results.asObservable(); public host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts index 606c606c4e..00958c21c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts @@ -4,7 +4,7 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { HealthCheckActionModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import { HealthCheckActionRequestModel, HealthCheckResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -54,7 +54,7 @@ export class UmbDashboardHealthCheckActionElement extends UmbLitElement { ]; @property({ reflect: true }) - action!: HealthCheckActionModel; + action!: HealthCheckActionRequestModel; @state() private _buttonState?: UUIButtonState; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts index 31fa419b08..3f880f186a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts @@ -8,7 +8,7 @@ import { } from '../health-check-dashboard.context'; import { ensureSlash, path } from '@umbraco-cms/router'; import type { ManifestHealthCheck } from '@umbraco-cms/models'; -import { HealthCheckGroupWithResultModel, StatusResultTypeModel } from '@umbraco-cms/backend-api'; +import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-health-check-group-box-overview') @@ -64,7 +64,7 @@ export class UmbHealthCheckGroupBoxOverviewElement extends UmbLitElement { private _tagResults?: any = []; @state() - private _keyResults?: HealthCheckGroupWithResultModel; + private _keyResults?: HealthCheckGroupWithResultResponseModel; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts index 45f503dd59..0b9467d1e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts @@ -10,11 +10,11 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from '../health-check-dashboard.context'; import { - HealthCheckActionModel, - HealthCheckGroupModel, + HealthCheckActionRequestModel, + HealthCheckGroupPresentationModel, HealthCheckModel, HealthCheckResource, - HealthCheckWithResultModel, + HealthCheckWithResultPresentationModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -74,7 +74,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _buttonState: UUIButtonState; @state() - private _group?: HealthCheckGroupModel; + private _group?: HealthCheckGroupPresentationModel; private _healthCheckContext?: UmbHealthCheckDashboardContext; @@ -82,7 +82,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _checks?: HealthCheckModel[]; @state() - private _keyResults?: HealthCheckWithResultModel[]; + private _keyResults?: HealthCheckWithResultPresentationModel[]; private _api?: UmbHealthCheckContext; @@ -112,7 +112,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { this._buttonState = 'success'; } - private _onActionClick(action: HealthCheckActionModel) { + private _onActionClick(action: HealthCheckActionRequestModel) { return tryExecuteAndNotify(this, HealthCheckResource.postHealthCheckExecuteAction({ requestBody: action })); } @@ -197,7 +197,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { } } - private renderActions(actions: HealthCheckActionModel[]) { + private renderActions(actions: HealthCheckActionRequestModel[]) { if (actions.length) return html`
    ${actions.map( diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts index a9f60aa0c8..6caa76d8bf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ModelsBuilderModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backend-api'; +import { ModelsBuilderResponseModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -41,7 +41,7 @@ export class UmbDashboardModelsBuilderElement extends UmbLitElement { ]; @state() - private _modelsBuilder?: ModelsBuilderModel; + private _modelsBuilder?: ModelsBuilderResponseModel; @state() private _buttonStateBuild: UUIButtonState = undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts index 71a89c4b72..ee02adaf77 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts @@ -3,7 +3,7 @@ import { customElement, state } from 'lit/decorators.js'; import { unsafeHTML } from 'lit/directives/unsafe-html.js'; import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { TelemetryModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backend-api'; +import { TelemetryResponseModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -22,7 +22,7 @@ export class UmbDashboardTelemetryElement extends UmbLitElement { private _telemetryFormData = TelemetryLevelModel.BASIC; @state() - private _telemetryLevels: TelemetryModel[] = []; + private _telemetryLevels: TelemetryResponseModel[] = []; @state() private _errorMessage = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index e440812256..d69e722a9b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -5,12 +5,12 @@ import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DataTypeModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; import { UmbDetailRepository } from '@umbraco-cms/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -type ItemType = DataTypeModel; +type ItemType = DataTypeResponseModel; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index d6d8ef2d94..169e7499e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -1,4 +1,4 @@ -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; @@ -13,7 +13,7 @@ export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbDataTypeStore. @@ -29,7 +29,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {DataTypeModel} dataType * @memberof UmbDataTypeStore */ - append(dataType: DataTypeModel) { + append(dataType: DataTypeResponseModel) { this.#data.append([dataType]); } @@ -38,7 +38,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {key} DataTypeModel key. * @memberof UmbDataTypeStore */ - byKey(key: DataTypeModel['key']) { + byKey(key: DataTypeResponseModel['key']) { return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); } @@ -47,7 +47,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDataTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 2af70e06fe..88ac8bd9e3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -2,9 +2,8 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; import { ProblemDetailsModel, DataTypeResource, - DataTypeModel, - DataTypeCreateModel, - DataTypeUpdateModel, + DataTypeResponseModel, + DataTypeModelBaseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -15,7 +14,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/resources'; * @class UmbDataTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource { #host: UmbControllerHostInterface; /** @@ -54,7 +53,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, // TODO: avoid this any?.. tryExecuteAndNotify( @@ -90,21 +89,21 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.putDataTypeByKey({ key: dataType.key, @@ -126,7 +125,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.deleteDataTypeByKey({ key, @@ -147,7 +146,7 @@ export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.deleteDataTypeByKey({ key, 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 531531c39d..5912694028 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 @@ -1,15 +1,15 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbWorkspaceEntityContextInterface { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); key = this.#data.getObservablePart((data) => data?.key); @@ -63,8 +63,8 @@ export class UmbDataTypeWorkspaceContext const currentData = this.#data.value; if (currentData) { // TODO: make a partial update method for array of data, (idea/concept, use if this case is getting common) - const newDataSet = appendToFrozenArray(currentData.data || [], entry, (x) => x.alias); - this.#data.update({ data: newDataSet }); + const newDataSet = appendToFrozenArray(currentData.values || [], entry, (x) => x.alias); + this.#data.update({ values: newDataSet }); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts index fd12cca7b2..4ad2a0b687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/edit/data-type-workspace-view-edit.element.ts @@ -5,7 +5,7 @@ import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN } from '../../../../../shared/property-editors/modals/property-editor-ui-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; @@ -24,7 +24,7 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { ]; @state() - _dataType?: DataTypeModel; + _dataType?: DataTypeResponseModel; @state() private _propertyEditorUIIcon = ''; @@ -73,8 +73,8 @@ export class UmbDataTypeWorkspaceViewEditElement extends UmbLitElement { this._observePropertyEditorUI(this._dataType.propertyEditorUiAlias || undefined); } - if (this._dataType.data && this._dataType.data !== this._data) { - this._data = this._dataType.data; + if (this._dataType.values && this._dataType.values !== this._data) { + this._data = this._dataType.values; } }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index d7e9f35ac5..7ea6345d41 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -4,14 +4,14 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypeModel } from '@umbraco-cms/backend-api'; +import { DataTypeResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-data-type-info') export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @state() - _dataType?: DataTypeModel; + _dataType?: DataTypeResponseModel; private _workspaceContext?: UmbDataTypeWorkspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts index a69f693017..9c4c8165fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts @@ -7,7 +7,7 @@ import { UUIMenuItemEvent } from '@umbraco-ui/uui'; 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'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-app-language-select') export class UmbAppLanguageSelectElement extends UmbLitElement { @@ -43,10 +43,10 @@ export class UmbAppLanguageSelectElement extends UmbLitElement { ]; @state() - private _languages: Array = []; + private _languages: Array = []; @state() - private _appLanguage?: LanguageModel; + private _appLanguage?: LanguageResponseModel; @state() private _isOpen = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts index 867f876579..bd9686fe99 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts @@ -2,15 +2,15 @@ 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'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; export class UmbAppLanguageContext { #host: UmbControllerHostInterface; #languageRepository: UmbLanguageRepository; - #languages: Array = []; + #languages: Array = []; - #appLanguage = new ObjectState(undefined); + #appLanguage = new ObjectState(undefined); appLanguage = this.#appLanguage.asObservable(); constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts index 5f551178ad..f057aa3800 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts @@ -1,10 +1,10 @@ -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalToken } from '@umbraco-cms/modal'; export interface UmbLanguagePickerModalData { multiple?: boolean; selection?: Array; - filter?: (language: LanguageModel) => boolean; + filter?: (language: LanguageResponseModel) => boolean; } export interface UmbLanguagePickerModalResult { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts index 98a4407e97..53bf09acbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts @@ -6,14 +6,14 @@ import { UUIMenuItemElement, UUIMenuItemEvent } from '@umbraco-ui/uui'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbModalElementPickerBase } from '@umbraco-cms/modal'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-picker-modal') -export class UmbLanguagePickerModalElement extends UmbModalElementPickerBase { +export class UmbLanguagePickerModalElement extends UmbModalElementPickerBase { static styles = [UUITextStyles, css``]; @state() - private _languages: Array = []; + private _languages: Array = []; private _languageRepository = new UmbLanguageRepository(this); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts index ef87ea9abe..6339112735 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts @@ -3,7 +3,7 @@ import { UmbLanguageStore, UMB_LANGUAGE_STORE_CONTEXT_TOKEN } from './language.s import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { LanguageModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; export class UmbLanguageRepository { #init!: Promise; @@ -84,7 +84,7 @@ export class UmbLanguageRepository { return this.#dataSource.createScaffold(); } - async create(language: LanguageModel) { + async create(language: LanguageResponseModel) { await this.#init; const { error } = await this.#dataSource.insert(language); @@ -104,7 +104,7 @@ export class UmbLanguageRepository { * @return {*} * @memberof UmbLanguageRepository */ - async save(language: LanguageModel) { + async save(language: LanguageResponseModel) { await this.#init; const { error } = await this.#dataSource.update(language); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts index 3da9a5a38a..18f10bc156 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts @@ -2,7 +2,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { UmbStoreBase } from '@umbraco-cms/store'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ArrayState } from '@umbraco-cms/observable-api'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbLanguageStore'); @@ -13,14 +13,14 @@ export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.isoCode); + #data = new ArrayState([], (x) => x.isoCode); data = this.#data.asObservable(); constructor(host: UmbControllerHostInterface) { super(host, UMB_LANGUAGE_STORE_CONTEXT_TOKEN.toString()); } - append(language: LanguageModel) { + append(language: LanguageResponseModel) { this.#data.append([language]); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts index 81efc0303f..449c07448b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { LanguageModel, PagedLanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; @@ -8,9 +8,9 @@ type paging = { take: number; }; -export interface UmbLanguageDataSource extends RepositoryDetailDataSource { - createScaffold(): Promise>; - get(isoCode: string): Promise>; - delete(isoCode: string): Promise>; - getCollection(paging: paging): Promise>; +export interface UmbLanguageDataSource extends RepositoryDetailDataSource { + createScaffold(): Promise>; + get(isoCode: string): Promise>; + delete(isoCode: string): Promise>; + getCollection(paging: paging): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts index cca5af2960..98653be2ed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts @@ -1,4 +1,4 @@ -import { ProblemDetailsModel, LanguageResource, LanguageModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, LanguageResource, LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -47,7 +47,7 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @memberof UmbLanguageServerDataSource */ async createScaffold() { - const data: LanguageModel = { + const data: LanguageResponseModel = { name: '', isDefault: false, isMandatory: false, @@ -60,11 +60,11 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource /** * Inserts a new Language on the server - * @param {LanguageModel} language + * @param {LanguageResponseModel} language * @return {*} * @memberof UmbLanguageServerDataSource */ - async insert(language: LanguageModel) { + async insert(language: LanguageResponseModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; @@ -75,11 +75,11 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource /** * Updates a Language on the server - * @param {LanguageModel} language + * @param {LanguageResponseModel} language * @return {*} * @memberof UmbLanguageServerDataSource */ - async update(language: LanguageModel) { + async update(language: LanguageResponseModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts index d318a967fa..081addf7c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-table-delete-column-layout.element.ts @@ -3,14 +3,14 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-root-table-delete-column-layout') export class UmbLanguageRootTableDeleteColumnLayoutElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @property({ attribute: false }) - value!: LanguageModel; + value!: LanguageResponseModel; @state() _isOpen = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index aba3ffb008..ceaeae0e15 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbTableColumn, UmbTableConfig, UmbTableItem } from '../../../../shared/components/table'; import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; import './language-root-table-delete-column-layout.element'; import './language-root-table-name-column-layout.element'; @@ -79,7 +79,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { } } - #createTableItems(languages: Array) { + #createTableItems(languages: Array) { this._tableItems = languages.map((language) => { return { key: language.isoCode ?? '', 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 a31db582a7..4e17f440b1 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 @@ -1,11 +1,11 @@ import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbWorkspaceContext } from '../../../../shared/components/workspace/workspace-context/workspace-context'; -import type { LanguageModel } from '@umbraco-cms/backend-api'; +import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); // TODO: this is a temp solution to bubble validation errors to the UI diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 409d475777..3ab601abf7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -6,7 +6,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbWorkspaceEntityElement } from '../../../../shared/components/workspace/workspace-entity-element.interface'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-workspace') export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { @@ -26,7 +26,7 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement implements UmbWor ]; @state() - _language?: LanguageModel; + _language?: LanguageResponseModel; #languageWorkspaceContext = new UmbLanguageWorkspaceContext(this); 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 0c27e84f7d..53ed1c8b14 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 @@ -8,7 +8,7 @@ import UmbInputCultureSelectElement from '../../../../../../shared/components/in 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'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-edit-language-workspace-view') export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { @@ -45,7 +45,7 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { ]; @state() - _language?: LanguageModel; + _language?: LanguageResponseModel; @state() _isDefaultLanguage = false; @@ -201,7 +201,7 @@ export class UmbEditLanguageWorkspaceViewElement extends UmbLitElement { slot="editor" max="1" @change=${this.#handleFallbackChange} - .filter=${(language: LanguageModel) => + .filter=${(language: LanguageResponseModel) => language.isoCode !== this._language?.isoCode}> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts index 518a5e18af..5b70410caf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts @@ -1,12 +1,12 @@ import { DirectionModel, - LogLevelCountsModel, + LogLevelCountsReponseModel, LogLevelModel, - PagedLoggerModel, - PagedLogMessageModel, - PagedLogTemplateModel, - PagedSavedLogSearchModel, - SavedLogSearchModel, + PagedLoggerResponseModel, + PagedLogMessageResponseModel, + PagedLogTemplateResponseModel, + PagedSavedLogSearchResponseModel, + SavedLogSearchResponseModel, } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; @@ -19,25 +19,25 @@ export interface LogSearchDataSource { }: { skip?: number; take?: number; - }): Promise>; - getSavedSearchByName({ name }: { name: string }): Promise>; + }): Promise>; + getSavedSearchByName({ name }: { name: string }): Promise>; deleteSavedSearchByName({ name }: { name: string }): Promise>; postLogViewerSavedSearch({ requestBody, }: { - requestBody?: SavedLogSearchModel; + requestBody?: SavedLogSearchResponseModel; }): Promise>; } export interface LogMessagesDataSource { - getLogViewerLevel({ skip, take }: { skip?: number; take?: number }): Promise>; + getLogViewerLevel({ skip, take }: { skip?: number; take?: number }): Promise>; getLogViewerLevelCount({ startDate, endDate, }: { startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; getLogViewerLogs({ skip, take = 100, @@ -54,7 +54,7 @@ export interface LogMessagesDataSource { logLevel?: Array; startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; getLogViewerMessageTemplate({ skip, take = 100, @@ -65,5 +65,5 @@ export interface LogMessagesDataSource { take?: number; startDate?: string; endDate?: string; - }): Promise>; + }): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts index ebdf1264e5..822f63f8e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts @@ -1,5 +1,5 @@ import { LogMessagesDataSource, LogSearchDataSource } from '.'; -import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; @@ -49,7 +49,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @return {*} * @memberof UmbLogSearchesServerDataSource */ - async postLogViewerSavedSearch({ requestBody }: { requestBody?: SavedLogSearchModel }) { + async postLogViewerSavedSearch({ requestBody }: { requestBody?: SavedLogSearchResponseModel }) { return await tryExecuteAndNotify(this.#host, LogViewerResource.postLogViewerSavedSearch({ requestBody })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 93d7896cc6..57539c9aa4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -2,12 +2,12 @@ import { UmbLogViewerRepository } from '../repository/log-viewer.repository'; import { ArrayState, createObservablePart, DeepState, ObjectState, StringState } from '@umbraco-cms/observable-api'; import { DirectionModel, - LogLevelCountsModel, + LogLevelCountsReponseModel, LogLevelModel, - PagedLoggerModel, - PagedLogMessageModel, - PagedLogTemplateModel, - PagedSavedLogSearchModel, + PagedLoggerResponseModel, + PagedLogMessageResponseModel, + PagedLogTemplateResponseModel, + PagedSavedLogSearchResponseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; @@ -50,16 +50,16 @@ export class UmbLogViewerWorkspaceContext { endDate: this.today, }; - #savedSearches = new DeepState(undefined); + #savedSearches = new DeepState(undefined); savedSearches = createObservablePart(this.#savedSearches, (data) => data?.items); - #logCount = new DeepState(null); + #logCount = new DeepState(null); logCount = createObservablePart(this.#logCount, (data) => data); #dateRange = new DeepState(this.defaultDateRange); dateRange = createObservablePart(this.#dateRange, (data) => data); - #loggers = new DeepState(null); + #loggers = new DeepState(null); loggers = createObservablePart(this.#loggers, (data) => data?.items); #canShowLogs = new BasicState(null); @@ -68,13 +68,13 @@ export class UmbLogViewerWorkspaceContext { #filterExpression = new StringState(''); filterExpression = createObservablePart(this.#filterExpression, (data) => data); - #messageTemplates = new DeepState(null); + #messageTemplates = new DeepState(null); messageTemplates = createObservablePart(this.#messageTemplates, (data) => data); #logLevelsFilter = new ArrayState([]); logLevelsFilter = createObservablePart(this.#logLevelsFilter, (data) => data); - #logs = new DeepState(null); + #logs = new DeepState(null); logs = createObservablePart(this.#logs, (data) => data?.items); logsTotal = createObservablePart(this.#logs, (data) => data?.total); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts index 2aeafb27fa..4cce6a35ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts @@ -2,7 +2,7 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LoggerModel } from '@umbraco-cms/backend-api'; +import { LoggerResponseModel } from '@umbraco-cms/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-log-level-overview') @@ -18,7 +18,7 @@ export class UmbLogViewerLogLevelOverviewElement extends UmbLitElement { } @state() - private _loggers: LoggerModel[] = []; + private _loggers: LoggerResponseModel[] = []; /** * The name of the logger to get the level for. Defaults to 'Global'. * diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts index 1c7ec7a927..051d554f90 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts @@ -1,9 +1,8 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LogLevelCountsModel } from '@umbraco-cms/backend-api'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-log-viewer-log-types-chart') export class UmbLogViewerLogTypesChartElement extends UmbLitElement { @@ -80,7 +79,7 @@ export class UmbLogViewerLogTypesChartElement extends UmbLitElement { } @state() - private _logLevelCount: LogLevelCountsModel | null = null; + private _logLevelCount: LogLevelCountsReponseModel | null = null; @state() private logLevelCount: [string, number][] = []; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index 5c9cd6f754..4b71250eb3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { PagedLogTemplateModel, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { PagedLogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; //TODO: fix pagination bug when API is fixed @customElement('umb-log-viewer-message-templates-overview') @@ -39,7 +39,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { ]; @state() - private _messageTemplates: PagedLogTemplateModel | null = null; + private _messageTemplates: PagedLogTemplateResponseModel | null = null; #logViewerContext?: UmbLogViewerWorkspaceContext; constructor() { @@ -63,7 +63,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { this.#logViewerContext?.getMessageTemplates(0, take + 10); } - #renderSearchItem = (searchListItem: SavedLogSearchModel) => { + #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index 588e51bd9f..205c5d0626 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-saved-searches-overview') @@ -37,7 +37,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { ]; @state() - private _savedSearches: SavedLogSearchModel[] = []; + private _savedSearches: SavedLogSearchResponseModel[] = []; #logViewerContext?: UmbLogViewerWorkspaceContext; constructor() { @@ -60,7 +60,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { this.#logViewerContext?.setFilterExpression(query); } - #renderSearchItem = (searchListItem: SavedLogSearchModel) => { + #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts index 38191cf274..c4c3be8e8b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; -import { LogLevelCountsModel } from '@umbraco-cms/backend-api'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; //TODO: add a disabled attribute to the show more button when the total number of items is correctly returned from the endpoint @@ -88,7 +88,7 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { private _errorCount = 0; @state() - private _logLevelCount: LogLevelCountsModel | null = null; + private _logLevelCount: LogLevelCountsReponseModel | null = null; @state() private _canShowLogs = false; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index 8bc5edb9c6..c0adf422c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { LogLevelModel, LogMessagePropertyModel } from '@umbraco-cms/backend-api'; +import { LogLevelModel, LogMessagePropertyPresentationModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; //TODO: check how to display EventId field in the message properties @@ -132,7 +132,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { renderedMessage = ''; @property({ attribute: false }) - properties: Array = []; + properties: Array = []; @property({ type: Boolean }) open = false; @@ -210,7 +210,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { private _propertiesWithSearchMenu: Array = ['HttpRequestNumber', 'SourceContext', 'MachineName']; - private _findLogsWithProperty({ name, value }: LogMessagePropertyModel) { + private _findLogsWithProperty({ name, value }: LogMessagePropertyPresentationModel) { let queryString = ''; if (isNaN(+(value ?? ''))) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts index 1fc81d55fa..aca5bcf552 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts @@ -4,7 +4,7 @@ import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DirectionModel, LogMessageModel } from '@umbraco-cms/backend-api'; +import { DirectionModel, LogMessageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-log-viewer-messages-list') export class UmbLogViewerMessagesListElement extends UmbLitElement { @@ -56,7 +56,7 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement { private _sortingDirection: DirectionModel = DirectionModel.ASCENDING; @state() - private _logs: LogMessageModel[] = []; + private _logs: LogMessageResponseModel[] = []; @state() private _logsTotal = 0; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index c4ca1a8ffa..445127aefd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-log-viewer-search-input') @@ -87,7 +87,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { private _savedSearchesExpandSymbol!: UUISymbolExpandElement; @state() - private _savedSearches: SavedLogSearchModel[] = []; + private _savedSearches: SavedLogSearchResponseModel[] = []; @state() private _inputQuery = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 7ad8352aa4..5335a14efe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,4 +1,4 @@ -import type { ContentTreeItemModel, EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { ContentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeStore } from '@umbraco-cms/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/context-api'; @@ -9,7 +9,7 @@ import { UmbTreeRepository } from '@umbraco-cms/repository'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). export class UmbCollectionContext< - DataType extends ContentTreeItemModel, + DataType extends ContentTreeItemResponseModel, StoreType extends UmbTreeStore = UmbTreeStore > { private _host: UmbControllerHostInterface; @@ -19,9 +19,9 @@ export class UmbCollectionContext< #repository?: UmbTreeRepository; private _store?: StoreType; - protected _dataObserver?: UmbObserverController; + protected _dataObserver?: UmbObserverController; - #data = new ArrayState(>[]); + #data = new ArrayState(>[]); public readonly data = this.#data.asObservable(); #selection = new ArrayState(>[]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index d34573e22e..79dba7cc90 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; import type { ManifestDashboardCollection } from '@umbraco-cms/models'; -import type { FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; import '../collection.element'; @@ -25,7 +25,7 @@ export class UmbDashboardCollectionElement extends UmbLitElement { ]; // TODO: Use the right type here: - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; public manifest!: ManifestDashboardCollection; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts index 722d32d8fc..dd3c39e2af 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../collection.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-collection-view-media-grid') export class UmbCollectionViewsMediaGridElement extends UmbLitElement { @@ -65,12 +65,12 @@ export class UmbCollectionViewsMediaGridElement extends UmbLitElement { ]; @state() - private _mediaItems?: Array; + private _mediaItems?: Array; @state() private _selection: Array = []; - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; constructor() { super(); @@ -115,31 +115,31 @@ export class UmbCollectionViewsMediaGridElement extends UmbLitElement { }); } - private _handleOpenItem(mediaItem: EntityTreeItemModel) { + private _handleOpenItem(mediaItem: EntityTreeItemResponseModel) { //TODO: Fix when we have dynamic routing history.pushState(null, '', 'section/media/media/edit/' + mediaItem.key); } - private _handleSelect(mediaItem: EntityTreeItemModel) { + private _handleSelect(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { this._collectionContext?.select(mediaItem.key); } } - private _handleDeselect(mediaItem: EntityTreeItemModel) { + private _handleDeselect(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { this._collectionContext?.deselect(mediaItem.key); } } - private _isSelected(mediaItem: EntityTreeItemModel) { + private _isSelected(mediaItem: EntityTreeItemResponseModel) { if (mediaItem.key) { return this._selection.includes(mediaItem.key); } return false; } - private _renderMediaItem(item: EntityTreeItemModel) { + private _renderMediaItem(item: EntityTreeItemResponseModel) { const name = item.name || ''; //TODO: fix the file extension when media items have a file extension. return html`; + private _mediaItems?: Array; @state() private _tableConfig: UmbTableConfig = { 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 bdcf53b259..ed3f11f018 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 @@ -8,7 +8,7 @@ import { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-ui/uui'; 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'; +import { CultureReponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-input-culture-select') export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement) { @@ -33,7 +33,7 @@ export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement readonly = false; @state() - private _cultures: CultureModel[] = []; + private _cultures: CultureReponseModel[] = []; @state() private _search = ''; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index b7a16996bc..a2a287ab6f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -9,7 +9,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { DocumentTreeItemResponseModel, FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-document-picker') @@ -77,11 +77,11 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; private _documentStore?: UmbDocumentTreeStore; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -133,7 +133,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen }); } - private async _removeItem(item: FolderTreeItemModel) { + private async _removeItem(item: FolderTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -158,9 +158,9 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen `; } - private _renderItem(item: FolderTreeItemModel) { + private _renderItem(item: FolderTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + const tempItem = item as FolderTreeItemResponseModel & { isTrashed: boolean }; return html` 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 c9eb2bd3ca..512cf9d4bd 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 @@ -9,7 +9,7 @@ import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from '../../../settings/languages/mod import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbChangeEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { LanguageModel } from '@umbraco-cms/backend-api'; +import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-language-picker') @@ -59,7 +59,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen maxMessage = 'This field exceeds the allowed amount of items'; @property({ type: Object, attribute: false }) - public filter: (language: LanguageModel) => boolean = () => true; + public filter: (language: LanguageResponseModel) => boolean = () => true; private _selectedIsoCodes: Array = []; public get selectedIsoCodes(): Array { @@ -79,11 +79,11 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; private _repository = new UmbLanguageRepository(this); - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -132,7 +132,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen }); } - private _removeItem(item: LanguageModel) { + private _removeItem(item: LanguageResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -165,7 +165,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen `; } - private _renderItem(item: LanguageModel) { + private _renderItem(item: LanguageResponseModel) { return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 8778092f1c..165e02f077 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -8,7 +8,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../../media/media/modals/media-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { EntityTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-media-picker') @@ -88,10 +88,10 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; private _repository = new UmbMediaRepository(this); constructor() { @@ -147,7 +147,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) }); } - private _removeItem(item: FolderTreeItemModel) { + private _removeItem(item: FolderTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -177,9 +177,9 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) `; } - private _renderItem(item: FolderTreeItemModel) { + private _renderItem(item: FolderTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + const tempItem = item as FolderTreeItemResponseModel & { isTrashed: boolean }; return html` ; + private _dataTypeObserver?: UmbObserverController; @state() private _value?: unknown; @@ -98,7 +98,7 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { this._dataTypeObserver = this.observe( await this._dataTypeRepository.byKey(dataTypeKey), (dataType) => { - this._dataTypeData = dataType?.data || []; + this._dataTypeData = dataType?.values || []; this._propertyEditorUiAlias = dataType?.propertyEditorUiAlias || undefined; }, 'observeDataType' diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 6baa96b9c7..9d8d713690 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -9,7 +9,7 @@ import { } from '../workspace/workspace-variant/workspace-variant.context'; import { ActiveVariant } from '../workspace/workspace-context/workspace-split-view-manager.class'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentVariantModel } from '@umbraco-cms/backend-api'; +import type { DocumentVariantResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-variant-selector') export class UmbVariantSelectorElement extends UmbLitElement { @@ -50,7 +50,7 @@ export class UmbVariantSelectorElement extends UmbLitElement { alias!: string; @state() - _variants: Array = []; + _variants: Array = []; // TODO: Stop using document context specific ActiveVariant type. @state() @@ -178,12 +178,12 @@ export class UmbVariantSelectorElement extends UmbLitElement { this._variantSelectorIsOpen = false; } - private _switchVariant(variant: DocumentVariantModel) { + private _switchVariant(variant: DocumentVariantResponseModel) { this._variantContext?.switchVariant(variant); this._close(); } - private _openSplitView(variant: DocumentVariantModel) { + private _openSplitView(variant: DocumentVariantResponseModel) { this._variantContext?.openSplitView(variant); this._close(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts index 35cd55ba18..1441bd9fc0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variantable-property/variantable-property.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; -import type { PropertyTypeViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { PropertyTypeResponseModelBaseModel } from '@umbraco-cms/backend-api'; import '../workspace-property/workspace-property.element'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -18,12 +18,12 @@ export class UmbVariantablePropertyElement extends UmbLitElement { `, ]; - private _property?: PropertyTypeViewModelBaseModel | undefined; + private _property?: PropertyTypeResponseModelBaseModel | undefined; @property({ type: Object, attribute: false }) - public get property(): PropertyTypeViewModelBaseModel | undefined { + public get property(): PropertyTypeResponseModelBaseModel | undefined { return this._property; } - public set property(property: PropertyTypeViewModelBaseModel | undefined) { + public set property(property: PropertyTypeResponseModelBaseModel | undefined) { this._property = property; this._updatePropertyVariantId(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 5474e323a9..7f6cf7aa62 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -1,7 +1,7 @@ import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspace-context/workspace-variable-entity-context.interface'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; -import type { DataTypeModel } from '@umbraco-cms/backend-api'; +import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState, StringState, UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbContextConsumerController, UmbContextProviderController } from '@umbraco-cms/context-api'; @@ -12,7 +12,7 @@ export type WorkspacePropertyData = { label?: string; description?: string; value?: ValueType | null; - config?: DataTypeModel['data']; // This could potentially then come from hardcoded JS object and not the DataType store. + config?: DataTypeResponseModel['values']; // This could potentially then come from hardcoded JS object and not the DataType store. }; export class UmbWorkspacePropertyContext { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 634b4a8d7c..e670c5d8e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -11,7 +11,7 @@ import '../../property-actions/shared/property-action-menu/property-action-menu. import '../../../../backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; /** @@ -114,7 +114,7 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { * @default '' */ @property({ type: Object, attribute: false }) - public set config(value: DataTypePropertyModel[]) { + public set config(value: DataTypePropertyPresentationModel[]) { this._propertyContext.setConfig(value); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index c171c79007..08036ec074 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -10,7 +10,7 @@ import { import '../../../../../../shared/collection/dashboards/dashboard-collection.element'; import type { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { FolderTreeItemModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { ManifestWorkspaceViewCollection } from '@umbraco-cms/extensions-registry'; @customElement('umb-workspace-view-collection') @@ -30,7 +30,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { private _workspaceContext?: UmbWorkspaceEntityContextInterface; // TODO: add type for the collection context. - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts index 3a884755fb..a5ad8372e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts @@ -4,7 +4,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { customElement, state } from 'lit/decorators.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; import { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; interface HistoryNode { @@ -184,14 +184,14 @@ export class UmbWorkspaceViewContentInfoElement extends UmbLitElement { @state() private _nodeName = ''; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbWorkspaceEntityContextInterface; private itemsPerPage = 10; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext>('umbWorkspaceContext', (nodeContext) => { + this.consumeContext>('umbWorkspaceContext', (nodeContext) => { this._workspaceContext = nodeContext; this._observeContent(); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index 62c920a95a..08137a4d6f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -7,14 +7,14 @@ import { UMB_NOTIFICATION_CONTEXT_TOKEN, } from '@umbraco-cms/notification'; import { ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; -import type { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { UmbEntityDetailStore } from '@umbraco-cms/store'; // Extend entityType base type?, so we are sure to have parentKey? // TODO: switch to use EntityDetailItem ? if we can have such type? export class UmbEntityWorkspaceManager< StoreType extends UmbEntityDetailStore, - EntityDetailsType extends EntityTreeItemModel = ReturnType + EntityDetailsType extends EntityTreeItemResponseModel = ReturnType > { private _host; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts index 85bfff1251..3229482494 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts @@ -1,13 +1,13 @@ import type { Observable } from 'rxjs'; import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; -import type { ValueViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { ValueModelBaseModel } from '@umbraco-cms/backend-api'; export interface UmbWorkspaceInvariantableEntityContextInterface extends UmbWorkspaceEntityContextInterface { getName(): void; setName(name: string): void; - propertyDataByAlias(alias: string): Observable; + propertyDataByAlias(alias: string): Observable; propertyValueByAlias(alias: string): Observable; getPropertyValue(alias: string): void; setPropertyValue(alias: string, value: unknown): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts index 96a9c72b21..f067de9822 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts @@ -1,8 +1,8 @@ import { UmbDocumentTypeRepository } from '../../../../documents/document-types/repository/document-type.repository'; import { - DocumentTypeModel, - DocumentTypePropertyTypeModel, - PropertyTypeContainerViewModelBaseModel, + DocumentTypeResponseModel, + DocumentTypePropertyTypeResponseModel, + PropertyTypeContainerResponseModelBaseModel, } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; @@ -10,7 +10,7 @@ import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; export type PropertyContainerTypes = 'Group' | 'Tab'; // TODO: get this type from the repository, or use some generic type. -type T = DocumentTypeModel; +type T = DocumentTypeResponseModel; // TODO: make general interface for NodeTypeRepository, to replace UmbDocumentTypeRepository: export class UmbWorkspacePropertyStructureManager { @@ -20,7 +20,7 @@ export class UmbWorkspacePropertyStructureManager([], (x) => x.key); - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.key); constructor(host: UmbControllerHostInterface, typeRepository: R) { this.#host = host; @@ -85,7 +85,7 @@ export class UmbWorkspacePropertyStructureManager { - const props: DocumentTypePropertyTypeModel[] = []; + const props: DocumentTypePropertyTypeResponseModel[] = []; docTypes.forEach((docType) => { docType.properties?.forEach((property) => { if (property.containerKey === containerKey) { @@ -110,7 +110,7 @@ export class UmbWorkspacePropertyStructureManager { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts index 7167156eea..1eb88c1aea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts @@ -2,19 +2,19 @@ import type { Observable } from 'rxjs'; import { UmbVariantId } from '../../../variants/variant-id.class'; import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; import { UmbWorkspaceSplitViewManager } from './workspace-split-view-manager.class'; -import type { ValueViewModelBaseModel, VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; +import type { ValueModelBaseModel, VariantResponseModelBaseModel } from '@umbraco-cms/backend-api'; export interface UmbWorkspaceVariableEntityContextInterface extends UmbWorkspaceEntityContextInterface { - variants: Observable>; + variants: Observable>; splitView: UmbWorkspaceSplitViewManager; getName(variantId?: UmbVariantId): void; setName(name: string, variantId?: UmbVariantId): void; - getVariant(variantId: UmbVariantId): VariantViewModelBaseModel | undefined; + getVariant(variantId: UmbVariantId): VariantResponseModelBaseModel | undefined; - propertyDataByAlias(alias: string, variantId?: UmbVariantId): Observable; + propertyDataByAlias(alias: string, variantId?: UmbVariantId): Observable; propertyValueByAlias(alias: string, variantId?: UmbVariantId): Observable; getPropertyValue(alias: string, variantId?: UmbVariantId): void; setPropertyValue(alias: string, value: unknown, variantId?: UmbVariantId): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts index 1247db88b2..028f6239a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts @@ -4,7 +4,7 @@ import type { UmbInputDocumentPickerElement } from '../../../components/input-do import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../components/input-document-picker/input-document-picker.element'; -import type { DataTypePropertyModel } from '@umbraco-cms/backend-api'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; @customElement('umb-property-editor-ui-document-picker') export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement implements UmbPropertyEditorElement { @@ -19,7 +19,7 @@ export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement imple } @property({ type: Array, attribute: false }) - public set config(config: Array) { + public set config(config: Array) { const validationLimit = config.find((x) => x.alias === 'validationLimit'); this._limitMin = (validationLimit?.value as any).min; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts index 35c6f99794..f1aedc8712 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts @@ -1,8 +1,8 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export interface TemplateTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts index 0d6f39e347..f689c80083 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts @@ -1,14 +1,14 @@ import { v4 as uuid } from 'uuid'; -import { ProblemDetailsModel, TemplateModel, TemplateResource } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, TemplateResponseModel, TemplateResource } from '@umbraco-cms/backend-api'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import type { DataSourceResponse } from '@umbraco-cms/models'; export interface TemplateDetailDataSource { - createScaffold(): Promise>; - get(key: string): Promise>; - insert(template: TemplateModel): Promise; - update(template: TemplateModel): Promise; + createScaffold(): Promise>; + get(key: string): Promise>; + insert(template: TemplateResponseModel): Promise; + update(template: TemplateResponseModel): Promise; delete(key: string): Promise; } @@ -48,7 +48,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour */ async createScaffold() { const error = undefined; - const data: TemplateModel = { + const data: TemplateResponseModel = { $type: '', key: uuid(), name: '', @@ -77,7 +77,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async insert(template: TemplateModel) { + async insert(template: TemplateResponseModel) { const payload = { requestBody: template }; // TODO: fix type mismatch return tryExecuteAndNotify( @@ -92,7 +92,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async update(template: TemplateModel) { + async update(template: TemplateResponseModel) { if (!template.key) { const error: ProblemDetailsModel = { title: 'Template key is missing' }; return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 3c8cf551b1..ceab20906a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -5,11 +5,11 @@ import { UmbTemplateTreeStore, UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN } from './t import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, TemplateModel } from '@umbraco-cms/backend-api'; +import { ProblemDetailsModel, TemplateResponseModel } from '@umbraco-cms/backend-api'; import { UmbDetailRepository } from 'libs/repository/detail-repository.interface'; import { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { #init; #host: UmbControllerHostInterface; @@ -135,7 +135,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailReposi // Could potentially be general methods: - async create(template: TemplateModel) { + async create(template: TemplateResponseModel) { await this.#init; if (!template || !template.key) { @@ -157,7 +157,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailReposi return { error }; } - async save(template: TemplateModel) { + async save(template: TemplateResponseModel) { await this.#init; if (!template || !template.key) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts index 0051164f79..516c846430 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/context-api'; import { ArrayState } from '@umbraco-cms/observable-api'; import { UmbStoreBase } from '@umbraco-cms/store'; -import type { TemplateModel } from '@umbraco-cms/backend-api'; +import type { TemplateResponseModel } from '@umbraco-cms/backend-api'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; /** @@ -11,7 +11,7 @@ import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; * @description - Data Store for Templates */ export class UmbTemplateStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.key); /** * Creates an instance of UmbTemplateStore. @@ -27,7 +27,7 @@ export class UmbTemplateStore extends UmbStoreBase { * @param {Template} template * @memberof UmbTemplateStore */ - append(template: TemplateModel) { + append(template: TemplateResponseModel) { this.#data.append([template]); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index 16886f30de..8677e10898 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -1,11 +1,11 @@ import { UmbTemplateRepository } from '../repository/template.repository'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { createObservablePart, DeepState } from '@umbraco-cms/observable-api'; -import { TemplateModel } from '@umbraco-cms/backend-api'; +import { TemplateResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { - #data = new DeepState(undefined); + #data = new DeepState(undefined); data = this.#data.asObservable(); name = createObservablePart(this.#data, (data) => data?.name); content = createObservablePart(this.#data, (data) => data?.content); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 38b5625580..57136031c7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -4,12 +4,9 @@ import { customElement, state } from 'lit/decorators.js'; import { when } from 'lit-html/directives/when.js'; import { UmbTableConfig, UmbTableColumn, UmbTableItem } from '../../../../backoffice/shared/components/table'; import { UmbDictionaryRepository } from '../../dictionary/repository/dictionary.repository'; -import { - UmbCreateDictionaryModalResult, - UMB_CREATE_DICTIONARY_MODAL_TOKEN, -} from '../../dictionary/entity-actions/create/'; +import { UMB_CREATE_DICTIONARY_MODAL_TOKEN } from '../../dictionary/entity-actions/create/'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DictionaryOverviewModel, LanguageModel } from '@umbraco-cms/backend-api'; +import { DictionaryOverviewResponseModel, LanguageResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbContextConsumerController } from '@umbraco-cms/context-api'; @@ -50,7 +47,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { @state() private _tableItemsFiltered: Array = []; - #dictionaryItems: DictionaryOverviewModel[] = []; + #dictionaryItems: DictionaryOverviewResponseModel[] = []; #repo!: UmbDictionaryRepository; @@ -60,7 +57,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { #tableColumns: Array = []; - #languages: Array = []; + #languages: Array = []; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts index b178a42ac3..4eba5b2679 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts @@ -6,7 +6,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '.'; -import { DictionaryUploadModel } from '@umbraco-cms/backend-api'; +import { UploadDictionaryResponseModel } from '@umbraco-cms/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; @customElement('umb-import-dictionary-modal-layout') @@ -27,7 +27,7 @@ export class UmbImportDictionaryModalLayoutElement extends UmbModalBaseElement< private _form!: HTMLFormElement; @state() - private _uploadedDictionary?: DictionaryUploadModel; + private _uploadedDictionary?: UploadDictionaryResponseModel; @state() private _showUploadView = true; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 8606fa42fe..98fe5572d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -2,7 +2,7 @@ import { DictionaryDetailDataSource } from './dictionary.details.server.data.int import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; import { - DictionaryItemCreateModel, + CreateDictionaryItemRequestModel, DictionaryResource, LanguageResource, ProblemDetailsModel, @@ -80,7 +80,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @memberof UmbDictionaryDetailServerDataSource */ async insert(data: DictionaryDetails) { - const requestBody: DictionaryItemCreateModel = { + const requestBody: CreateDictionaryItemRequestModel = { parentKey: data.parentKey, name: data.name, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index 238702d0bc..df4bb03087 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -1,21 +1,21 @@ import { - DictionaryItemModel, - DictionaryUploadModel, - PagedDictionaryOverviewModel, - PagedLanguageModel, + DictionaryItemResponseModel, + UploadDictionaryResponseModel, + PagedDictionaryOverviewResponseModel, + PagedLanguageResponseModel, } from '@umbraco-cms/backend-api'; import type { DataSourceResponse, DictionaryDetails } from '@umbraco-cms/models'; export interface DictionaryDetailDataSource { - createScaffold(parentKey: string): Promise>; - list(skip?: number, take?: number): Promise>; - get(key: string): Promise>; + createScaffold(parentKey: string): Promise>; + list(skip?: number, take?: number): Promise>; + get(key: string): Promise>; insert(data: DictionaryDetails): Promise; - update(dictionary: DictionaryItemModel): Promise; + update(dictionary: DictionaryItemResponseModel): Promise; delete(key: string): Promise; export(key: string, includeChildren: boolean): Promise>; import(fileName: string, parentKey?: string): Promise>; - upload(formData: FormData): Promise>; + upload(formData: FormData): Promise>; // TODO - temp only - getLanguages(): Promise>; + getLanguages(): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts index 7ca550a636..0fab1050ed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts @@ -7,7 +7,7 @@ import { UUITextareaElement, UUITextareaEvent } from '@umbraco-ui/uui'; import { UmbWorkspaceDictionaryContext } from '../../dictionary-workspace.context'; import { UmbDictionaryRepository } from '../../../repository/dictionary.repository'; import { UmbLitElement } from '@umbraco-cms/element'; -import { DictionaryItemModel, LanguageModel } from '@umbraco-cms/backend-api'; +import { DictionaryItemResponseModel, LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-dictionary-edit') export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { @@ -22,12 +22,12 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { ]; @state() - private _dictionary?: DictionaryItemModel; + private _dictionary?: DictionaryItemResponseModel; #repo!: UmbDictionaryRepository; @state() - private _languages: Array = []; + private _languages: Array = []; #workspaceContext!: UmbWorkspaceDictionaryContext; @@ -49,7 +49,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { }); } - #renderTranslation(language: LanguageModel) { + #renderTranslation(language: LanguageResponseModel) { if (!language.isoCode) return; const translation = this._dictionary?.translations?.find((x) => x.isoCode === language.isoCode); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts index 87d0f3904d..8d8bbc82b6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/culture.data.ts @@ -1,12 +1,12 @@ -import type { CultureModel, PagedCultureModel } from '@umbraco-cms/backend-api'; +import type { CultureReponseModel, PagedCultureReponseModel } from '@umbraco-cms/backend-api'; class UmbCulturesData { - get(): PagedCultureModel { + get(): PagedCultureReponseModel { return { total: culturesMock.length, items: culturesMock }; } } -export const culturesMock: Array = [ +export const culturesMock: Array = [ { name: 'af', englishName: 'Afrikaans', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index fd0b0b01c0..f3d7a0071c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -1,9 +1,9 @@ import { UmbEntityData } from './entity.data'; import { createFolderTreeItem } from './utils'; -import type { FolderTreeItemModel, DataTypeModel } from '@umbraco-cms/backend-api'; +import type { FolderTreeItemResponseModel, DataTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the DataTypeModel -export const data: Array = [ +export const data: Array = [ { $type: 'data-type', type: 'data-type', @@ -12,7 +12,7 @@ export const data: Array = [ name: 'Textstring', propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', - data: [], + values: [], }, { $type: 'data-type', @@ -22,7 +22,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', - data: [ + values: [ { alias: 'maxChars', value: 10, @@ -37,7 +37,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TextArea', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextArea', - data: [], + values: [], }, { $type: 'data-type', @@ -47,7 +47,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'My.PropertyEditorUI.Custom', - data: [], + values: [], }, { $type: 'data-type', @@ -57,7 +57,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ColorPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ColorPicker', - data: [ + values: [ { alias: 'useLabel', value: true, @@ -113,7 +113,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ContentPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DocumentPicker', - data: [ + values: [ { alias: 'validationLimit', value: { min: 2, max: 4 }, @@ -128,7 +128,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ColorPicker.EyeDropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.EyeDropper', - data: [ + values: [ { //showPalette alias: 'palette', @@ -165,7 +165,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultiUrlPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultiUrlPicker', - data: [ + values: [ { alias: 'overlaySize', value: 'small', @@ -196,7 +196,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultiNodeTreePicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TreePicker', - data: [], + values: [], }, { $type: 'data-type', @@ -206,7 +206,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'YYYY-MM-DD', @@ -225,7 +225,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'YYYY-MM-DD HH:mm:ss', @@ -244,7 +244,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', - data: [ + values: [ { alias: 'format', value: 'HH:mm:ss', @@ -263,7 +263,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.EmailAddress', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Email', - data: [], + values: [], }, { $type: 'data-type', @@ -273,7 +273,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MultipleTextString', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultipleTextString', - data: [ + values: [ { alias: 'minNumber', value: 2, @@ -292,7 +292,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.DropDown.Flexible', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Dropdown', - data: [], + values: [], }, { $type: 'data-type', @@ -302,7 +302,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Slider', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Slider', - data: [ + values: [ { alias: 'enableRange', value: true, @@ -337,7 +337,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TrueFalse', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Toggle', - data: [ + values: [ { alias: 'default', value: false, @@ -364,7 +364,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Tags', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Tags', - data: [], + values: [], }, { $type: 'data-type', @@ -374,7 +374,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MarkdownEditor', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MarkdownEditor', - data: [], + values: [], }, { $type: 'data-type', @@ -384,7 +384,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.RadioButtonList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.RadioButtonList', - data: [ + values: [ { alias: 'items', value: { @@ -403,7 +403,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.CheckboxList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CheckboxList', - data: [ + values: [ { alias: 'items', value: { @@ -422,7 +422,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.BlockList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockList', - data: [], + values: [], }, { $type: 'data-type', @@ -432,7 +432,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MediaPicker3', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MediaPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -442,7 +442,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ImageCropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ImageCropper', - data: [], + values: [], }, { $type: 'data-type', @@ -452,7 +452,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.UploadField', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UploadField', - data: [], + values: [], }, { $type: 'data-type', @@ -462,7 +462,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.BlockGrid', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockGrid', - data: [], + values: [], }, { $type: 'data-type', @@ -472,7 +472,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.ListView', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CollectionView', - data: [], + values: [], }, { $type: 'data-type', @@ -482,7 +482,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.IconPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.IconPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -492,7 +492,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.NumberRange', - data: [], + values: [], }, { $type: 'data-type', @@ -502,7 +502,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OrderDirection', - data: [], + values: [], }, { $type: 'data-type', @@ -512,7 +512,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OverlaySize', - data: [], + values: [], }, { $type: 'data-type', @@ -522,7 +522,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.TinyMCE', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE', - data: [], + values: [], }, { $type: 'data-type', @@ -532,7 +532,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Label', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Label', - data: [], + values: [], }, { $type: 'data-type', @@ -542,7 +542,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Integer', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Integer', - data: [], + values: [], }, { $type: 'data-type', @@ -552,7 +552,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.Decimal', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Decimal', - data: [], + values: [], }, { $type: 'data-type', @@ -562,7 +562,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.UserPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UserPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -572,7 +572,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MemberPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberPicker', - data: [], + values: [], }, { $type: 'data-type', @@ -582,7 +582,7 @@ export const data: Array = [ parentKey: null, propertyEditorAlias: 'Umbraco.MemberGroupPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberGroupPicker', - data: [], + values: [], }, ]; @@ -590,22 +590,22 @@ export const data: Array = [ // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDataTypeData extends UmbEntityData { +class UmbDataTypeData extends UmbEntityData { constructor() { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.data.filter((item) => item.parentKey === null); return rootItems.map((item) => createFolderTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.data.filter((item) => item.parentKey === key); return childItems.map((item) => createFolderTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createFolderTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index b73bc7e0a5..761220c11d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; -import type { EntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -55,17 +55,17 @@ class UmbDictionaryData extends UmbEntityData { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.data.filter((item) => item.parentKey === null); return rootItems.map((item) => createEntityTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.data.filter((item) => item.parentKey === key); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 2b25677dfc..522e3ed25f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -1,12 +1,12 @@ import { UmbEntityData } from './entity.data'; import { createDocumentTypeTreeItem } from './utils'; import { - DocumentTypeTreeItemModel, - DocumentTypeModel, + DocumentTypeTreeItemResponseModel, + DocumentTypeResponseModel, ContentTypeCompositionTypeModel, } from '@umbraco-cms/backend-api'; -export const data: Array = [ +export const data: Array = [ { allowedTemplateKeys: [], defaultTemplateKey: null, @@ -891,7 +891,7 @@ export const data: Array = [ }, ]; -export const treeData: Array = [ +export const treeData: Array = [ { $type: 'DocumentTypeTreeItemViewModel', name: 'All property editors document type', @@ -928,24 +928,24 @@ export const treeData: Array = [ // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDocumentTypeData extends UmbEntityData { +class UmbDocumentTypeData extends UmbEntityData { private treeData = treeData; constructor() { super(data); } - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.treeData.filter((item) => item.parentKey === null); return rootItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.treeData.filter((item) => item.parentKey === key); return childItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 8f5b4bfd10..72ed53ea61 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -2,12 +2,12 @@ import { UmbEntityData } from './entity.data'; import { createDocumentTreeItem } from './utils'; import { ContentStateModel, - DocumentModel, - DocumentTreeItemModel, - PagedDocumentTreeItemModel, + DocumentResponseModel, + DocumentTreeItemResponseModel, + PagedDocumentTreeItemResponseModel, } from '@umbraco-cms/backend-api'; -export const data: Array = [ +export const data: Array = [ { urls: [ { @@ -20,204 +20,238 @@ export const data: Array = [ contentTypeKey: 'all-property-editors-document-type-key', values: [ { + $type: '', alias: 'email', culture: null, segment: null, value: null, }, { + $type: '', alias: 'colorPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'contentPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'eyeDropper', culture: null, segment: null, value: null, }, { + $type: '', alias: 'multiUrlPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'multiNodeTreePicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'datePicker', culture: null, segment: null, value: '2023-12-24', }, { + $type: '', alias: 'datePickerTime', culture: null, segment: null, value: '2023-12-24 14:52', }, { + $type: '', alias: 'time', culture: null, segment: null, value: '14:52:00', }, { + $type: '', alias: 'email', culture: null, segment: null, value: null, }, { + $type: '', alias: 'textBox', culture: null, segment: null, value: null, }, { + $type: '', alias: 'dropdown', culture: null, segment: null, value: null, }, { + $type: '', alias: 'textArea', culture: null, segment: null, value: null, }, { + $type: '', alias: 'slider', culture: null, segment: null, value: null, }, { + $type: '', alias: 'toggle', culture: null, segment: null, value: null, }, { + $type: '', alias: 'tags', culture: null, segment: null, value: null, }, { + $type: '', alias: 'markdownEditor', culture: null, segment: null, value: null, }, { + $type: '', alias: 'radioButtonList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'checkboxList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockList', culture: null, segment: null, value: null, }, { + $type: '', alias: 'mediaPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'imageCropper', culture: null, segment: null, value: null, }, { + $type: '', alias: 'uploadField', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockGrid', culture: null, segment: null, value: null, }, { + $type: '', alias: 'blockGrid', culture: null, segment: null, value: null, }, { + $type: '', alias: 'numberRange', culture: null, segment: null, value: null, }, { + $type: '', alias: 'orderDirection', culture: null, segment: null, value: null, }, { + $type: '', alias: 'overlaySize', culture: null, segment: null, value: null, }, { + $type: '', alias: 'label', culture: null, segment: null, value: null, }, { + $type: '', alias: 'integer', culture: null, segment: null, value: null, }, { + $type: '', alias: 'decimal', culture: null, segment: null, value: null, }, { + $type: '', alias: 'memberPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'memberGroupPicker', culture: null, segment: null, value: null, }, { + $type: '', alias: 'userPicker', culture: null, segment: null, @@ -226,6 +260,7 @@ export const data: Array = [ ], variants: [ { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'en-us', @@ -248,60 +283,70 @@ export const data: Array = [ contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { + $type: '', culture: null, segment: null, alias: 'masterText', value: 'i have a master text', }, { + $type: '', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title', }, { + $type: '', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'pÃ¥ master dokument tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + $type: '', culture: 'no-no', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'Norsk pÃ¥ master dokument tab B', }, { + $type: '', culture: 'no-no', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'Norsk denne er under en anden gruppe i tab B', }, { + $type: '', culture: null, segment: null, alias: 'localBlogTabString', @@ -310,6 +355,7 @@ export const data: Array = [ ], variants: [ { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'en-us', @@ -319,6 +365,7 @@ export const data: Array = [ updateDate: '2023-02-06T15:31:51.354764', }, { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'da-dk', @@ -328,6 +375,7 @@ export const data: Array = [ updateDate: '2023-02-06T15:31:51.354764', }, { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'no-no', @@ -345,48 +393,56 @@ export const data: Array = [ contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { + $type: '', culture: null, segment: null, alias: 'masterText', value: 'i have a master text B', }, { + $type: '', culture: null, segment: null, alias: 'pageTitle', value: 'with a page title B', }, { + $type: '', culture: null, segment: null, alias: 'blogPostText', value: 'My first blog post B', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'in the master tab B', }, { + $type: '', culture: 'en-us', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'which is under another group in the tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderMasterTab', value: 'pÃ¥ master dokument tab B', }, { + $type: '', culture: 'da-dk', segment: null, alias: 'blogTextStringUnderGroupUnderMasterTab', value: 'denne er under en anden gruppe i tab B', }, { + $type: '', culture: null, segment: null, alias: 'localBlogTabString', @@ -395,6 +451,7 @@ export const data: Array = [ ], variants: [ { + $type: '', state: ContentStateModel.DRAFT, publishDate: '2023-02-06T15:32:24.957009', culture: 'en-us', @@ -407,7 +464,7 @@ export const data: Array = [ }, ]; -export const treeData: Array = [ +export const treeData: Array = [ { $type: 'DocumentTreeItemViewModel', isProtected: false, @@ -474,28 +531,28 @@ export const treeData: Array = [ // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDocumentData extends UmbEntityData { +class UmbDocumentData extends UmbEntityData { private treeData = treeData; constructor() { super(data); } - getTreeRoot(): PagedDocumentTreeItemModel { + getTreeRoot(): PagedDocumentTreeItemResponseModel { const items = this.treeData.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedDocumentTreeItemModel { + getTreeItemChildren(key: string): PagedDocumentTreeItemResponseModel { const items = this.treeData.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createDocumentTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts index ab0a0ed3e6..bc30b8eacb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/examine.data.ts @@ -1,4 +1,4 @@ -import { HealthStatusModel, IndexModel, PagedIndexModel, SearchResultModel } from '@umbraco-cms/backend-api'; +import { HealthStatusModel, IndexResponseModel, PagedIndexResponseModel, SearchResultResponseModel } from '@umbraco-cms/backend-api'; export function getIndexByName(indexName: string) { return Indexers.find((index) => { @@ -7,11 +7,11 @@ export function getIndexByName(indexName: string) { }); } -export function getSearchResultsMockData(): SearchResultModel[] { +export function getSearchResultsMockData(): SearchResultResponseModel[] { return searchResultMockData; } -export const Indexers: IndexModel[] = [ +export const Indexers: IndexResponseModel[] = [ { name: 'ExternalIndex', canRebuild: true, @@ -71,12 +71,12 @@ export const Indexers: IndexModel[] = [ }, ]; -export const PagedIndexers: PagedIndexModel = { +export const PagedIndexers: PagedIndexResponseModel = { items: Indexers, total: 0, }; -export const searchResultMockData: SearchResultModel[] = [ +export const searchResultMockData: SearchResultResponseModel[] = [ { id: '1', score: 1, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts index ae7bfdac46..b16477292d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts @@ -1,6 +1,6 @@ import { - HealthCheckGroupModel, - HealthCheckGroupWithResultModel, + HealthCheckGroupPresentationModel, + HealthCheckGroupWithResultResponseModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; @@ -12,7 +12,7 @@ export function getGroupWithResultsByName(name: string) { return healthGroups.find((group) => group.name.toLowerCase() === name.toLowerCase()); } -export const healthGroups: Array = [ +export const healthGroups: Array = [ { name: 'Configuration', checks: [ @@ -211,7 +211,7 @@ export const healthGroups: Array { - constructor(data: LanguageModel[]) { +class UmbLanguagesData extends UmbData { + constructor(data: LanguageResponseModel[]) { super(data); } // skip can be number or null - getAll(skip = 0, take = this.data.length): Array { + getAll(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -16,7 +16,7 @@ class UmbLanguagesData extends UmbData { return this.data.find((item) => item.isoCode === key); } - insert(language: LanguageModel) { + insert(language: LanguageResponseModel) { const foundIndex = this.data.findIndex((item) => item.isoCode === language.isoCode); if (foundIndex !== -1) { @@ -26,7 +26,7 @@ class UmbLanguagesData extends UmbData { this.data.push(language); } - save(saveItems: Array) { + save(saveItems: Array) { saveItems.forEach((saveItem) => { const foundIndex = this.data.findIndex((item) => item.isoCode === saveItem.isoCode); if (foundIndex !== -1) { @@ -60,7 +60,7 @@ class UmbLanguagesData extends UmbData { return keys; } - updateData(updateItem: LanguageModel) { + updateData(updateItem: LanguageResponseModel) { const itemIndex = this.data.findIndex((item) => item.isoCode === updateItem.isoCode); const item = this.data[itemIndex]; if (!item) return; @@ -91,7 +91,7 @@ class UmbLanguagesData extends UmbData { } } -export const MockData: Array = [ +export const MockData: Array = [ { name: 'English', isoCode: 'en', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts index b74e755fa9..bf3ddfc0b7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts @@ -1,15 +1,15 @@ import { logs } from './logs.data'; import { UmbData } from './data'; -import { LogMessageModel, LogTemplateModel, SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { LogMessageResponseModel, LogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; // Temp mocked database -class UmbLogviewerSearchesData extends UmbData { - constructor(data: SavedLogSearchModel[]) { +class UmbLogviewerSearchesData extends UmbData { + constructor(data: SavedLogSearchResponseModel[]) { super(data); } // skip can be number or null - getSavedSearches(skip = 0, take = this.data.length): Array { + getSavedSearches(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -18,24 +18,24 @@ class UmbLogviewerSearchesData extends UmbData { } } -class UmbLogviewerTemplatesData extends UmbData { - constructor(data: LogTemplateModel[]) { +class UmbLogviewerTemplatesData extends UmbData { + constructor(data: LogTemplateResponseModel[]) { super(data); } // skip can be number or null - getTemplates(skip = 0, take = this.data.length): Array { + getTemplates(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } } -class UmbLogviewerMessagesData extends UmbData { - constructor(data: LogTemplateModel[]) { +class UmbLogviewerMessagesData extends UmbData { + constructor(data: LogTemplateResponseModel[]) { super(data); } // skip can be number or null - getLogs(skip = 0, take = this.data.length): Array { + getLogs(skip = 0, take = this.data.length): Array { return this.data.slice(skip, take); } @@ -51,7 +51,7 @@ class UmbLogviewerMessagesData extends UmbData { } } -export const savedSearches: Array = [ +export const savedSearches: Array = [ { name: 'Find all logs where the Level is NOT Verbose and NOT Debug', query: "Not(@Level='Verbose') and Not(@Level='Debug')", @@ -98,7 +98,7 @@ export const savedSearches: Array = [ }, ]; -export const messageTemplates: LogTemplateModel[] = [ +export const messageTemplates: LogTemplateResponseModel[] = [ { messageTemplate: 'Create Foreign Key:\n {Sql}', count: 90, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts index 974ec00f50..67c0f25616 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/logs.data.ts @@ -1,4 +1,4 @@ -import { LogLevelModel, LogMessageModel } from '@umbraco-cms/backend-api'; +import { LogLevelModel, LogMessageResponseModel } from '@umbraco-cms/backend-api'; const allLogs = [ { @@ -7309,7 +7309,7 @@ const randomEnumValue = (enumeration: any): LogLevelModel => { return enumeration[enumKey]; }; -export const logs: LogMessageModel[] = allLogs.map((log) => { +export const logs: LogMessageResponseModel[] = allLogs.map((log) => { const randomLevel = randomEnumValue(LogLevelModel); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index e5189fbd01..ea23722ab6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createFolderTreeItem } from './utils'; -import { FolderTreeItemModel, PagedFolderTreeItemModel } from '@umbraco-cms/backend-api'; +import { FolderTreeItemResponseModel, PagedFolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MediaTypeDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -41,21 +41,21 @@ class UmbMediaTypeData extends UmbEntityData { super(data); } - getTreeRoot(): PagedFolderTreeItemModel { + getTreeRoot(): PagedFolderTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedFolderTreeItemModel { + getTreeItemChildren(key: string): PagedFolderTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createFolderTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index e77e6d2691..a4136bab24 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; import { createContentTreeItem } from './utils'; -import { ContentTreeItemModel, PagedContentTreeItemModel } from '@umbraco-cms/backend-api'; +import { ContentTreeItemResponseModel, PagedContentTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MediaDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -207,21 +207,21 @@ class UmbMediaData extends UmbEntityData { super(data); } - getTreeRoot(): PagedContentTreeItemModel { + getTreeRoot(): PagedContentTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedContentTreeItemModel { + getTreeItemChildren(key: string): PagedContentTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key)); return items.map((item) => createContentTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 5e88700348..d1240b9c4c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -1,7 +1,7 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export const data: Array = [ { @@ -25,21 +25,21 @@ class UmbMemberGroupData extends UmbEntityData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index 5220847f6b..71631866af 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -1,6 +1,6 @@ import { UmbData } from './data'; import { createEntityTreeItem } from './utils'; -import { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { MemberTypeDetails } from '@umbraco-cms/models'; export const data: Array = [ @@ -24,21 +24,21 @@ class UmbMemberTypeData extends UmbData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index 2a77411e27..bf617e82c9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -1,7 +1,7 @@ import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import type { MemberDetails } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export const data: Array = [ { @@ -25,21 +25,21 @@ class UmbMemberData extends UmbEntityData { super(data); } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index e7ad3d0c8c..bcb69b3ccc 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -2,16 +2,16 @@ import { v4 as uuid } from 'uuid'; import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; import { - EntityTreeItemModel, - PagedEntityTreeItemModel, - TemplateModel, - TemplateCreateModel, - TemplateScaffoldModel, + EntityTreeItemResponseModel, + PagedEntityTreeItemResponseModel, + TemplateResponseModel, + TemplateModelBaseModel, + TemplateScaffoldResponseModel, } from '@umbraco-cms/backend-api'; -type TemplateDBItem = TemplateModel & EntityTreeItemModel; +type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel; -const createTemplate = (dbItem: TemplateDBItem): TemplateModel => { +const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { return { $type: '', key: dbItem.key, @@ -76,18 +76,18 @@ class UmbTemplateData extends UmbEntityData { super(data); } - getByKey(key: string): TemplateModel | undefined { + getByKey(key: string): TemplateResponseModel | undefined { const item = this.data.find((item) => item.key === key); return item ? createTemplate(item) : undefined; } - getScaffold(masterTemplateAlias: string): TemplateScaffoldModel { + getScaffold(masterTemplateAlias: string): TemplateScaffoldResponseModel { return { content: `Template Scaffold Mock: Layout = ${masterTemplateAlias || null};`, }; } - create(templateData: TemplateCreateModel) { + create(templateData: TemplateModelBaseModel) { const template = { $type: '', key: uuid(), @@ -97,26 +97,26 @@ class UmbTemplateData extends UmbEntityData { return template; } - update(template: TemplateModel) { + update(template: TemplateResponseModel) { this.updateData(template); return template; } - getTreeRoot(): PagedEntityTreeItemModel { + getTreeRoot(): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemModel { + getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { const items = this.data.filter((item) => item.parentKey === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 2b470d3ebc..81dd7be9b9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -1,14 +1,14 @@ import type { - ContentTreeItemModel, - DocumentTreeItemModel, - DocumentTypeTreeItemModel, - EntityTreeItemModel, - FolderTreeItemModel, - DocumentTypeModel, - DocumentModel, + ContentTreeItemResponseModel, + DocumentTreeItemResponseModel, + DocumentTypeTreeItemResponseModel, + EntityTreeItemResponseModel, + FolderTreeItemResponseModel, + DocumentTypeResponseModel, + DocumentResponseModel, } from '@umbraco-cms/backend-api'; -export const createEntityTreeItem = (item: any): EntityTreeItemModel => { +export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => { return { $type: '', name: item.name, @@ -21,7 +21,7 @@ export const createEntityTreeItem = (item: any): EntityTreeItemModel => { }; }; -export const createFolderTreeItem = (item: any): FolderTreeItemModel => { +export const createFolderTreeItem = (item: any): FolderTreeItemResponseModel => { return { ...createEntityTreeItem(item), isFolder: item.isFolder, @@ -29,7 +29,7 @@ export const createFolderTreeItem = (item: any): FolderTreeItemModel => { }; // TODO: remove isTrashed type extension when we have found a solution to trashed items -export const createContentTreeItem = (item: any): ContentTreeItemModel & { isTrashed: boolean } => { +export const createContentTreeItem = (item: any): ContentTreeItemResponseModel & { isTrashed: boolean } => { return { ...createEntityTreeItem(item), noAccess: item.noAccess, @@ -38,7 +38,7 @@ export const createContentTreeItem = (item: any): ContentTreeItemModel & { isTra }; // TODO: remove isTrashed type extension when we have found a solution to trashed items -export const createDocumentTreeItem = (item: DocumentModel): DocumentTreeItemModel & { isTrashed: boolean } => { +export const createDocumentTreeItem = (item: DocumentResponseModel): DocumentTreeItemResponseModel & { isTrashed: boolean } => { return { ...createContentTreeItem(item), /* @@ -51,7 +51,7 @@ export const createDocumentTreeItem = (item: DocumentModel): DocumentTreeItemMod }; }; -export const createDocumentTypeTreeItem = (item: DocumentTypeModel): DocumentTypeTreeItemModel => { +export const createDocumentTypeTreeItem = (item: DocumentTypeResponseModel): DocumentTypeTreeItemResponseModel => { return { ...createFolderTreeItem(item), isElement: item.isElement, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index cba8bd2327..ba47b8ec0b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -1,9 +1,9 @@ import { rest } from 'msw'; import { umbDictionaryData } from '../data/dictionary.data'; -import { DictionaryImportModel, DictionaryOverviewModel } from '@umbraco-cms/backend-api'; +import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backend-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; -const uploadResponse: DictionaryImportModel = { +const uploadResponse: ImportDictionaryRequestModel = { fileName: 'c:/path/to/tempfilename.udt', parentKey: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', }; @@ -31,7 +31,7 @@ const importResponse: DictionaryDetails = { }; // alternate data for dashboard view -const overviewData: Array = [ +const overviewData: Array = [ { name: 'Hello', key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index bc06e3b5b8..39ac4b8f62 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -1,10 +1,10 @@ import { rest } from 'msw'; import { umbDocumentTypeData } from '../data/document-type.data'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -22,7 +22,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json([document])); }), - rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { const data = req.body; if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index 560b50131e..440bfce534 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbDocumentData } from '../data/document.data'; -import type { DocumentModel } from '@umbraco-cms/backend-api'; +import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; // TODO: add schema @@ -35,7 +35,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(items)); }), - rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts index e0e704fa4a..55ffafd837 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/examine-management.handlers.ts @@ -2,14 +2,14 @@ import { rest } from 'msw'; import { searchResultMockData, getIndexByName, PagedIndexers } from '../data/examine.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { IndexModel, PagedIndexModel, PagedSearcherModel, PagedSearchResultModel } from '@umbraco-cms/backend-api'; +import { IndexResponseModel, PagedIndexResponseModel, PagedSearcherResponseModel, PagedSearchResultResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/indexer'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json(PagedIndexers) + ctx.json(PagedIndexers) ); }), @@ -20,7 +20,7 @@ export const handlers = [ const indexFound = getIndexByName(indexName); if (indexFound) { - return res(ctx.status(200), ctx.json(indexFound)); + return res(ctx.status(200), ctx.json(indexFound)); } else { return res(ctx.status(404)); } @@ -43,7 +43,7 @@ export const handlers = [ rest.get(umbracoPath('/searcher'), (_req, res, ctx) => { return res( ctx.status(200), - ctx.json({ + ctx.json({ total: 0, items: [{ name: 'ExternalSearcher' }, { name: 'InternalSearcher' }, { name: 'InternalMemberSearcher' }], }) @@ -61,7 +61,7 @@ export const handlers = [ if (searcherName) { return res( ctx.status(200), - ctx.json({ + ctx.json({ total: 0, items: searchResultMockData, }) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts index 7756158382..ac0378f76a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts @@ -8,11 +8,11 @@ import { } from '../data/health-check.data'; import { - HealthCheckActionModel, - HealthCheckGroupModel, - HealthCheckGroupWithResultModel, - HealthCheckResultModel, - PagedHealthCheckGroupModelBaseModel, + HealthCheckActionRequestModel, + HealthCheckGroupResponseModel, + HealthCheckGroupWithResultResponseModel, + HealthCheckResultResponseModel, + PagedHealthCheckGroupResponseModel, StatusResultTypeModel, } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; @@ -22,7 +22,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ total: 9999, items: healthGroupsWithoutResult }) + ctx.json({ total: 9999, items: healthGroupsWithoutResult }) ); }), @@ -33,7 +33,7 @@ export const handlers = [ const group = getGroupByName(name); if (group) { - return res(ctx.status(200), ctx.json(group)); + return res(ctx.status(200), ctx.json(group)); } else { return res(ctx.status(404)); } @@ -46,14 +46,14 @@ export const handlers = [ const group = getGroupWithResultsByName(name); if (group) { - return res(ctx.status(200), ctx.json(group)); + return res(ctx.status(200), ctx.json(group)); } else { return res(ctx.status(404)); } }), - rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { - const body = await req.json(); + rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { + const body = await req.json(); const healthCheckKey = body.healthCheckKey; // Find the health check based on the healthCheckKey from the healthGroups[].checks const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.key === healthCheckKey); @@ -74,7 +74,7 @@ export const handlers = [ // Respond with a 200 status code ctx.delay(1000), ctx.status(200), - ctx.json(result) + ctx.json(result) ); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts index 3bd73fa492..3f73a4bbb5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/install.handlers.ts @@ -1,8 +1,8 @@ import { rest } from 'msw'; import { - DatabaseInstallModel, - InstallModel, - InstallSettingsModel, + DatabaseInstallResponseModel, + InstallVResponseModel, + InstallSettingsResponseModel, ProblemDetailsModel, TelemetryLevelModel, } from '@umbraco-cms/backend-api'; @@ -13,7 +13,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ user: { minCharLength: 2, minNonAlphaNumericLength: 0, @@ -79,7 +79,7 @@ export const handlers = [ }), rest.post(umbracoPath('/install/validate-database'), async (req, res, ctx) => { - const body = await req.json(); + const body = await req.json(); if (body.name === 'validate') { return res( @@ -99,7 +99,7 @@ export const handlers = [ }), rest.post(umbracoPath('/install/setup'), async (req, res, ctx) => { - const body = await req.json(); + const body = await req.json(); if (body.database?.name === 'fail') { return res( diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts index 153894b174..e9614b68c7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; import { umbLanguagesData } from '../data/languages.data'; -import { LanguageModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; // TODO: add schema @@ -30,7 +30,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(item)); }), - rest.post(umbracoPath('/language'), async (req, res, ctx) => { + rest.post(umbracoPath('/language'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -53,7 +53,7 @@ export const handlers = [ } }), - rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts index 70eabc1d7c..7d22630d9d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbLogviewerData } from '../data/log-viewer.data'; import { umbracoPath } from '@umbraco-cms/utils'; -import { SavedLogSearchModel } from '@umbraco-cms/backend-api'; +import { SavedLogSearchRequestModel } from '@umbraco-cms/backend-api'; export const handlers = [ //#region Searches @@ -30,7 +30,7 @@ export const handlers = [ return res(ctx.delay(), ctx.status(200), ctx.json(item)); }), - rest.post(umbracoPath('/log-viewer/saved-search'), async (req, res, ctx) => { + rest.post(umbracoPath('/log-viewer/saved-search'), async (req, res, ctx) => { return res(ctx.delay(), ctx.status(200)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts index ce5c859bff..113e6195a5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/modelsbuilder.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { ModelsBuilderModel, ModelsModeModel, OutOfDateStatusModel } from '@umbraco-cms/backend-api'; +import { ModelsBuilderResponseModel, ModelsModeModel, OutOfDateStatusResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.post(umbracoPath('/models-builder/build'), async (_req, res, ctx) => { @@ -15,20 +15,20 @@ export const handlers = [ }), rest.get(umbracoPath('/models-builder/dashboard'), async (_req, res, ctx) => { - return res(ctx.status(200), ctx.json(model)); + return res(ctx.status(200), ctx.json(model)); }), rest.get(umbracoPath('/models-builder/status'), async (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({}) + ctx.json({}) ); }), ]; // Mock Data for now -const modelBeforeBuild: ModelsBuilderModel = { +const modelBeforeBuild: ModelsBuilderResponseModel = { mode: ModelsModeModel.IN_MEMORY_AUTO, canGenerate: true, outOfDateModels: true, @@ -49,7 +49,7 @@ at async TransformContext.transform (file:///C:/Users/Umbraco/Documents/Umbraco. trackingOutOfDateModels: true, }; -const modelAfterBuild: ModelsBuilderModel = { +const modelAfterBuild: ModelsBuilderResponseModel = { mode: ModelsModeModel.IN_MEMORY_AUTO, canGenerate: true, outOfDateModels: false, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts index c056cc616a..b56a347048 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts @@ -3,10 +3,10 @@ import { v4 as uuidv4 } from 'uuid'; import { umbracoPath } from '@umbraco-cms/utils'; import { - PackageCreateModel, - PackageDefinitionModel, - PagedPackageDefinitionModel, - PagedPackageMigrationStatusModel, + PackageMigrationStatusResponseModel, + PackageDefinitionResponseModel, + PagedPackageDefinitionResponseModel, + PagedPackageMigrationStatusResponseModel, } from '@umbraco-cms/backend-api'; export const handlers = [ @@ -14,7 +14,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ total: 3, items: [ { @@ -44,7 +44,7 @@ export const handlers = [ // read all return res( ctx.status(200), - ctx.json({ + ctx.json({ total: packageArray.length, items: packageArray, }) @@ -53,10 +53,10 @@ export const handlers = [ rest.post(umbracoPath('/package/created'), async (_req, res, ctx) => { //save - const data: PackageCreateModel = await _req.json(); - const newPackage: PackageDefinitionModel = { ...data, key: uuidv4() }; + const data: PackageMigrationStatusResponseModel = await _req.json(); + const newPackage: PackageDefinitionResponseModel = { ...data, key: uuidv4() }; packageArray.push(newPackage); - return res(ctx.status(200), ctx.json(newPackage)); + return res(ctx.status(200), ctx.json(newPackage)); }), rest.get(umbracoPath('/package/created/:key'), (_req, res, ctx) => { @@ -65,12 +65,12 @@ export const handlers = [ if (!key) return res(ctx.status(404)); const found = packageArray.find((p) => p.key == key); if (!found) return res(ctx.status(404)); - return res(ctx.status(200), ctx.json(found)); + return res(ctx.status(200), ctx.json(found)); }), rest.put(umbracoPath('/package/created/:key'), async (_req, res, ctx) => { //update - const data: PackageDefinitionModel = await _req.json(); + const data: PackageDefinitionResponseModel = await _req.json(); if (!data.key) return; const index = packageArray.findIndex((x) => x.key === data.key); packageArray[index] = data; @@ -93,7 +93,7 @@ export const handlers = [ }), ]; -const packageArray: PackageDefinitionModel[] = [ +const packageArray: PackageDefinitionResponseModel[] = [ { key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', packagePath: undefined, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts index 074a7c6edb..2ed61aadf4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/performance-profiling.handlers.ts @@ -1,14 +1,14 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import type { ProfilingStatusModel } from '@umbraco-cms/backend-api'; +import type { ProfilingStatusResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/profiling/status'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ enabled: true }) + ctx.json({ enabled: true }) ); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts index dc72903041..49b8cd7c4a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts @@ -1,10 +1,10 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; import { - PagedRedirectUrlModel, - RedirectUrlModel, + PagedRedirectUrlResponseModel, + RedirectUrlResponseModel, RedirectStatusModel, - RedirectUrlStatusModel, + RedirectUrlStatusResponseModel, } from '@umbraco-cms/backend-api'; export const handlers = [ @@ -14,35 +14,35 @@ export const handlers = [ const take = parseInt(_req.url.searchParams.get('take') ?? '20', 10); if (filter) { - const filtered: RedirectUrlModel[] = []; + const filtered: RedirectUrlResponseModel[] = []; PagedRedirectUrlData.items.forEach((item) => { if (item.originalUrl?.includes(filter)) filtered.push(item); }); - const filteredPagedData: PagedRedirectUrlModel = { + const filteredPagedData: PagedRedirectUrlResponseModel = { total: filtered.length, items: filtered.slice(skip, skip + take), }; - return res(ctx.status(200), ctx.json(filteredPagedData)); + return res(ctx.status(200), ctx.json(filteredPagedData)); } else { const items = PagedRedirectUrlData.items.slice(skip, skip + take); - const PagedData: PagedRedirectUrlModel = { + const PagedData: PagedRedirectUrlResponseModel = { total: PagedRedirectUrlData.total, items, }; - return res(ctx.status(200), ctx.json(PagedData)); + return res(ctx.status(200), ctx.json(PagedData)); } }), rest.get(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { const key = _req.params.key as string; if (!key) return res(ctx.status(404)); - if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); + if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); const PagedRedirectUrlObject = _getRedirectUrlByKey(key); - return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); + return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), rest.delete(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { @@ -67,10 +67,10 @@ export const handlers = [ // Mock Data -const UrlTracker: RedirectUrlStatusModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; +const UrlTracker: RedirectUrlStatusResponseModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; const _getRedirectUrlByKey = (key: string) => { - const PagedResult: PagedRedirectUrlModel = { + const PagedResult: PagedRedirectUrlResponseModel = { total: 0, items: [], }; @@ -86,14 +86,14 @@ const _getRedirectUrlByKey = (key: string) => { const _deleteRedirectUrlByKey = (key: string) => { const index = RedirectUrlData.findIndex((data) => data.key === key); if (index > -1) RedirectUrlData.splice(index, 1); - const PagedResult: PagedRedirectUrlModel = { + const PagedResult: PagedRedirectUrlResponseModel = { items: RedirectUrlData, total: RedirectUrlData.length, }; return PagedResult; }; -const RedirectUrlData: RedirectUrlModel[] = [ +const RedirectUrlData: RedirectUrlResponseModel[] = [ { key: '1', created: '2022-12-05T13:59:43.6827244', @@ -173,7 +173,7 @@ const RedirectUrlData: RedirectUrlModel[] = [ }, ]; -const PagedRedirectUrlData: PagedRedirectUrlModel = { +const PagedRedirectUrlData: PagedRedirectUrlResponseModel = { total: RedirectUrlData.length, items: RedirectUrlData, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts index 97a80dc6b1..0493ebf2d3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/server.handlers.ts @@ -1,12 +1,12 @@ import { rest } from 'msw'; -import { RuntimeLevelModel, ServerStatusModel, VersionModel } from '@umbraco-cms/backend-api'; +import { RuntimeLevelModel, ServerStatusResponseModel, VersionResponseModel } from '@umbraco-cms/backend-api'; import { umbracoPath } from '@umbraco-cms/utils'; export const serverRunningHandler = rest.get(umbracoPath('/server/status'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.RUN, }) ); @@ -16,7 +16,7 @@ export const serverMustInstallHandler = rest.get(umbracoPath('/server/status'), return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.INSTALL, }) ); @@ -26,7 +26,7 @@ export const serverMustUpgradeHandler = rest.get(umbracoPath('/server/status'), return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ serverStatus: RuntimeLevelModel.UPGRADE, }) ); @@ -36,7 +36,7 @@ export const serverVersionHandler = rest.get(umbracoPath('/server/version'), (_r return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ version: '13.0.0', }) ); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts index b8651b539e..978a5e9c10 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/telemetry.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import { PagedTelemetryModel, TelemetryModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; +import { PagedTelemetryResponseModel, TelemetryResponseModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; let telemetryLevel = TelemetryLevelModel.BASIC; @@ -10,7 +10,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ telemetryLevel, }) ); @@ -20,7 +20,7 @@ export const handlers = [ return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ total: 3, items: [ { telemetryLevel: TelemetryLevelModel.MINIMAL }, @@ -31,8 +31,8 @@ export const handlers = [ ); }), - rest.post(umbracoPath('/telemetry/level'), async (_req, res, ctx) => { - const newLevel = (await _req.json()).telemetryLevel; + rest.post(umbracoPath('/telemetry/level'), async (_req, res, ctx) => { + const newLevel = (await _req.json()).telemetryLevel; if (newLevel) { telemetryLevel = newLevel; return res( diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts index d947764f8c..5a1695cd76 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/upgrade.handlers.ts @@ -1,14 +1,14 @@ import { rest } from 'msw'; import { umbracoPath } from '@umbraco-cms/utils'; -import type { UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import type { UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; export const handlers = [ rest.get(umbracoPath('/upgrade/settings'), (_req, res, ctx) => { return res( // Respond with a 200 status code ctx.status(200), - ctx.json({ + ctx.json({ currentState: '2b20c6e7', newState: '2b20c6e8', oldVersion: '13.0.0', diff --git a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts index cf243a7f8d..ee3969304d 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.element.ts @@ -3,7 +3,7 @@ import { customElement, state } from 'lit/decorators.js'; import { unsafeHTML } from 'lit/directives/unsafe-html.js'; import { UmbInstallerContext, UMB_INSTALLER_CONTEXT_TOKEN } from '../installer.context'; -import { ConsentLevelModel, TelemetryModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; +import { ConsentLevelPresentationModel, TelemetryResponseModel, TelemetryLevelModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-installer-consent') @@ -45,10 +45,10 @@ export class UmbInstallerConsentElement extends UmbLitElement { ]; @state() - private _telemetryLevels: ConsentLevelModel[] = []; + private _telemetryLevels: ConsentLevelPresentationModel[] = []; @state() - private _telemetryFormData?: TelemetryModel['telemetryLevel']; + private _telemetryFormData?: TelemetryResponseModel['telemetryLevel']; private _installerContext?: UmbInstallerContext; diff --git a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts index 40d9cf223c..7507389ceb 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.element.ts @@ -4,8 +4,8 @@ import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbInstallerContext, UMB_INSTALLER_CONTEXT_TOKEN } from '../installer.context'; import { - DatabaseInstallModel, - DatabaseSettingsModel, + DatabaseInstallResponseModel, + DatabaseSettingsPresentationModel, InstallResource, ProblemDetailsModel, } from '@umbraco-cms/backend-api'; @@ -82,16 +82,16 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { private _installButton!: UUIButtonElement; @property({ attribute: false }) - public databaseFormData!: DatabaseInstallModel; + public databaseFormData!: DatabaseInstallResponseModel; @state() private _options: Option[] = []; @state() - private _databases: DatabaseSettingsModel[] = []; + private _databases: DatabaseSettingsPresentationModel[] = []; @state() - private _preConfiguredDatabase?: DatabaseSettingsModel; + private _preConfiguredDatabase?: DatabaseSettingsPresentationModel; @state() private _validationErrorMessage = ''; @@ -151,7 +151,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { value[target.name] = target.checked ?? target.value; // handle boolean and text inputs // TODO: Mark id and providerName as non-optional in schema - const database: DatabaseInstallModel = { + const database: DatabaseInstallResponseModel = { id: '0', providerName: '', ...this._installerContext?.getData().database, @@ -161,7 +161,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { this._setDatabase(database); } - private _setDatabase(database: DatabaseInstallModel) { + private _setDatabase(database: DatabaseInstallResponseModel) { this._installerContext?.appendData({ database }); } @@ -199,7 +199,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { } if (selectedDatabase.requiresConnectionTest) { - const databaseDetails: DatabaseInstallModel = { + const databaseDetails: DatabaseInstallResponseModel = { id, username, password, @@ -221,7 +221,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { } } - const database: DatabaseInstallModel = { + const database: DatabaseInstallResponseModel = { ...this._installerContext?.getData().database, id, username, @@ -397,7 +397,7 @@ export class UmbInstallerDatabaseElement extends UmbLitElement { ${this._renderSettings()} `; - private _renderPreConfiguredDatabase = (database: DatabaseSettingsModel) => html` + private _renderPreConfiguredDatabase = (database: DatabaseSettingsPresentationModel) => html`

    A database has already been pre-configured on the server and will be used:

    Type: ${database.displayName} diff --git a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts index dd2537af89..7df3e7a8b2 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts @@ -7,7 +7,7 @@ import { rest } from 'msw'; import { installerContextProvider } from '../shared/utils.story-helpers'; import type { UmbInstallerDatabaseElement } from './installer-database.element'; -import type { InstallSettingsModel } from '@umbraco-cms/backend-api'; +import type { InstallSettingsResponseModel } from '@umbraco-cms/backend-api'; export default { title: 'Apps/Installer/Steps', component: 'umb-installer-database', @@ -30,7 +30,7 @@ Step3DatabasePreconfigured.parameters = { rest.get('/umbraco/backoffice/install/settings', (_req, res, ctx) => { return res( ctx.status(200), - ctx.json({ + ctx.json({ user: { consentLevels: [], minCharLength: 2, minNonAlphaNumericLength: 2 }, databases: [ { diff --git a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts index d51f3d2c28..5ffa75da16 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts @@ -1,8 +1,8 @@ import { Observable } from 'rxjs'; import { - InstallModel, + InstallVResponseModel, InstallResource, - InstallSettingsModel, + InstallSettingsResponseModel, ProblemDetailsModel, TelemetryLevelModel, } from '@umbraco-cms/backend-api'; @@ -16,7 +16,7 @@ import { ObjectState, NumberState } from '@umbraco-cms/observable-api'; * @class UmbInstallerContext */ export class UmbInstallerContext { - private _data = new ObjectState({ + private _data = new ObjectState({ user: { name: '', email: '', password: '', subscribeToNewsletter: false }, database: { id: '', providerName: '' }, telemetryLevel: TelemetryLevelModel.BASIC, @@ -26,7 +26,7 @@ export class UmbInstallerContext { private _currentStep = new NumberState(1); public readonly currentStep = this._currentStep.asObservable(); - private _settings = new ObjectState(undefined); + private _settings = new ObjectState(undefined); public readonly settings = this._settings.asObservable(); private _installStatus = new ObjectState(null); @@ -90,7 +90,7 @@ export class UmbInstallerContext { * @param {Partial} data * @memberof UmbInstallerContext */ - public appendData(data: Partial): void { + public appendData(data: Partial): void { this._data.next({ ...this.getData(), ...data }); } @@ -100,7 +100,7 @@ export class UmbInstallerContext { * @return {*} {PostInstallRequest} * @memberof UmbInstallerContext */ - public getData(): InstallModel { + public getData(): InstallVResponseModel { return this._data.getValue(); } diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts index 44de67977d..36df7b5171 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader-view.element.ts @@ -1,7 +1,7 @@ import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import { UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; /** * @element umb-upgrader-view @@ -32,7 +32,7 @@ export class UmbUpgraderView extends LitElement { errorMessage = ''; @property({ type: Object, reflect: true }) - settings?: UpgradeSettingsModel; + settings?: UpgradeSettingsResponseModel; private _renderLayout() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts index bd38add924..c520db8565 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts @@ -3,7 +3,7 @@ import './upgrader-view.element'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UpgradeResource, UpgradeSettingsModel } from '@umbraco-cms/backend-api'; +import { UpgradeResource, UpgradeSettingsResponseModel } from '@umbraco-cms/backend-api'; import { tryExecute } from '@umbraco-cms/resources'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -13,7 +13,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-upgrader') export class UmbUpgrader extends UmbLitElement { @state() - private upgradeSettings?: UpgradeSettingsModel; + private upgradeSettings?: UpgradeSettingsResponseModel; @state() private fetching = true; From 3dfaa27d57d2bb62d01f5064216050227b9a895c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 09:22:07 +0100 Subject: [PATCH 125/550] comment --- .../libs/observable-api/observer.controller.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts index cc223e1d48..98b1575241 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts @@ -13,6 +13,7 @@ export class UmbObserverController extends UmbObserver implement this._alias = alias; // Lets check if controller is already here: + // No we don't want this, as multiple different controllers might be looking at the same source. /* if (this._subscriptions.has(source)) { const subscription = this._subscriptions.get(source); From 1f647a0672c7bbe6975d302f0e31b01ec7dc176f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 09:32:15 +0100 Subject: [PATCH 126/550] remove import of context --- .../src/backoffice/documents/documents/workspace/manifests.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 518ff8243d..a8a3adf277 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,4 +1,3 @@ -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'; @@ -14,10 +13,9 @@ const workspace: ManifestWorkspace = { type: 'workspace', alias: 'Umb.Workspace.Document', name: 'Document Workspace', - loader: () => import('./document-workspace.element'), + loader: () => import('./document-workspace-edit.element'), meta: { entityType: 'document', - context: () => import('./document-workspace.context'), }, }; From 47465e870a8cf3683165f98570714815c82dd36a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 09:33:37 +0100 Subject: [PATCH 127/550] don't render routes in umb-workspace element --- .../components/workspace/workspace.element.ts | 94 ++----------------- 1 file changed, 7 insertions(+), 87 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts index b3ab044e53..7d9a4d6bd7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace.element.ts @@ -1,101 +1,21 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; -import { map } from 'rxjs'; -import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbRouteLocation } from '@umbraco-cms/router'; +import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; -export interface UmbWorkspaceEntityElement extends HTMLElement { - manifest: ManifestWorkspace; - location: UmbRouteLocation; -} - @customElement('umb-workspace') export class UmbWorkspaceElement extends UmbLitElement { static styles = [UUITextStyles, css``]; - private _entityType = ''; - @property() - public get entityType() { - return this._entityType; - } - public set entityType(value) { - const oldValue = this._entityType; - this._entityType = value; - this.#observeWorkspace(); - this.requestUpdate('entityType', oldValue); - } - - @state() - _element?: UmbWorkspaceElement; - - @state() - _routes: Array = []; - - async #createRoutes(workspaceManifest: ManifestWorkspace) { - const workspaceContextModule = await workspaceManifest.meta.context?.(); - const workspaceContext = workspaceContextModule ? new workspaceContextModule.default(this) : undefined; - const paths = (await workspaceContext?.getPaths?.()) || []; - - const routes = paths.map((path: any) => { - return { - path: path.path, - component: () => createExtensionElement(workspaceManifest), - setup: (component: Promise, info: IRoutingInfo) => - this.#onRouteSetup(component, info, path, workspaceManifest), - }; - }); - - this._routes = [ - ...routes, - { - path: '**', - component: () => createExtensionElement(workspaceManifest), - setup: (component: Promise, info: IRoutingInfo) => - this.#onRouteSetup(component, info, { name: 'catch-all', params: {} }, workspaceManifest), - }, - ]; - } - - #onRouteSetup( - component: Promise, - info: IRoutingInfo, - path: any, - workspaceManifest: ManifestWorkspace - ) { - component.then((element) => { - element.manifest = workspaceManifest; - const location: UmbRouteLocation = { - name: path.name, - params: info.match.params, - }; - element.location = location; - }); - } - - #observeWorkspace() { - this.observe( - umbExtensionsRegistry - .extensionsOfType('workspace') - .pipe( - map((workspaceManifests) => - workspaceManifests.find((manifest) => manifest.meta.entityType === this.entityType) - ) - ), - async (workspaceManifest) => { - // TODO: add fallback element if we can't find the workspace - if (!workspaceManifest) return; - this.#createRoutes(workspaceManifest); - } - ); - } + @property({ type: String, attribute: 'entity-type' }) + entityType = ''; render() { - if (this._routes.length === 0) return nothing; - return html``; + if (!this.entityType) nothing; + return html` manifest.meta.entityType === this.entityType}>`; } } From 3c9aef06ad70d9e9b92ca72050297d5a770e17fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 09:48:27 +0100 Subject: [PATCH 128/550] correct types --- .../shared/collection/collection.context.ts | 17 ++++---- .../input-document-picker.element.ts | 10 ++--- .../input-language-picker.element.ts | 2 +- .../input-media-picker.element.ts | 10 ++--- .../property-type-based-property.element.ts | 8 +++- .../section-views/section-views.element.ts | 39 ++++++++++++------- .../workspace-property.element.ts | 8 ++-- .../entity-manager-controller.ts | 2 +- .../src/backoffice/themes/theme.context.ts | 14 +++---- 9 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 5335a14efe..ff2b2e6753 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,4 +1,4 @@ -import type { ContentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeStore } from '@umbraco-cms/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/context-api'; @@ -6,10 +6,11 @@ import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { createExtensionClass } from 'libs/extensions-api/create-extension-class.function'; import { UmbTreeRepository } from '@umbraco-cms/repository'; +import { Observable } from 'rxjs'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). export class UmbCollectionContext< - DataType extends ContentTreeItemResponseModel, + DataType extends EntityTreeItemResponseModel = EntityTreeItemResponseModel, StoreType extends UmbTreeStore = UmbTreeStore > { private _host: UmbControllerHostInterface; @@ -19,9 +20,9 @@ export class UmbCollectionContext< #repository?: UmbTreeRepository; private _store?: StoreType; - protected _dataObserver?: UmbObserverController; + protected _dataObserver?: UmbObserverController; - #data = new ArrayState(>[]); + #data = new ArrayState(>[]); public readonly data = this.#data.asObservable(); #selection = new ArrayState(>[]); @@ -123,7 +124,7 @@ export class UmbCollectionContext< const observable = (await this.#repository.requestTreeItemsOf(this._entityKey)).asObservable?.(); if (observable) { - this._dataObserver = new UmbObserverController(this._host, observable, (nodes) => { + this._dataObserver = new UmbObserverController(this._host, observable as Observable, (nodes) => { if (nodes) { this.#data.next(nodes); } @@ -133,7 +134,7 @@ export class UmbCollectionContext< const observable = (await this.#repository.requestRootTreeItems()).asObservable?.(); if (observable) { - this._dataObserver = new UmbObserverController(this._host, observable, (nodes) => { + this._dataObserver = new UmbObserverController(this._host, observable as Observable, (nodes) => { if (nodes) { this.#data.next(nodes); } @@ -174,6 +175,4 @@ export class UmbCollectionContext< } } -export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>( - 'UmbCollectionContext' -); +export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>('UmbCollectionContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index a2a287ab6f..f51dc2af03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -9,7 +9,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTreeItemResponseModel, FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-document-picker') @@ -81,7 +81,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen private _modalContext?: UmbModalContext; private _documentStore?: UmbDocumentTreeStore; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -133,7 +133,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen }); } - private async _removeItem(item: FolderTreeItemResponseModel) { + private async _removeItem(item: EntityTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -158,9 +158,9 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen `; } - private _renderItem(item: FolderTreeItemResponseModel) { + private _renderItem(item: EntityTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemResponseModel & { isTrashed: boolean }; + const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` 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 512cf9d4bd..7372d64a27 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 @@ -83,7 +83,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen private _modalContext?: UmbModalContext; private _repository = new UmbLanguageRepository(this); - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 165e02f077..ef74cc83da 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -8,7 +8,7 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../../media/media/modals/media-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { EntityTreeItemResponseModel, FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-media-picker') @@ -91,7 +91,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) private _items?: Array; private _modalContext?: UmbModalContext; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; private _repository = new UmbMediaRepository(this); constructor() { @@ -147,7 +147,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) }); } - private _removeItem(item: FolderTreeItemResponseModel) { + private _removeItem(item: EntityTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -177,9 +177,9 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) `; } - private _renderItem(item: FolderTreeItemResponseModel) { + private _renderItem(item: EntityTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemResponseModel & { isTrashed: boolean }; + const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` ; + private _dataTypeObserver?: UmbObserverController; @state() private _value?: unknown; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index fe8129400f..ce66e3de28 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -39,7 +39,7 @@ export class UmbSectionViewsElement extends UmbLitElement { private _activeViewPathname?: string; private _sectionContext?: UmbSectionContext; - private _extensionsObserver?: UmbObserverController; + private _extensionsObserver?: UmbObserverController; constructor() { super(); @@ -60,34 +60,43 @@ export class UmbSectionViewsElement extends UmbLitElement { private _observeViews() { if (!this._sectionContext) return; - this.observe(this._sectionContext.alias, (sectionAlias) => { - this._observeExtensions(sectionAlias); - }, 'viewsObserver') + this.observe( + this._sectionContext.alias, + (sectionAlias) => { + this._observeExtensions(sectionAlias); + }, + 'viewsObserver' + ); } private _observeExtensions(sectionAlias?: string) { this._extensionsObserver?.destroy(); - if(sectionAlias) { + if (sectionAlias) { this._extensionsObserver = this.observe( - umbExtensionsRegistry?.extensionsOfType('sectionView').pipe( + umbExtensionsRegistry + ?.extensionsOfType('sectionView') + .pipe( map((views) => views .filter((view) => view.meta.sections.includes(sectionAlias)) .sort((a, b) => b.meta.weight - a.meta.weight) ) - ) ?? of([]) - , - (views) => { - this._views = views; - } + ) ?? of([]), + (views) => { + this._views = views; + } ); } } private _observeActiveView() { - if(this._sectionContext) { - this.observe(this._sectionContext?.activeViewPathname, (pathname) => { - this._activeViewPathname = pathname; - }, 'activeViewPathnameObserver'); + if (this._sectionContext) { + this.observe( + this._sectionContext?.activeViewPathname, + (pathname) => { + this._activeViewPathname = pathname; + }, + 'activeViewPathnameObserver' + ); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index e670c5d8e8..6574b32776 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -2,17 +2,17 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestPropertyEditorUI, ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestPropertyEditorUI } from '@umbraco-cms/models'; import '../../property-actions/shared/property-action-menu/property-action-menu.element'; import '../../../../backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; /** * @element umb-workspace-property @@ -151,10 +151,10 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { private _propertyContext = new UmbWorkspacePropertyContext(this); - private propertyEditorUIObserver?: UmbObserverController; + private propertyEditorUIObserver?: UmbObserverController; private _valueObserver?: UmbObserverController; - private _configObserver?: UmbObserverController; + private _configObserver?: UmbObserverController; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index 08137a4d6f..0fdd21a59e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -20,7 +20,7 @@ export class UmbEntityWorkspaceManager< state = new ObjectState(undefined); - protected _storeSubscription?: UmbObserverController; + protected _storeSubscription?: UmbObserverController; private _notificationContext?: UmbNotificationContext; private _store?: StoreType; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts index 5e246bc46e..9f5f0d36fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts @@ -14,9 +14,9 @@ export class UmbThemeContext { #theme = new StringState('umb-light-theme'); public readonly theme = this.#theme.asObservable(); - private themeSubscription?: UmbObserverController; + private themeSubscription?: UmbObserverController; - #styleElement: HTMLLinkElement| HTMLStyleElement | null = null; + #styleElement: HTMLLinkElement | HTMLStyleElement | null = null; constructor(host: UmbControllerHostInterface) { this._host = host; @@ -43,25 +43,21 @@ export class UmbThemeContext { async (themes) => { this.#styleElement?.remove(); if (themes.length > 0) { - if(themes[0].loader) { - - const styleEl = this.#styleElement = document.createElement('style'); + if (themes[0].loader) { + const styleEl = (this.#styleElement = document.createElement('style')); styleEl.setAttribute('type', 'text/css'); document.head.appendChild(styleEl); const result = await themes[0].loader(); // Checking that this is still our styleElement, it has not been replaced with another theme in between. - if(styleEl === this.#styleElement) { + if (styleEl === this.#styleElement) { (styleEl as any).appendChild(document.createTextNode(result)); } - } else if (themes[0].css) { - this.#styleElement = document.createElement('link'); this.#styleElement.setAttribute('rel', 'stylesheet'); this.#styleElement.setAttribute('href', themes[0].css); document.head.appendChild(this.#styleElement); - } } else { localStorage.removeItem(LOCAL_STORAGE_KEY); From 8e8403fda96e9e8fa8c6b3607e9e2db1835771b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 09:58:33 +0100 Subject: [PATCH 129/550] more tests --- .../libs/observable-api/array-state.test.ts | 110 +++++++++++------- 1 file changed, 67 insertions(+), 43 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts index 3ff159c362..6964402153 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts @@ -2,8 +2,7 @@ import { expect } from '@open-wc/testing'; import { ArrayState } from './array-state'; describe('ArrayState', () => { - - type ObjectType = {key: string, another: string}; + type ObjectType = { key: string; another: string }; type ArrayType = ObjectType[]; let subject: ArrayState; @@ -11,29 +10,30 @@ describe('ArrayState', () => { beforeEach(() => { initialData = [ - {key: '1', another: 'myValue1'}, - {key: '2', another: 'myValue2'}, - {key: '3', another: 'myValue3'} + { key: '1', another: 'myValue1' }, + { key: '2', another: 'myValue2' }, + { key: '3', another: 'myValue3' }, ]; - subject = new ArrayState(initialData, x => x.key); + subject = new ArrayState(initialData, (x) => x.key); }); - it('replays latests, no matter the amount of subscriptions.', (done) => { - + let amountOfCallbacks = 0; const observer = subject.asObservable(); observer.subscribe((value) => { + amountOfCallbacks++; expect(value).to.be.equal(initialData); }); observer.subscribe((value) => { + amountOfCallbacks++; expect(value).to.be.equal(initialData); - done(); + if (amountOfCallbacks === 2) { + done(); + } }); - }); it('remove method, removes the one with the key', (done) => { - const expectedData = [initialData[0], initialData[2]]; subject.remove(['2']); @@ -42,25 +42,21 @@ describe('ArrayState', () => { expect(JSON.stringify(value)).to.be.equal(JSON.stringify(expectedData)); done(); }); - }); it('filter method, removes anything that is not true of the given predicate method', (done) => { - const expectedData = [initialData[0], initialData[2]]; - subject.filter(x => x.key !== '2'); + subject.filter((x) => x.key !== '2'); const observer = subject.asObservable(); observer.subscribe((value) => { expect(JSON.stringify(value)).to.be.equal(JSON.stringify(expectedData)); done(); }); - }); it('add new item via appendOne method.', (done) => { - - const newItem = {key: '4', another: 'myValue4'}; + const newItem = { key: '4', another: 'myValue4' }; subject.appendOne(newItem); const expectedData = [...initialData, newItem]; @@ -71,37 +67,31 @@ describe('ArrayState', () => { expect(value[3].another).to.be.equal(expectedData[3].another); done(); }); - }); - it('getObservablePart for a specific entry of array', (done) => { - - const subObserver = subject.getObservablePart(data => data.find(x => x.key === '2')); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); subObserver.subscribe((entry) => { - if(entry) { + if (entry) { expect(entry.another).to.be.equal(initialData[1].another); done(); } }); - }); - it('getObservablePart returns undefined if item does not exist', (done) => { - let amountOfCallbacks = 0; - const newItem = {key: '4', another: 'myValue4'}; + const newItem = { key: '4', another: 'myValue4' }; - const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === newItem.key)); subObserver.subscribe((entry) => { amountOfCallbacks++; - if(amountOfCallbacks === 1) { - expect(entry).to.be.equal(undefined);// First callback should give null, cause we didn't have this entry when the subscription was made. + if (amountOfCallbacks === 1) { + expect(entry).to.be.equal(undefined); // First callback should give null, cause we didn't have this entry when the subscription was made. } - if(amountOfCallbacks === 2) { - expect(entry).to.be.equal(newItem);// Second callback should give us the right data: - if(entry) { + if (amountOfCallbacks === 2) { + expect(entry).to.be.equal(newItem); // Second callback should give us the right data: + if (entry) { expect(entry.another).to.be.equal(newItem.another); done(); } @@ -109,13 +99,10 @@ describe('ArrayState', () => { }); subject.appendOne(newItem); - }); - it('asObservable returns the replaced item', (done) => { - - const newItem = {key: '2', another: 'myValue4'}; + const newItem = { key: '2', another: 'myValue4' }; subject.appendOne(newItem); const expectedData = [initialData[0], newItem, initialData[2]]; @@ -126,24 +113,61 @@ describe('ArrayState', () => { expect(value[1].another).to.be.equal(newItem.another); done(); }); - }); it('getObservablePart returns the replaced item', (done) => { - - const newItem = {key: '2', another: 'myValue4'}; + const newItem = { key: '2', another: 'myValue4' }; subject.appendOne(newItem); - const subObserver = subject.getObservablePart(data => data.find(x => x.key === newItem.key)); + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === newItem.key)); subObserver.subscribe((entry) => { - expect(entry).to.be.equal(newItem);// Second callback should give us the right data: - if(entry) { + expect(entry).to.be.equal(newItem); // Second callback should give us the right data: + if (entry) { expect(entry.another).to.be.equal(newItem.another); done(); } }); - }); + it('getObservablePart replays existing data to any amount of subscribers.', (done) => { + let amountOfCallbacks = 0; + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + } + }); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + if (amountOfCallbacks === 2) { + done(); + } + } + }); + }); + + it('getObservablePart replays existing data to any amount of subscribers.', (done) => { + let amountOfCallbacks = 0; + + const subObserver = subject.getObservablePart((data) => data.find((x) => x.key === '2')); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + } + }); + subObserver.subscribe((entry) => { + if (entry) { + amountOfCallbacks++; + expect(entry.another).to.be.equal(initialData[1].another); + if (amountOfCallbacks === 2) { + done(); + } + } + }); + }); }); From e17d749385abf68f6edeef08cda8386048f0f598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 09:59:11 +0100 Subject: [PATCH 130/550] lint fixes --- .../src/backoffice/shared/collection/collection.context.ts | 2 +- .../components/workspace-property/workspace-property.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index ff2b2e6753..164cbdee97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,3 +1,4 @@ +import { Observable } from 'rxjs'; import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; import type { UmbTreeStore } from '@umbraco-cms/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -6,7 +7,6 @@ import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { createExtensionClass } from 'libs/extensions-api/create-extension-class.function'; import { UmbTreeRepository } from '@umbraco-cms/repository'; -import { Observable } from 'rxjs'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). export class UmbCollectionContext< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 6574b32776..f1be387b72 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import type { ManifestPropertyEditorUI } from '@umbraco-cms/models'; From d4c7f6288c11fa5fc4e3e1b6dd02c34e4e91d298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 09:59:29 +0100 Subject: [PATCH 131/550] fix import order --- .../components/workspace-property/workspace-property.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index f1be387b72..6574b32776 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import type { ManifestPropertyEditorUI } from '@umbraco-cms/models'; From bb6012608aa090d13cdacc380491bc6792a7e34a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 10:19:46 +0100 Subject: [PATCH 132/550] ensure conditions is based on same type, for future progress on the matter. --- .../libs/extensions-registry/collection-view.models.ts | 5 ++--- .../libs/extensions-registry/dashboard.models.ts | 5 ++--- .../libs/extensions-registry/entity-bulk-action.models.ts | 5 ++--- .../libs/extensions-registry/models.ts | 4 ++++ .../libs/extensions-registry/property-action.models.ts | 5 ++--- .../libs/extensions-registry/section-sidebar-app.models.ts | 2 +- .../libs/extensions-registry/section-view.models.ts | 5 ++--- .../workspace-view-collection.models.ts | 7 ++++--- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts index 9a94a03c65..2eb599c1b8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/collection-view.models.ts @@ -1,9 +1,8 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestCollectionView extends ManifestElement { +export interface ManifestCollectionView extends ManifestElement, ManifestWithConditions { type: 'collectionView'; meta: MetaCollectionView; - conditions: ConditionsCollectionView; } export interface MetaCollectionView { diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts index d4803e5c97..cf40a2748c 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/dashboard.models.ts @@ -1,9 +1,8 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestDashboard extends ManifestElement { +export interface ManifestDashboard extends ManifestElement, ManifestWithConditions { type: 'dashboard'; meta: MetaDashboard; - conditions: ConditionsDashboard; } export interface MetaDashboard { diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts index b2e8900754..b7bd23a997 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entity-bulk-action.models.ts @@ -1,9 +1,8 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestEntityBulkAction extends ManifestElement { +export interface ManifestEntityBulkAction extends ManifestElement, ManifestWithConditions { type: 'entityBulkAction'; meta: MetaEntityBulkAction; - conditions: ConditionsEntityBulkAction; } export interface MetaEntityBulkAction { 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 b77b89de5e..4655df55d8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -100,6 +100,10 @@ export interface ManifestBase { weight?: number; } +export interface ManifestWithConditions { + conditions: ConditionsType; +} + export interface ManifestWithLoader extends ManifestBase { loader?: () => Promise; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts index 26148f2da9..8c98a0da0d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/property-action.models.ts @@ -1,8 +1,7 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestPropertyAction extends ManifestElement { +export interface ManifestPropertyAction extends ManifestElement, ManifestWithConditions { type: 'propertyAction'; - conditions: ConditionsPropertyAction; } export interface ConditionsPropertyAction { 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 f4f6848d02..5b188b3aa2 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 @@ -10,7 +10,7 @@ export interface ConditionsSectionSidebarApp { } // TODO: this is a temp solution until we implement kinds -export interface ManifestMenuSectionSidebarApp extends ManifestElement { +export interface ManifestMenuSectionSidebarApp extends Omit { type: 'menuSectionSidebarApp'; meta: MetaMenuSectionSidebarApp; conditions: ConditionsSectionSidebarApp; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts index 59f08909cc..5bd892e818 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/section-view.models.ts @@ -1,9 +1,8 @@ -import type { ManifestElement } from './models'; +import type { ManifestElement, ManifestWithConditions } from './models'; -export interface ManifestSectionView extends ManifestElement { +export interface ManifestSectionView extends ManifestElement, ManifestWithConditions { type: 'sectionView'; meta: MetaSectionView; - conditions: ConditionsSectionView; } export interface MetaSectionView { diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts index 908aa3f699..309a2af11b 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/workspace-view-collection.models.ts @@ -1,9 +1,10 @@ -import type { ManifestBase } from './models'; +import type { ManifestBase, ManifestWithConditions } from './models'; -export interface ManifestWorkspaceViewCollection extends ManifestBase { +export interface ManifestWorkspaceViewCollection + extends ManifestBase, + ManifestWithConditions { type: 'workspaceViewCollection'; meta: MetaEditorViewCollection; - conditions: ConditionsEditorViewCollection; } // TODO: Get rid of store alias, when we are done migrating to repositories(remember to enforce repositoryAlias): From e8e2e8d41461ae47395ac2d548abe0d6148b7a95 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 10:26:44 +0100 Subject: [PATCH 133/550] move routes into workspace element --- .../document-workspace-edit.element.ts | 144 ++++++++++++++ .../workspace/document-workspace.context.ts | 11 -- .../workspace/document-workspace.element.ts | 177 +++--------------- .../workspace/document-workspace.stories.ts | 5 +- .../workspace/document-workspace.test.ts | 9 - .../documents/workspace/manifests.ts | 2 +- 6 files changed, 177 insertions(+), 171 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts new file mode 100644 index 0000000000..34a079562b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -0,0 +1,144 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { IRoute, IRoutingInfo } from 'router-slot'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import { UmbVariantId } from '../../../shared/variants/variant-id.class'; +import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; +import { UmbDocumentWorkspaceContext } from './document-workspace.context'; +import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; +import { UmbLitElement } from '@umbraco-cms/element'; +import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; +import { VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; + +@customElement('umb-document-workspace-edit') +export class UmbDocumentWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + //private _defaultVariant?: VariantViewModelBaseModel; + private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); + + @state() + _unique?: string; + + @state() + _routes?: Array; + + @state() + _availableVariants: Array = []; + + @state() + _workspaceSplitViews: Array = []; + + #workspaceContext?: UmbDocumentWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance: UmbDocumentWorkspaceContext) => { + this.#workspaceContext = instance; + this.#observeVariants(); + this.#observeSplitViews(); + }); + } + + #observeVariants() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.variants, (variants) => { + this._availableVariants = variants; + this._generateRoutes(); + }); + } + + #observeSplitViews() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.splitView.activeVariantsInfo, (variants) => { + this._workspaceSplitViews = variants; + }); + } + + private _handleVariantFolderPart(index: number, folderPart: string) { + const variantSplit = folderPart.split('_'); + const culture = variantSplit[0]; + const segment = variantSplit[1]; + this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment); + } + + private _generateRoutes() { + if (!this._availableVariants || this._availableVariants.length === 0) return; + + // Generate split view routes for all available routes + const routes: Array = []; + + // Split view routes: + this._availableVariants.forEach((variantA) => { + this._availableVariants.forEach((variantB) => { + routes.push({ + path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), + //component: () => import('./document-workspace-split-view.element'), + component: this.splitViewElement, + setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + // Set split view/active info.. + const variantSplit = info.match.fragments.consumed.split('_&_'); + variantSplit.forEach((part, index) => { + this._handleVariantFolderPart(index, part); + }); + }, + }); + }); + }); + + // Single view: + this._availableVariants.forEach((variant) => { + routes.push({ + path: new UmbVariantId(variant).toString(), + //component: () => import('./document-workspace-split-view.element'), + component: this.splitViewElement, + setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + // cause we might come from a split-view, we need to reset index 1. + this.#workspaceContext?.splitView.removeActiveVariant(1); + this._handleVariantFolderPart(0, info.match.fragments.consumed); + }, + }); + }); + + if (routes.length !== 0) { + // Using first single view as the default route for now (hence the math below): + routes.push({ + path: '**', + redirectTo: routes[this._availableVariants.length * this._availableVariants.length]?.path, + }); + } + + this._routes = routes; + } + + private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { + this.#workspaceContext?.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); + }; + + render() { + return this._routes + ? html`${this.splitViewElement}` + : ''; + } +} + +export default UmbDocumentWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-workspace-edit': UmbDocumentWorkspaceEditElement; + } +} 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 a8e5965147..63d78083d2 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 @@ -67,17 +67,6 @@ export class UmbDocumentWorkspaceContext return data || undefined; } - async getPaths() { - return [ - { - path: 'edit/:key', - }, - { - path: 'create/:parentKey/:documentTypeKey', - }, - ]; - } - getData() { return this.#draft.getValue() || {}; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 609d9d38c0..d51b7ae609 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -1,159 +1,42 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; +import { html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbRouterSlotInitEvent, UmbRouteLocation } from '@umbraco-cms/router'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UmbVariantId } from '../../../shared/variants/variant-id.class'; -import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; -import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; import { UmbLitElement } from '@umbraco-cms/element'; -import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; -import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; + +import './document-workspace-edit.element'; @customElement('umb-document-workspace') -export class UmbDocumentWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } - `, +export class UmbDocumentWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; + + #workspaceContext = new UmbDocumentWorkspaceContext(this); + #element = document.createElement('umb-document-workspace-edit'); + + @state() + _routes: IRoute[] = [ + { + path: 'create/:parentKey/:documentTypeKey', + component: () => this.#element, + setup: async (component: HTMLElement, info: IRoutingInfo) => { + const parentKey = info.match.params.parentKey; + const documentTypeKey = info.match.params.documentTypeKey; + this.#workspaceContext.createScaffold(documentTypeKey); + }, + }, + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - //private _defaultVariant?: VariantViewModelBaseModel; - private splitViewElement = new UmbDocumentWorkspaceSplitViewElement(); - - @property() - manifest?: ManifestWorkspace; - - @property() - location?: UmbRouteLocation; - - @state() - _unique?: string; - - @state() - _routes?: Array; - - @state() - _availableVariants: Array = []; - - @state() - _workspaceSplitViews: Array = []; - - #workspaceContext?: UmbDocumentWorkspaceContext; - - constructor() { - super(); - - this.consumeContext('umbWorkspaceContext', (instance: UmbDocumentWorkspaceContext) => { - this.#workspaceContext = instance; - this.#observeVariants(); - this.#observeSplitViews(); - this.#init(); - }); - } - - #observeVariants() { - if (!this.#workspaceContext) return; - this.observe(this.#workspaceContext.variants, (variants) => { - this._availableVariants = variants; - this._generateRoutes(); - }); - } - - #observeSplitViews() { - if (!this.#workspaceContext) return; - this.observe(this.#workspaceContext.splitView.activeVariantsInfo, (variants) => { - this._workspaceSplitViews = variants; - }); - } - - #init() { - const parentKey = this.location?.params?.parentKey; - const documentTypeKey = this.location?.params.documentTypeKey; - const key = this.location?.params?.key; - - // TODO: implement actions "events" and show loading state - if (parentKey !== undefined && documentTypeKey) { - this.#workspaceContext?.createScaffold(documentTypeKey); - } else if (key) { - this.#workspaceContext?.load(key); - } - } - - private _handleVariantFolderPart(index: number, folderPart: string) { - const variantSplit = folderPart.split('_'); - const culture = variantSplit[0]; - const segment = variantSplit[1]; - this.#workspaceContext?.splitView.setActiveVariant(index, culture, segment); - } - - private _generateRoutes() { - if (!this._availableVariants || this._availableVariants.length === 0) return; - - // Generate split view routes for all available routes - const routes: Array = []; - - // Split view routes: - this._availableVariants.forEach((variantA) => { - this._availableVariants.forEach((variantB) => { - routes.push({ - path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), - //component: () => import('./document-workspace-split-view.element'), - component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { - // Set split view/active info.. - const variantSplit = info.match.fragments.consumed.split('_&_'); - variantSplit.forEach((part, index) => { - this._handleVariantFolderPart(index, part); - }); - }, - }); - }); - }); - - // Single view: - this._availableVariants.forEach((variant) => { - routes.push({ - path: new UmbVariantId(variant).toString(), - //component: () => import('./document-workspace-split-view.element'), - component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { - // cause we might come from a split-view, we need to reset index 1. - this.#workspaceContext?.splitView.removeActiveVariant(1); - this._handleVariantFolderPart(0, info.match.fragments.consumed); - }, - }); - }); - - if (routes.length !== 0) { - // Using first single view as the default route for now (hence the math below): - routes.push({ - path: '**', - redirectTo: routes[this._availableVariants.length * this._availableVariants.length]?.path, - }); - } - - this._routes = routes; - } - - private _gotWorkspaceRoute = (e: UmbRouterSlotInitEvent) => { - this.#workspaceContext?.splitView.setWorkspaceRoute(e.target.absoluteRouterPath); - }; - render() { - return this._routes - ? html`${this.splitViewElement}` - : ''; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts index 8475de493d..ce3a24444b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts @@ -1,7 +1,6 @@ -import './document-workspace.element'; +import './document-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; -import { data as documentNodes } from '../../../../core/mocks/data/document.data'; import type { UmbDocumentWorkspaceElement } from './document-workspace.element'; export default { @@ -11,5 +10,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts index 3849929e42..99dbc4d512 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts @@ -17,13 +17,4 @@ describe('UmbDocumentWorkspaceElement', () => { // TODO: should we use shadowDom here? await expect(element).to.be.accessible(defaultA11yConfig); }); - - describe('methods', () => { - it('has a load method', () => { - expect(element).to.have.property('load').that.is.a('function'); - }); - it('has a create method', () => { - expect(element).to.have.property('create').that.is.a('function'); - }); - }); }); 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 a8a3adf277..f8fa99081a 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 @@ -13,7 +13,7 @@ const workspace: ManifestWorkspace = { type: 'workspace', alias: 'Umb.Workspace.Document', name: 'Document Workspace', - loader: () => import('./document-workspace-edit.element'), + loader: () => import('./document-workspace.element'), meta: { entityType: 'document', }, From b991a3a5edaa44ad4996154b359125d535d4679b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 10:40:04 +0100 Subject: [PATCH 134/550] add jsDocs --- .../backoffice/shared/components/section/section.element.ts | 5 +++++ 1 file changed, 5 insertions(+) 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 c66880ec0e..3548abb088 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 @@ -13,6 +13,11 @@ import './section-sidebar-menu/section-sidebar-menu.element'; import './section-views/section-views.element'; import '../../../settings/languages/app-language-select/app-language-select.element'; +/** + * @export + * @class UmbSectionElement + * @description - Element hosting sections and section navigation. + */ @customElement('umb-section') export class UmbSectionElement extends UmbLitElement { static styles = [ From 2292d993e3d11a9b2804f9ce96850929c4824079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 11:31:36 +0100 Subject: [PATCH 135/550] fix paths of section views --- .../section-views/section-views.element.ts | 34 +++++-------------- .../components/section/section.context.ts | 8 ----- .../components/section/section.element.ts | 22 ++++++++++-- 3 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 42d2f0cbd5..6f80c1f93d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; import type { ManifestSectionView } from '@umbraco-cms/models'; @@ -32,11 +32,11 @@ export class UmbSectionViewsElement extends UmbLitElement { @state() private _views: Array = []; - @state() - private _routerFolder = ''; + @property() + private routerPath?: string; - @state() - private _activeViewPathname?: string; + @property() + private activePath?: string; private _sectionContext?: UmbSectionContext; private _extensionsObserver?: UmbObserverController; @@ -47,16 +47,9 @@ export class UmbSectionViewsElement extends UmbLitElement { this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { this._sectionContext = sectionContext; this._observeViews(); - this._observeActiveView(); }); } - connectedCallback(): void { - super.connectedCallback(); - /* TODO: find a way to construct absolute urls */ - this._routerFolder = window.location.pathname.split('/view')[0]; - } - private _observeViews() { if (!this._sectionContext) return; @@ -82,18 +75,6 @@ export class UmbSectionViewsElement extends UmbLitElement { } } - private _observeActiveView() { - if (this._sectionContext) { - this.observe( - this._sectionContext?.activeViewPathname, - (pathname) => { - this._activeViewPathname = pathname; - }, - 'activeViewPathnameObserver' - ); - } - } - render() { return html` ${this._views.length > 0 ? html`

    ` : nothing} `; } @@ -107,8 +88,9 @@ export class UmbSectionViewsElement extends UmbLitElement { (view: ManifestSectionView) => html` + href="${this.routerPath}/view/${view.meta.pathname}" + data-active=${this.activePath} + ?active="${this.activePath === 'view/' + view.meta.pathname}"> ${view.meta.label || view.name} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index b46b979b94..2c4e8a4068 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -22,10 +22,6 @@ export class UmbSectionContext { #activeTreeItem = new ObjectState(undefined); public readonly activeTreeItem = this.#activeTreeItem.asObservable(); - // TODO: what is the best context to put this in? - #activeViewPathname = new StringState(undefined); - public readonly activeViewPathname = this.#activeViewPathname.asObservable(); - constructor(manifest: ManifestSection) { this.setManifest(manifest); } @@ -46,10 +42,6 @@ export class UmbSectionContext { public setActiveTreeItem(item?: ActiveTreeItemType) { this.#activeTreeItem.next(item); } - - public setActiveView(view?: ManifestSectionView) { - this.#activeViewPathname.next(view?.meta.pathname); - } } export const UMB_SECTION_CONTEXT_TOKEN = new UmbContextToken('UmbSectionContext'); 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 3548abb088..66f81f33d1 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 @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; +import type { UmbRouterSlotChangeEvent, IRoutingInfo, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; -import type { UmbRouterSlotChangeEvent, IRoutingInfo } from '@umbraco-cms/router'; import type { ManifestSectionView, ManifestWorkspace, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -43,6 +43,11 @@ export class UmbSectionElement extends UmbLitElement { @state() private _routes?: Array; + @state() + private _routerPath?: string; + @state() + private _activePath?: string; + @state() private _menus?: Array; @@ -187,12 +192,14 @@ export class UmbSectionElement extends UmbLitElement { } } + /* private _onRouteChange = (event: UmbRouterSlotChangeEvent) => { const currentPath = event.target.localActiveViewPath; const view = this._views?.find((view) => 'view/' + view.meta.pathname === currentPath); if (!view) return; this._sectionContext?.setActiveView(view); }; + */ render() { return html` @@ -214,12 +221,21 @@ export class UmbSectionElement extends UmbLitElement { ` : nothing} - ${this._views && this._views.length > 0 ? html`` : nothing} + ${this._views && this._views.length > 0 + ? html`` + : nothing} ${this._routes && this._routes.length > 0 ? html`` + @init=${(event: UmbRouterSlotInitEvent) => { + this._routerPath = event.target.absoluteRouterPath; + }} + @change=${(event: UmbRouterSlotChangeEvent) => { + this._activePath = event.target.localActiveViewPath || ''; + }}>` : nothing} From aac72b270cfa67e2b37d0b501d8fac59b4a62163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 11:31:47 +0100 Subject: [PATCH 136/550] remove test attr --- .../components/section/section-views/section-views.element.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 6f80c1f93d..76b3c4e96d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -89,7 +89,6 @@ export class UmbSectionViewsElement extends UmbLitElement { ${view.meta.label || view.name} From 15088a4c626e05730d564195232bc2be75a3bc4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 11:33:00 +0100 Subject: [PATCH 137/550] fix lints --- .../src/backoffice/shared/components/section/section.element.ts | 2 +- .../components/workspace-property/workspace-property.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 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 66f81f33d1..02c6151310 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 @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import type { UmbRouterSlotChangeEvent, IRoutingInfo, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { UmbWorkspaceEntityElement } from '../workspace/workspace-entity-element.interface'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; +import type { UmbRouterSlotChangeEvent, IRoutingInfo, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import type { ManifestSectionView, ManifestWorkspace, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 6574b32776..f1be387b72 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; -import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; +import { UmbPropertyEditorElement } from '@umbraco-cms/property-editor'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import type { ManifestPropertyEditorUI } from '@umbraco-cms/models'; From ad129fceb1764fbab6a07911efc20efd0635a5fc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 12:13:02 +0100 Subject: [PATCH 138/550] update models --- .../documents/documents/repository/sources/index.ts | 2 +- .../workspace/language/language-workspace-edit.element.ts | 4 ++-- .../src/core/mocks/data/document.data.ts | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index bdc302f563..8bef100f5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { DocumentResponseModel } from '@umbraco-cms/backend-api'; +import { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts index 90d6b010bb..9128a4c69a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -5,7 +5,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageModel } from '@umbraco-cms/backend-api'; +import { LanguageResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-language-workspace-thingy') export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { @@ -27,7 +27,7 @@ export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { #workspaceContext?: UmbLanguageWorkspaceContext; @state() - _language?: LanguageModel; + _language?: LanguageResponseModel; constructor() { super(); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 34ccdb1b2f..f239f430f7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -469,6 +469,7 @@ export const data: Array = [ contentTypeKey: 'simple-document-type-key', variants: [ { + $type: '', state: ContentStateModel.DRAFT, publishDate: '2023-02-06T15:32:24.957009', culture: 'en-us', From 1f3b04acafd9ad26739b3617e50ee7c51235e4a1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 12:23:26 +0100 Subject: [PATCH 139/550] use updated backend model names --- .../allowed-document-types-modal.element.ts | 4 ++-- .../documents/documents/repository/sources/index.ts | 4 ++-- .../documents/workspace/document-workspace-edit.element.ts | 4 ++-- .../src/core/mocks/data/document-type.data.ts | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index b0533342b8..c515f6007f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -5,7 +5,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; import { UmbModalBaseElement } from '@umbraco-cms/modal'; -import { DocumentTypeTreeItemModel } from '@umbraco-cms/backend-api'; +import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-allowed-document-types-modal') export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< @@ -17,7 +17,7 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< #documentTypeRepository = new UmbDocumentTypeRepository(this); @state() - private _allowedDocumentTypes: DocumentTypeTreeItemModel[] = []; + private _allowedDocumentTypes: DocumentTypeTreeItemResponseModel[] = []; async firstUpdated() { // TODO: show error diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index 8bef100f5b..dc218ee4aa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,8 +1,8 @@ -import { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; +import { DocumentResponseModel } from '@umbraco-cms/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; export interface UmbDocumentDataSource extends RepositoryDetailDataSource { - createScaffold(documentTypeKey: string): Promise; + createScaffold(documentTypeKey: string): Promise; trash(key: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts index 34a079562b..8853cce91a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -9,7 +9,7 @@ import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { VariantViewModelBaseModel } from '@umbraco-cms/backend-api'; +import { VariantModelBaseModel } from '@umbraco-cms/backend-api'; @customElement('umb-document-workspace-edit') export class UmbDocumentWorkspaceEditElement extends UmbLitElement { @@ -34,7 +34,7 @@ export class UmbDocumentWorkspaceEditElement extends UmbLitElement { _routes?: Array; @state() - _availableVariants: Array = []; + _availableVariants: Array = []; @state() _workspaceSplitViews: Array = []; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 2b529d846a..c366f64703 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -1092,7 +1092,7 @@ class UmbDocumentTypeData extends UmbEntityData { return items.map((item) => createDocumentTypeTreeItem(item)); } - getAllowedTypesOf(key: string): Array { + getAllowedTypesOf(key: string): Array { const documentType = this.getByKey(key); const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.key) ?? []; const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.key ?? '')); From 6c5196bc0be53cee770b18782a927a2e16e46d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 12:55:50 +0100 Subject: [PATCH 140/550] UmbPropertyEditorModalRegistrationController --- .../input-multi-url-picker.element.ts | 55 ++++++++++++-- .../src/core/mocks/data/document-type.data.ts | 2 +- .../src/core/router/index.ts | 1 + .../router/modal-registration.controller.ts | 47 ++++++++++++ ...ty-editor-modal-registration.controller.ts | 76 +++++++++++++++++++ .../src/core/router/route.context.ts | 16 +++- 6 files changed, 187 insertions(+), 10 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index e4fa4a1d97..2a75248202 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,7 +3,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; -import { UmbModalRouteBuilder, UmbRouteContext, UMB_ROUTE_CONTEXT_TOKEN } from '@umbraco-cms/router'; +import { + UmbModalRouteBuilder, + UmbPropertyEditorModalRegistrationController, + UmbRouteContext, +} from '@umbraco-cms/router'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -100,7 +104,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen } private _urls: Array = []; - private _routeContext?: UmbRouteContext; @state() private _linkPickerURL?: UmbModalRouteBuilder; @@ -119,20 +122,59 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen ); // TODO: make a helper that get the context, watches one or more props to use to update the registration, can be or have something that is stateful so its easy to use the URLBuilder. + new UmbPropertyEditorModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { + path: `:index`, + onSetup: (params) => { + // Get index: + const indexParam = params.index; + if (!indexParam) return false; + let index: number | null = parseInt(params.index); + if (Number.isNaN(index)) return false; - /* + // Use the index to find data: + let data: UmbLinkPickerLink | null = null; + if (index >= 0 && index < this.urls.length) { + data = this._getItemByIndex(index); + } else { + // If not then make a new pick: + index = null; + } - new UmbPropertyEditorModalRegistration(this, UMB_LINK_PICKER_MODAL_TOKEN, (modalToken) => { - ...FormControlMixin + return { + index: index, + lol: false, + link: { + name: data?.name, + published: data?.published, + queryString: data?.queryString, + target: data?.target, + trashed: data?.trashed, + udi: data?.udi, + url: data?.url, + }, + config: { + hideAnchor: this.hideAnchor, + ignoreUserStartNodes: this.ignoreUserStartNodes, + overlaySize: this.overlaySize || 'small', + }, + }; + }, + onSubmit: (submitData) => { + if (!submitData) return; + this._setSelection(submitData.link, submitData.index); + }, + onUrlBuilder: (urlBuilder) => { + this._linkPickerURL = urlBuilder; + }, }); - */ /* Or use a property context method..? */ + /* this.consumeContext(UMB_ROUTE_CONTEXT_TOKEN, (instance) => { this._routeContext = instance; @@ -187,6 +229,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen }, }); }); + */ } private _removeItem(index: number) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 2b25677dfc..442d917377 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -84,7 +84,7 @@ export const data: Array = [ name: 'Multi URL Picker', description: '', dataTypeKey: 'dt-multiUrlPicker', - variesByCulture: false, + variesByCulture: true, variesBySegment: false, validation: { mandatory: true, diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index eafdca757c..b7252053b6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,4 +1,5 @@ export * from 'router-slot'; +export * from './property-editor-modal-registration.controller'; export * from './route.interface'; export * from './route.context'; export * from './router-slot.element'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts new file mode 100644 index 0000000000..0a88f36b09 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts @@ -0,0 +1,47 @@ +import { + UmbModalRegistrationToken, + UmbModalRouteOptions, + UmbRouteContext, + UMB_ROUTE_CONTEXT_TOKEN, +} from './route.context'; +import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbModalToken } from '@umbraco-cms/modal'; + +export class UmbModalRegistrationController extends UmbController { + #modalToken: UmbModalToken | string; + #modalOptions: UmbModalRouteOptions; + #routeContext?: UmbRouteContext; + #modalRegistration?: UmbModalRegistrationToken; + + constructor( + host: UmbControllerHostInterface, + alias: UmbModalToken | string, + options: UmbModalRouteOptions + ) { + super(host); + this.#modalToken = alias; + this.#modalOptions = options; + + new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { + this.#routeContext = _routeContext; + this._registererModal(); + }); + } + + private _registererModal() { + this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, this.#modalOptions); + } + + hostConnected() { + if (!this.#modalRegistration) { + this._registererModal(); + } + } + hostDisconnected(): void { + if (this.#modalRegistration) { + this.#routeContext?.unregisterModal(this.#modalRegistration); + this.#modalRegistration = undefined; + } + } +} diff --git a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts new file mode 100644 index 0000000000..b32d778b89 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts @@ -0,0 +1,76 @@ +import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../backoffice/shared/components/workspace-property/workspace-property.context'; +import { + UmbModalRegistrationToken, + UmbModalRouteOptions, + UmbRouteContext, + UMB_ROUTE_CONTEXT_TOKEN, +} from './route.context'; +import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbObserverController } from '@umbraco-cms/observable-api'; + +export class UmbPropertyEditorModalRegistrationController extends UmbController { + #modalToken: UmbModalToken | string; + #modalOptions: UmbModalRouteOptions; + #routeContext?: UmbRouteContext; + #propertyAlias?: string; + #variantId?: string; + #modalRegistration?: UmbModalRegistrationToken; + + constructor( + host: UmbControllerHostInterface, + alias: UmbModalToken | string, + options: UmbModalRouteOptions + ) { + super(host); + this.#modalToken = alias; + this.#modalOptions = options; + + new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { + this.#routeContext = _routeContext; + this._registererModal(); + }); + + new UmbContextConsumerController(host, UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (_routeContext) => { + new UmbObserverController(host, _routeContext.alias, (alias) => { + this.#propertyAlias = alias; + this._registererModal(); + }); + new UmbObserverController(host, _routeContext.variantId, (variantId) => { + this.#variantId = variantId?.toString(); + this._registererModal(); + }); + }); + } + + private _registererModal() { + console.log('try registrer'); + if (!this.#routeContext || !this.#propertyAlias || !this.#variantId) return; + if (this.#modalRegistration) { + this.#routeContext.unregisterModal(this.#modalRegistration); + } + + const modifiedModalOptions = { + ...this.#modalOptions, + path: `${this.#propertyAlias}/${this.#variantId}/${this.#modalOptions.path}`, + }; + + console.log(this.#modalOptions); + console.log(modifiedModalOptions); + + this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, modifiedModalOptions); + } + + hostConnected() { + if (!this.#modalRegistration) { + this._registererModal(); + } + } + hostDisconnected(): void { + if (this.#modalRegistration) { + this.#routeContext?.unregisterModal(this.#modalRegistration); + this.#modalRegistration = undefined; + } + } +} diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 65da282864..9462dbf357 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -1,4 +1,4 @@ -import { IRoute, IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import { IRoute, IRoutingInfo, Params, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @@ -8,12 +8,14 @@ const EmptyDiv = document.createElement('div'); // TODO: Consider accepting the Token as a generic: export type UmbModalRouteOptions = { path: string; - onSetup?: (routingInfo: IRoutingInfo) => UmbModalTokenData | false; + onSetup?: (routingInfo: Params) => UmbModalTokenData | false; onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; onReject?: () => void; onUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; }; +export type UmbModalRegistrationToken = UmbModalRouteRegistration; + type UmbModalRouteRegistration = { alias: UmbModalToken | string; options: UmbModalRouteOptions; @@ -51,7 +53,7 @@ export class UmbRouteContext { alias: alias, options: options, routeSetup: (component: HTMLElement, info: IRoutingInfo) => { - const modalData = options.onSetup?.(info); + const modalData = options.onSetup?.(info.match.params); if (modalData !== false && this.#modalContext) { const modalHandler = this.#modalContext.open(alias, modalData || {}); modalHandler.onSubmit().then( @@ -65,6 +67,14 @@ export class UmbRouteContext { this.#modalRegistrations.push(registration); this.#generateNewURL(registration); this.#generateContextRoutes(); + return registration; + } + + public unregisterModal(registrationToken: ReturnType) { + const index = this.#modalRegistrations.indexOf(registrationToken); + if (index === -1) return; + this.#modalRegistrations.splice(index, 1); + this.#generateContextRoutes(); } public _internal_routerGotBasePath(routerBasePath: string) { From 855977f47ed68b20d6e89a3bab0dcf802188a70a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 12:56:58 +0100 Subject: [PATCH 141/550] rename to getUrlBuilder --- .../input-multi-url-picker.element.ts | 3 +-- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 2a75248202..afe4177080 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -121,7 +121,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen () => !!this.max && this.urls.length > this.max ); - // TODO: make a helper that get the context, watches one or more props to use to update the registration, can be or have something that is stateful so its easy to use the URLBuilder. new UmbPropertyEditorModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { path: `:index`, onSetup: (params) => { @@ -163,7 +162,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen if (!submitData) return; this._setSelection(submitData.link, submitData.index); }, - onUrlBuilder: (urlBuilder) => { + getUrlBuilder: (urlBuilder) => { this._linkPickerURL = urlBuilder; }, }); diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 9462dbf357..4dd0ab89c8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -11,7 +11,7 @@ export type UmbModalRouteOptions UmbModalTokenData | false; onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; onReject?: () => void; - onUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; + getUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; }; export type UmbModalRegistrationToken = UmbModalRouteRegistration; @@ -111,7 +111,7 @@ export class UmbRouteContext { } #generateNewURL = (modalRegistration: UmbModalRouteRegistration) => { - if (!modalRegistration.options.onUrlBuilder || !this.#routerBasePath) return; + if (!modalRegistration.options.getUrlBuilder || !this.#routerBasePath) return; const routeBasePath = this.#routerBasePath.endsWith('/') ? this.#routerBasePath : this.#routerBasePath + '/'; const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; @@ -125,7 +125,7 @@ export class UmbRouteContext { return routeBasePath + localRoutePath; }; - modalRegistration.options.onUrlBuilder(urlBuilder); + modalRegistration.options.getUrlBuilder(urlBuilder); }; } From 5a1e099fddb0e2fe5478ad5a14f506c4d9c16c20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 12:59:17 +0100 Subject: [PATCH 142/550] remove comment --- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 4dd0ab89c8..e3677f2aba 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -5,7 +5,6 @@ import { UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; const EmptyDiv = document.createElement('div'); -// TODO: Consider accepting the Token as a generic: export type UmbModalRouteOptions = { path: string; onSetup?: (routingInfo: Params) => UmbModalTokenData | false; From 65b8dc3893948be1096d5a85a3427e0b23408d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 12:59:45 +0100 Subject: [PATCH 143/550] remove comment --- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index e3677f2aba..13dcf10596 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -90,7 +90,6 @@ export class UmbRouteContext { const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; return { path: localPath, - //pathMatch: 'suffix', component: EmptyDiv, setup: modalRegistration.routeSetup, }; From df8ecce7b35445553f471bbdadc08bdba17e1dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 13:04:03 +0100 Subject: [PATCH 144/550] reorder content of class --- .../src/core/router/route.context.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 13dcf10596..538e9e42fb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -44,6 +44,10 @@ export class UmbRouteContext { }); } + #removeModalPath(info: IRoutingInfo) { + window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); + } + public registerModal( alias: UmbModalToken | string, options: UmbModalRouteOptions @@ -64,7 +68,7 @@ export class UmbRouteContext { }, }; this.#modalRegistrations.push(registration); - this.#generateNewURL(registration); + this.#generateNewUrlBuilder(registration); this.#generateContextRoutes(); return registration; } @@ -76,16 +80,6 @@ export class UmbRouteContext { this.#generateContextRoutes(); } - public _internal_routerGotBasePath(routerBasePath: string) { - if (this.#routerBasePath === routerBasePath) return; - this.#routerBasePath = routerBasePath; - this.#generateNewURLs(); - } - - #removeModalPath(info: IRoutingInfo) { - window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); - } - #generateRoute(modalRegistration: UmbModalRouteRegistration): IRoute { const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; return { @@ -104,11 +98,17 @@ export class UmbRouteContext { this._onGotModals(this.#contextRoutes); } - #generateNewURLs() { - this.#modalRegistrations.forEach(this.#generateNewURL); + public _internal_routerGotBasePath(routerBasePath: string) { + if (this.#routerBasePath === routerBasePath) return; + this.#routerBasePath = routerBasePath; + this.#generateNewUrlBuilders(); } - #generateNewURL = (modalRegistration: UmbModalRouteRegistration) => { + #generateNewUrlBuilders() { + this.#modalRegistrations.forEach(this.#generateNewUrlBuilder); + } + + #generateNewUrlBuilder = (modalRegistration: UmbModalRouteRegistration) => { if (!modalRegistration.options.getUrlBuilder || !this.#routerBasePath) return; const routeBasePath = this.#routerBasePath.endsWith('/') ? this.#routerBasePath : this.#routerBasePath + '/'; From c344fe5f6dc58a7e8dd7115d3d22113536521e9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 13:06:14 +0100 Subject: [PATCH 145/550] remove import --- .../input-multi-url-picker.element.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index afe4177080..8917f2d48b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,11 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; -import { - UmbModalRouteBuilder, - UmbPropertyEditorModalRegistrationController, - UmbRouteContext, -} from '@umbraco-cms/router'; +import { UmbModalRouteBuilder, UmbPropertyEditorModalRegistrationController } from '@umbraco-cms/router'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/element'; From b81e042bb8ca71c6e2255e9d7396c6514690f81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 13:06:29 +0100 Subject: [PATCH 146/550] remove out commented code --- .../input-multi-url-picker.element.ts | 63 ------------------- 1 file changed, 63 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 8917f2d48b..5802c5074e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -162,69 +162,6 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this._linkPickerURL = urlBuilder; }, }); - - /* - - Or use a property context method..? - - */ - - /* - this.consumeContext(UMB_ROUTE_CONTEXT_TOKEN, (instance) => { - this._routeContext = instance; - - // Registre the routes of this UI: - // TODO: Make a registreModal method on the property context - // Or maybe its not the property-alias, but something unique? as this might not be in a property?. - - this._routeContext.registerModal(UMB_LINK_PICKER_MODAL_TOKEN, { - path: `${'this.alias'}/:index`, - onSetup: (routingInfo) => { - // TODO: Make onSetup optional. - // TODO: Maybe use UmbRouteLocation? - // Get index from routeInfo: - const indexParam = routingInfo.match.params.index; - if (!indexParam) return false; - let index: number | null = parseInt(routingInfo.match.params.index); - if (Number.isNaN(index)) return false; - - // Use the index to find data: - let data: UmbLinkPickerLink | null = null; - if (index >= 0 && index < this.urls.length) { - data = this._getItemByIndex(index); - } else { - index = null; - } - - return { - index: index, - lol: false, - link: { - name: data?.name, - published: data?.published, - queryString: data?.queryString, - target: data?.target, - trashed: data?.trashed, - udi: data?.udi, - url: data?.url, - }, - config: { - hideAnchor: this.hideAnchor, - ignoreUserStartNodes: this.ignoreUserStartNodes, - overlaySize: this.overlaySize || 'small', // TODO: this should not be here, but use the ModalToken. - }, - }; - }, - onSubmit: (submitData) => { - if (!submitData) return; - this._setSelection(submitData.link, submitData.index); - }, - onUrlBuilder: (urlBuilder) => { - this._linkPickerURL = urlBuilder; - }, - }); - }); - */ } private _removeItem(index: number) { From 306b91c6842e899d996d08a0a81e7664ad31aa3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 13:33:59 +0100 Subject: [PATCH 147/550] docs and todos --- .../libs/modal/stories/modal.mdx | 5 +- .../src/stories/extending/modals/intro.mdx | 125 ++++++++++++++++++ 2 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx diff --git a/src/Umbraco.Web.UI.Client/libs/modal/stories/modal.mdx b/src/Umbraco.Web.UI.Client/libs/modal/stories/modal.mdx index 9cb19bc473..0d98e63508 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/stories/modal.mdx +++ b/src/Umbraco.Web.UI.Client/libs/modal/stories/modal.mdx @@ -42,7 +42,10 @@ class MyElement extends UmbElementMixin(LitElement) { ### Open a modal -A modal is opened by calling the open method on the UmbModalContext. The methods will accept a modal token (or extension alias), an optional dataset, and optional modal options .It returns an instance of UmbModalHandler. +TODO: consider the level of documentation we like to provide. Do we want user to have deep link able modals, or just simple modals like theses? +TODO: referee to the doc on modal extension, and move the relevant into between these two. + +A modal can be opened by calling the open method on the UmbModalContext. The methods will accept a modal token (or extension alias), an optional dataset, and optional modal options. It returns an instance of UmbModalHandler. ```ts import { html, LitElement } from 'lit'; diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx new file mode 100644 index 0000000000..d9d5548f8c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx @@ -0,0 +1,125 @@ +import { Meta } from '@storybook/addon-docs'; + + + +# Modals + +// TODO: add description about what modals is + +- Sidebar +- Infinite Editors +- Dialogs + +## Define a Manifest for a Modal Type + +### Manifest + +```json +{ + "type": "modal", + "alias": "Our.Modal.SomethingPicker", + "name": "My Something Picker Modal", + "loader": "./my-something-picker-modal-element.js", +}, +``` + +## Implement a Modal + +### Modal Token + +For type safety we recommend that you make a Modal Token, Its posible to go without. +The Modal Token binds the Modal Type to the Modal Data Type and Modal Result Type. + +`` + +```ts +import { ModalToken } from '@umbraco-cms/element'; + +export type OurSomethingPickerModalData = { + key: string | null; +}; + +export type OurSomethingPickerModalResult = { + key: string; +}; + +export const MY_SOMETHING_PICKER_MODAL = new UmbModalToken( + 'Our.Modal.SomethingPicker', + { + type: 'sidebar', + size: 'small', + } +); +``` + +### Make a modal registration + +When registrering you need to be aware about the scope of the modal. +A modal registred in a dashboard can be relatively simple. +A modal registred in a property editor, needs to become specific for the property and the variant of that property. + +Notice we are using a Controller here, this means your element has to be a Controller Host (TODO: Insert link to story about Controller Host also available through the UmbElementMixin) + +#### Simple Modal Registration + +```ts +new UmbModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL, { + path: `:key`, + onSetup: (params) => { + const keyParam = params.key; + if (!keyParam) return false; + + // Make a Data object to be used in the modal: + return { + key: keyParam, + }; + }, + onSubmit: (submitData) => { + // Here we got the Result object from the modal: + this._mySetPickedKey(submitData.key); + }, + getUrlBuilder: (urlBuilder) => { + // Here we got a urlBuilder, read further down this document for more into on this: + this._myUrlBuilder = urlBuilder; + }, +}); +``` + +#### Modal Registration in a Property Editor + +```ts +new UmbPropertyEditorModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL, { + path: `:key`, + onSetup: (params) => { + const keyParam = params.key; + if (!keyParam) return false; + + // Make a Data object to be used in the modal: + return { + key: keyParam, + }; + }, + onSubmit: (submitData) => { + // Here we got the Result object from the modal: + this._mySetPickedKey(submitData.key); + }, + getUrlBuilder: (urlBuilder) => { + // Here we got a urlBuilder, read further down this document for more into on this: + this._myUrlBuilder = urlBuilder; + }, +}); +``` + +## Generate the URL to a Modal + +The Modal registration has an option to retrive a URL Builder, this is a function that can be used to generate a URL to a modal. + +```ts +const modalLink = _myUrlBuilder?.({ key: 'my-key-1234' }); +``` + +The modalLink from above could look like: /umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-key-1234 + +Notice the Property Editor registration will add the property alias and variant id to the URL, so it becomes: + +/umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-property-alias/en-us/my-key-1234 From ee1d8616affe2999856751ea7297d0925bd480be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 13:39:17 +0100 Subject: [PATCH 148/550] overwrite modal config --- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 538e9e42fb..ea8831e6c9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -1,12 +1,13 @@ import { IRoute, IRoutingInfo, Params, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbModalConfig, UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; const EmptyDiv = document.createElement('div'); export type UmbModalRouteOptions = { path: string; + config?: UmbModalConfig; onSetup?: (routingInfo: Params) => UmbModalTokenData | false; onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; onReject?: () => void; @@ -58,7 +59,7 @@ export class UmbRouteContext { routeSetup: (component: HTMLElement, info: IRoutingInfo) => { const modalData = options.onSetup?.(info.match.params); if (modalData !== false && this.#modalContext) { - const modalHandler = this.#modalContext.open(alias, modalData || {}); + const modalHandler = this.#modalContext.open(alias, modalData, options.config); modalHandler.onSubmit().then( () => this.#removeModalPath(info), () => this.#removeModalPath(info) From f18fab6298251823bca2892b83d5ddc4b943cc10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 14:20:59 +0100 Subject: [PATCH 149/550] modal handler corrections --- .../libs/modal/modal-handler.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts index 75aa43e2c2..9ad3e7b469 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts @@ -43,7 +43,7 @@ export class UmbModalHandlerClass(undefined); + #innerElement = new BehaviorSubject(undefined); public readonly innerElement = this.#innerElement.asObservable(); #modalElement?: UUIModalSidebarElement | UUIDialogElement; @@ -137,22 +137,25 @@ export class UmbModalHandlerClass { if (manifest) { const innerElement = await this.#createInnerElement(manifest, data); - this.#appendInnerElement(innerElement); - } else { - this.#removeInnerElement(); + if (innerElement) { + this.#appendInnerElement(innerElement); + return; + } } + this.#removeInnerElement(); } ); } - #appendInnerElement(element: any) { + #appendInnerElement(element: HTMLElement) { this.#modalElement?.appendChild(element); this.#innerElement.next(element); } #removeInnerElement() { - if (this.#innerElement.getValue()) { - this.#modalElement?.removeChild(this.#innerElement.getValue()); + const innerElement = this.#innerElement.getValue(); + if (innerElement) { + this.#modalElement?.removeChild(innerElement); this.#innerElement.next(undefined); } } From 282521d2b21181b3a71d74823ef25b55a3a5e745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 14:22:55 +0100 Subject: [PATCH 150/550] adjust comments --- src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts index 9ad3e7b469..7b24e84c08 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts @@ -103,7 +103,7 @@ export class UmbModalHandlerClass Date: Thu, 16 Mar 2023 15:14:01 +0100 Subject: [PATCH 151/550] browser history and modals --- .../src/core/router/route.context.ts | 48 ++++++++++++++++--- .../src/core/router/router-slot.element.ts | 4 ++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index ea8831e6c9..a871e1def2 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -2,6 +2,7 @@ import { IRoute, IRoutingInfo, Params, PARAM_IDENTIFIER, stripSlash } from 'rout import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbModalConfig, UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { v4 as uuidv4 } from 'uuid'; const EmptyDiv = document.createElement('div'); @@ -17,6 +18,7 @@ export type UmbModalRouteOptions = { + key: string; alias: UmbModalToken | string; options: UmbModalRouteOptions; routeSetup: (component: HTMLElement, info: IRoutingInfo) => void; @@ -30,6 +32,7 @@ export class UmbRouteContext { #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; #contextRoutes: IRoute[] = []; #routerBasePath?: string; + #activeModalPath?: string; constructor(host: UmbControllerHostInterface, private _onGotModals: (contextRoutes: any) => void) { //this.#host = host; @@ -46,7 +49,10 @@ export class UmbRouteContext { } #removeModalPath(info: IRoutingInfo) { - window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); + if (window.location.href.includes(info.match.fragments.consumed)) { + console.log('info.match.fragments.consumed', info.match.fragments.consumed); + window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); + } } public registerModal( @@ -54,17 +60,23 @@ export class UmbRouteContext { options: UmbModalRouteOptions ) { const registration = { + key: options.config?.key || uuidv4(), alias: alias, options: options, routeSetup: (component: HTMLElement, info: IRoutingInfo) => { const modalData = options.onSetup?.(info.match.params); if (modalData !== false && this.#modalContext) { - const modalHandler = this.#modalContext.open(alias, modalData, options.config); + const modalHandler = this.#modalContext.open(alias, modalData, { ...options.config, key: registration.key }); modalHandler.onSubmit().then( - () => this.#removeModalPath(info), - () => this.#removeModalPath(info) + (data) => { + this.#removeModalPath(info); + options.onSubmit?.(data); + }, + () => { + this.#removeModalPath(info); + options.onReject?.(); + } ); - modalHandler.onSubmit().then(options.onSubmit, options.onReject); } }, }; @@ -81,10 +93,13 @@ export class UmbRouteContext { this.#generateContextRoutes(); } + #getModalRoutePath(modalRegistration: UmbModalRouteRegistration) { + return `/modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; + } + #generateRoute(modalRegistration: UmbModalRouteRegistration): IRoute { - const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; return { - path: localPath, + path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, setup: modalRegistration.routeSetup, }; @@ -95,6 +110,11 @@ export class UmbRouteContext { return this.#generateRoute(modalRegistration); }); + this.#contextRoutes.push({ + path: '', + component: EmptyDiv, + }); + // TODO: Should we await one frame, to ensure we don't call back too much?. this._onGotModals(this.#contextRoutes); } @@ -104,6 +124,20 @@ export class UmbRouteContext { this.#routerBasePath = routerBasePath; this.#generateNewUrlBuilders(); } + public _internal_modalRouterChanged(activeModalPath: string | undefined) { + if (this.#activeModalPath === activeModalPath) return; + if (this.#activeModalPath) { + console.log('closing active modal', this.#activeModalPath); + const activeModal = this.#modalRegistrations.find( + (registration) => this.#getModalRoutePath(registration) === this.#activeModalPath + ); + if (activeModal) { + console.log('found active modal', activeModal); + this.#modalContext?.close(activeModal.key); + } + } + this.#activeModalPath = activeModalPath; + } #generateNewUrlBuilders() { this.#modalRegistrations.forEach(this.#generateNewUrlBuilder); diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 3f11fd66b6..bcee30ac31 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -104,6 +104,10 @@ export class UmbRouterSlotElement extends UmbLitElement { if (event.detail.slot === this.#router) { this._activeLocalPath = event.detail.match.route.path; this.dispatchEvent(new UmbRouterSlotChangeEvent()); + } else if (event.detail.slot === this.#modalRouter) { + const newActiveModalLocalPath = event.detail.match.route.path; + console.log('!!!!!_modalRouterChanged', newActiveModalLocalPath); + this.#routeContext._internal_modalRouterChanged(newActiveModalLocalPath); } }; From a46cb8a841aa0e062f88cc2ac6e7d51e72aef47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 15:16:05 +0100 Subject: [PATCH 152/550] clean up --- .../router/property-editor-modal-registration.controller.ts | 4 ---- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 5 +---- .../src/core/router/router-slot.element.ts | 3 +-- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts index b32d778b89..c2533ad490 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts @@ -45,7 +45,6 @@ export class UmbPropertyEditorModalRegistrationController this.#getModalRoutePath(registration) === this.#activeModalPath ); if (activeModal) { - console.log('found active modal', activeModal); this.#modalContext?.close(activeModal.key); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index bcee30ac31..9c25290b08 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -1,4 +1,4 @@ -import type { IComponentRoute, IRedirectRoute, IResolverRoute, IRoute } from 'router-slot/model'; +import type { IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; import { html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; @@ -106,7 +106,6 @@ export class UmbRouterSlotElement extends UmbLitElement { this.dispatchEvent(new UmbRouterSlotChangeEvent()); } else if (event.detail.slot === this.#modalRouter) { const newActiveModalLocalPath = event.detail.match.route.path; - console.log('!!!!!_modalRouterChanged', newActiveModalLocalPath); this.#routeContext._internal_modalRouterChanged(newActiveModalLocalPath); } }; From 3836148bbfe75b1f9cb396d4cc430f47587c69a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 15:34:45 +0100 Subject: [PATCH 153/550] some data for variant + concept for fixing this --- .../workspace/document-workspace.context.ts | 12 ++++++++++++ .../src/core/mocks/data/document.data.ts | 17 ++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) 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 f62c5943fc..cdd3188711 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 @@ -45,6 +45,18 @@ export class UmbDocumentWorkspaceContext this.splitView = new UmbWorkspaceSplitViewManager(this.host); new UmbObserverController(this.host, this.documentTypeKey, (key) => this.structure.loadType(key)); + + /* + TODO: Concept for ensure variant values: + new UmbObserverController(this.host, this.variants, (variants) => { + if (!variants) return; + const draft = this.#draft.getValue(); + if (!draft) return; + + // Gather all properties from all document types. + // Loop through all properties for each variant and insert missing value objects. + } + */ } async load(entityKey: string) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 08b4fac6b4..875f988712 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -45,7 +45,7 @@ export const data: Array = [ }, { alias: 'multiUrlPicker', - culture: null, + culture: 'en-us', segment: null, value: [ { @@ -59,6 +59,12 @@ export const data: Array = [ }, ], }, + { + alias: 'multiUrlPicker', + culture: 'da-dk', + segment: null, + value: null, + }, { alias: 'multiNodeTreePicker', culture: null, @@ -244,6 +250,15 @@ export const data: Array = [ createDate: '2023-02-06T15:31:46.876902', updateDate: '2023-02-06T15:31:51.354764', }, + { + state: ContentStateModel.PUBLISHED, + publishDate: '2023-02-06T15:31:51.354764', + culture: 'da-dk', + segment: null, + name: 'Alle redigeringsfelter', + createDate: '2023-02-06T15:31:46.876902', + updateDate: '2023-02-06T15:31:51.354764', + }, ], }, { From d6cf7b743ae7f8e3d1496134c5e0bb67786ee112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 15:37:48 +0100 Subject: [PATCH 154/550] note on potential issue: --- .../input-multi-url-picker/input-multi-url-picker.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 5802c5074e..e4238fc17b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -117,6 +117,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen () => !!this.max && this.urls.length > this.max ); + // TODO: Need concept for contextual being aware about the context, as this might not work if input is used outside a property editor. new UmbPropertyEditorModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { path: `:index`, onSetup: (params) => { From 88fa3d2f241ce77cb45c9c07a91378cea52273fb Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 16:18:49 +0100 Subject: [PATCH 155/550] add edit route to document type workspace --- ...cument-blueprint-root-workspace.element.ts | 2 +- .../document-type-workspace-edit.element.ts | 116 +++++++++++++++++ .../document-type-workspace.element.ts | 122 +++--------------- .../document-type-workspace.stories.ts | 2 +- 4 files changed, 137 insertions(+), 105 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts index 0cd1a02646..b1440f2681 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/document-blueprint-root-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement } from 'lit/decorators.js'; @customElement('umb-document-blueprint-root-workspace') export class UmbDocumentBlueprintRootWorkspaceElement extends LitElement { render() { - return html`
    Document Blueprint Root Workspace
    `; + return html`
    Document Blueprint Root Workspace
    `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts new file mode 100644 index 0000000000..4aa94d78e3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -0,0 +1,116 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; +import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; + +@customElement('umb-document-type-workspace-edit') +export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + display: flex; + flex: 1 1 auto; + margin: 0 var(--uui-size-layout-1); + } + + #name { + width: 100%; + flex: 1 1 auto; + align-items: center; + } + + #alias { + padding: 0 var(--uui-size-space-3); + } + + #icon { + font-size: calc(var(--uui-size-layout-3) / 2); + } + `, + ]; + + private _icon = { + color: '#000000', + name: 'umb:document-dashed-line', + }; + + private _workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); + + @state() + private _documentType?: DocumentTypeResponseModel; + + private _modalContext?: UmbModalContext; + + constructor() { + super(); + + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + + this.observe(this._workspaceContext.data, (data) => { + // TODO: make method to identify if data is of type DocumentType + this._documentType = data as DocumentType; + }); + } + + // TODO. find a way where we don't have to do this for all workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this._workspaceContext?.setName(target.value); + } + } + } + + private async _handleIconClick() { + const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); + + modalHandler?.onSubmit().then((saved) => { + if (saved.icon) this._workspaceContext?.setIcon(saved.icon); + // TODO save color ALIAS as well + }); + } + + render() { + return html` + + + +
    Keyboard Shortcuts
    +
    + `; + } +} + +export default UmbDocumentTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-type-workspace-edit': UmbDocumentTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index c2faf5e302..d604b80c91 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -1,118 +1,34 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; +import { IRoutingInfo } from '@umbraco-cms/router'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; -import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; + +import './document-type-workspace-edit.element'; @customElement('umb-document-type-workspace') -export class UmbDocumentTypeWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } +export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #header { - display: flex; - flex: 1 1 auto; - margin: 0 var(--uui-size-layout-1); - } + #workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); - #name { - width: 100%; - flex: 1 1 auto; - align-items: center; - } - - #alias { - padding: 0 var(--uui-size-space-3); - } - - #icon { - font-size: calc(var(--uui-size-layout-3) / 2); - } - `, - ]; - - private _icon = { - color: '#000000', - name: 'umb:document-dashed-line', - }; - - private _workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); + #element = document.createElement('umb-document-type-workspace-edit'); @state() - private _documentType?: DocumentTypeResponseModel; - - private _modalContext?: UmbModalContext; - - constructor() { - super(); - - this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { - this._modalContext = instance; - }); - - this.observe(this._workspaceContext.data, (data) => { - // TODO: make method to identify if data is of type DocumentType - this._documentType = data as DocumentType; - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.createScaffold(parentKey); - } - - // TODO. find a way where we don't have to do this for all workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._workspaceContext?.setName(target.value); - } - } - } - - private async _handleIconClick() { - const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); - - modalHandler?.onSubmit().then((saved) => { - if (saved.icon) this._workspaceContext?.setIcon(saved.icon); - // TODO save color ALIAS as well - }); - } + _routes = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - -
    Keyboard Shortcuts
    -
    - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts index 19eec3849c..4ea7c3095f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts @@ -1,4 +1,4 @@ -import './document-type-workspace.element'; +import './document-type-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit-html'; import { ifDefined } from 'lit/directives/if-defined.js'; From 4afd5ed842c6bca04a45502fb30c27a0899d9f0d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 16:41:19 +0100 Subject: [PATCH 156/550] use correct element name in docs --- .../src/core/router/router-slot.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 1269dcd227..3f44377ec5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -6,7 +6,7 @@ import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; /** - * @element umb-router-slot-element + * @element umb-router-slot * @description - Component for wrapping Router Slot element, providing some local events for implementation. * @extends UmbRouterSlotElement * @fires {UmbRouterSlotInitEvent} init - fires when the router is connected From 07dff1439f0768ad9eabc2ba7c27117874753778 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 16:41:33 +0100 Subject: [PATCH 157/550] add router to media --- .../workspace/media-workspace-edit.element.ts | 58 +++++++++++++++++++ .../workspace/media-workspace.context.ts | 1 + .../workspace/media-workspace.element.ts | 41 ++++++------- 3 files changed, 76 insertions(+), 24 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts new file mode 100644 index 0000000000..e2886b6386 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -0,0 +1,58 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, nothing } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbMediaWorkspaceContext } from './media-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-media-workspace-edit') +export class UmbMediaWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + @state() + _key?: string; + + #umbWorkspaceContext?: UmbMediaWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#umbWorkspaceContext = instance; + this.#observeKey(); + }); + } + + #observeKey() { + this.observe(this.#umbWorkspaceContext?.data, (data) => (this._key = data.key)); + } + + render() { + return html` + ${this._key + ? html` + + ` + : nothing} + `; + } +} + +export default UmbMediaWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-media-workspace-edit': UmbMediaWorkspaceEditElement; + } +} 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 89847721d6..9a741f079c 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 @@ -22,6 +22,7 @@ export class UmbMediaWorkspaceContext return this.#data.getValue(); } + // TODO: this should be async because it can only return the key if the data is loaded. getEntityKey() { return this.getData()?.key || ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index 3b0a59f0d5..4d80410d2b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -1,12 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; +import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; +import { IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; +import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-media-workspace') -export class UmbMediaWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMediaWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -18,31 +19,23 @@ export class UmbMediaWorkspaceElement extends UmbLitElement implements UmbWorksp `, ]; - private _workspaceContext: UmbMediaWorkspaceContext = new UmbMediaWorkspaceContext(this); + #workspaceContext = new UmbMediaWorkspaceContext(this); + #element = new UmbMediaWorkspaceEditElement(); @state() - _unique?: string; - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create(parentKey: string | null) { - this._workspaceContext.createScaffold(parentKey); - } + _routes: IRoute[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - ${this._unique - ? html` - - ` - : nothing} - `; + return html``; } } From 16a9ccc4030d641ec2d01d3ba7acf83546b35c50 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 16:55:51 +0100 Subject: [PATCH 158/550] add null check --- .../components/section/section-views/section-views.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 91edc12837..4ee4405469 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -58,6 +58,7 @@ export class UmbSectionViewsElement extends UmbLitElement { } async #createRoutes(viewManifests: Array) { + if (!viewManifests) return; const routes = viewManifests.map((manifest) => { return { path: manifest.meta.pathname, From 586998ca93ea59627f41af530125a1b5fed1e653 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 16:59:41 +0100 Subject: [PATCH 159/550] add route to media types --- .../media-type-workspace-edit.element.ts | 69 +++++++++++++++++++ .../workspace/media-type-workspace.element.ts | 60 +++++----------- .../workspace/media-workspace-edit.element.ts | 3 +- 3 files changed, 88 insertions(+), 44 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts new file mode 100644 index 0000000000..b1b9497677 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts @@ -0,0 +1,69 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-media-type-workspace-edit') +export class UmbMediaTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + @state() + private _mediaTypeName?: string | null = ''; + #workspaceContext?: UmbWorkspaceMediaTypeContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (name) => { + this._mediaTypeName = name; + }); + } + + // TODO. find a way where we don't have to do this for all Workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + `; + } +} + +export default UmbMediaTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-media-type-workspace-edit': UmbMediaTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 10c235c581..7235c843d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -1,13 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; +import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; +import { UmbMediaTypeWorkspaceEditElement } from './media-type-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; @customElement('umb-media-type-workspace') -export class UmbMediaTypeWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMediaTypeWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -23,49 +23,23 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement implements UmbWo `, ]; - @state() - private _unique?: string; - - @state() - private _mediaTypeName?: string | null = ''; - - @property() - id!: string; - #workspaceContext = new UmbWorkspaceMediaTypeContext(this); + #element = new UmbMediaTypeWorkspaceEditElement(); - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.name, (name) => { - this._mediaTypeName = name; - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - `; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts index e2886b6386..e7f23ea7bc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -32,7 +32,8 @@ export class UmbMediaWorkspaceEditElement extends UmbLitElement { } #observeKey() { - this.observe(this.#umbWorkspaceContext?.data, (data) => (this._key = data.key)); + if (!this.#umbWorkspaceContext) return; + this.observe(this.#umbWorkspaceContext.data, (data) => (this._key = data?.key)); } render() { From 843472e5ab8fbc5f487b92574cfa9451af034f4c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 17:11:36 +0100 Subject: [PATCH 160/550] add routes to member workspace --- .../member-workspace-edit.element.ts | 29 ++++++++++++ .../workspace/member-workspace.context.ts | 45 +++++++++---------- .../workspace/member-workspace.element.ts | 28 +++++++++--- 3 files changed, 73 insertions(+), 29 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts new file mode 100644 index 0000000000..abebd0f1da --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace-edit.element.ts @@ -0,0 +1,29 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, LitElement } from 'lit'; +import { customElement } from 'lit/decorators.js'; + +@customElement('umb-member-workspace-edit') +export class UmbMemberWorkspaceEditElement extends LitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + render() { + return html` Member Workspace `; + } +} + +export default UmbMemberWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-workspace-edit': UmbMemberWorkspaceEditElement; + } +} 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 a032a5fefc..efa785a32c 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 @@ -1,39 +1,38 @@ -import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; 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_STORE_CONTEXT_TOKEN } from '../member.detail.store'; +import { UmbWorkspaceEntityContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberRepository } from '../repository/member.repository'; import type { MemberDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceMemberContext +export class UmbMemberWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { - #manager = new UmbEntityWorkspaceManager(this.host, 'member', UMB_MEMBER_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; + getEntityType(): string { + return 'member'; } - setName(name: string) { - this.#manager.state.update({ name }); + getEntityKey() { + return '1234'; } - getEntityType = this.#manager.getEntityType; - getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; - getStore = this.#manager.getStore; - getData = this.#manager.getData as any; // TODO: fix this type mismatch, but this will be done when we move to repositories. - load = this.#manager.load; - create = this.#manager.create; - save = this.#manager.save; - destroy = this.#manager.destroy; + getData() { + return 'fake' as unknown as MemberDetails; + } + + async save() { + console.log('save'); + } + + async load() { + console.log('load'); + } + + public destroy(): void { + console.log('destroy'); + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index a7d516bdf0..dc78cf8575 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -1,9 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { IRoutingInfo } from 'router-slot'; +import { UmbMemberWorkspaceEditElement } from './member-workspace-edit.element'; +import { UmbMemberWorkspaceContext } from './member-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-member-workspace') -export class UmbMemberWorkspaceElement extends LitElement { +export class UmbMemberWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -15,11 +19,23 @@ export class UmbMemberWorkspaceElement extends LitElement { `, ]; - @property() - id!: string; + #workspaceContext = new UmbMemberWorkspaceContext(this); + #element = new UmbMemberWorkspaceEditElement(); + + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` Member Workspace `; + return html` `; } } From cbe82c4ed4ddb7780ee954724900d971d9fa5fa7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 17:12:24 +0100 Subject: [PATCH 161/550] add param to load method --- .../members/members/workspace/member-workspace.context.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 efa785a32c..cf15ebb1a6 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 @@ -28,8 +28,8 @@ export class UmbMemberWorkspaceContext console.log('save'); } - async load() { - console.log('load'); + async load(key: string) { + console.log('load', key); } public destroy(): void { From 7728b07550152dc8524f949a6da3f7a3118721b1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 18:26:06 +0100 Subject: [PATCH 162/550] add routes to member type workspace --- .../member-type-workspace-edit.element.ts | 41 ++++++++++++ .../member-type-workspace.context.ts | 6 +- .../member-type-workspace.element.ts | 63 +++++-------------- 3 files changed, 60 insertions(+), 50 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts new file mode 100644 index 0000000000..9a400f8c26 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts @@ -0,0 +1,41 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-member-type-workspace-edit') +export class UmbMemberTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + /* TODO: can this be applied from layout slot CSS? */ + margin: 0 var(--uui-size-layout-1); + flex: 1 1 auto; + } + `, + ]; + + @state() + private _memberTypeName = ''; + + render() { + return html` + Member Type Workspace + `; + } +} + +export default UmbMemberTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-type-workspace-edit': UmbMemberTypeWorkspaceEditElement; + } +} 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 ac7107e361..2bed516c98 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbWorkspaceEntityContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberTypeRepository } from '../repository/member-type.repository'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -7,9 +7,9 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; // TODO => use correct tpye type EntityType = any; -export class UmbWorkspaceMemberTypeContext +export class UmbMemberTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index 2b27e9c6e8..8345578924 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -1,8 +1,9 @@ -import { UUIInputEvent, UUIInputElement } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceMemberTypeContext } from './member-type-workspace.context'; +import { IRoutingInfo } from 'router-slot'; +import { UmbMemberTypeWorkspaceEditElement } from './member-type-workspace-edit.element'; +import { UmbMemberTypeWorkspaceContext } from './member-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-member-type-workspace') @@ -15,58 +16,26 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { width: 100%; height: 100%; } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } `, ]; - @state() - private _memberTypeName = ''; + #workspaceContext = new UmbMemberTypeWorkspaceContext(this); + #element = new UmbMemberTypeWorkspaceEditElement(); @state() - private _unique?: string; - - #workspaceContext = new UmbWorkspaceMemberTypeContext(this); - - public load(entityKey: string) { - this.#workspaceContext?.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - constructor() { - super(); - this.observe(this.#workspaceContext.name, (memberTypeName) => { - if (memberTypeName !== this._memberTypeName) { - this._memberTypeName = memberTypeName ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` `; } } From ce94f0f38a9fb7bb291d7c4ff47f498ebc12e2de Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 18:26:49 +0100 Subject: [PATCH 163/550] remove unused --- .../workspace/member-type-workspace-edit.element.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts index 9a400f8c26..99d8acb36b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-member-type-workspace-edit') @@ -22,9 +22,6 @@ export class UmbMemberTypeWorkspaceEditElement extends UmbLitElement { `, ]; - @state() - private _memberTypeName = ''; - render() { return html` Member Type Workspace From 6feb6e6430e81cc76f45cb96809328a2d843c159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 19:10:02 +0100 Subject: [PATCH 164/550] notes --- .../router/property-editor-modal-registration.controller.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts index c2533ad490..9e6d0e861a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts @@ -44,6 +44,10 @@ export class UmbPropertyEditorModalRegistrationController Date: Thu, 16 Mar 2023 19:19:37 +0100 Subject: [PATCH 165/550] rename attributes of renderMethod --- .../components/extension-slot/extension-slot.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index eec5648e04..db97e5a9a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -38,8 +38,8 @@ export class UmbExtensionSlotElement extends UmbLitElement { public defaultElement = ''; @property() - public renderMethod: (manifest: InitializedExtension) => TemplateResult<1 | 2> | HTMLElement | null = (manifest) => - manifest.component; + public renderMethod: (extension: InitializedExtension) => TemplateResult<1 | 2> | HTMLElement | null = (extension) => + extension.component; connectedCallback(): void { super.connectedCallback(); From 02de7b414aaf2ebaca15958708a67fb7e54c781f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 19:48:56 +0100 Subject: [PATCH 166/550] add routes to member group --- .../member-group-workspace-edit.element.ts | 34 +++++++++ .../member-group-workspace.element.ts | 69 +++++-------------- 2 files changed, 52 insertions(+), 51 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts new file mode 100644 index 0000000000..bf1a593e9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts @@ -0,0 +1,34 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; + +/** + * @element umb-member-group-edit-workspace + * @description - Element for displaying a Member Group Workspace + */ +@customElement('umb-member-group-workspace-edit') +export class UmbMemberGroupWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + render() { + return html` Member Group `; + } +} + +export default UmbMemberGroupWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-member-group-workspace-edit': UmbMemberGroupWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index 745e405049..368b175a4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -1,9 +1,9 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; +import { IRoutingInfo } from 'router-slot'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; +import { UmbMemberGroupWorkspaceEditElement } from './member-group-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; /** @@ -11,7 +11,7 @@ import { UmbLitElement } from '@umbraco-cms/element'; * @description - Element for displaying a Member Group Workspace */ @customElement('umb-member-group-workspace') -export class UmbMemberGroupWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { +export class UmbMemberGroupWorkspaceElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -20,59 +20,26 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement implements Umb width: 100%; height: 100%; } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } `, ]; - + + #workspaceContext = new UmbWorkspaceMemberGroupContext(this); + #element = new UmbMemberGroupWorkspaceEditElement(); + @state() - _unique?: string; - - @state() - private _memberGroupName = ''; - - #workspaceContext: UmbWorkspaceMemberGroupContext = new UmbWorkspaceMemberGroupContext(this); - - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create() { - this.#workspaceContext.createScaffold(); - } - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.data, (memberGroup) => { - if (memberGroup && memberGroup.name !== this._memberGroupName) { - this._memberGroupName = memberGroup.name ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` `; } } From ece2ea973e3280e01f908987bf1650e332e4b7f3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 19:59:46 +0100 Subject: [PATCH 167/550] add edit route to dictionary workspace --- .../document-type-workspace.context.ts | 4 +- .../workspace/media-type-workspace.context.ts | 4 +- .../workspace/media-workspace.context.ts | 4 +- .../member-group-workspace.context.ts | 4 +- .../member-type-workspace.context.ts | 2 +- .../workspace/member-workspace.context.ts | 2 +- .../workspace/data-type-workspace.context.ts | 4 +- .../workspace-action-menu.element.ts | 6 +- .../workspace-view-collection.element.ts | 6 +- .../workspace-view-content-edit.element.ts | 6 +- .../workspace-view-content-info.element.ts | 15 ++-- .../workspace-entity-context.interface.ts | 3 +- ...-invariantable-entity-context.interface.ts | 4 +- ...space-variable-entity-context.interface.ts | 4 +- .../dictionary-workspace-edit.element.ts | 75 ++++++++++++++++ .../workspace/dictionary-workspace.context.ts | 7 +- .../workspace/dictionary-workspace.element.ts | 85 +++++-------------- .../workspace-view-dictionary-edit.element.ts | 8 +- .../workspace/user-group-workspace.context.ts | 4 +- .../users/workspace/user-workspace.context.ts | 4 +- 20 files changed, 143 insertions(+), 108 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts 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 638545389c..1ec5daf8fe 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; @@ -8,7 +8,7 @@ import { ObjectState } from '@umbraco-cms/observable-api'; type EntityType = DocumentTypeResponseModel; export class UmbWorkspaceDocumentTypeContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); 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 2e89adea0b..d08f00a937 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; @@ -8,7 +8,7 @@ import type { MediaTypeDetails } from '@umbraco-cms/models'; type EntityType = MediaTypeDetails; export class UmbWorkspaceMediaTypeContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); 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 9a741f079c..a2eee22259 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 @@ -1,6 +1,6 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbMediaRepository } from '../repository/media.repository'; -import type { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import type { MediaDetails } from '@umbraco-cms/models'; @@ -8,7 +8,7 @@ import type { MediaDetails } from '@umbraco-cms/models'; type EntityType = MediaDetails; export class UmbMediaWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); 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 6acdae22d8..9f5828a437 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 @@ -1,4 +1,4 @@ -import { UmbWorkspaceEntityContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; import { UmbMemberGroupRepository } from '../repository/member-group.repository'; import type { MemberGroupDetails } from '@umbraco-cms/models'; @@ -8,7 +8,7 @@ import { ObjectState } from '@umbraco-cms/observable-api'; type EntityType = MemberGroupDetails; export class UmbWorkspaceMemberGroupContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); 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 2bed516c98..359230671f 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberTypeRepository } from '../repository/member-type.repository'; import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; 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 cf15ebb1a6..96aae13705 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberRepository } from '../repository/member.repository'; import type { MemberDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; 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 cdf8e65328..73421518ad 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 @@ -1,5 +1,5 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; @@ -7,7 +7,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts index 1cf0cd994d..1433dbb675 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityContextInterface } from '../workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../workspace-context/workspace-entity-context.interface'; import { UmbExecutedEvent } from '@umbraco-cms/events'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -34,7 +34,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { @state() private _actionMenuIsOpen = false; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; @state() _entityKey?: string; @@ -45,7 +45,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { constructor() { super(); - this.consumeContext('umbWorkspaceContext', (context) => { + this.consumeContext('umbWorkspaceContext', (context) => { this._workspaceContext = context; this._observeInfo(); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index 08036ec074..6e83dc0810 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -8,7 +8,7 @@ import { } from '../../../../../../shared/collection/collection.context'; import '../../../../../../shared/collection/dashboards/dashboard-collection.element'; -import type { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import { UmbLitElement } from '@umbraco-cms/element'; import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; import { ManifestWorkspaceViewCollection } from '@umbraco-cms/extensions-registry'; @@ -27,7 +27,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { public manifest!: ManifestWorkspaceViewCollection; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; // TODO: add type for the collection context. private _collectionContext?: UmbCollectionContext; @@ -36,7 +36,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (nodeContext) => { + this.consumeContext('umbWorkspaceContext', (nodeContext) => { this._workspaceContext = nodeContext; this._provideWorkspace(); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts index 90274f9258..ff99c2a05d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/edit/workspace-view-content-edit.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import type { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import type { ContentProperty, ContentPropertyData, MediaTypeDetails } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -25,13 +25,13 @@ export class UmbWorkspaceViewContentEditElement extends UmbLitElement { @state() _data: ContentPropertyData[] = []; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext>( + this.consumeContext>( 'umbWorkspaceContext', (workspaceContext) => { this._workspaceContext = workspaceContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts index a5ad8372e2..ba86f7da12 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/info/workspace-view-content-info.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { repeat } from 'lit/directives/repeat.js'; import { customElement, state } from 'lit/decorators.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceEntityContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../workspace-context/workspace-entity-context.interface'; import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -184,17 +184,20 @@ export class UmbWorkspaceViewContentInfoElement extends UmbLitElement { @state() private _nodeName = ''; - private _workspaceContext?: UmbWorkspaceEntityContextInterface; + private _workspaceContext?: UmbEntityWorkspaceContextInterface; private itemsPerPage = 10; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext>('umbWorkspaceContext', (nodeContext) => { - this._workspaceContext = nodeContext; - this._observeContent(); - }); + this.consumeContext>( + 'umbWorkspaceContext', + (nodeContext) => { + this._workspaceContext = nodeContext; + this._observeContent(); + } + ); } private _observeContent() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts index cc11f9ff1c..3ab4890af3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts @@ -1,7 +1,6 @@ -import { Observable } from 'rxjs'; import type { UmbWorkspaceContextInterface } from './workspace-context.interface'; -export interface UmbWorkspaceEntityContextInterface extends UmbWorkspaceContextInterface { +export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() getEntityType(): string; getData(): T; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts index 3229482494..0817a78a65 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-invariantable-entity-context.interface.ts @@ -1,9 +1,9 @@ import type { Observable } from 'rxjs'; -import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from './workspace-entity-context.interface'; import type { ValueModelBaseModel } from '@umbraco-cms/backend-api'; export interface UmbWorkspaceInvariantableEntityContextInterface - extends UmbWorkspaceEntityContextInterface { + extends UmbEntityWorkspaceContextInterface { getName(): void; setName(name: string): void; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts index 1eb88c1aea..00c97b20d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-variable-entity-context.interface.ts @@ -1,10 +1,10 @@ import type { Observable } from 'rxjs'; import { UmbVariantId } from '../../../variants/variant-id.class'; -import type { UmbWorkspaceEntityContextInterface } from './workspace-entity-context.interface'; +import type { UmbEntityWorkspaceContextInterface } from './workspace-entity-context.interface'; import { UmbWorkspaceSplitViewManager } from './workspace-split-view-manager.class'; import type { ValueModelBaseModel, VariantResponseModelBaseModel } from '@umbraco-cms/backend-api'; -export interface UmbWorkspaceVariableEntityContextInterface extends UmbWorkspaceEntityContextInterface { +export interface UmbWorkspaceVariableEntityContextInterface extends UmbEntityWorkspaceContextInterface { variants: Observable>; splitView: UmbWorkspaceSplitViewManager; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts new file mode 100644 index 0000000000..adde5f347e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace-edit.element.ts @@ -0,0 +1,75 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; + +@customElement('umb-dictionary-workspace-edit') +export class UmbDictionaryWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + uui-input { + width: 100%; + } + `, + ]; + + @state() + private _name?: string | null = ''; + + #workspaceContext?: UmbDictionaryWorkspaceContext; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeName(); + }); + } + + #observeName() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.name, (name) => (this._name = name)); + } + + // TODO. find a way where we don't have to do this for all workspaces. + #handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbDictionaryWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-dictionary-workspace-edit': UmbDictionaryWorkspaceEditElement; + } +} 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 9ee60311ee..7fe9e78adb 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 @@ -1,14 +1,15 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { ObjectState } from '@umbraco-cms/observable-api'; import type { DictionaryDetails } from '@umbraco-cms/models'; type EntityType = DictionaryDetails; -export class UmbWorkspaceDictionaryContext + +export class UmbDictionaryWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts index 8bc48e4d75..a4849a5815 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts @@ -1,75 +1,32 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceEntityElement } from '../../../../backoffice/shared/components/workspace/workspace-entity-element.interface'; -import { UmbWorkspaceDictionaryContext } from './dictionary-workspace.context'; +import { IRoutingInfo } from 'router-slot'; +import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; +import { UmbDictionaryWorkspaceEditElement } from './dictionary-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-dictionary-workspace') -export class UmbWorkspaceDictionaryElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - #header { - display: flex; - padding: 0 var(--uui-size-space-6); - gap: var(--uui-size-space-4); - width: 100%; - } - uui-input { - width: 100%; - } - `, +export class UmbWorkspaceDictionaryElement extends UmbLitElement { + static styles = [UUITextStyles]; + + #workspaceContext = new UmbDictionaryWorkspaceContext(this); + #element = new UmbDictionaryWorkspaceEditElement(); + + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - @state() - _unique?: string; - - public load(entityKey: string) { - this.#workspaceContext.load(entityKey); - this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } - - @state() - private _name?: string | null = ''; - - #workspaceContext = new UmbWorkspaceDictionaryContext(this); - - async connectedCallback() { - super.connectedCallback(); - - this.observe(this.#workspaceContext.name, (name) => { - this._name = name; - }); - } - - // TODO. find a way where we don't have to do this for all workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext?.setName(target.value); - } - } - } - render() { - return html` - - - - `; + return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts index 0fab1050ed..bb5d774b81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.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 { UUITextareaElement, UUITextareaEvent } from '@umbraco-ui/uui'; -import { UmbWorkspaceDictionaryContext } from '../../dictionary-workspace.context'; +import { UmbDictionaryWorkspaceContext } from '../../dictionary-workspace.context'; import { UmbDictionaryRepository } from '../../../repository/dictionary.repository'; import { UmbLitElement } from '@umbraco-cms/element'; import { DictionaryItemResponseModel, LanguageResponseModel } from '@umbraco-cms/backend-api'; @@ -29,7 +29,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { @state() private _languages: Array = []; - #workspaceContext!: UmbWorkspaceDictionaryContext; + #workspaceContext!: UmbDictionaryWorkspaceContext; async connectedCallback() { super.connectedCallback(); @@ -37,7 +37,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { this.#repo = new UmbDictionaryRepository(this); this._languages = await this.#repo.getLanguages(); - this.consumeContext('umbWorkspaceContext', (_instance) => { + this.consumeContext('umbWorkspaceContext', (_instance) => { this.#workspaceContext = _instance; this.#observeDictionary(); }); @@ -68,7 +68,7 @@ export class UmbWorkspaceViewDictionaryEditElement extends UmbLitElement { if (e instanceof UUITextareaEvent) { const target = e.composedPath()[0] as UUITextareaElement; const translation = target.value.toString(); - const isoCode = target.getAttribute('name')!; + const isoCode = target.getAttribute('name')!; this.#workspaceContext.setPropertyValue(isoCode, translation); } 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 bdf1d7f7ac..3b42d0f7e1 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 @@ -1,6 +1,6 @@ import { UmbEntityWorkspaceManager } from '../../../shared/components/workspace/workspace-context/entity-manager-controller'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN } from '../repository/user-group.store'; import { UmbUserGroupRepository } from '../repository/user-group.repository'; import type { UserGroupDetails } from '@umbraco-cms/models'; @@ -8,7 +8,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbWorkspaceUserGroupContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #manager = new UmbEntityWorkspaceManager( 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 71e99083fc..c4cc6fd850 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 @@ -1,6 +1,6 @@ import { UMB_USER_STORE_CONTEXT_TOKEN } from '../repository/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 { UmbEntityWorkspaceContextInterface } 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'; @@ -8,7 +8,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbWorkspaceUserContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #manager = new UmbEntityWorkspaceManager( this.host, From 71c47c26ed4517619f2ef5a84503a512ced46b8e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 21:02:50 +0100 Subject: [PATCH 168/550] add routing to user-group workspace --- .../workspace-entity-element.interface.ts | 4 - .../user-group-workspace-edit.element.ts | 371 +++++++++++++++++ .../workspace/user-group-workspace.context.ts | 2 +- .../workspace/user-group-workspace.element.ts | 380 ++---------------- 4 files changed, 395 insertions(+), 362 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts deleted file mode 100644 index f701853c32..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-entity-element.interface.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface UmbWorkspaceEntityElement { - load(key: string): void; - create(parentKey: string | null): void; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts new file mode 100644 index 0000000000..2e108a3447 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts @@ -0,0 +1,371 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +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 { UmbUserStore } from '../../users/repository/user.store'; +import { UmbUserGroupWorkspaceContext } from './user-group-workspace.context'; +import type { UserGroupDetails } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/element'; + +import '../../../shared/components/input-user/input-user.element'; +import '../../../shared/components/input-section/input-section.element'; + +@customElement('umb-user-group-workspace-edit') +export class UmbUserGroupWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + height: 100%; + } + + #main { + display: grid; + grid-template-columns: 1fr 350px; + gap: var(--uui-size-space-6); + padding: var(--uui-size-space-6); + } + #left-column { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + #right-column > uui-box > div { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-2); + } + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + width: 100%; + } + uui-input { + width: 100%; + } + .faded-text { + color: var(--uui-color-text-alt); + font-size: 0.8rem; + } + #default-permissions { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + .default-permission { + display: flex; + align-items: center; + gap: var(--uui-size-space-4); + padding: var(--uui-size-space-2); + } + .default-permission:not(:last-child) { + border-bottom: 1px solid var(--uui-color-divider); + } + .permission-info { + display: flex; + flex-direction: column; + } + `, + ]; + + defaultPermissions: Array<{ + name: string; + permissions: Array<{ name: string; description: string; value: boolean }>; + }> = [ + { + name: 'Administration', + permissions: [ + { + name: 'Culture and Hostnames', + description: 'Allow access to assign culture and hostnames', + value: false, + }, + { + name: 'Restrict Public Access', + description: 'Allow access to set and change access restrictions for a node', + value: false, + }, + { + name: 'Rollback', + description: 'Allow access to roll back a node to a previous state', + value: false, + }, + ], + }, + { + name: 'Content', + permissions: [ + { + name: 'Browse Node', + description: 'Allow access to view a node', + value: false, + }, + { + name: 'Create Content Template', + description: 'Allow access to create a Content Template', + value: false, + }, + { + name: 'Delete', + description: 'Allow access to delete nodes', + value: false, + }, + { + name: 'Create', + description: 'Allow access to create nodes', + value: false, + }, + { + name: 'Publish', + description: 'Allow access to publish nodes', + value: false, + }, + { + name: 'Permissions', + description: 'Allow access to change permissions for a node', + value: false, + }, + { + name: 'Send To Publish', + description: 'Allow access to send a node for approval before publishing', + value: false, + }, + { + name: 'Unpublish', + description: 'Allow access to unpublish a node', + value: false, + }, + { + name: 'Update', + description: 'Allow access to save a node', + value: false, + }, + { + name: 'Full restore', + description: 'Allow the user to restore items', + value: false, + }, + { + name: 'Partial restore', + description: 'Allow the user to partial restore items', + value: false, + }, + { + name: 'Queue for transfer', + description: 'Allow the user to queue item(s)', + value: false, + }, + ], + }, + { + name: 'Structure', + permissions: [ + { + name: 'Copy', + description: 'Allow access to copy a node', + value: false, + }, + { + name: 'Move', + description: 'Allow access to move a node', + value: false, + }, + { + name: 'Sort', + description: 'Allow access to change the sort order for nodes', + value: false, + }, + ], + }, + ]; + + private _userStore?: UmbUserStore; + + #workspaceContext?: UmbUserGroupWorkspaceContext; + + @state() + private _userGroup?: UserGroupDetails; + + @state() + private _userKeys?: Array; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.observeUserGroup(); + }); + } + + observeUserGroup() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (userGroup) => (this._userGroup = userGroup as any)); + } + + private _observeUsers() { + if (!this._userStore) return; + + // TODO: Create method to only get users from this userGroup + // TODO: Find a better way to only call this once at the start + this.observe(this._userStore.getAll(), (users) => { + // TODO: handle if there is no users. + if (!this._userKeys && users.length > 0) { + const entityKey = this.#workspaceContext?.getEntityKey(); + if (!entityKey) return; + this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); + //this._updateProperty('users', this._userKeys); + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setUsers(); + } + }); + } + + private _updateUserKeys(userKeys: Array) { + this._userKeys = userKeys; + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setUsers(); + } + + private _updatePermission(permission: { name: string; description: string; value: boolean }) { + if (!this.#workspaceContext) return; + + const checkValue = this._checkPermission(permission); + //const selectedPermissions = this._workspaceContext.getData().permissions; + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //const selectedPermissions = this._workspaceContext.getPermissions(); + + /* + let newPermissions = []; + if (checkValue === false) { + newPermissions = [...selectedPermissions, permission.name]; + } else { + newPermissions = selectedPermissions.filter((p) => p !== permission.name); + } + */ + + //this._updateProperty('permissions', newPermissions); + // TODO: make a method on the UmbWorkspaceUserGroupContext: + //this._workspaceContext.setPermissions(); + } + + private _checkPermission(permission: { name: string; description: string; value: boolean }) { + if (!this.#workspaceContext) return false; + + //return this._workspaceContext.getPermissions().includes(permission.name); + return false; + } + + private _updateSections(value: string[]) { + console.log('To be done'); + //this._workspaceContext.setSections(value); + } + + private renderLeftColumn() { + if (!this._userGroup) return nothing; + + return html` +
    Assign access
    + + this._updateSections(e.target.value)}> + + + + + + + + + + + + + + + +
    + + +
    Default Permissions
    +
    + ${repeat( + this.defaultPermissions, + (defaultPermission) => html` +
    + ${defaultPermission.name} + ${repeat( + defaultPermission.permissions, + (permission) => html` +
    + this._updatePermission(permission)}> +
    + ${permission.name} + ${permission.description} +
    +
    + ` + )} +
    + ` + )} +
    +
    + + +
    Granular permissions
    +
    `; + } + + private renderRightColumn() { + return html` +
    Users
    + this._updateUserKeys((e.target as any).value)} + .value=${this._userKeys || []}> +
    `; + } + + // TODO: find a way where we don't have to do this for all Workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + if (!this._userGroup) return nothing; + + return html` + + +
    +
    ${this.renderLeftColumn()}
    +
    ${this.renderRightColumn()}
    +
    +
    + `; + } +} + +export default UmbUserGroupWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-user-group-workspace-edit': UmbUserGroupWorkspaceEditElement; + } +} 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 3b42d0f7e1..93ca1089b1 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 @@ -6,7 +6,7 @@ import { UmbUserGroupRepository } from '../repository/user-group.repository'; import type { UserGroupDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceUserGroupContext +export class UmbUserGroupWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { 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 3b7ceeef31..9fa4251df5 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 @@ -1,223 +1,27 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, html, nothing } from 'lit'; +import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { repeat } from 'lit/directives/repeat.js'; -import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../users/repository/user.store'; -import { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UmbWorkspaceUserGroupContext } from './user-group-workspace.context'; +import { UmbUserGroupWorkspaceContext } from './user-group-workspace.context'; +import { UmbUserGroupWorkspaceEditElement } from './user-group-workspace-edit.element'; import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspaceAction, UserGroupDetails } from '@umbraco-cms/models'; +import type { ManifestWorkspaceAction } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; - -import '../../../shared/components/input-user/input-user.element'; -import '../../../shared/components/input-section/input-section.element'; import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; @customElement('umb-user-group-workspace') -export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - height: 100%; - } +export class UmbUserGroupWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #main { - display: grid; - grid-template-columns: 1fr 350px; - gap: var(--uui-size-space-6); - padding: var(--uui-size-space-6); - } - #left-column { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - #right-column > uui-box > div { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-2); - } - hr { - border: none; - border-bottom: 1px solid var(--uui-color-divider); - width: 100%; - } - uui-input { - width: 100%; - } - .faded-text { - color: var(--uui-color-text-alt); - font-size: 0.8rem; - } - #default-permissions { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - .default-permission { - display: flex; - align-items: center; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-2); - } - .default-permission:not(:last-child) { - border-bottom: 1px solid var(--uui-color-divider); - } - .permission-info { - display: flex; - flex-direction: column; - } - `, - ]; - - defaultPermissions: Array<{ - name: string; - permissions: Array<{ name: string; description: string; value: boolean }>; - }> = [ - { - name: 'Administration', - permissions: [ - { - name: 'Culture and Hostnames', - description: 'Allow access to assign culture and hostnames', - value: false, - }, - { - name: 'Restrict Public Access', - description: 'Allow access to set and change access restrictions for a node', - value: false, - }, - { - name: 'Rollback', - description: 'Allow access to roll back a node to a previous state', - value: false, - }, - ], - }, - { - name: 'Content', - permissions: [ - { - name: 'Browse Node', - description: 'Allow access to view a node', - value: false, - }, - { - name: 'Create Content Template', - description: 'Allow access to create a Content Template', - value: false, - }, - { - name: 'Delete', - description: 'Allow access to delete nodes', - value: false, - }, - { - name: 'Create', - description: 'Allow access to create nodes', - value: false, - }, - { - name: 'Publish', - description: 'Allow access to publish nodes', - value: false, - }, - { - name: 'Permissions', - description: 'Allow access to change permissions for a node', - value: false, - }, - { - name: 'Send To Publish', - description: 'Allow access to send a node for approval before publishing', - value: false, - }, - { - name: 'Unpublish', - description: 'Allow access to unpublish a node', - value: false, - }, - { - name: 'Update', - description: 'Allow access to save a node', - value: false, - }, - { - name: 'Full restore', - description: 'Allow the user to restore items', - value: false, - }, - { - name: 'Partial restore', - description: 'Allow the user to partial restore items', - value: false, - }, - { - name: 'Queue for transfer', - description: 'Allow the user to queue item(s)', - value: false, - }, - ], - }, - { - name: 'Structure', - permissions: [ - { - name: 'Copy', - description: 'Allow access to copy a node', - value: false, - }, - { - name: 'Move', - description: 'Allow access to move a node', - value: false, - }, - { - name: 'Sort', - description: 'Allow access to change the sort order for nodes', - value: false, - }, - ], - }, - ]; - - private _userStore?: UmbUserStore; - - private _workspaceContext: UmbWorkspaceUserGroupContext = new UmbWorkspaceUserGroupContext(this); - - @state() - private _userGroup?: UserGroupDetails; - - @state() - private _userKeys?: Array; + #workspaceContext = new UmbUserGroupWorkspaceContext(this); + #element = new UmbUserGroupWorkspaceEditElement(); constructor() { super(); - this._registerWorkspaceActions(); - - this.consumeContext(UMB_USER_STORE_CONTEXT_TOKEN, (instance) => { - this._userStore = instance; - this._observeUsers(); - }); - - this.observe(this._workspaceContext.data, (userGroup) => { - // TODO: Fix type mismatch - this._userGroup = userGroup as any; - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.create(parentKey); } + // TODO: move this to a manifest file private _registerWorkspaceActions() { const manifests: Array = [ { @@ -242,159 +46,21 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement implements UmbWo }); } - private _observeUsers() { - if (!this._userStore) return; - - // TODO: Create method to only get users from this userGroup - // TODO: Find a better way to only call this once at the start - this.observe(this._userStore.getAll(), (users) => { - // TODO: handle if there is no users. - if (!this._userKeys && users.length > 0) { - const entityKey = this._workspaceContext.getEntityKey(); - this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); - //this._updateProperty('users', this._userKeys); - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setUsers(); - } - }); - } - - private _updateUserKeys(userKeys: Array) { - this._userKeys = userKeys; - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setUsers(); - } - - private _updatePermission(permission: { name: string; description: string; value: boolean }) { - if (!this._workspaceContext) return; - - const checkValue = this._checkPermission(permission); - //const selectedPermissions = this._workspaceContext.getData().permissions; - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //const selectedPermissions = this._workspaceContext.getPermissions(); - - /* - let newPermissions = []; - if (checkValue === false) { - newPermissions = [...selectedPermissions, permission.name]; - } else { - newPermissions = selectedPermissions.filter((p) => p !== permission.name); - } - */ - - //this._updateProperty('permissions', newPermissions); - // TODO: make a method on the UmbWorkspaceUserGroupContext: - //this._workspaceContext.setPermissions(); - } - - private _checkPermission(permission: { name: string; description: string; value: boolean }) { - if (!this._workspaceContext) return false; - - //return this._workspaceContext.getPermissions().includes(permission.name); - return false; - } - - private _updateSections(value: string[]) { - console.log('To be done'); - //this._workspaceContext.setSections(value); - } - - private renderLeftColumn() { - if (!this._userGroup) return nothing; - - return html` -
    Assign access
    - - this._updateSections(e.target.value)}> - - - - - - - - - - - - - - - -
    - - -
    Default Permissions
    -
    - ${repeat( - this.defaultPermissions, - (defaultPermission) => html` -
    - ${defaultPermission.name} - ${repeat( - defaultPermission.permissions, - (permission) => html` -
    - this._updatePermission(permission)}> -
    - ${permission.name} - ${permission.description} -
    -
    - ` - )} -
    - ` - )} -
    -
    - - -
    Granular permissions
    -
    `; - } - - private renderRightColumn() { - return html` -
    Users
    - this._updateUserKeys((e.target as any).value)} - .value=${this._userKeys || []}> -
    `; - } - - // TODO: find a way where we don't have to do this for all Workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._workspaceContext.setName(target.value); - } - } - } + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + debugger; + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - if (!this._userGroup) return nothing; - - return html` - - -
    -
    ${this.renderLeftColumn()}
    -
    ${this.renderRightColumn()}
    -
    -
    - `; + return html` `; } } From c65d0506e1be191c316b7529960b71f13235e738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 21:13:58 +0100 Subject: [PATCH 169/550] lint and style --- .../libs/extensions-api/has-init-export.function.ts | 2 +- .../libs/extensions-registry/theme.models.ts | 3 +-- src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts | 4 ++-- src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts | 5 ++--- .../libs/observable-api/number-state.ts | 3 +-- .../libs/observable-api/object-state.ts | 3 +-- .../libs/observable-api/string-state.ts | 2 +- .../src/backoffice/packages/repository/package.repository.ts | 5 ++--- 8 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/has-init-export.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/has-init-export.function.ts index a7f957c7e9..4aca8929f2 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/has-init-export.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/has-init-export.function.ts @@ -1,4 +1,4 @@ -import type { UmbEntrypointModule } from "./umb-lifecycle.interface"; +import type { UmbEntrypointModule } from './umb-lifecycle.interface'; /** * Validate if an ESModule exports a known init function called 'onInit' diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/theme.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/theme.models.ts index ff2cdcb3f9..81b84ee0bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/theme.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/theme.models.ts @@ -1,5 +1,4 @@ -import type { ManifestWithLoader } from "./models"; - +import type { ManifestWithLoader } from './models'; // TODO: make or find type for JS Module with default export: Would be nice to support css file directly. export interface ManifestTheme extends ManifestWithLoader { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts index 3512c0508c..57d7f8581b 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject } from "rxjs"; +import { BehaviorSubject } from 'rxjs'; /** * @export @@ -12,7 +12,7 @@ export class BasicState extends BehaviorSubject { } next(newData: T): void { - if(newData !== this.getValue()) { + if (newData !== this.getValue()) { super.next(newData); } } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts index 138d51b055..11c38dc6b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts @@ -6,10 +6,9 @@ interface ClassStateData { /** * @export - * @class DeepState + * @class ClassState * @extends {BehaviorSubject} - * @description - A RxJS BehaviorSubject which deepFreezes the data to ensure its not manipulated from any implementations. - * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. + * @description - A RxJS BehaviorSubject which can hold class instance which has a equal method to compare in coming instances for changes. */ export class ClassState extends BehaviorSubject { constructor(initialData: T) { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts index 9d1cfd5c21..ded3defeb9 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts @@ -1,4 +1,4 @@ -import { BasicState } from "./basic-state"; +import { BasicState } from './basic-state'; /** * @export @@ -10,5 +10,4 @@ export class NumberState extends BasicState { constructor(initialData: T | number) { super(initialData); } - } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts index e726a075bb..04c72dd9b3 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts @@ -1,4 +1,4 @@ -import { DeepState } from "./deep-state"; +import { DeepState } from './deep-state'; /** * @export @@ -10,7 +10,6 @@ import { DeepState } from "./deep-state"; * The ObjectState provides methods to append data when the data is an Object. */ export class ObjectState extends DeepState { - /** * @method update * @param {Partial} partialData - A object containing some of the data to update in this Subject. diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts index 7a92238a6a..d3e9689a7b 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts @@ -1,4 +1,4 @@ -import { BasicState } from "./basic-state"; +import { BasicState } from './basic-state'; /** * @export 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 f28c63c378..5ace32228e 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 @@ -3,8 +3,8 @@ 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'; -import { isManifestJSType } from "@umbraco-cms/extensions-api"; -import { OpenAPI } from "@umbraco-cms/backend-api"; +import { isManifestJSType } from '@umbraco-cms/extensions-api'; +import { OpenAPI } from '@umbraco-cms/backend-api'; // TODO: Figure out if we should base stores like this on something more generic for "collections" rather than trees. @@ -51,7 +51,6 @@ export class UmbPackageRepository { // Crudely validate that the extension at least follows a basic manifest structure // Idea: Use `Zod` to validate the manifest if (this.isManifestBase(e)) { - /** * 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) From feb99581cf4cc60ff3fa1d6eff04c7cb386833ad Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 21:15:26 +0100 Subject: [PATCH 170/550] add routes to user workspace --- ...orkspace-action-user-group-save.element.ts | 6 +- .../workspace/user-group-workspace.element.ts | 1 - .../workspace-action-user-save.element.ts | 6 +- .../workspace/user-workspace-edit.element.ts | 348 +++++++++++++++++ .../users/workspace/user-workspace.context.ts | 2 +- .../users/workspace/user-workspace.element.ts | 354 +----------------- 6 files changed, 375 insertions(+), 342 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts index 3977037d08..7b35e2b307 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/actions/workspace-action-user-group-save.element.ts @@ -2,7 +2,7 @@ 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 { UmbWorkspaceUserContext } from '../../../users/workspace/user-workspace.context'; +import { UmbUserWorkspaceContext } from '../../../users/workspace/user-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-action-user-group-save') @@ -12,13 +12,13 @@ export class UmbWorkspaceActionUserGroupSaveElement extends UmbLitElement { @state() private _saveButtonState?: UUIButtonState; - private _workspaceContext?: UmbWorkspaceUserContext; + private _workspaceContext?: UmbUserWorkspaceContext; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (instance) => { + this.consumeContext('umbWorkspaceContext', (instance) => { this._workspaceContext = instance; }); } 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 9fa4251df5..6e17186afe 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 @@ -52,7 +52,6 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement { path: 'edit/:key', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - debugger; const key = info.match.params.key; this.#workspaceContext.load(key); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts index 000e11c34d..a91e83a1fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/actions/workspace-action-user-save.element.ts @@ -2,7 +2,7 @@ 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 { UmbWorkspaceUserContext } from '../user-workspace.context'; +import { UmbUserWorkspaceContext } from '../user-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-workspace-action-user-save') @@ -12,13 +12,13 @@ export class UmbWorkspaceActionUserSaveElement extends UmbLitElement { @state() private _saveButtonState?: UUIButtonState; - private _workspaceContext?: UmbWorkspaceUserContext; + private _workspaceContext?: UmbUserWorkspaceContext; constructor() { super(); // TODO: Figure out how to get the magic string for the workspace context. - this.consumeContext('umbWorkspaceContext', (instance) => { + this.consumeContext('umbWorkspaceContext', (instance) => { this._workspaceContext = instance; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts new file mode 100644 index 0000000000..1a7a038763 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -0,0 +1,348 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { css, html, nothing, TemplateResult } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { repeat } from 'lit/directives/repeat.js'; + +import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; +import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../../current-user/modals/change-password'; +import { UmbUserWorkspaceContext } from './user-workspace.context'; +import type { UmbModalContext } from '@umbraco-cms/modal'; +import { getLookAndColorFromUserStatus } from '@umbraco-cms/utils'; +import type { UserDetails } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/element'; + +import '../../../shared/components/input-user-group/input-user-group.element'; +import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; +import '../../../shared/components/workspace/workspace-layout/workspace-layout.element'; + +@customElement('umb-user-workspace-edit') +export class UmbUserWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + height: 100%; + } + + #main { + display: grid; + grid-template-columns: 1fr 350px; + gap: var(--uui-size-space-6); + padding: var(--uui-size-space-6); + } + + #left-column { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-4); + } + #right-column > uui-box > div { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-2); + } + uui-avatar { + font-size: var(--uui-size-16); + place-self: center; + } + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + width: 100%; + } + uui-input { + width: 100%; + } + .faded-text { + color: var(--uui-color-text-alt); + font-size: 0.8rem; + } + uui-tag { + width: fit-content; + } + #user-info { + display: flex; + gap: var(--uui-size-space-6); + } + #user-info > div { + display: flex; + flex-direction: column; + } + #assign-access { + display: flex; + flex-direction: column; + } + `, + ]; + + @state() + private _currentUser?: UserDetails; + + private _currentUserStore?: UmbCurrentUserStore; + private _modalContext?: UmbModalContext; + + private _languages = []; //TODO Add languages + + private _workspaceContext: UmbUserWorkspaceContext = new UmbUserWorkspaceContext(this); + + @state() + private _user?: UserDetails; + + @state() + private _userName = ''; + + constructor() { + super(); + + this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (store) => { + this._currentUserStore = store; + this._observeCurrentUser(); + }); + + this.observe(this._workspaceContext.data, (user) => { + // TODO: fix type mismatch: + this._user = user as any; + if (user && user.name !== this._userName) { + this._userName = user.name || ''; + } + }); + } + + private async _observeCurrentUser() { + if (!this._currentUserStore) return; + + // TODO: do not have static current user service, we need to make a ContextAPI for this. + this.observe(this._currentUserStore.currentUser, (currentUser) => { + this._currentUser = currentUser; + }); + } + + private _updateUserStatus() { + if (!this._user || !this._workspaceContext) return; + + const isDisabled = this._user.status === 'disabled'; + // TODO: make sure we use the workspace for this: + /* + isDisabled + ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) + : this._workspaceContext.getStore()?.disableUsers([this._user.key]); + */ + } + + private _deleteUser() { + if (!this._user || !this._workspaceContext) return; + + // TODO: make sure we use the workspace for this: + //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); + + history.pushState(null, '', 'section/users/view/users/overview'); + } + + // TODO. find a way where we don't have to do this for all workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this._updateProperty('name', target.value); + } + } + } + + private _updateProperty(propertyName: string, value: unknown) { + this._workspaceContext?.update({ [propertyName]: value }); + } + + private _renderContentStartNodes() { + if (!this._user) return; + + if (this._user.contentStartNodes.length < 1) + return html` + + + + `; + + //TODO Render the name of the content start node instead of it's key. + return repeat( + this._user.contentStartNodes, + (node) => node, + (node) => { + return html` + + + + `; + } + ); + } + + private _changePassword() { + this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { + requireOldPassword: this._currentUserStore?.isAdmin === false, + }); + } + + private _renderActionButtons() { + if (!this._user) return; + + const buttons: TemplateResult[] = []; + + if (this._currentUserStore?.isAdmin === false) return nothing; + + if (this._user?.status !== 'invited') + buttons.push( + html` + + ` + ); + + if (this._currentUser?.key !== this._user?.key) + buttons.push(html` `); + + buttons.push( + html` ` + ); + + return buttons; + } + + private _renderLeftColumn() { + if (!this._user) return nothing; + + return html` +
    Profile
    + + + + + + +
    + +
    Assign access
    +
    + + this._updateProperty('userGroups', e.target.value)}> + + + this._updateProperty('contentStartNodes', e.target.value)} + slot="editor"> + + + NEED MEDIA PICKER + +
    +
    + +
    + Based on the assigned groups and start nodes, the user has access to the following nodes +
    + + Content + ${this._renderContentStartNodes()} +
    + Media + + + +
    `; + } + + private _renderRightColumn() { + if (!this._user || !this._workspaceContext) return nothing; + + const statusLook = getLookAndColorFromUserStatus(this._user.status); + + return html` +
    + + +
    + ${this._renderActionButtons()} +
    + Status: + + ${this._user.status} + +
    + ${this._user?.status === 'invited' + ? html` + + + ` + : nothing} +
    + Last login: + ${this._user.lastLoginDate || `${this._user.name} has not logged in yet`} +
    +
    + Failed login attempts + ${this._user.failedLoginAttempts} +
    +
    + Last lockout date: + ${this._user.lastLockoutDate || `${this._user.name} has not been locked out`} +
    +
    + Password last changed: + ${this._user.lastLoginDate || `${this._user.name} has not changed password`} +
    +
    + User created: + ${this._user.createDate} +
    +
    + User last updated: + ${this._user.updateDate} +
    +
    + Key: + ${this._user.key} +
    +
    +
    `; + } + + render() { + if (!this._user) return html`User not found`; + + return html` + + +
    +
    ${this._renderLeftColumn()}
    +
    ${this._renderRightColumn()}
    +
    +
    + `; + } +} + +export default UmbUserWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-user-workspace-edit': UmbUserWorkspaceEditElement; + } +} 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 c4cc6fd850..a872285078 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 @@ -6,7 +6,7 @@ import { UmbUserRepository } from '../repository/user.repository'; import type { UserDetails } from '@umbraco-cms/models'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -export class UmbWorkspaceUserContext +export class UmbUserWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts index 3ef980f51e..e300f73190 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts @@ -1,350 +1,36 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { css, html, nothing, TemplateResult } from 'lit'; +import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit/directives/if-defined.js'; -import { repeat } from 'lit/directives/repeat.js'; - -import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import type { UmbWorkspaceEntityElement } from '../../../shared/components/workspace/workspace-entity-element.interface'; -import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../../current-user/modals/change-password'; -import { UmbWorkspaceUserContext } from './user-workspace.context'; -import type { UmbModalContext } from '@umbraco-cms/modal'; -import { getLookAndColorFromUserStatus } from '@umbraco-cms/utils'; -import type { UserDetails } from '@umbraco-cms/models'; +import { UmbUserWorkspaceContext } from './user-workspace.context'; +import { UmbUserWorkspaceEditElement } from './user-workspace-edit.element'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/router'; import '../../../shared/components/input-user-group/input-user-group.element'; import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; import '../../../shared/components/workspace/workspace-layout/workspace-layout.element'; -import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-user-workspace') -export class UmbUserWorkspaceElement extends UmbLitElement implements UmbWorkspaceEntityElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - height: 100%; - } +export class UmbUserWorkspaceElement extends UmbLitElement { + static styles = [UUITextStyles]; - #main { - display: grid; - grid-template-columns: 1fr 350px; - gap: var(--uui-size-space-6); - padding: var(--uui-size-space-6); - } + #workspaceContext = new UmbUserWorkspaceContext(this); + #element = new UmbUserWorkspaceEditElement(); - #left-column { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - } - #right-column > uui-box > div { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-2); - } - uui-avatar { - font-size: var(--uui-size-16); - place-self: center; - } - hr { - border: none; - border-bottom: 1px solid var(--uui-color-divider); - width: 100%; - } - uui-input { - width: 100%; - } - .faded-text { - color: var(--uui-color-text-alt); - font-size: 0.8rem; - } - uui-tag { - width: fit-content; - } - #user-info { - display: flex; - gap: var(--uui-size-space-6); - } - #user-info > div { - display: flex; - flex-direction: column; - } - #assign-access { - display: flex; - flex-direction: column; - } - `, + @state() + _routes: any[] = [ + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, ]; - @state() - private _currentUser?: UserDetails; - - private _currentUserStore?: UmbCurrentUserStore; - private _modalContext?: UmbModalContext; - - private _languages = []; //TODO Add languages - - private _workspaceContext: UmbWorkspaceUserContext = new UmbWorkspaceUserContext(this); - - @state() - private _user?: UserDetails; - - @state() - private _userName = ''; - - constructor() { - super(); - - this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (store) => { - this._currentUserStore = store; - this._observeCurrentUser(); - }); - - this.observe(this._workspaceContext.data, (user) => { - // TODO: fix type mismatch: - this._user = user as any; - if (user && user.name !== this._userName) { - this._userName = user.name || ''; - } - }); - } - - public load(entityKey: string) { - this._workspaceContext.load(entityKey); - } - - public create(parentKey: string | null) { - this._workspaceContext.create(parentKey); - } - - private async _observeCurrentUser() { - if (!this._currentUserStore) return; - - // TODO: do not have static current user service, we need to make a ContextAPI for this. - this.observe(this._currentUserStore.currentUser, (currentUser) => { - this._currentUser = currentUser; - }); - } - - private _updateUserStatus() { - if (!this._user || !this._workspaceContext) return; - - const isDisabled = this._user.status === 'disabled'; - // TODO: make sure we use the workspace for this: - /* - isDisabled - ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) - : this._workspaceContext.getStore()?.disableUsers([this._user.key]); - */ - } - - private _deleteUser() { - if (!this._user || !this._workspaceContext) return; - - // TODO: make sure we use the workspace for this: - //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); - - history.pushState(null, '', 'section/users/view/users/overview'); - } - - // TODO. find a way where we don't have to do this for all workspaces. - private _handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this._updateProperty('name', target.value); - } - } - } - - private _updateProperty(propertyName: string, value: unknown) { - this._workspaceContext?.update({ [propertyName]: value }); - } - - private _renderContentStartNodes() { - if (!this._user) return; - - if (this._user.contentStartNodes.length < 1) - return html` - - - - `; - - //TODO Render the name of the content start node instead of it's key. - return repeat( - this._user.contentStartNodes, - (node) => node, - (node) => { - return html` - - - - `; - } - ); - } - - private _changePassword() { - this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { - requireOldPassword: this._currentUserStore?.isAdmin === false, - }); - } - - private _renderActionButtons() { - if (!this._user) return; - - const buttons: TemplateResult[] = []; - - if (this._currentUserStore?.isAdmin === false) return nothing; - - if (this._user?.status !== 'invited') - buttons.push( - html` - - ` - ); - - if (this._currentUser?.key !== this._user?.key) - buttons.push(html` `); - - buttons.push( - html` ` - ); - - return buttons; - } - - private _renderLeftColumn() { - if (!this._user) return nothing; - - return html` -
    Profile
    - - - - - - -
    - -
    Assign access
    -
    - - this._updateProperty('userGroups', e.target.value)}> - - - this._updateProperty('contentStartNodes', e.target.value)} - slot="editor"> - - - NEED MEDIA PICKER - -
    -
    - -
    - Based on the assigned groups and start nodes, the user has access to the following nodes -
    - - Content - ${this._renderContentStartNodes()} -
    - Media - - - -
    `; - } - - private _renderRightColumn() { - if (!this._user || !this._workspaceContext) return nothing; - - const statusLook = getLookAndColorFromUserStatus(this._user.status); - - return html` -
    - - -
    - ${this._renderActionButtons()} -
    - Status: - - ${this._user.status} - -
    - ${this._user?.status === 'invited' - ? html` - - - ` - : nothing} -
    - Last login: - ${this._user.lastLoginDate || `${this._user.name} has not logged in yet`} -
    -
    - Failed login attempts - ${this._user.failedLoginAttempts} -
    -
    - Last lockout date: - ${this._user.lastLockoutDate || `${this._user.name} has not been locked out`} -
    -
    - Password last changed: - ${this._user.lastLoginDate || `${this._user.name} has not changed password`} -
    -
    - User created: - ${this._user.createDate} -
    -
    - User last updated: - ${this._user.updateDate} -
    -
    - Key: - ${this._user.key} -
    -
    -
    `; - } - render() { - if (!this._user) return html`User not found`; - - return html` - - -
    -
    ${this._renderLeftColumn()}
    -
    ${this._renderRightColumn()}
    -
    -
    - `; + return html` `; } } From 5129127e25e6bd9c70c3698eb86f2a645ad11a5c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 21:22:32 +0100 Subject: [PATCH 171/550] fix return type --- .../backoffice/documents/documents/repository/sources/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index dc218ee4aa..bb7b3aeefb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -3,6 +3,6 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; export interface UmbDocumentDataSource extends RepositoryDetailDataSource { - createScaffold(documentTypeKey: string): Promise; + createScaffold(documentTypeKey: string): Promise>; trash(key: string): Promise>; } From f5a884974240298df863409f5a654d3153e68386 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 21:31:30 +0100 Subject: [PATCH 172/550] comsume workspace in document type editor edit --- .../document-type-workspace-edit.element.ts | 19 ++++++++++++------- .../document-type-workspace.element.ts | 10 ++++------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts index 4aa94d78e3..5192564679 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -46,7 +46,7 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { name: 'umb:document-dashed-line', }; - private _workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); + #workspaceContext?: UmbWorkspaceDocumentTypeContext; @state() private _documentType?: DocumentTypeResponseModel; @@ -56,14 +56,19 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { constructor() { super(); + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeDocumentType(); + }); + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { this._modalContext = instance; }); + } - this.observe(this._workspaceContext.data, (data) => { - // TODO: make method to identify if data is of type DocumentType - this._documentType = data as DocumentType; - }); + #observeDocumentType() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => (this._documentType = data)); } // TODO. find a way where we don't have to do this for all workspaces. @@ -72,7 +77,7 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { const target = event.composedPath()[0] as UUIInputElement; if (typeof target?.value === 'string') { - this._workspaceContext?.setName(target.value); + this.#workspaceContext?.setName(target.value); } } } @@ -81,7 +86,7 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); modalHandler?.onSubmit().then((saved) => { - if (saved.icon) this._workspaceContext?.setIcon(saved.icon); + if (saved.icon) this.#workspaceContext?.setIcon(saved.icon); // TODO save color ALIAS as well }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index d604b80c91..8bcd5f7aff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -1,19 +1,17 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from '@umbraco-cms/router'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceEditElement } from './document-type-workspace-edit.element'; +import { IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; -import './document-type-workspace-edit.element'; - @customElement('umb-document-type-workspace') export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { static styles = [UUITextStyles]; - #workspaceContext: UmbWorkspaceDocumentTypeContext = new UmbWorkspaceDocumentTypeContext(this); - - #element = document.createElement('umb-document-type-workspace-edit'); + #workspaceContext = new UmbWorkspaceDocumentTypeContext(this); + #element = new UmbDocumentTypeWorkspaceEditElement(); @state() _routes = [ From 6470c7a1488fb353b407774de28986c723f44158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 16 Mar 2023 22:13:47 +0100 Subject: [PATCH 173/550] POC kinds --- .../registry/extension.registry.test.ts | 126 +++++++++++++++--- .../registry/extension.registry.ts | 95 ++++++++++--- .../libs/extensions-registry/models.ts | 10 ++ 3 files changed, 194 insertions(+), 37 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 960bdfea4a..0c34b911bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -1,8 +1,8 @@ import { expect } from '@open-wc/testing'; -import type { ManifestTypes } from '../../models'; +import type { ManifestKind, ManifestTypes } from '../../models'; import { UmbExtensionRegistry } from './extension.registry'; -describe('UmbContextRequestEvent', () => { +describe('UmbExtensionRegistry', () => { let extensionRegistry: UmbExtensionRegistry; let manifests: Array; @@ -60,31 +60,121 @@ describe('UmbContextRequestEvent', () => { it('should get an extension by alias', (done) => { const alias = 'Umb.Test.Section.1'; - extensionRegistry.getByAlias(alias).subscribe((extension) => { - expect(extension?.alias).to.eq(alias); - done(); - }); + extensionRegistry + .getByAlias(alias) + .subscribe((extension) => { + expect(extension?.alias).to.eq(alias); + done(); + }) + .unsubscribe(); }); describe('getByType', () => { const type = 'section'; it('should get all extensions by type', (done) => { - extensionRegistry.extensionsOfType(type).subscribe((extensions) => { - expect(extensions).to.have.lengthOf(3); - expect(extensions?.[0]?.type).to.eq(type); - expect(extensions?.[1]?.type).to.eq(type); - done(); - }); + extensionRegistry + .extensionsOfType(type) + .subscribe((extensions) => { + expect(extensions).to.have.lengthOf(3); + expect(extensions?.[0]?.type).to.eq(type); + expect(extensions?.[1]?.type).to.eq(type); + done(); + }) + .unsubscribe(); }); + // TODO: What kind of weighting would we like to use? + /* it('should return extensions ordered by weight', (done) => { - extensionRegistry.extensionsOfType(type).subscribe((extensions) => { - expect(extensions?.[0]?.weight).to.eq(200); - expect(extensions?.[1]?.weight).to.eq(25); - expect(extensions?.[2]?.weight).to.eq(1); - done(); - }); + extensionRegistry + .extensionsOfType(type) + .subscribe((extensions) => { + expect(extensions?.[0]?.weight).to.eq(200); + expect(extensions?.[1]?.weight).to.eq(25); + expect(extensions?.[2]?.weight).to.eq(1); + done(); + }) + .unsubscribe(); }); + */ + }); +}); + +describe('UmbExtensionRegistry with kinds', () => { + let extensionRegistry: UmbExtensionRegistry; + let kinds: Array; + let manifests: Array; + + beforeEach(() => { + extensionRegistry = new UmbExtensionRegistry(); + kinds = [ + { + matchType: 'section', + matchKind: 'test-kind', + manifest: { + type: 'section', + elementName: 'my-kind-element', + }, + }, + ]; + manifests = [ + { + type: 'section', + kind: 'test-kind', + name: 'test-section-1', + alias: 'Umb.Test.Section.1', + weight: 1, + meta: { + label: 'Test Section 1', + pathname: 'test-section-1', + }, + }, + { + type: 'section', + name: 'test-section-2', + alias: 'Umb.Test.Section.2', + weight: 200, + meta: { + label: 'Test Section 2', + pathname: 'test-section-2', + }, + }, + { + type: 'section', + kind: 'test-kind', + name: 'test-section-3', + alias: 'Umb.Test.Section.3', + weight: 25, + meta: { + label: 'Test Section 3', + pathname: 'test-section-3', + }, + }, + { + type: 'workspace', + name: 'test-editor-1', + alias: 'Umb.Test.Editor.1', + meta: { + entityType: 'testEntity', + }, + }, + ]; + + kinds.forEach((kind) => extensionRegistry.defineKind(kind)); + manifests.forEach((manifest) => extensionRegistry.register(manifest)); + }); + + it('should merge with kinds', (done) => { + extensionRegistry + .getByTypeWithKinds('section') + .subscribe((extensions) => { + expect(extensions).to.have.lengthOf(3); + expect(extensions?.[0]?.elementName).to.eq('my-kind-element'); + expect(extensions?.[1]?.elementName).to.eq('my-kind-element'); + expect(extensions?.[2]?.elementName).to.not.eq('my-kind-element'); + done(); + }) + .unsubscribe(); }); }); diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 14dfe2cc9e..3ec5614b30 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -1,19 +1,39 @@ -import { BehaviorSubject, map, Observable } from 'rxjs'; -import type { ManifestTypes, ManifestTypeMap, ManifestBase, ManifestEntrypoint } from '../../models'; +import { BehaviorSubject, withLatestFrom, map, Observable } from 'rxjs'; +import type { + ManifestTypes, + ManifestTypeMap, + ManifestBase, + ManifestEntrypoint, + SpecificManifestTypeOrManifestBase, + ManifestKind, +} from '../../models'; import { loadExtension } from '../load-extension.function'; -import { hasInitExport } from "../has-init-export.function"; -import type { UmbControllerHostInterface } from "@umbraco-cms/controller"; -import { UmbContextToken } from "@umbraco-cms/context-api"; - -type SpecificManifestTypeOrManifestBase = T extends keyof ManifestTypeMap - ? ManifestTypeMap[T] - : ManifestBase; +import { hasInitExport } from '../has-init-export.function'; +import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/context-api'; export class UmbExtensionRegistry { - // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. private _extensions = new BehaviorSubject>([]); public readonly extensions = this._extensions.asObservable(); + /* + public readonly entryPoints = this._extensions.pipe( + map((extensions) => extensions.filter((e) => e.type === 'entrypoint')) + ); + */ + + private _kinds = new BehaviorSubject>([]); + public readonly kinds = this._kinds.asObservable(); + + defineKind(kind: ManifestKind) { + const nextData = this._kinds + .getValue() + .filter( + (k) => k.matchType !== (kind as ManifestKind).matchType && k.matchKind !== (kind as ManifestKind).matchKind + ); + nextData.push(kind as ManifestKind); + this._kinds.next(nextData); + } register(manifest: ManifestTypes, rootHost?: UmbControllerHostInterface): void { const extensionsValues = this._extensions.getValue(); @@ -57,33 +77,69 @@ export class UmbExtensionRegistry { getByAlias(alias: string) { // TODO: make pipes prettier/simpler/reuseable - return this.extensions.pipe(map((dataTypes) => dataTypes.find((extension) => extension.alias === alias) || null)); + return this.extensions.pipe(map((extensions) => extensions.find((extension) => extension.alias === alias) || null)); } - getByTypeAndAlias(type: Key, alias: string) { + kindsOfType(type: Key) { + return this.kinds.pipe(map((kinds) => kinds.filter((kind) => kind.matchType === type))); + } + + getByTypeWithKinds>( + type: Key + ) { + /* return this.extensionsOfType(type).pipe( map((extensions) => extensions.find((extension) => extension.alias === alias) || null) ); + */ + return this.extensionsOfType(type).pipe( + withLatestFrom(this.kindsOfType(type)), + map(([exts, kinds]) => + exts + .map((ext) => { + return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; + }) + .sort((a, b) => (a.weight || 0) - (b.weight || 0)) + ) + ) as Observable>; + // + } + + getByTypeAndAlias>( + type: Key, + alias: string + ) { + /* + return this.extensionsOfType(type).pipe( + map((extensions) => extensions.find((extension) => extension.alias === alias) || null) + ); + */ + return this.extensions.pipe( + map((exts) => + exts.filter((ext) => ext.type === type && ext.alias === alias).sort((a, b) => (a.weight || 0) - (b.weight || 0)) + ) + ) as Observable>; + // } extensionsOfType>(type: Key) { - return this.extensions.pipe( - map((exts) => exts.filter((ext) => ext.type === type).sort((a, b) => (b.weight || 0) - (a.weight || 0))) - ) as Observable>; + return this.extensions.pipe(map((exts) => exts.filter((ext) => ext.type === type))) as Observable>; + //.sort((a, b) => (b.weight || 0) - (a.weight || 0)) } extensionsOfTypes(types: string[]): Observable> { return this.extensions.pipe( map((exts) => - exts.filter((ext) => types.indexOf(ext.type) !== -1).sort((a, b) => (b.weight || 0) - (a.weight || 0)) + exts.filter((ext) => types.indexOf(ext.type) !== -1).sort((a, b) => (a.weight || 0) - (b.weight || 0)) ) ) as Observable>; + // } extensionsSortedByTypeAndWeight(): Observable> { return this.extensions.pipe( - map((exts) => exts - .sort((a, b) => { + map((exts) => + exts.sort((a, b) => { // If type is the same, sort by weight if (a.type === b.type) { return (a.weight || 0) - (b.weight || 0); @@ -91,7 +147,8 @@ export class UmbExtensionRegistry { // Otherwise sort by type return a.type.localeCompare(b.type); - })) + }) + ) ) as Observable>; } } 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 4655df55d8..a293266335 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -93,13 +93,23 @@ export type ManifestTypeMap = { [Manifest in ManifestTypes as Manifest['type']]: Manifest; }; +export type SpecificManifestTypeOrManifestBase = + T extends keyof ManifestTypeMap ? ManifestTypeMap[T] : ManifestBase; + export interface ManifestBase { type: string; + kind?: string; // as kind alias that together with type will look up another extension to extend. alias: string; name: string; weight?: number; } +export interface ManifestKind { + matchType: string; + matchKind: string; + manifest: Partial; +} + export interface ManifestWithConditions { conditions: ConditionsType; } From 8730060aa0ac4bbb60740d3e965f035327d0ab07 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 16 Mar 2023 23:04:03 +0100 Subject: [PATCH 174/550] make section views and dashboards coexist --- .../section-dashboards.element.ts | 184 ------------------ .../section-dashboards.stories.ts | 27 --- .../section-views/section-views.element.ts | 97 ++++++--- .../components/section/section.element.ts | 83 +++----- 4 files changed, 99 insertions(+), 292 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts 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 deleted file mode 100644 index 87872bc289..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.element.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { css, html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { first, map } from 'rxjs'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoutingInfo } from '@umbraco-cms/router'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestDashboard, ManifestDashboardCollection } from '@umbraco-cms/models'; - -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-section-dashboards') -export class UmbSectionDashboardsElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - height: 100%; - } - - #tabs { - background-color: var(--uui-color-surface); - height: 70px; - border-bottom: 1px solid var(--uui-color-border); - box-sizing: border-box; - } - - #scroll-container { - flex: 1; - position: relative; - } - - #router-slot { - box-sizing: border-box; - display: block; - padding: var(--uui-size-5); - } - - #header { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - min-height: 60px; - box-sizing: border-box; - margin: 0; - padding: 0 var(--uui-size-5); - background-color: var(--uui-color-surface); - border-bottom: 1px solid var(--uui-color-border); - } - `, - ]; - - @state() - private _dashboards?: Array; - - @state() - private _routes: Array = []; - - @state() - private _routerPath?: string; - - @state() - private _activePath?: string; - - private _currentSectionAlias?: string; - private _sectionContext?: UmbSectionContext; - - constructor() { - super(); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (context) => { - this._sectionContext = context; - this._observeSectionContext(); - }); - } - - private _observeSectionContext() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext.alias.pipe(first()), (alias) => { - this._currentSectionAlias = alias; - this._observeDashboards(); - }); - } - - private _observeDashboards() { - if (!this._currentSectionAlias) return; - - this.observe( - umbExtensionsRegistry - ?.extensionsOfTypes(['dashboard', 'dashboardCollection']) - .pipe( - map((extensions) => - extensions.filter((extension) => extension.conditions.sections.includes(this._currentSectionAlias ?? '')) - ) - ), - (dashboards) => { - this._dashboards = dashboards || undefined; - this._createRoutes(); - } - ); - } - - private _createRoutes() { - this._routes = []; - - if (this._dashboards) { - this._routes = this._dashboards.map((dashboard) => { - return { - path: `${dashboard.meta.pathname}`, - component: () => { - if (dashboard.type === 'dashboardCollection') { - return import('src/backoffice/shared/collection/dashboards/dashboard-collection.element'); - } - return createExtensionElement(dashboard); - }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - // TODO: this is a bit hacky, can we do it in a more appropriate way: - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = dashboard)); - } else { - (component as any).manifest = dashboard; - } - }, - }; - }); - - this._routes.push({ - path: '**', - redirectTo: this._dashboards?.[0]?.meta.pathname, - }); - } - } - - private _renderNavigation() { - return html` - ${this._dashboards && this._dashboards.length > 1 - ? html` - - ${this._dashboards.map( - (dashboard) => html` - - ` - )} - - ` - : this._dashboards?.length === 1 - ? html`` - : nothing} - `; - } - - render() { - return html` - ${this._renderNavigation()} - - { - this._routerPath = event.target.absoluteRouterPath; - }} - @change=${(event: UmbRouterSlotChangeEvent) => { - this._activePath = event.target.localActiveViewPath; - }}> - - `; - } -} - -export default UmbSectionDashboardsElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-section-dashboards': UmbSectionDashboardsElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts deleted file mode 100644 index 28c3096f16..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-dashboards/section-dashboards.stories.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; -import { manifests } from '../../../../documents/section.manifests'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { UmbSectionDashboardsElement } from './section-dashboards.element'; -import type { ManifestSection } from '@umbraco-cms/models'; -import './section-dashboards.element'; - -const contentSectionManifest = manifests.find((m) => m.alias === 'Umb.Section.Content') as ManifestSection; - -export default { - title: 'Sections/Shared/Section Dashboards', - component: 'umb-section-dashboards', - id: 'umb-section-dashboards', - decorators: [ - (story) => - html` - ${story()} - `, - ], -} as Meta; - -export const AAAOverview: Story = () => - html` `; -AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 4ee4405469..5dba7bfcba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -2,13 +2,14 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import type { ManifestSectionView } from '@umbraco-cms/models'; +import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/models'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbObserverController } from '@umbraco-cms/observable-api'; +// TODO: this might need a new name, since it's both view and dashboard now @customElement('umb-section-views') export class UmbSectionViewsElement extends UmbLitElement { static styles = [ @@ -17,14 +18,17 @@ export class UmbSectionViewsElement extends UmbLitElement { #header { background-color: var(--uui-color-surface); border-bottom: 1px solid var(--uui-color-divider-standalone); + display: flex; + justify-content: space-between; + align-items: center; } - uui-tab-group { + #views { justify-content: flex-end; --uui-tab-divider: var(--uui-color-divider-standalone); } - uui-tab-group uui-tab:first-child { + #views uui-tab:first-child { border-left: 1px solid var(--uui-color-divider-standalone); } `, @@ -36,6 +40,9 @@ export class UmbSectionViewsElement extends UmbLitElement { @state() private _views: Array = []; + @state() + private _dashboards: Array = []; + @state() private _routerPath?: string; @@ -47,49 +54,76 @@ export class UmbSectionViewsElement extends UmbLitElement { private _sectionContext?: UmbSectionContext; private _extensionsObserver?: UmbObserverController; + private _viewsObserver?: UmbObserverController; + private _dashboardObserver?: UmbObserverController; constructor() { super(); this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { this._sectionContext = sectionContext; - this._observeViews(); + this._observeSectionAlias(); }); } - async #createRoutes(viewManifests: Array) { - if (!viewManifests) return; - const routes = viewManifests.map((manifest) => { + async #createRoutes() { + const dashboardRoutes = this._dashboards?.map((manifest) => { return { - path: manifest.meta.pathname, + path: 'dashboard/' + manifest.meta.pathname, component: () => createExtensionElement(manifest), }; }); - this._routes = [...routes, { path: '**', redirectTo: routes[0].path }]; + const viewRoutes = this._views?.map((manifest) => { + return { + path: 'view/' + manifest.meta.pathname, + component: () => createExtensionElement(manifest), + }; + }); + + const routes = [...dashboardRoutes, ...viewRoutes]; + this._routes = routes?.length > 0 ? [...routes, { path: '**', redirectTo: routes?.[0]?.path }] : []; } - private _observeViews() { + private _observeSectionAlias() { if (!this._sectionContext) return; this.observe( this._sectionContext.alias, (sectionAlias) => { - this._observeExtensions(sectionAlias); + this._observeViews(sectionAlias); + this._observeDashboards(sectionAlias); }, 'viewsObserver' ); } - private _observeExtensions(sectionAlias?: string) { - this._extensionsObserver?.destroy(); + + private _observeViews(sectionAlias?: string) { + this._viewsObserver?.destroy(); if (sectionAlias) { - this._extensionsObserver = this.observe( + this._viewsObserver = this.observe( umbExtensionsRegistry ?.extensionsOfType('sectionView') .pipe(map((views) => views.filter((view) => view.conditions.sections.includes(sectionAlias)))) ?? of([]), (views) => { this._views = views; - this.#createRoutes(views); + this.#createRoutes(); + } + ); + } + } + + private _observeDashboards(sectionAlias?: string) { + this._dashboardObserver?.destroy(); + + if (sectionAlias) { + this._dashboardObserver = this.observe( + umbExtensionsRegistry + ?.extensionsOfType('dashboard') + .pipe(map((views) => views.filter((view) => view.conditions.sections.includes(sectionAlias)))) ?? of([]), + (views) => { + this._dashboards = views; + this.#createRoutes(); } ); } @@ -97,9 +131,9 @@ export class UmbSectionViewsElement extends UmbLitElement { render() { return html` - ${this._views.length > 0 + ${this._routes.length > 0 ? html` - + { @@ -114,15 +148,32 @@ export class UmbSectionViewsElement extends UmbLitElement { `; } - #renderTabs() { + #renderDashboards() { return html` - + + ${this._dashboards.map( + (dashboard) => html` + + ${dashboard.meta.label || dashboard.name} + + ` + )} + + `; + } + + #renderViews() { + return html` + ${this._views.map( - (view: ManifestSectionView) => html` + (view) => html` + href="${this._routerPath}/view/${view.meta.pathname}" + ?active="${this._activePath === 'view/' + view.meta.pathname}"> ${view.meta.label || view.name} 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 ac57c973c1..e45c54f975 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 @@ -2,12 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; - -import type { IRoutingInfo } from '@umbraco-cms/router'; import type { UmbWorkspaceElement } from '../workspace/workspace.element'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from './section.context'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; -import type { ManifestSectionView, ManifestMenuSectionSidebarApp, ManifestSection } from '@umbraco-cms/models'; +import type { IRoutingInfo } from '@umbraco-cms/router'; +import type { ManifestMenuSectionSidebarApp, ManifestSection } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -49,39 +47,16 @@ export class UmbSectionElement extends UmbLitElement { @state() private _menus?: Array; - @state() - private _views?: Array; - - private _sectionContext?: UmbSectionContext; - private _sectionAlias?: string; - - constructor() { - super(); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (instance) => { - this._sectionContext = instance; - - // TODO: currently they don't corporate, as they overwrite each other... - this.#observeSectionAlias(); - this.#createRoutes(); - }); + connectedCallback() { + super.connectedCallback(); + this.#observeSectionSidebarApps(); + this.#createRoutes(); } #createRoutes() { this._routes = []; this._routes = [ - { - path: 'dashboard', - component: () => import('./section-dashboards/section-dashboards.element'), - }, - { - path: 'view', - component: () => import('../section/section-views/section-views.element'), - setup: (element: UmbSectionViewsElement) => { - element.sectionAlias = this.manifest?.alias; - }, - }, { path: 'workspace/:entityType', component: () => import('../workspace/workspace.element'), @@ -91,35 +66,27 @@ export class UmbSectionElement extends UmbLitElement { }, { path: '**', - redirectTo: 'view', + component: () => import('../section/section-views/section-views.element'), + setup: (element: UmbSectionViewsElement) => { + element.sectionAlias = this.manifest?.alias; + }, }, ]; } - #observeSectionAlias() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext.alias, (alias) => { - this._sectionAlias = alias; - this.#observeSectionSidebarApps(alias); - }); - } - - #observeSectionSidebarApps(sectionAlias?: string) { - if (sectionAlias) { - this.observe( - umbExtensionsRegistry - ?.extensionsOfType('menuSectionSidebarApp') - .pipe( - map((manifests) => manifests.filter((manifest) => manifest.conditions.sections.includes(sectionAlias))) - ), - (manifests) => { - this._menus = manifests; - } - ); - } else { - this._menus = []; - } + #observeSectionSidebarApps() { + this.observe( + umbExtensionsRegistry + ?.extensionsOfType('menuSectionSidebarApp') + .pipe( + map((manifests) => + manifests.filter((manifest) => manifest.conditions.sections.includes(this.manifest?.alias || '')) + ) + ), + (manifests) => { + this._menus = manifests; + } + ); } render() { @@ -131,12 +98,12 @@ export class UmbSectionElement extends UmbLitElement { - items.conditions.sections.includes(this._sectionAlias || '')}> + items.conditions.sections.includes(this.manifest?.alias || '')}> - items.conditions.sections.includes(this._sectionAlias || '')} + items.conditions.sections.includes(this.manifest?.alias || '')} default-element="umb-section-sidebar-menu"> ` From 2bcf11f9305b925ad23c15f37c56927c9e515214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 08:39:09 +0100 Subject: [PATCH 175/550] broad implementation --- .../registry/extension.registry.test.ts | 19 ++- .../registry/extension.registry.ts | 115 ++++++++++-------- .../libs/extensions-registry/models.ts | 1 + .../extension-root-workspace.element.ts | 2 +- 4 files changed, 73 insertions(+), 64 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 0c34b911bb..1aa9898985 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -61,7 +61,7 @@ describe('UmbExtensionRegistry', () => { it('should get an extension by alias', (done) => { const alias = 'Umb.Test.Section.1'; extensionRegistry - .getByAlias(alias) + .getByTypeAndAlias('section', alias) .subscribe((extension) => { expect(extension?.alias).to.eq(alias); done(); @@ -85,31 +85,29 @@ describe('UmbExtensionRegistry', () => { }); // TODO: What kind of weighting would we like to use? - /* it('should return extensions ordered by weight', (done) => { extensionRegistry .extensionsOfType(type) .subscribe((extensions) => { - expect(extensions?.[0]?.weight).to.eq(200); + expect(extensions?.[0]?.weight).to.eq(1); expect(extensions?.[1]?.weight).to.eq(25); - expect(extensions?.[2]?.weight).to.eq(1); + expect(extensions?.[2]?.weight).to.eq(200); done(); }) .unsubscribe(); }); - */ }); }); describe('UmbExtensionRegistry with kinds', () => { let extensionRegistry: UmbExtensionRegistry; - let kinds: Array; - let manifests: Array; + let manifests: Array; beforeEach(() => { extensionRegistry = new UmbExtensionRegistry(); - kinds = [ + manifests = [ { + type: 'kind', matchType: 'section', matchKind: 'test-kind', manifest: { @@ -117,8 +115,6 @@ describe('UmbExtensionRegistry with kinds', () => { elementName: 'my-kind-element', }, }, - ]; - manifests = [ { type: 'section', kind: 'test-kind', @@ -161,13 +157,12 @@ describe('UmbExtensionRegistry with kinds', () => { }, ]; - kinds.forEach((kind) => extensionRegistry.defineKind(kind)); manifests.forEach((manifest) => extensionRegistry.register(manifest)); }); it('should merge with kinds', (done) => { extensionRegistry - .getByTypeWithKinds('section') + .extensionsOfType('section') .subscribe((extensions) => { expect(extensions).to.have.lengthOf(3); expect(extensions?.[0]?.elementName).to.eq('my-kind-element'); diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 3ec5614b30..8822febec5 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject, withLatestFrom, map, Observable } from 'rxjs'; +import { BehaviorSubject, withLatestFrom, map, find, Observable } from 'rxjs'; import type { ManifestTypes, ManifestTypeMap, @@ -16,11 +16,6 @@ export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. private _extensions = new BehaviorSubject>([]); public readonly extensions = this._extensions.asObservable(); - /* - public readonly entryPoints = this._extensions.pipe( - map((extensions) => extensions.filter((e) => e.type === 'entrypoint')) - ); - */ private _kinds = new BehaviorSubject>([]); public readonly kinds = this._kinds.asObservable(); @@ -35,16 +30,21 @@ export class UmbExtensionRegistry { this._kinds.next(nextData); } - register(manifest: ManifestTypes, rootHost?: UmbControllerHostInterface): void { - const extensionsValues = this._extensions.getValue(); - const extension = extensionsValues.find((extension) => extension.alias === manifest.alias); - - if (extension) { - console.error(`Extension with alias ${manifest.alias} is already registered`); + register(manifest: ManifestTypes | ManifestKind, rootHost?: UmbControllerHostInterface): void { + if (manifest.type === 'kind') { + this.defineKind(manifest as ManifestKind); return; } - this._extensions.next([...extensionsValues, manifest]); + const extensionsValues = this._extensions.getValue(); + const extension = extensionsValues.find((extension) => extension.alias === (manifest as ManifestTypes).alias); + + if (extension) { + console.error(`Extension with alias ${(manifest as ManifestTypes).alias} is already registered`); + return; + } + + this._extensions.next([...extensionsValues, manifest as ManifestTypes]); // If entrypoint extension, we should load and run it immediately if (manifest.type === 'entrypoint') { @@ -75,25 +75,48 @@ export class UmbExtensionRegistry { return values.some((ext) => ext.alias === alias); } + /* getByAlias(alias: string) { // TODO: make pipes prettier/simpler/reuseable return this.extensions.pipe(map((extensions) => extensions.find((extension) => extension.alias === alias) || null)); } + */ - kindsOfType(type: Key) { + private _kindsOfType(type: Key) { return this.kinds.pipe(map((kinds) => kinds.filter((kind) => kind.matchType === type))); + // TODO: DisctinctUntilChanged by using aliases? + } + private _extensionsOfType(type: Key) { + return this.extensions.pipe(map((exts) => exts.filter((ext) => ext.type === type))); + // TODO: DisctinctUntilChanged by using aliases? + } + private _kindsOfTypes(types: string[]) { + return this.kinds.pipe(map((kinds) => kinds.filter((kind) => types.indexOf(kind.matchType) !== -1))); + // TODO: DisctinctUntilChanged by using aliases? + } + private _extensionsOfTypes(types: string[]): Observable> { + return this.extensions.pipe(map((exts) => exts.filter((ext) => types.indexOf(ext.type) !== -1))) as Observable< + Array + >; + // TODO: DisctinctUntilChanged by using aliases? } - getByTypeWithKinds>( - type: Key + getByTypeAndAlias>( + type: Key, + alias: string ) { - /* - return this.extensionsOfType(type).pipe( - map((extensions) => extensions.find((extension) => extension.alias === alias) || null) - ); - */ - return this.extensionsOfType(type).pipe( - withLatestFrom(this.kindsOfType(type)), + return this.extensions.pipe( + map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias)), + withLatestFrom(this._kindsOfType(type)), + map(([ext, kinds]) => { + return ext ? { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext } : undefined; + }) + ) as Observable; + } + + extensionsOfType>(type: Key) { + return this._extensionsOfType(type).pipe( + withLatestFrom(this._kindsOfType(type)), map(([exts, kinds]) => exts .map((ext) => { @@ -103,40 +126,30 @@ export class UmbExtensionRegistry { ) ) as Observable>; // + // TODO: DisctinctUntilChanged by using aliases? } - getByTypeAndAlias>( - type: Key, - alias: string - ) { - /* - return this.extensionsOfType(type).pipe( - map((extensions) => extensions.find((extension) => extension.alias === alias) || null) - ); - */ - return this.extensions.pipe( - map((exts) => - exts.filter((ext) => ext.type === type && ext.alias === alias).sort((a, b) => (a.weight || 0) - (b.weight || 0)) + extensionsOfTypes(types: string[]): Observable> { + return this._extensionsOfTypes(types).pipe( + withLatestFrom(this._kindsOfTypes(types)), + map(([exts, kinds]) => + exts + .map((ext) => { + return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; + }) + .sort((a, b) => (a.weight || 0) - (b.weight || 0)) ) - ) as Observable>; + ) as Observable>; // + // TODO: DisctinctUntilChanged by using aliases? } - extensionsOfType>(type: Key) { - return this.extensions.pipe(map((exts) => exts.filter((ext) => ext.type === type))) as Observable>; - //.sort((a, b) => (b.weight || 0) - (a.weight || 0)) - } - - extensionsOfTypes(types: string[]): Observable> { - return this.extensions.pipe( - map((exts) => - exts.filter((ext) => types.indexOf(ext.type) !== -1).sort((a, b) => (a.weight || 0) - (b.weight || 0)) - ) - ) as Observable>; - // - } - - extensionsSortedByTypeAndWeight(): Observable> { + // TODO: consider moving this method to the extension view? + /** + * Gets all the extensions registrations, but does not merge with kinds. + * @returns + */ + extensionRegistrationsSortedByTypeAndWeight(): Observable> { return this.extensions.pipe( map((exts) => exts.sort((a, b) => { 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 a293266335..ca118472dc 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -105,6 +105,7 @@ export interface ManifestBase { } export interface ManifestKind { + type: 'kind'; matchType: string; matchKind: string; manifest: Partial; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index 2f5d2ecfcb..f401899358 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -23,7 +23,7 @@ export class UmbExtensionRootWorkspaceElement extends UmbLitElement { } private _observeExtensions() { - this.observe(umbExtensionsRegistry.extensionsSortedByTypeAndWeight(), (extensions) => { + this.observe(umbExtensionsRegistry.extensionRegistrationsSortedByTypeAndWeight(), (extensions) => { this._extensions = extensions || undefined; }); } From af67c6922ee079118e2b62147457c336aa346f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 08:41:01 +0100 Subject: [PATCH 176/550] comment --- .../libs/extensions-api/registry/extension.registry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 8822febec5..749070f79c 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -144,7 +144,7 @@ export class UmbExtensionRegistry { // TODO: DisctinctUntilChanged by using aliases? } - // TODO: consider moving this method to the extension view? + // TODO: consider ust having the a.type.localeCompare(b.type); in the extension view, to then be able to use other existing observables? /** * Gets all the extensions registrations, but does not merge with kinds. * @returns From acd052528c6447ae8702bb3a7d2d21090bf5d94c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 08:41:11 +0100 Subject: [PATCH 177/550] imports --- .../libs/extensions-api/registry/extension.registry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 749070f79c..912280fc07 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject, withLatestFrom, map, find, Observable } from 'rxjs'; +import { BehaviorSubject, withLatestFrom, map, Observable } from 'rxjs'; import type { ManifestTypes, ManifestTypeMap, From fd2051b2fb615cbf20fa04d9bf1a763c9339ca92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 09:53:42 +0100 Subject: [PATCH 178/550] TODO: notes --- .../property-editor-modal-registration.controller.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts index 9e6d0e861a..b979ae4837 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts @@ -10,6 +10,7 @@ import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controll import { UmbModalToken } from '@umbraco-cms/modal'; import { UmbObserverController } from '@umbraco-cms/observable-api'; +// TODO: Somehow get the modal handler via the controller? aka. va the registration. export class UmbPropertyEditorModalRegistrationController extends UmbController { #modalToken: UmbModalToken | string; #modalOptions: UmbModalRouteOptions; @@ -21,7 +22,8 @@ export class UmbPropertyEditorModalRegistrationController | string, - options: UmbModalRouteOptions + options: UmbModalRouteOptions, + unique: Map = new Map() ) { super(host); this.#modalToken = alias; @@ -31,7 +33,6 @@ export class UmbPropertyEditorModalRegistrationController { new UmbObserverController(host, _routeContext.alias, (alias) => { this.#propertyAlias = alias; @@ -44,6 +45,12 @@ export class UmbPropertyEditorModalRegistrationController Date: Fri, 17 Mar 2023 10:10:47 +0100 Subject: [PATCH 179/550] lint fixes --- .../documents/repository/sources/document.server.data.ts | 2 +- .../documents/workspace/document-workspace-edit.element.ts | 2 +- .../backoffice/media/media/workspace/media-workspace.element.ts | 2 +- .../data-types/workspace/data-type-workspace-edit.element.ts | 2 +- .../data-types/workspace/data-type-workspace.element.ts | 2 +- .../languages/workspace/language/language-workspace.element.ts | 2 +- .../components/backoffice-frame/backoffice-main.element.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 475fabb97b..59b9e2f0c8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,3 +1,4 @@ +import { v4 as uuidv4 } from 'uuid'; import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; import { DocumentResource, @@ -7,7 +8,6 @@ import { } from '@umbraco-cms/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { v4 as uuidv4 } from 'uuid'; /** * A data source for the Document that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts index 8853cce91a..e427be75ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -2,11 +2,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; import { VariantModelBaseModel } from '@umbraco-cms/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index 4d80410d2b..6e78b7a7ad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; +import { IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-media-workspace') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts index deded6d7e9..260103dec1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -2,8 +2,8 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UmbRouteLocation } from '@umbraco-cms/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbRouteLocation } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index a67f17a5bf..3562dd7418 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; import './data-type-workspace-edit.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 64de1066a8..d78aff8de3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; import { UmbLitElement } from '@umbraco-cms/element'; @customElement('umb-language-workspace') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index ce2eae4e56..9924de36fa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -3,12 +3,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { state } from 'lit/decorators.js'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; +import { UmbSectionElement } from '../section/section.element'; import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; import type { IRoutingInfo, UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; import type { ManifestSection } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; import { createExtensionElementOrFallback } from '@umbraco-cms/extensions-api'; -import { UmbSectionElement } from '../section/section.element'; @defineElement('umb-backoffice-main') export class UmbBackofficeMain extends UmbLitElement { From adba6059ca798b04f36dee7f480ecc2488d509a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 10:24:32 +0100 Subject: [PATCH 180/550] fix sorting --- .../libs/extensions-api/registry/extension.registry.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 912280fc07..50982be4e8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -122,7 +122,7 @@ export class UmbExtensionRegistry { .map((ext) => { return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) - .sort((a, b) => (a.weight || 0) - (b.weight || 0)) + .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ) ) as Observable>; // @@ -137,7 +137,7 @@ export class UmbExtensionRegistry { .map((ext) => { return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) - .sort((a, b) => (a.weight || 0) - (b.weight || 0)) + .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ) ) as Observable>; // @@ -155,7 +155,7 @@ export class UmbExtensionRegistry { exts.sort((a, b) => { // If type is the same, sort by weight if (a.type === b.type) { - return (a.weight || 0) - (b.weight || 0); + return (b.weight || 0) - (a.weight || 0); } // Otherwise sort by type From 7a3ebbe8e49a4f2632058ca9bfc413cce0d11c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 10:45:46 +0100 Subject: [PATCH 181/550] notes and a test example --- .../registry/extension.registry.ts | 4 ++++ .../backoffice/documents/section.manifests.ts | 22 ++++++++++++++----- .../components/section/section.element.ts | 17 +++++--------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 50982be4e8..bc1d2db112 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -109,9 +109,11 @@ export class UmbExtensionRegistry { map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias)), withLatestFrom(this._kindsOfType(type)), map(([ext, kinds]) => { + // TODO: Deep merge? return ext ? { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext } : undefined; }) ) as Observable; + // TODO: DisctinctUntilChanged by using aliases? and kind(if kind uses alias) } extensionsOfType>(type: Key) { @@ -120,6 +122,7 @@ export class UmbExtensionRegistry { map(([exts, kinds]) => exts .map((ext) => { + // TODO: Deep merge? return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) @@ -135,6 +138,7 @@ export class UmbExtensionRegistry { map(([exts, kinds]) => exts .map((ext) => { + // TODO: Deep merge? return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) 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 a50e038ea8..b2cc99e6c7 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,8 +1,8 @@ -import type { ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { ManifestKind, ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; -const section: ManifestSection = { +const section: ManifestTypes = { type: 'section', alias: sectionAlias, name: 'Content Section', @@ -13,8 +13,9 @@ const section: ManifestSection = { }, }; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestTypes = { + type: 'sectionSidebarApp', + kind: 'menuSectionSidebarApp', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, @@ -27,4 +28,15 @@ const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { }, }; -export const manifests = [section, menuSectionSidebarApp]; +// TODO: move to a general place: +const menuSectionSidebarAppKind: ManifestKind = { + type: 'kind', + matchKind: 'menuSectionSidebarApp', + matchType: 'sectionSidebarApp', + manifest: { + type: 'sectionSidebarApp', + elementName: 'umb-section-sidebar-menu', + }, +}; + +export const manifests = [section, menuSectionSidebarApp, menuSectionSidebarAppKind]; 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 e45c54f975..107ba009b3 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 @@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; +import type { IRoutingInfo } from '@umbraco-cms/router'; import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; -import type { IRoutingInfo } from '@umbraco-cms/router'; -import type { ManifestMenuSectionSidebarApp, ManifestSection } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -45,7 +45,7 @@ export class UmbSectionElement extends UmbLitElement { private _routes?: Array; @state() - private _menus?: Array; + private _menus?: Array; connectedCallback() { super.connectedCallback(); @@ -74,10 +74,11 @@ export class UmbSectionElement extends UmbLitElement { ]; } + // TODO: Can this be omitted? or can the same data be used for the extension slot or alike extension presentation? #observeSectionSidebarApps() { this.observe( umbExtensionsRegistry - ?.extensionsOfType('menuSectionSidebarApp') + ?.extensionsOfType('sectionSidebarApp') .pipe( map((manifests) => manifests.filter((manifest) => manifest.conditions.sections.includes(this.manifest?.alias || '')) @@ -97,14 +98,8 @@ export class UmbSectionElement extends UmbLitElement { + .filter=${(items: ManifestSectionSidebarApp) => items.conditions.sections.includes(this.manifest?.alias || '')}> - - - items.conditions.sections.includes(this.manifest?.alias || '')} - default-element="umb-section-sidebar-menu"> ` : nothing} From e619ba7aa937f3750079fe902a773183ba2099a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 10:56:56 +0100 Subject: [PATCH 182/550] move kind --- .../src/backoffice/documents/section.manifests.ts | 13 +------------ .../section-sidebar-menu.element.ts | 14 +++++++++++++- 2 files changed, 14 insertions(+), 13 deletions(-) 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 b2cc99e6c7..161be033b1 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 @@ -28,15 +28,4 @@ const menuSectionSidebarApp: ManifestTypes = { }, }; -// TODO: move to a general place: -const menuSectionSidebarAppKind: ManifestKind = { - type: 'kind', - matchKind: 'menuSectionSidebarApp', - matchType: 'sectionSidebarApp', - manifest: { - type: 'sectionSidebarApp', - elementName: 'umb-section-sidebar-menu', - }, -}; - -export const manifests = [section, menuSectionSidebarApp, menuSectionSidebarAppKind]; +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 a3d5197748..2e4a15f72f 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,22 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestMenu, ManifestMenuSectionSidebarApp } from '@umbraco-cms/extensions-registry'; +import { ManifestKind, ManifestMenu, ManifestMenuSectionSidebarApp } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../menu/menu.element'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; + +const manifest: ManifestKind = { + type: 'kind', + matchKind: 'menuSectionSidebarApp', + matchType: 'sectionSidebarApp', + manifest: { + type: 'sectionSidebarApp', + elementName: 'umb-section-sidebar-menu', + }, +}; +umbExtensionsRegistry.register(manifest); @customElement('umb-section-sidebar-menu') export class UmbSectionSidebarMenuElement extends UmbLitElement { From cbfe794de90819fc5238849a1cea8646bee1a70b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 11:20:31 +0100 Subject: [PATCH 183/550] kind type --- .../libs/extensions-registry/models.ts | 12 ++++++++--- .../backoffice/documents/section.manifests.ts | 5 +++-- .../section-sidebar-menu.element.ts | 20 +++++++++++++++++-- 3 files changed, 30 insertions(+), 7 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 ca118472dc..94b6ff6ab7 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,3 +1,4 @@ +import type { ManifestSectionSidebarAppMenuKind } from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; import type { ManifestCollectionView } from './collection-view.models'; import type { ManifestDashboard } from './dashboard.models'; import type { ManifestDashboardCollection } from './dashboard-collection.models'; @@ -71,6 +72,7 @@ export type ManifestTypes = | ManifestRepository | ManifestSection | ManifestSectionSidebarApp + | ManifestSectionSidebarAppMenuKind | ManifestSectionView | ManifestMenuSectionSidebarApp | ManifestMenu @@ -98,7 +100,6 @@ export type SpecificManifestTypeOrManifestBase extends ManifestBase { } export interface ManifestClass extends ManifestWithLoader { - type: ManifestStandardTypes; + //type: ManifestStandardTypes; js?: string; className?: string; class?: ClassConstructor; @@ -132,10 +133,15 @@ export interface ManifestClassWithClassConstructor extends ManifestClass { } export interface ManifestElement extends ManifestWithLoader { - type: ManifestStandardTypes; + //type: ManifestStandardTypes; js?: string; elementName?: string; //loader?: () => Promise; + //meta?: unknown; +} + +export interface ManifestElementCustomKind extends ManifestElement { + kind: 'custom'; meta?: unknown; } 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 161be033b1..1375f7c37a 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,5 @@ -import type { ManifestKind, ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; +import { ManifestSectionSidebarAppMenuKind } from '../shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; const sectionAlias = 'Umb.Section.Content'; @@ -15,7 +16,7 @@ const section: ManifestTypes = { const menuSectionSidebarApp: ManifestTypes = { type: 'sectionSidebarApp', - kind: 'menuSectionSidebarApp', + kind: 'umb-menu', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, 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 2e4a15f72f..581a98f6d7 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,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestKind, ManifestMenu, ManifestMenuSectionSidebarApp } from '@umbraco-cms/extensions-registry'; +import { + ManifestKind, + ManifestMenu, + ManifestMenuSectionSidebarApp, + ManifestSectionSidebarApp, +} from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../menu/menu.element'; @@ -9,7 +14,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; const manifest: ManifestKind = { type: 'kind', - matchKind: 'menuSectionSidebarApp', + matchKind: 'umb-menu', matchType: 'sectionSidebarApp', manifest: { type: 'sectionSidebarApp', @@ -18,6 +23,17 @@ const manifest: ManifestKind = { }; umbExtensionsRegistry.register(manifest); +export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { + type: 'sectionSidebarApp'; + kind: 'umb-menu'; + meta: MetaSectionSidebarAppMenuKind; +} + +export interface MetaSectionSidebarAppMenuKind { + label: string; + menu: string; +} + @customElement('umb-section-sidebar-menu') export class UmbSectionSidebarMenuElement extends UmbLitElement { static styles = [ From aaaa15337ba3bcef0aeedc1ace4a7a055333a911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Fri, 17 Mar 2023 13:58:18 +0100 Subject: [PATCH 184/550] Variant selector - styling --- .../variant-selector.element.ts | 104 ++++++++++++++++-- .../variant-selector.stories.ts | 16 +-- 2 files changed, 101 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 9d8d713690..643520d3d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -24,9 +24,11 @@ export class UmbVariantSelectorElement extends UmbLitElement { #variant-selector-toggle { white-space: nowrap; } + #variant-selector-popover { display: block; } + #variant-selector-dropdown { overflow: hidden; z-index: -1; @@ -42,6 +44,65 @@ export class UmbVariantSelectorElement extends UmbLitElement { #variant-close { white-space: nowrap; } + + ul { + list-style-type: none; + padding: 0; + margin: 0; + } + + li { + position: relative; + } + + li.selected:before { + background-color: var(--uui-color-current); + border-radius: 0 4px 4px 0; + bottom: 8px; + content: ''; + left: 0; + pointer-events: none; + position: absolute; + top: 8px; + width: 4px; + z-index: 1; + } + + .variant-selector-switch-button { + border: none; + background: transparent; + color: var(--uui-color-current-contrast); + padding: 6px 20px; + font-weight: bold; + width: 100%; + text-align: left; + font-size: 14px; + cursor: pointer; + border-bottom: 1px solid var(--uui-color-divider-standalone); + font-family: Lato, Helvetica Neue, Helvetica, Arial, sans-serif; + } + + .variant-selector-switch-button:hover { + background: var(--uui-palette-sand); + color: var(--uui-palette-space-cadet-light); + } + + .variant-selector-switch-button i { + font-weight: normal; + } + + .variant-selector-split-view { + position: absolute; + top: 0; + right: 0; + bottom: 1px; + } + + .variant-selector-state { + color: var(--uui-palette-malibu-dimmed); + font-size: 12px; + font-weight: normal; + } `, ]; @@ -56,6 +117,11 @@ export class UmbVariantSelectorElement extends UmbLitElement { @state() _activeVariants: Array = []; + @property() + public get _activeVariantsCultures(): string[] { + return this._activeVariants.map((el) => el.culture ?? '') ?? []; + } + private _variantContext?: UmbWorkspaceVariantContext; @state() @@ -155,7 +221,7 @@ export class UmbVariantSelectorElement extends UmbLitElement { (this._culture ? this._cultureNames.of(this._culture) : '') + (this._segment ? ' — ' + this._segment : ''); } - // TODO. find a way where we don't have to do this for all workspaces. + // TODO: find a way where we don't have to do this for all workspaces. private _handleInput(event: UUIInputEvent) { if (event instanceof UUIInputEvent) { const target = event.composedPath()[0] as UUIInputElement; @@ -187,10 +253,15 @@ export class UmbVariantSelectorElement extends UmbLitElement { this._variantContext?.openSplitView(variant); this._close(); } + private _closeSplitView() { this._variantContext?.closeSplitView(); } + private _isVariantActive(culture: string) { + return this._activeVariantsCultures.includes(culture); + } + render() { return html` @@ -225,17 +296,28 @@ export class UmbVariantSelectorElement extends UmbLitElement { ${this._variants.map( (variant) => - html`
      -
    • - - this._switchVariant(variant)}> - ${variant.name} ${variant.culture} ${variant.segment} - + html` +
        +
      • + - - this._openSplitView(variant)}> Split view -
      • -
      ` + ${this._isVariantActive(variant.culture as string) + ? nothing + : html` + this._openSplitView(variant)}> + Split view + + `} +
    • +
    + ` )}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.stories.ts index c5f645add3..7aac088b20 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.stories.ts @@ -1,17 +1,17 @@ import { Meta, StoryObj } from '@storybook/web-components'; import './variant-selector.element'; -import type { UmbVariantSelectorElement } from './variant-selector.element' +import type { UmbVariantSelectorElement } from './variant-selector.element'; const meta: Meta = { - title: 'Components/Variant Selector', - component: 'umb-variant-selector', + title: 'Components/Variant Selector', + component: 'umb-variant-selector', }; - + export default meta; type Story = StoryObj; export const Overview: Story = { - args: { - alias: 'myAlias' - } -}; \ No newline at end of file + args: { + alias: 'myAlias', + }, +}; From 26536c15d1c0d09dbf87e58638d6fb3059de0701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 15:12:00 +0100 Subject: [PATCH 185/550] strict types for kinds --- .../extensions-registry/header-app.models.ts | 3 +- .../libs/extensions-registry/models.ts | 5 ++- .../backoffice/documents/section.manifests.ts | 4 +-- .../src/backoffice/search/manifests.ts | 17 +++++++-- .../extension-slot/extension-slot.element.ts | 4 ++- .../header-app/header-app-button.element.ts | 35 +++++++++++++++++-- .../header-app/header-app.stories.ts | 35 ++++++++++--------- .../src/backoffice/shared/components/index.ts | 2 ++ .../users/current-user/manifests.ts | 4 +-- .../src/core/mocks/data/document.data.ts | 6 ++-- 10 files changed, 83 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts index 4a6f1d59d5..71e27cdcb1 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts @@ -2,7 +2,8 @@ import type { ManifestElement } from './models'; export interface ManifestHeaderApp extends ManifestElement { type: 'headerApp'; - meta: MetaHeaderApp; + //meta: MetaHeaderApp; + meta?: unknown; } export interface MetaHeaderApp { 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 94b6ff6ab7..a9cb2f5eb3 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,4 +1,5 @@ import type { ManifestSectionSidebarAppMenuKind } from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +import { ManifestHeaderAppButtonKind } from '../../src/backoffice/shared/components/header-app/header-app-button.element'; import type { ManifestCollectionView } from './collection-view.models'; import type { ManifestDashboard } from './dashboard.models'; import type { ManifestDashboardCollection } from './dashboard-collection.models'; @@ -64,6 +65,7 @@ export type ManifestTypes = | ManifestEntrypoint | ManifestExternalLoginProvider | ManifestHeaderApp + | ManifestHeaderAppButtonKind | ManifestHealthCheck | ManifestPackageView | ManifestPropertyAction @@ -101,6 +103,7 @@ export type SpecificManifestTypeOrManifestBase Promise; - //meta?: unknown; + meta?: unknown; } export interface ManifestElementCustomKind extends ManifestElement { 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 1375f7c37a..6364e93c92 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,5 +1,5 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; import { ManifestSectionSidebarAppMenuKind } from '../shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +import type { ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; @@ -14,7 +14,7 @@ const section: ManifestTypes = { }, }; -const menuSectionSidebarApp: ManifestTypes = { +const menuSectionSidebarApp: ManifestSectionSidebarAppMenuKind = { type: 'sectionSidebarApp', kind: 'umb-menu', alias: 'Umb.SidebarMenu.Content', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts index ea025667f8..7ae2fa8d10 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts @@ -1,6 +1,6 @@ -import type { ManifestHeaderApp } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const headerApps: Array = [ +const headerApps: Array = [ { type: 'headerApp', alias: 'Umb.HeaderApp.Search', @@ -13,6 +13,19 @@ const headerApps: Array = [ pathname: 'search', }, }, + + { + type: 'headerApp', + kind: 'Umb.Kind.Button', + alias: 'Umb.HeaderApp.HackDemo', + name: 'Header App Search', + weight: 10, + meta: { + label: 'Hack Demo', + icon: 'document', + href: '/section/content/workspace/document/edit/c05da24d-7740-447b-9cdc-bd8ce2172e38/en-us/view/content/tab/Local%20blog%20tab', + }, + }, ]; export const manifests = [...headerApps]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index db97e5a9a2..8f8ea8b747 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -71,8 +71,10 @@ export class UmbExtensionSlotElement extends UmbLitElement { if (isManifestElementableType(extension)) { component = await createExtensionElement(extension); - } else { + } else if (this.defaultElement) { component = document.createElement(this.defaultElement); + } else { + // TODO: Lets make an console.error in this case? } if (component) { (component as any).manifest = extension; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts index 2095d825fd..85470d7d0e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts @@ -2,7 +2,32 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { ManifestHeaderApp } from '@umbraco-cms/extensions-registry'; +import { ManifestHeaderApp, ManifestKind } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; + +export interface ManifestHeaderAppButtonKind extends Omit { + type: 'headerApp'; + kind: 'Umb.Kind.Button'; + meta: MetaHeaderAppButtonKind; +} + +export interface MetaHeaderAppButtonKind { + href: string; + label: string; + icon: string; +} + +const manifest: ManifestKind = { + type: 'kind', + matchKind: 'Umb.Kind.Button', + matchType: 'headerApp', + manifest: { + type: 'headerApp', + kind: 'Umb.Kind.Button', + elementName: 'umb-header-app-button', + }, +}; +umbExtensionsRegistry.register(manifest); @customElement('umb-header-app-button') export class UmbHeaderAppButton extends LitElement { @@ -16,11 +41,15 @@ export class UmbHeaderAppButton extends LitElement { `, ]; - public manifest?: ManifestHeaderApp; + public manifest?: ManifestHeaderAppButtonKind; render() { return html` - + `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts index 581f8416eb..6c42e916b9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts @@ -3,24 +3,25 @@ import './header-app-button.element'; import type { UmbHeaderAppButton } from './header-app-button.element'; const meta: Meta = { - title: 'Components/Header App Button', - component: 'umb-header-app-button' + title: 'Components/Header App Button', + component: 'umb-header-app-button', }; - + export default meta; type Story = StoryObj; - + export const Overview: Story = { - args: { - manifest: { - name: 'Some Manifest', - alias: 'someManifestAlias', - type: 'headerApp', - meta: { - label: 'Some Header', - icon: 'umb:home', - pathname: '/some/path' - } - } - } -}; \ No newline at end of file + args: { + manifest: { + name: 'Some Manifest', + alias: 'someManifestAlias', + type: 'headerApp', + kind: 'Umb.Kind.Button', + meta: { + label: 'Some Header', + icon: 'umb:home', + href: '/some/path', + }, + }, + }, +}; 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 04c03284f7..500fffd846 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 @@ -37,6 +37,8 @@ import './tree/tree.element'; import './variantable-property/variantable-property.element'; import './workspace/workspace-action-menu/workspace-action-menu.element'; +import './header-app/header-app-button.element'; + import './history/history-list.element'; import './history/history-item.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/manifests.ts index acff072136..d79f61d61f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/manifests.ts @@ -1,5 +1,5 @@ import { manifests as modalManifests } from './modals/manifests'; -import type { ManifestHeaderApp, ManifestUserDashboard } from '@umbraco-cms/models'; +import type { ManifestHeaderApp, ManifestTypes, ManifestUserDashboard } from '@umbraco-cms/models'; export const userDashboards: Array = [ { @@ -15,7 +15,7 @@ export const userDashboards: Array = [ }, ]; -export const headerApps: Array = [ +export const headerApps: Array = [ { type: 'headerApp', alias: 'Umb.HeaderApp.CurrentUser', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index f239f430f7..1be131c1d2 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -495,7 +495,7 @@ export const treeData: Array = [ parentKey: null, name: 'All property editors', type: 'document', - icon: 'icon-item-arrangement', + icon: 'document', hasChildren: true, }, { @@ -510,7 +510,7 @@ export const treeData: Array = [ parentKey: null, name: 'Article in english', type: 'document', - icon: 'icon-item-arrangement', + icon: 'document', hasChildren: true, }, { @@ -525,7 +525,7 @@ export const treeData: Array = [ parentKey: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', name: 'Blog post B', type: 'document', - icon: 'icon-item-arrangement', + icon: 'document', hasChildren: false, }, { From 36e8d0c799d725c103810aa3bd489cb5bbe38a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Fri, 17 Mar 2023 15:43:33 +0100 Subject: [PATCH 186/550] Variant selector - not Published style indication --- .../variant-selector.element.ts | 59 +++++++++++++++---- .../src/core/mocks/data/document.data.ts | 20 +++++++ 2 files changed, 68 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 643520d3d2..4b35cb9621 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -9,7 +9,7 @@ import { } from '../workspace/workspace-variant/workspace-variant.context'; import { ActiveVariant } from '../workspace/workspace-context/workspace-split-view-manager.class'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentVariantResponseModel } from '@umbraco-cms/backend-api'; +import { DocumentVariantResponseModel, ContentStateModel } from '@umbraco-cms/backend-api'; @customElement('umb-variant-selector') export class UmbVariantSelectorElement extends UmbLitElement { @@ -53,6 +53,11 @@ export class UmbVariantSelectorElement extends UmbLitElement { li { position: relative; + margin-bottom: 1px; + } + + li:nth-last-of-type(1) { + margin-bottom: 0; } li.selected:before { @@ -69,6 +74,8 @@ export class UmbVariantSelectorElement extends UmbLitElement { } .variant-selector-switch-button { + display: flex; + align-items: center; border: none; background: transparent; color: var(--uui-color-current-contrast); @@ -91,6 +98,29 @@ export class UmbVariantSelectorElement extends UmbLitElement { font-weight: normal; } + .variant-selector-switch-button.add-mode { + position: relative; + color: var(--uui-palette-dusty-grey-dark); + } + + .variant-selector-switch-button.add-mode:after { + border: 2px dashed var(--uui-color-divider-standalone); + bottom: 0; + content: ''; + left: 0; + margin: 2px; + pointer-events: none; + position: absolute; + right: 0; + top: 0; + z-index: 1; + } + + .add-icon { + font-size: 12px; + margin-right: 12px; + } + .variant-selector-split-view { position: absolute; top: 0; @@ -294,16 +324,23 @@ export class UmbVariantSelectorElement extends UmbLitElement {
    - ${this._variants.map( - (variant) => - html` -
      +
        + ${this._variants.map( + (variant) => + html`
      • ${this._isVariantActive(variant.culture as string) @@ -316,9 +353,9 @@ export class UmbVariantSelectorElement extends UmbLitElement { `}
      • -
      - ` - )} + ` + )} +
    diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 72ed53ea61..2ad8e04e30 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -384,6 +384,26 @@ export const data: Array = [ createDate: '2023-02-06T15:31:46.876902', updateDate: '2023-02-06T15:31:51.354764', }, + { + $type: '', + state: ContentStateModel.PUBLISHED_PENDING_CHANGES, + publishDate: '2023-02-06T15:31:51.354764', + culture: 'es-es', + segment: null, + name: 'Articulo en ingles', + createDate: '2023-02-06T15:31:46.876902', + updateDate: '2023-02-06T15:31:51.354764', + }, + { + $type: '', + state: ContentStateModel.NOT_CREATED, + publishDate: '2023-02-06T15:31:51.354764', + culture: 'pl-pl', + segment: null, + name: 'Artykuł w języku polskim', + createDate: '2023-02-06T15:31:46.876902', + updateDate: '2023-02-06T15:31:51.354764', + }, ], }, { From 66094d3caaca7d69d56e817fd01727c07d8eb0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Fri, 17 Mar 2023 16:16:42 +0100 Subject: [PATCH 187/550] Variant selector - notpublished helper functon --- .../variant-selector/variant-selector.element.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 4b35cb9621..16b1c12ef9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -292,6 +292,10 @@ export class UmbVariantSelectorElement extends UmbLitElement { return this._activeVariantsCultures.includes(culture); } + private _isNotPublishedMode(culture: string, state: ContentStateModel) { + return state !== ContentStateModel.PUBLISHED && !this._isVariantActive(culture!); + } + render() { return html` @@ -328,13 +332,12 @@ export class UmbVariantSelectorElement extends UmbLitElement { ${this._variants.map( (variant) => html` -
  • +
  • - ${this._isVariantActive(variant.culture as string) + ${this._isVariantActive(variant.culture!) ? nothing : html` Date: Fri, 17 Mar 2023 18:52:20 +0100 Subject: [PATCH 188/550] rename menu kind --- .../src/backoffice/documents/section.manifests.ts | 2 +- .../section-sidebar-menu/section-sidebar-menu.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 6364e93c92..b0750c2de0 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 @@ -16,7 +16,7 @@ const section: ManifestTypes = { const menuSectionSidebarApp: ManifestSectionSidebarAppMenuKind = { type: 'sectionSidebarApp', - kind: 'umb-menu', + kind: 'Umb.Kind.Menu', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, 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 581a98f6d7..1cebcaac16 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 @@ -14,7 +14,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; const manifest: ManifestKind = { type: 'kind', - matchKind: 'umb-menu', + matchKind: 'Umb.Kind.Menu', matchType: 'sectionSidebarApp', manifest: { type: 'sectionSidebarApp', @@ -25,7 +25,7 @@ umbExtensionsRegistry.register(manifest); export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { type: 'sectionSidebarApp'; - kind: 'umb-menu'; + kind: 'Umb.Kind.Menu'; meta: MetaSectionSidebarAppMenuKind; } From b652bbd70e7c77a508fc166b56933ce056aedfde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 18:52:34 +0100 Subject: [PATCH 189/550] comment for the property kind undefined --- .../libs/extensions-registry/models.ts | 7 +------ 1 file changed, 1 insertion(+), 6 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 a9cb2f5eb3..b4f89dad6c 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -103,7 +103,7 @@ export type SpecificManifestTypeOrManifestBase Date: Fri, 17 Mar 2023 18:52:46 +0100 Subject: [PATCH 190/550] some styling for the first dashboard --- .../dashboards/welcome/dashboard-welcome.element.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.element.ts index 7f6d71ba41..e4411cb4c7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.element.ts @@ -4,7 +4,16 @@ import { customElement } from 'lit/decorators.js'; @customElement('umb-dashboard-welcome') export class UmbDashboardWelcomeElement extends LitElement { - static styles = [UUITextStyles, css``]; + static styles = [ + UUITextStyles, + css` + :host { + display: block; + position: relative; + margin: var(--uui-size-layout-1); + } + `, + ]; render() { return html` From e3a395b7ea94d6d3007d308f40814b6ad5bd6f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 18:57:25 +0100 Subject: [PATCH 191/550] use kind --- .../src/backoffice/settings/section.manifests.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 c3a5633155..76858fc772 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,5 @@ -import type { ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import { ManifestSectionSidebarAppMenuKind } from '../shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +import type { ManifestSection } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Settings'; @@ -13,8 +14,9 @@ const section: ManifestSection = { }, }; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestSectionSidebarAppMenuKind = { + type: 'sectionSidebarApp', + kind: 'Umb.Kind.Menu', alias: 'Umb.SectionSidebarMenu.Settings', name: 'Settings Section Sidebar Menu', weight: 100, From 8976604967d3b2b1e2ed5edbf2e768c925475844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 19:01:40 +0100 Subject: [PATCH 192/550] replace ManifestMenuSectionSidebarApp with kind --- .../libs/extensions-registry/models.ts | 5 ++--- .../section-sidebar-app.models.ts | 2 ++ .../src/backoffice/media/section.manifests.ts | 7 ++++--- .../src/backoffice/members/section.manifests.ts | 12 +++++++++--- .../section-sidebar-menu.element.ts | 6 +++--- .../src/backoffice/templating/menu.manifests.ts | 7 ++++--- .../src/backoffice/translation/section.manifest.ts | 7 ++++--- 7 files changed, 28 insertions(+), 18 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 b4f89dad6c..265405c9a7 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 { 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, ManifestMenuSectionSidebarApp } from './section-sidebar-app.models'; +import type { ManifestSectionSidebarApp } from './section-sidebar-app.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; @@ -76,7 +76,6 @@ export type ManifestTypes = | ManifestSectionSidebarApp | ManifestSectionSidebarAppMenuKind | ManifestSectionView - | ManifestMenuSectionSidebarApp | ManifestMenu | ManifestMenuItem | ManifestTheme @@ -140,7 +139,7 @@ export interface ManifestElement extends ManifestWithLoader Promise; - meta?: unknown; + meta?: any; } export interface ManifestWithView extends ManifestElement { 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 5b188b3aa2..af1b20de81 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 @@ -9,6 +9,7 @@ export interface ConditionsSectionSidebarApp { sections: Array; } +/* // TODO: this is a temp solution until we implement kinds export interface ManifestMenuSectionSidebarApp extends Omit { type: 'menuSectionSidebarApp'; @@ -20,3 +21,4 @@ export interface MetaMenuSectionSidebarApp { label: string; menu: string; } +*/ 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 c11cb83ab3..5b1ca72db8 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,5 +1,5 @@ import { MEDIA_REPOSITORY_ALIAS } from './media/repository/manifests'; -import type { ManifestDashboardCollection, ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { ManifestDashboardCollection, ManifestSection, ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Media'; @@ -32,8 +32,9 @@ const dashboards: Array = [ }, ]; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestTypes = { + type: 'sectionSidebarApp', + kind: 'Umb.Kind.Menu', alias: 'Umb.SectionSidebarMenu.Media', name: 'Media Section Sidebar Menu', weight: 100, 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 50b4a5b254..b34cdaabf0 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,9 @@ -import type { ManifestDashboard, ManifestSection, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { + ManifestDashboard, + ManifestSection, + ManifestMenuSectionSidebarApp, + ManifestTypes, +} from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Members'; @@ -30,8 +35,9 @@ const dashboards: Array = [ }, ]; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestTypes = { + type: 'sectionSidebarApp', + kind: 'Umb.Kind.Menu', alias: 'Umb.SectionSidebarMenu.Members', name: 'Members Section Sidebar Menu', weight: 100, 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 1cebcaac16..0efe6d9863 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 @@ -46,14 +46,14 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { ]; @property() - manifest?: ManifestMenuSectionSidebarApp; + manifest?: ManifestSectionSidebarApp; render() { // TODO: link to dashboards when clicking on the menu item header - return html`

    ${this.manifest?.meta.label}

    + return html`

    ${this.manifest?.meta?.label}

    menu.alias === this.manifest!.meta.menu} + .filter=${(menu: ManifestMenu) => menu.alias === this.manifest?.meta?.menu} default-element="umb-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 cf14f344c1..d04efd3ec4 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 { ManifestMenuSectionSidebarApp, ManifestMenu } from '@umbraco-cms/extensions-registry'; +import { ManifestMenu, ManifestTypes } from '@umbraco-cms/extensions-registry'; const menu: ManifestMenu = { type: 'menu', @@ -9,8 +9,9 @@ const menu: ManifestMenu = { }, }; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestTypes = { + type: 'sectionSidebarApp', + kind: 'Umb.Kind.Menu', alias: 'Umb.SectionSidebarMenu.Templating', name: 'Templating Section Sidebar Menu', weight: 100, 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 59be737e0d..b9fa9ef259 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, ManifestMenuSectionSidebarApp } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Translation'; @@ -13,8 +13,9 @@ const section: ManifestSection = { }, }; -const menuSectionSidebarApp: ManifestMenuSectionSidebarApp = { - type: 'menuSectionSidebarApp', +const menuSectionSidebarApp: ManifestTypes = { + type: 'sectionSidebarApp', + kind: 'Umb.Kind.Menu', alias: 'Umb.SidebarMenu.Dictionary', name: 'Dictionary Sidebar Menu', weight: 100, From 8748e783be35fa4e7020822dea462915a606cbe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 17 Mar 2023 19:06:37 +0100 Subject: [PATCH 193/550] fix size css props --- .../design/workspace-view-document-type-design.element.ts | 3 +-- .../workspace/media-type-workspace-edit.element.ts | 2 +- .../media-types/workspace/media-type-workspace.element.ts | 2 +- .../language-root/language-root-workspace.element.ts | 2 +- .../workspace-property-layout.element.ts | 4 ++-- .../property-settings/property-settings-modal.element.ts | 4 ++-- .../dictionary/workspace/dictionary-workspace-edit.element.ts | 2 +- .../workspace/user-group-workspace-edit.element.ts | 4 ++-- .../views/users/workspace-view-users-overview.element.ts | 4 ++-- .../users/users/workspace/user-workspace-edit.element.ts | 4 ++-- .../src/installer/database/installer-database.element.ts | 4 ++-- .../src/installer/user/installer-user.element.ts | 2 +- 12 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 2e453ded63..2b97b194c8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -13,8 +13,7 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { css` :host { display: block; - margin: var(--uui-size-space-6); - padding: var(--uui-size-space-6); + margin: var(--uui-size-layout-1); } `, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts index b1b9497677..eb247d96f1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts @@ -12,7 +12,7 @@ export class UmbMediaTypeWorkspaceEditElement extends UmbLitElement { css` #header { display: flex; - padding: 0 var(--uui-size-space-6); + padding: 0 var(--uui-size-layout-1); gap: var(--uui-size-space-4); width: 100%; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 7235c843d0..ffa03ecea4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -13,7 +13,7 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement { css` #header { display: flex; - padding: 0 var(--uui-size-space-6); + padding: 0 var(--uui-size-layout-1); gap: var(--uui-size-space-4); width: 100%; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index 7ddd6809bd..f49d18e17f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -21,7 +21,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { } #main { - margin: var(--uui-size-space-6); + margin: var(--uui-size-layout-1); } `, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts index f39fd6f368..96cedd6512 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts @@ -19,7 +19,7 @@ export class UmbWorkspacePropertyLayoutElement extends LitElement { grid-template-columns: 200px auto; column-gap: var(--uui-size-layout-2); border-bottom: 1px solid var(--uui-color-divider); - padding: var(--uui-size-space-6) 0; + padding: var(--uui-size-layout-1) 0; container-type: inline-size; } @@ -38,7 +38,7 @@ export class UmbWorkspacePropertyLayoutElement extends LitElement { } :host-context(umb-variantable-property:first-of-type) { - padding-top:0; + padding-top: 0; } p { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts index 9aa4b3f305..da3a5d87f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts @@ -17,11 +17,11 @@ export class UmbPropertySettingsModalElement extends UmbModalBaseElement Date: Fri, 17 Mar 2023 19:14:20 +0100 Subject: [PATCH 194/550] lint --- src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts index 562a927ed5..28a5120e7f 100644 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts @@ -1,4 +1,4 @@ -import {css, CSSResultGroup, html, LitElement, unsafeCSS} from 'lit'; +import { css, CSSResultGroup, html, LitElement, unsafeCSS } from 'lit'; import { customElement } from 'lit/decorators.js'; import logoImg from '/umbraco_logomark_white.svg'; import loginImg from '/login.jpeg'; From 8b6f16f4cbd33de9610bfffff15be4d0dedef34c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Sat, 18 Mar 2023 12:41:55 +0100 Subject: [PATCH 195/550] #485 settings dashboard accessibility (#601) * Settings dashboard accessibility improvement * add
    wrapper --- .../dashboard-models-builder.element.ts | 6 +- .../dashboard-published-status.element.ts | 28 +++--- .../dashboard-settings-welcome.element.ts | 99 ++++++++++++++----- .../section-main/section-main.element.ts | 7 +- 4 files changed, 100 insertions(+), 40 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts index 6caa76d8bf..b9f792af70 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts @@ -90,7 +90,11 @@ export class UmbDashboardModelsBuilderElement extends UmbLitElement {

    Models Builder

    - + Reload
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts index 3d79b89afc..6f4fd6a691 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -140,9 +140,10 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" - @click=${this._onRefreshCacheHandler} - >Refresh Status + label="Refresh Status" + @click=${this._onRefreshCacheHandler}> + Refresh Status +
    @@ -156,10 +157,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Reload Memory Cache" @click=${this._onReloadCacheHandler} - .state=${this._buttonStateReload} - >Reload Memory Cache + .state=${this._buttonStateReload}> + Reload Memory Cache + @@ -172,10 +174,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Rebuild Database Cache" @click=${this._onRebuildCacheHandler} - .state=${this._buttonStateRebuild} - >Rebuild Database Cache + .state=${this._buttonStateRebuild}> + Rebuild Database Cache + @@ -187,10 +190,11 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { type="button" look="primary" color="danger" + label="Snapshot Internal Cache" @click=${this._onSnapshotCacheHandler} - .state=${this._buttonStateCollect} - >Snapshot Internal Cache + .state=${this._buttonStateCollect}> + Snapshot Internal Cache + `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts index 4bb62e1605..83cdf0b0d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.element.ts @@ -2,64 +2,111 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; - @customElement('umb-dashboard-settings-welcome') export class UmbDashboardSettingsWelcomeElement extends LitElement { - static styles = [UUITextStyles, css` - #settings-dashboard { - display: grid; - grid-gap:var(--uui-size-7); - grid-template-columns: repeat(3, 1fr); - } - - @media(max-width: 1200px) { + static styles = [ + UUITextStyles, + css` #settings-dashboard { - grid-template-columns: repeat(2, 1fr); + display: grid; + grid-gap: var(--uui-size-7); + grid-template-columns: repeat(3, 1fr); } - } - @media(max-width: 800px) { - #settings-dashboard { - grid-template-columns: repeat(1, 1fr); + @media (max-width: 1200px) { + #settings-dashboard { + grid-template-columns: repeat(2, 1fr); + } } - } - `]; + + @media (max-width: 800px) { + #settings-dashboard { + grid-template-columns: repeat(1, 1fr); + } + } + `, + ]; render() { return html` -
    +

    Documentation

    Read more about working with the items in Settings in our Documentation.

    - Get the help you need + + Get the help you need +

    Community

    Ask a question in the community forum or our Discord community

    - Go to the forum - Chat with the community + + Go to the forum + + + Chat with the community +

    Training

    +

    Find out about real-life training and certification opportunities

    - Get Certified + + Get Certified +

    Support

    Ask a question in the community forum or our Discord community.

    - Get the help you need + + Get the help you need +

    Videos

    -

    Watch our free tutorial videos on the Umbraco Learning Base YouTube channel, to get upto speed quickly with Umbraco.

    - Watch the videos +

    + Watch our free tutorial videos on the Umbraco Learning Base YouTube channel, to get upto speed quickly with + Umbraco. +

    + + Watch the videos +
    -
    - + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts index 92fc067235..332b308b3c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.element.ts @@ -11,6 +11,7 @@ export class UmbSectionMainElement extends LitElement { flex: 1 1 auto; height: 100%; } + slot { display: flex; flex-direction: column; @@ -20,7 +21,11 @@ export class UmbSectionMainElement extends LitElement { ]; render() { - return html``; + return html` +
    + +
    + `; } } From 9d2da38fac4b2c0f49953ffd400e511af35b8310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 14:45:43 +1300 Subject: [PATCH 196/550] fix edit view --- ...type-workspace-view-relation-type.element.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index e26888d083..ca34e9867a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -40,6 +40,9 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme this.observe(this.#workspaceContext.data, (relationType) => { if (!relationType) return; + + console.log('relationType', relationType); + this._relationType = relationType as RelationTypeBaseModel; }); } @@ -63,7 +66,7 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme + slot="editor"> @@ -72,7 +75,7 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme ${this.#renderChildProperty()} @@ -81,17 +84,15 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme } #renderParentProperty() { - if (this._relationType?.key) - return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; - return html``; + return html``; } #renderChildProperty() { - if (this._relationType?.key) - return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; - return html``; + return html``; } } From ea16d2f3e2e5a642dc07ec73d65552efda32512d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 15:18:45 +1300 Subject: [PATCH 197/550] add table to relations --- ...pe-workspace-view-relation-type.element.ts | 2 - ...ace-view-relation-type-relation.element.ts | 65 +++++++++++++++---- 2 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index ca34e9867a..dc1b366387 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -41,8 +41,6 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme this.observe(this.#workspaceContext.data, (relationType) => { if (!relationType) return; - console.log('relationType', relationType); - this._relationType = relationType as RelationTypeBaseModel; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts index b1d21e9e0f..944c186639 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts @@ -1,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; - +import { UmbTableColumn, UmbTableConfig } from '../../../../../shared/components/table'; import { UmbLitElement } from '@umbraco-cms/element'; import { RelationModel } from '@umbraco-cms/backend-api'; -import { repeat } from 'lit-html/directives/repeat.js'; @customElement('umb-workspace-view-relation-type-relation') export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { @@ -18,21 +17,63 @@ export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { `, ]; + //TODO Use real data @state() _relations: Array = MockData; + private _tableConfig: UmbTableConfig = { + allowSelection: false, + hideIcon: true, + }; + + private _tableColumns: Array = [ + { + name: 'Parent', + alias: 'parent', + }, + { + name: 'Child', + alias: 'child', + }, + { + name: 'Created', + alias: 'created', + }, + { + name: 'Comment', + alias: 'comment', + }, + ]; + + private get _tableItems() { + return this._relations.map((relation) => { + return { + key: relation.parentId + '-' + relation.childId, + data: [ + { + columnAlias: 'parent', + value: relation.parentName, + }, + { + columnAlias: 'child', + value: relation.childName, + }, + { + columnAlias: 'created', + value: relation.createDate, + }, + { + columnAlias: 'comment', + value: relation.comment, + }, + ], + }; + }); + } + render() { return html` - ${repeat( - this._relations, - (relation) => relation.childId, - (relation) => html` -
    -
    ${relation.parentName}
    -
    ${relation.childName}
    -
    - ` - )} +
    `; } } From 867b0e464196696053df6dc802af2eca429868c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 15:42:04 +1300 Subject: [PATCH 198/550] fix menu item manifest --- .../backoffice/settings/relation-types/menu-item/manifests.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts index d7f34b30ff..e9213498d3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts @@ -10,6 +10,8 @@ const menuItem: ManifestMenuItem = { label: 'Relation Types', icon: 'umb:folder', entityType: 'relation-type', + }, + conditions: { menus: ['Umb.Menu.Settings'], }, }; From b2a7ec2c0f8257c1d3c9e12e5b1ec55377ff377a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 15:44:31 +1300 Subject: [PATCH 199/550] fix manifest and model name --- .../settings/relation-types/workspace/manifests.ts | 12 +++++++++--- .../workspace-view-relation-type-relation.element.ts | 6 +++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts index fc41bab4f9..4d264bdbd8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts @@ -19,11 +19,13 @@ const workspaceViews: Array = [ loader: () => import('./views/relation-type/relation-type-workspace-view-relation-type.element'), weight: 20, meta: { - workspaces: ['Umb.Workspace.RelationType'], label: 'RelationType', pathname: 'relation-type', icon: 'umb:info', }, + conditions: { + workspaces: ['Umb.Workspace.RelationType'], + }, }, { type: 'workspaceView', @@ -32,11 +34,13 @@ const workspaceViews: Array = [ loader: () => import('./views/relation/workspace-view-relation-type-relation.element'), weight: 10, meta: { - workspaces: ['Umb.Workspace.RelationType'], label: 'Relation', pathname: 'relation', icon: 'umb:trafic', }, + conditions: { + workspaces: ['Umb.Workspace.RelationType'], + }, }, ]; @@ -46,12 +50,14 @@ const workspaceActions: Array = [ alias: 'Umb.WorkspaceAction.RelationType.Save', name: 'Save Relation Type Workspace Action', meta: { - workspaces: ['Umb.Workspace.RelationType'], label: 'Save', look: 'primary', color: 'positive', api: UmbSaveWorkspaceAction, }, + conditions: { + workspaces: ['Umb.Workspace.RelationType'], + }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts index 944c186639..adc750459f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbTableColumn, UmbTableConfig } from '../../../../../shared/components/table'; import { UmbLitElement } from '@umbraco-cms/element'; -import { RelationModel } from '@umbraco-cms/backend-api'; +import { RelationResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-workspace-view-relation-type-relation') export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { @@ -19,7 +19,7 @@ export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { //TODO Use real data @state() - _relations: Array = MockData; + _relations: Array = MockData; private _tableConfig: UmbTableConfig = { allowSelection: false, @@ -78,7 +78,7 @@ export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { } } -const MockData: Array = [ +const MockData: Array = [ { parentId: 1, parentName: 'Parent 1', From 39cd245c7addf1dede0e099bcf08f9c97ac96e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:06:15 +1300 Subject: [PATCH 200/550] update to new models --- .../repository/relation-type.repository.ts | 6 ++++++ .../relation-types/repository/sources/index.ts | 6 +++--- .../workspace/relation-type-workspace.context.ts | 5 +++-- .../src/core/mocks/data/relation-type.data.ts | 12 ++++++------ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 9e4c5d0171..dcf2fee07a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -66,6 +66,12 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe return { data, error, asObservable: () => this.#treeStore!.rootItems }; } + //TODO RelationTypes can't have children. But this method is required by the tree interface. + async requestTreeItemsOf(parentKey: string | null) { + const error: ProblemDetailsModel = { title: 'Not implemented' }; + return { data: undefined, error }; + } + async requestTreeItems(keys: Array) { await this.#init; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index 261832c5f4..cd64590110 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemModel, PagedEntityTreeItemModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; export interface RelationTypeTreeDataSource { - getRootItems(): Promise>; - getItems(key: Array): Promise>; + getRootItems(): Promise>; + getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 0342da9da1..4ce10aa4b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -1,13 +1,14 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbWorkspaceEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; + import { ObjectState } from '@umbraco-cms/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/controller'; export class UmbRelationTypeWorkspaceContext extends UmbWorkspaceContext - implements UmbWorkspaceEntityContextInterface + implements UmbEntityWorkspaceContextInterface { #data = new ObjectState(undefined); data = this.#data.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 7d95a4bea2..6526d93f3b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -1,6 +1,6 @@ import { UmbEntityData } from './entity.data'; -import { createEntityTreeItem, createFolderTreeItem } from './utils'; -import type { EntityTreeItemModel, FolderTreeItemModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { createEntityTreeItem } from './utils'; +import type { EntityTreeItemResponseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel export const data: Array = [ @@ -71,7 +71,7 @@ export const data: Array = [ }, ]; -export const treeData: Array = [ +export const treeData: Array = [ { key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', $type: 'EntityTreeItemViewModel', @@ -130,18 +130,18 @@ class UmbRelationTypeData extends UmbEntityData { } //TODO Can relation types have children? - getTreeRoot(): Array { + getTreeRoot(): Array { const rootItems = this.treeData; return rootItems.map((item) => createEntityTreeItem(item)); } //TODO Can relation types have children? - getTreeItemChildren(key: string): Array { + getTreeItemChildren(key: string): Array { const childItems = this.treeData.filter((item) => item.parentKey === key); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { + getTreeItem(keys: Array): Array { const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createEntityTreeItem(item)); } From 5793c4d4dad3b158e44d7d0230bf056977d78cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:13:27 +1300 Subject: [PATCH 201/550] mocks now saves a single item instead of array --- .../src/core/mocks/domains/dictionary.handlers.ts | 6 +++--- .../src/core/mocks/domains/document-type.handlers.ts | 4 ++-- .../src/core/mocks/domains/users.handlers.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index ba47b8ec0b..77a3a72942 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -92,7 +92,7 @@ export const handlers = [ }, ]; - const value = umbDictionaryData.save([data])[0]; + const value = umbDictionaryData.save(data); const createdResult = { value, @@ -110,7 +110,7 @@ export const handlers = [ if (!key) return; const dataToSave = JSON.parse(data[0].value); - const saved = umbDictionaryData.save([dataToSave]); + const saved = umbDictionaryData.save(dataToSave); return res(ctx.status(200), ctx.json(saved)); }), @@ -182,7 +182,7 @@ export const handlers = [ if (!file) return; importResponse.parentKey = req.url.searchParams.get('parentId') ?? null; - umbDictionaryData.save([importResponse]); + umbDictionaryData.save(importResponse); // build the path to the new item => reflects the expected server response const path = ['-1']; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index 02fd203f22..2a35512574 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -4,7 +4,7 @@ import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -22,7 +22,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json([document])); }), - rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { const data = req.body; if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index e6b8cea1fc..52f405beb1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -66,7 +66,7 @@ export const handlers = [ mediaStartNodes: [], }; - const invited = umbUsersData.save([newUser]); + const invited = umbUsersData.save(newUser); console.log('invited', invited); From 1b8b951f22a8e391be041eedb4309a81f2a0f42d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:04:36 +1300 Subject: [PATCH 202/550] add edit page to relation type --- .../repository/relation-type.repository.ts | 10 +- .../relation-type-workspace-edit.element.ts | 92 +++++++++++++++++++ .../relation-type-workspace.context.ts | 5 + .../relation-type-workspace.element.ts | 84 +++++++---------- ...pe-workspace-view-relation-type.element.ts | 17 ++-- 5 files changed, 144 insertions(+), 64 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index dcf2fee07a..583fedf448 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -147,7 +147,7 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe const { error } = await this.#detailDataSource.insert(template); if (!error) { - const notification = { data: { message: `Document created` } }; + const notification = { data: { message: `Relation Type created` } }; this.#notificationContext?.peek('positive', notification); } @@ -163,13 +163,13 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe await this.#init; if (!item || !item.key) { - throw new Error('Document-Type is missing'); + throw new Error('Relation Type is missing'); } const { error } = await this.#detailDataSource.update(item); if (!error) { - const notification = { data: { message: `Document saved` } }; + const notification = { data: { message: `Relation Type saved` } }; this.#notificationContext?.peek('positive', notification); } @@ -189,13 +189,13 @@ export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRe await this.#init; if (!key) { - throw new Error('Document key is missing'); + throw new Error('Relation Type key is missing'); } const { error } = await this.#detailDataSource.delete(key); if (!error) { - const notification = { data: { message: `Document deleted` } }; + const notification = { data: { message: `Relation Type deleted` } }; this.#notificationContext?.peek('positive', notification); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts new file mode 100644 index 0000000000..8245a2034b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts @@ -0,0 +1,92 @@ +import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; + +/** + * @element umb-relation-type-workspace-edit-element + * @description - Element for displaying a Relation Type Workspace + */ +@customElement('umb-relation-type-workspace-edit-element') +export class UmbRelationTypeWorkspaceEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + + #header { + display: flex; + flex: 1 1 auto; + margin: 0 var(--uui-size-layout-1); + } + + #name { + width: 100%; + flex: 1 1 auto; + align-items: center; + } + + #alias { + padding: 0 var(--uui-size-space-3); + opacity: 0.5; + } + `, + ]; + + #workspaceContext?: UmbRelationTypeWorkspaceContext; + + @state() + private _relationType?: RelationTypeResponseModel; + + constructor() { + super(); + + this.consumeContext('umbWorkspaceContext', (instance) => { + this.#workspaceContext = instance; + this.#observeRelationType(); + }); + } + + #observeRelationType() { + if (!this.#workspaceContext) return; + this.observe(this.#workspaceContext.data, (data) => (this._relationType = data)); + } + + // TODO. find a way where we don't have to do this for all workspaces. + private _handleInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setName(target.value); + } + } + } + + render() { + return html` + + + + `; + } +} + +export default UmbRelationTypeWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-relation-type-workspace-edit-element': UmbRelationTypeWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 4ce10aa4b5..528516a116 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -21,9 +21,12 @@ export class UmbRelationTypeWorkspaceContext async load(key: string) { const { data } = await this.repository.requestByKey(key); + if (data) { this.setIsNew(false); this.#data.update(data); + + console.log('THS', this); } } @@ -63,6 +66,8 @@ export class UmbRelationTypeWorkspaceContext } update(key: K, value: RelationTypeBaseModel[K]) { + console.log('update', key, value); + this.#data.next({ ...this.#data.value, [key]: value }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 5e51f0801e..bec947804b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -1,9 +1,11 @@ -import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; + +import './relation-type-workspace-edit.element'; /** * @element umb-relation-type-workspace @@ -11,63 +13,41 @@ import { UmbLitElement } from '@umbraco-cms/element'; */ @customElement('umb-relation-type-workspace') export class UmbRelationTypeWorkspaceElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - width: 100%; - height: 100%; - } - - #header { - /* TODO: can this be applied from layout slot CSS? */ - margin: 0 var(--uui-size-layout-1); - flex: 1 1 auto; - } - `, - ]; + static styles = [UUITextStyles, css``]; #workspaceContext = new UmbRelationTypeWorkspaceContext(this); + #routerPath? = ''; + + #element = document.createElement('umb-relation-type-workspace-edit-element'); + #key = ''; + @state() - private _RelationTypeName = ''; - - public load(value: string) { - this.#workspaceContext?.load(value); - //this._unique = entityKey; - } - - public create(parentKey: string | null) { - this.#workspaceContext.createScaffold(parentKey); - } - - constructor() { - super(); - this.observe(this.#workspaceContext.name, (RelationTypeName) => { - if (RelationTypeName !== this._RelationTypeName) { - this._RelationTypeName = RelationTypeName ?? ''; - } - }); - } - - // TODO. find a way where we don't have to do this for all Workspaces. - #handleInput(event: UUIInputEvent) { - if (event instanceof UUIInputEvent) { - const target = event.composedPath()[0] as UUIInputElement; - - if (typeof target?.value === 'string') { - this.#workspaceContext.setName(target.value); - } - } - } + _routes: IRoute[] = [ + { + path: 'create/:parentKey', + component: () => this.#element, + setup: async (component: HTMLElement, info: IRoutingInfo) => { + const parentKey = info.match.params.parentKey; + this.#workspaceContext.createScaffold(parentKey); + }, + }, + { + path: 'edit/:key', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const key = info.match.params.key; + this.#workspaceContext.load(key); + }, + }, + ]; render() { - return html` - - - - `; + return html` { + this.#routerPath = event.target.absoluteRouterPath; + }}>`; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index dc1b366387..f47039627e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -22,39 +22,42 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme @state() private _relationType?: RelationTypeResponseModel; - #workspaceContext?: UmbRelationTypeWorkspaceContext; + private _workspaceContext?: UmbRelationTypeWorkspaceContext; constructor() { super(); this.consumeContext('umbWorkspaceContext', (instance) => { - this.#workspaceContext = instance; + this._workspaceContext = instance; this._observeRelationType(); }); } private _observeRelationType() { - if (!this.#workspaceContext) { + if (!this._workspaceContext) { return; } - this.observe(this.#workspaceContext.data, (relationType) => { + console.log('this._workspaceContext.data', this._workspaceContext); + + this.observe(this._workspaceContext.data, (relationType) => { + console.log('relationType', relationType); if (!relationType) return; - this._relationType = relationType as RelationTypeBaseModel; + this._relationType = relationType; }); } #handleDirectionChange(event: UUIRadioGroupEvent) { const target = event.target as UUIRadioGroupElement; const value = target.value === 'true'; - this.#workspaceContext?.update('isBidirectional', value); + this._workspaceContext?.update('isBidirectional', value); } #handleIsDependencyChange(event: UUIBooleanInputEvent) { const target = event.target as UUIToggleElement; const value = target.checked; - this.#workspaceContext?.update('isDependency', value); + this._workspaceContext?.update('isDependency', value); } render() { From 8550f49209910367233dd398f25434d01a9e400c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:05:54 +1300 Subject: [PATCH 203/550] cleanup --- ...-type-workspace-view-relation-type.element.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index f47039627e..ea73010413 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -5,7 +5,7 @@ import { UUIBooleanInputEvent, UUIRadioGroupElement, UUIRadioGroupEvent, UUITogg import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/element'; -import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; @customElement('umb-relation-type-workspace-view-relation-type') export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitElement { @@ -22,25 +22,25 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme @state() private _relationType?: RelationTypeResponseModel; - private _workspaceContext?: UmbRelationTypeWorkspaceContext; + #workspaceContext?: UmbRelationTypeWorkspaceContext; constructor() { super(); this.consumeContext('umbWorkspaceContext', (instance) => { - this._workspaceContext = instance; + this.#workspaceContext = instance; this._observeRelationType(); }); } private _observeRelationType() { - if (!this._workspaceContext) { + if (!this.#workspaceContext) { return; } - console.log('this._workspaceContext.data', this._workspaceContext); + console.log('this._workspaceContext.data', this.#workspaceContext); - this.observe(this._workspaceContext.data, (relationType) => { + this.observe(this.#workspaceContext.data, (relationType) => { console.log('relationType', relationType); if (!relationType) return; @@ -51,13 +51,13 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme #handleDirectionChange(event: UUIRadioGroupEvent) { const target = event.target as UUIRadioGroupElement; const value = target.value === 'true'; - this._workspaceContext?.update('isBidirectional', value); + this.#workspaceContext?.update('isBidirectional', value); } #handleIsDependencyChange(event: UUIBooleanInputEvent) { const target = event.target as UUIToggleElement; const value = target.checked; - this._workspaceContext?.update('isDependency', value); + this.#workspaceContext?.update('isDependency', value); } render() { From 3afcfeb4923002b461e19a6820a2614fe4194f88 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 20 Mar 2023 09:08:45 +0100 Subject: [PATCH 204/550] Convert Upgrader stories to new Storybook format --- .../src/upgrader/upgrader.stories.ts | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts index 5485bf1bf5..7b57f9266b 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts @@ -1,12 +1,13 @@ -import '.'; +import './upgrader-view.element'; -import { Meta, Story } from '@storybook/web-components'; +import type { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit-html'; -import { UmbUpgraderView } from './upgrader-view.element'; +import type { UmbUpgraderView } from './upgrader-view.element'; export default { title: 'Apps/Upgrader/States', + component: 'umb-upgrader-view', args: { errorMessage: '', upgrading: false, @@ -31,28 +32,26 @@ export default { ${story()} `, ], -} as Meta; +} satisfies Meta; -const Template: Story = ({ upgrading, errorMessage, settings, fetching }) => - html``; +type Story = StoryObj; -export const Overview = Template.bind({}); +export const Overview: Story = {}; -export const Upgrading = Template.bind({}); -Upgrading.args = { - upgrading: true, +export const Upgrading: Story = { + args: { + upgrading: true, + }, }; -export const Fetching = Template.bind({}); -Fetching.args = { - fetching: true, +export const Fetching: Story = { + args: { + fetching: true, + }, }; -export const Error = Template.bind({}); -Error.args = { - errorMessage: 'Something went wrong', +export const Error: Story = { + args: { + errorMessage: 'Something went wrong', + }, }; From 496aebd2c086b666c9bd294274f852aa69683491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 10:38:25 +0100 Subject: [PATCH 205/550] umb-menu-item-tree --- .../libs/extensions-registry/models.ts | 4 +- .../document-types/menu-item/manifests.ts | 7 +- .../src/backoffice/shared/components/index.ts | 1 + .../section-sidebar-menu.element.ts | 8 +- .../tree-menu-item/tree-menu-item.element.ts | 73 +++++++++++++++++++ 5 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.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 265405c9a7..68c75423f1 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,5 +1,6 @@ import type { ManifestSectionSidebarAppMenuKind } from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; -import { ManifestHeaderAppButtonKind } from '../../src/backoffice/shared/components/header-app/header-app-button.element'; +import type { ManifestHeaderAppButtonKind } from '../../src/backoffice/shared/components/header-app/header-app-button.element'; +import type { ManifestMenuItemTreeKind } from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; import type { ManifestCollectionView } from './collection-view.models'; import type { ManifestDashboard } from './dashboard.models'; import type { ManifestDashboardCollection } from './dashboard-collection.models'; @@ -78,6 +79,7 @@ export type ManifestTypes = | ManifestSectionView | ManifestMenu | ManifestMenuItem + | ManifestMenuItemTreeKind | ManifestTheme | ManifestTree | ManifestUserDashboard diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index fd1020a010..19126045c9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -1,12 +1,13 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.DocumentTypes', name: 'Document Types Menu Item', weight: 10, - loader: () => import('./document-types-menu-item.element'), meta: { + treeAlias: 'Umb.Tree.DocumentTypes', label: 'Document Types', icon: 'umb:folder', }, 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 500fffd846..13e08213b3 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 @@ -34,6 +34,7 @@ import './section/section-sidebar/section-sidebar.element'; import './section/section.element'; import './table/table.element'; import './tree/tree.element'; +import './tree/tree-menu-item/tree-menu-item.element'; import './variantable-property/variantable-property.element'; import './workspace/workspace-action-menu/workspace-action-menu.element'; 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 0efe6d9863..2795306ba9 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,17 +1,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { - ManifestKind, - ManifestMenu, - ManifestMenuSectionSidebarApp, - ManifestSectionSidebarApp, -} from '@umbraco-cms/extensions-registry'; +import { ManifestKind, ManifestMenu, ManifestSectionSidebarApp } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../menu/menu.element'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +// TODO: Move to separate file: const manifest: ManifestKind = { type: 'kind', matchKind: 'Umb.Kind.Menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts new file mode 100644 index 0000000000..9c9386594d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts @@ -0,0 +1,73 @@ +import { html, nothing } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/element'; +import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { ManifestKind, ManifestMenuItem } from '@umbraco-cms/extensions-registry'; + +// TODO: Move to separate file: +const manifest: ManifestKind = { + type: 'kind', + matchKind: 'Umb.Kind.Tree', + matchType: 'menuItem', + manifest: { + type: 'menuItem', + elementName: 'umb-menu-item-tree', + }, +}; +umbExtensionsRegistry.register(manifest); + +export interface ManifestMenuItemTreeKind extends Omit, 'meta'> { + type: 'menuItem'; + kind: 'Umb.Kind.Tree'; + meta: MetaMenuItemTreeKind; +} + +export interface MetaMenuItemTreeKind { + treeAlias: string; + label: string; + icon: string; + entityType?: string; +} + +@customElement('umb-menu-item-tree') +export class UmbMenuItemTreeElement extends UmbLitElement { + @state() + private _renderTree = false; + + private _onShowChildren() { + this._renderTree = true; + } + + private _onHideChildren() { + this._renderTree = false; + } + + @property({ type: Object }) + manifest?: ManifestMenuItemTreeKind; + + // TODO: check if root has children before settings the has-children attribute + // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? + render() { + return this.manifest + ? html` + + ${this._renderTree ? html`` : nothing} + + ` + : ''; + } +} + +export default UmbMenuItemTreeElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-menu-item-tree': UmbMenuItemTreeElement; + } +} From d17a73c86c4fe1daf6fc2c961dd18f30b1e9127c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 10:45:14 +0100 Subject: [PATCH 206/550] replace custom element with kind type --- .../document-types-menu-item.element.ts | 43 ------------------- .../media/media-types/menu-item/manifests.ts | 7 +-- .../media-types-menu-item.element.ts | 39 ----------------- .../member-groups/menu-item/manifests.ts | 7 +-- .../member-groups-menu-item.element.ts | 39 ----------------- .../member-types/menu-item/manifests.ts | 7 +-- .../member-types-menu-item.element.ts | 39 ----------------- .../members/members/menu-item/manifests.ts | 7 +-- .../menu-item/members-menu-item.element.ts | 39 ----------------- .../menu-item/data-types-menu-item.element.ts | 39 ----------------- .../data-types/menu-item/manifests.ts | 7 +-- .../templates/menu-item/manifests.ts | 7 +-- .../menu-item/templates-menu-item.element.ts | 39 ----------------- 13 files changed, 24 insertions(+), 295 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts deleted file mode 100644 index 7362cf82cb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/document-types-menu-item.element.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -// TODO: align menu items and tree items -@customElement('umb-document-types-sidebar-menu-item') -export class UmbDocumentTypesSidebarMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - - ${this._renderTree ? html`` : nothing} - - `; - } -} - -export default UmbDocumentTypesSidebarMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-document-types-sidebar-menu-item': UmbDocumentTypesSidebarMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index cdbdf67653..6267868b06 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -1,14 +1,15 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.MediaTypes', name: 'Media Types Menu Item', weight: 20, - loader: () => import('./media-types-menu-item.element'), meta: { label: 'Media Types', icon: 'umb:folder', + treeAlias: 'Umb.Tree.MediaTypes', }, conditions: { menus: ['Umb.Menu.Settings'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts deleted file mode 100644 index f4c95d9248..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/media-types-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-media-types-menu-item') -export class UmbMediaTypesMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbMediaTypesMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-media-types-menu-item': UmbMediaTypesMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index e9880b658f..d8ec4611da 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -1,14 +1,15 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.MemberGroups', name: 'Member Groups Menu Item', weight: 800, - loader: () => import('./member-groups-menu-item.element'), meta: { label: 'Member Groups', icon: 'umb:folder', + treeAlias: 'Umb.Tree.MemberGroups', }, conditions: { menus: ['Umb.Menu.Members'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts deleted file mode 100644 index 2a215bad63..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/member-groups-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-member-groups-menu-item') -export class UmbMemberGroupsMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbMemberGroupsMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-member-groups-menu-item': UmbMemberGroupsMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 02c64aa21a..66a50d0d98 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -1,14 +1,15 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.MemberTypes', name: 'Member Types Menu Item', weight: 30, - loader: () => import('./member-types-menu-item.element'), meta: { label: 'Member Types', icon: 'umb:folder', + treeAlias: 'Umb.Tree.MemberTypes', }, conditions: { menus: ['Umb.Menu.Settings'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts deleted file mode 100644 index d1bcb90473..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/member-types-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-member-types-menu-item') -export class UmbMemberTypesMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbMemberTypesMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-member-types-menu-item': UmbMemberTypesMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index 375f8a5ac5..5ecad97b1a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -1,15 +1,16 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.Members', name: 'Members Menu Item', weight: 400, - loader: () => import('./members-menu-item.element'), meta: { label: 'Members', icon: 'umb:folder', entityType: 'member', + treeAlias: 'Umb.Tree.Members', }, conditions: { menus: ['Umb.Menu.Members'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts deleted file mode 100644 index 2d89af68e8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/members-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-members-menu-item') -export class UmbMembersMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbMembersMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-members-menu-item': UmbMembersMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts deleted file mode 100644 index 47ad62cf81..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/data-types-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-data-types-menu-item') -export class UmbDataTypesMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbDataTypesMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-data-types-menu-item': UmbDataTypesMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 75408bab4d..0b633f5894 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -1,15 +1,16 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.DataTypes', name: 'Data Types Menu Item', weight: 40, - loader: () => import('./data-types-menu-item.element'), meta: { label: 'Data Types', icon: 'umb:folder', entityType: 'data-type', + treeAlias: 'Umb.Tree.DataTypes', }, conditions: { menus: ['Umb.Menu.Settings'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts index 6ae9d7ce71..9c76e7ee90 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts @@ -1,15 +1,16 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'Umb.Kind.Tree', alias: 'Umb.MenuItem.Templates', name: 'Templates Menu Item', weight: 40, - loader: () => import('./templates-menu-item.element'), meta: { label: 'Templates', icon: 'umb:folder', entityType: 'template', + treeAlias: 'Umb.Tree.Templates', }, conditions: { menus: ['Umb.Menu.Templating'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts deleted file mode 100644 index b596857303..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/templates-menu-item.element.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; - -@customElement('umb-templates-menu-item') -export class UmbTemplatesMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbTemplatesMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-templates-menu-item': UmbTemplatesMenuItemElement; - } -} From 5d3cbad01407061b76d9cea409c0eb138aa43112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 10:55:33 +0100 Subject: [PATCH 207/550] extensionRegistrationsSortedByTypeAndWeight --- .../registry/extension.registry.ts | 22 +------------------ .../extension-root-workspace.element.ts | 21 +++++++++++++++--- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index bc1d2db112..9d24e132ab 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -11,6 +11,7 @@ import { loadExtension } from '../load-extension.function'; import { hasInitExport } from '../has-init-export.function'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; +import { createObservablePart } from '@umbraco-cms/observable-api'; export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. @@ -147,27 +148,6 @@ export class UmbExtensionRegistry { // // TODO: DisctinctUntilChanged by using aliases? } - - // TODO: consider ust having the a.type.localeCompare(b.type); in the extension view, to then be able to use other existing observables? - /** - * Gets all the extensions registrations, but does not merge with kinds. - * @returns - */ - extensionRegistrationsSortedByTypeAndWeight(): Observable> { - return this.extensions.pipe( - map((exts) => - exts.sort((a, b) => { - // If type is the same, sort by weight - if (a.type === b.type) { - return (b.weight || 0) - (a.weight || 0); - } - - // Otherwise sort by type - return a.type.localeCompare(b.type); - }) - ) - ) as Observable>; - } } export const UMB_EXTENSION_REGISTRY_TOKEN = new UmbContextToken('UmbExtensionRegistry'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index f401899358..218da0a48f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -1,5 +1,6 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; +import { map } from 'rxjs'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import type { ManifestBase } from '@umbraco-cms/models'; @@ -23,9 +24,23 @@ export class UmbExtensionRootWorkspaceElement extends UmbLitElement { } private _observeExtensions() { - this.observe(umbExtensionsRegistry.extensionRegistrationsSortedByTypeAndWeight(), (extensions) => { - this._extensions = extensions || undefined; - }); + this.observe( + umbExtensionsRegistry.extensions.pipe( + map((exts) => + exts.sort((a, b) => { + // If type is the same, sort by weight + if (a.type === b.type) { + return (b.weight || 0) - (a.weight || 0); + } + // Otherwise sort by type + return a.type.localeCompare(b.type); + }) + ) + ), + (extensions) => { + this._extensions = extensions || undefined; + } + ); } async #removeExtension(extension: ManifestBase) { From d36e540c1b39d7526d4fb58162ec53dd82f713a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 11:06:39 +0100 Subject: [PATCH 208/550] UmbEntryPointExtensionInitializer --- .../registry/extension.registry.ts | 13 +-------- .../entry-point-extension-initializer.ts | 28 +++++++++++++++++++ .../libs/extensions-registry/index.ts | 1 + .../src/backoffice/backoffice.element.ts | 3 ++ .../repository/server-extension.controller.ts | 2 +- 5 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 9d24e132ab..da5eb4e739 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -11,7 +11,6 @@ import { loadExtension } from '../load-extension.function'; import { hasInitExport } from '../has-init-export.function'; import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; -import { createObservablePart } from '@umbraco-cms/observable-api'; export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. @@ -31,7 +30,7 @@ export class UmbExtensionRegistry { this._kinds.next(nextData); } - register(manifest: ManifestTypes | ManifestKind, rootHost?: UmbControllerHostInterface): void { + register(manifest: ManifestTypes | ManifestKind): void { if (manifest.type === 'kind') { this.defineKind(manifest as ManifestKind); return; @@ -46,16 +45,6 @@ export class UmbExtensionRegistry { } this._extensions.next([...extensionsValues, manifest as ManifestTypes]); - - // If entrypoint extension, we should load and run it immediately - if (manifest.type === 'entrypoint') { - loadExtension(manifest as ManifestEntrypoint).then((js) => { - // If the extension has an onInit export, be sure to run that or else let the module handle itself - if (hasInitExport(js)) { - js.onInit(rootHost!, this); - } - }); - } } unregister(alias: string): void { diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts new file mode 100644 index 0000000000..368dee2996 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts @@ -0,0 +1,28 @@ +import type { ManifestEntrypoint } from './models'; +import { hasInitExport, loadExtension, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + +export class UmbEntryPointExtensionInitializer { + #rootHost; + #extensionRegistry; + + constructor(rootHost: UmbControllerHostInterface, extensionRegistry: UmbExtensionRegistry) { + this.#rootHost = rootHost; + this.#extensionRegistry = extensionRegistry; + // TODO: change entrypoint extension to be entryPoint: + extensionRegistry.extensionsOfType('entrypoint').subscribe((entryPoints) => { + entryPoints.forEach((entryPoint) => { + this.instantiateEntryPoint(entryPoint); + }); + }); + } + + instantiateEntryPoint(manifest: ManifestEntrypoint) { + loadExtension(manifest).then((js) => { + // If the extension has an onInit export, be sure to run that or else let the module handle itself + if (hasInitExport(js)) { + js.onInit(this.#rootHost, this.#extensionRegistry); + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/index.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/index.ts index e9644dae47..3ea5cea392 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/index.ts @@ -1 +1,2 @@ export * from './models'; +export * from './entry-point-extension-initializer'; 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 75e0738142..b719c0f8eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -34,6 +34,7 @@ import './packages'; import './search'; import './templating'; import './shared'; +import { UmbEntryPointExtensionInitializer } from '@umbraco-cms/extensions-registry'; @defineElement('umb-backoffice') export class UmbBackofficeElement extends UmbLitElement { @@ -55,6 +56,8 @@ export class UmbBackofficeElement extends UmbLitElement { constructor() { super(); + new UmbEntryPointExtensionInitializer(this, umbExtensionsRegistry); + this.provideContext(UMB_MODAL_CONTEXT_TOKEN, new UmbModalContext(this)); this.provideContext(UMB_NOTIFICATION_CONTEXT_TOKEN, new UmbNotificationContext()); this.provideContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, new UmbCurrentUserStore()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts index 74a3db7ea0..e48711da84 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts @@ -33,7 +33,7 @@ export class UmbServerExtensionController extends UmbController { ) .subscribe((extensions) => { extensions.forEach((extension) => { - this.extensionRegistry.register(extension, this.#host); + this.extensionRegistry.register(extension); }); }); } From 142f262d225a2c7262644ac1cec9f8ae62245ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 11:43:13 +0100 Subject: [PATCH 209/550] clean up --- .../libs/extensions-api/registry/extension.registry.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index da5eb4e739..8bd9b86514 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -3,18 +3,14 @@ import type { ManifestTypes, ManifestTypeMap, ManifestBase, - ManifestEntrypoint, SpecificManifestTypeOrManifestBase, ManifestKind, } from '../../models'; -import { loadExtension } from '../load-extension.function'; -import { hasInitExport } from '../has-init-export.function'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; import { UmbContextToken } from '@umbraco-cms/context-api'; export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. - private _extensions = new BehaviorSubject>([]); + private _extensions = new BehaviorSubject>([]); public readonly extensions = this._extensions.asObservable(); private _kinds = new BehaviorSubject>([]); From 23ff8d34a9c27d4280b3bdb7d0f1e8bb72ca875a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 12:48:58 +0100 Subject: [PATCH 210/550] use alias, simpler kind value --- .../registry/extension.registry.test.ts | 1 + .../registry/extension.registry.ts | 48 ++++++++++++++----- .../libs/extensions-registry/models.ts | 1 + .../document-types/menu-item/manifests.ts | 2 +- .../backoffice/documents/section.manifests.ts | 2 +- .../media/media-types/menu-item/manifests.ts | 2 +- .../src/backoffice/media/section.manifests.ts | 2 +- .../member-groups/menu-item/manifests.ts | 2 +- .../member-types/menu-item/manifests.ts | 2 +- .../members/members/menu-item/manifests.ts | 2 +- .../backoffice/members/section.manifests.ts | 2 +- .../src/backoffice/search/manifests.ts | 2 +- .../data-types/menu-item/manifests.ts | 2 +- .../backoffice/settings/section.manifests.ts | 2 +- .../header-app/header-app-button.element.ts | 7 +-- .../header-app/header-app.stories.ts | 2 +- .../section-sidebar-menu.element.ts | 5 +- .../components/section/section.element.ts | 4 +- .../tree-menu-item/tree-menu-item.element.ts | 5 +- .../workspace-property.element.ts | 2 +- .../backoffice/templating/menu.manifests.ts | 2 +- .../templates/menu-item/manifests.ts | 2 +- .../translation/section.manifest.ts | 2 +- 23 files changed, 66 insertions(+), 37 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 1aa9898985..8fe49a7a8d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -108,6 +108,7 @@ describe('UmbExtensionRegistry with kinds', () => { manifests = [ { type: 'kind', + alias: 'Umb.Test.Kind', matchType: 'section', matchKind: 'test-kind', manifest: { diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 8bd9b86514..0b97e9bf68 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -1,4 +1,4 @@ -import { BehaviorSubject, withLatestFrom, map, Observable } from 'rxjs'; +import { BehaviorSubject, withLatestFrom, map, Observable, distinctUntilChanged } from 'rxjs'; import type { ManifestTypes, ManifestTypeMap, @@ -8,6 +8,18 @@ import type { } from '../../models'; import { UmbContextToken } from '@umbraco-cms/context-api'; +function ExtensionMemoization(previousValue: Array, currentValue: Array): boolean { + // If length is different, data is different: + if (previousValue.length !== currentValue.length) { + return true; + } + // previousValue has an alias that is not present in currentValue: + if (previousValue.find((p) => !currentValue.find((c) => c.alias === p.alias))) { + return true; + } + return false; +} + export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. private _extensions = new BehaviorSubject>([]); @@ -69,22 +81,28 @@ export class UmbExtensionRegistry { */ private _kindsOfType(type: Key) { - return this.kinds.pipe(map((kinds) => kinds.filter((kind) => kind.matchType === type))); - // TODO: DisctinctUntilChanged by using aliases? + return this.kinds.pipe( + map((kinds) => kinds.filter((kind) => kind.matchType === type)), + distinctUntilChanged(ExtensionMemoization) + ); } private _extensionsOfType(type: Key) { - return this.extensions.pipe(map((exts) => exts.filter((ext) => ext.type === type))); - // TODO: DisctinctUntilChanged by using aliases? + return this.extensions.pipe( + map((exts) => exts.filter((ext) => ext.type === type)), + distinctUntilChanged(ExtensionMemoization) + ); } private _kindsOfTypes(types: string[]) { - return this.kinds.pipe(map((kinds) => kinds.filter((kind) => types.indexOf(kind.matchType) !== -1))); - // TODO: DisctinctUntilChanged by using aliases? + return this.kinds.pipe( + map((kinds) => kinds.filter((kind) => types.indexOf(kind.matchType) !== -1)), + distinctUntilChanged(ExtensionMemoization) + ); } private _extensionsOfTypes(types: string[]): Observable> { - return this.extensions.pipe(map((exts) => exts.filter((ext) => types.indexOf(ext.type) !== -1))) as Observable< - Array - >; - // TODO: DisctinctUntilChanged by using aliases? + return this.extensions.pipe( + map((exts) => exts.filter((ext) => types.indexOf(ext.type) !== -1)), + distinctUntilChanged(ExtensionMemoization) + ) as Observable>; } getByTypeAndAlias>( @@ -99,9 +117,15 @@ export class UmbExtensionRegistry { return ext ? { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext } : undefined; }) ) as Observable; - // TODO: DisctinctUntilChanged by using aliases? and kind(if kind uses alias) } + /* + , + distinctUntilChanged((previousStates?: T, currentStates?: T) => + previousStates && currentStates ? (previousStates as any).alias === (currentStates as any).alias : false + ) + */ + extensionsOfType>(type: Key) { return this._extensionsOfType(type).pipe( withLatestFrom(this._kindsOfType(type)), 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 68c75423f1..10bda46dbf 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -111,6 +111,7 @@ export interface ManifestBase { export interface ManifestKind { type: 'kind'; + alias: string; matchType: string; matchKind: string; manifest: Partial; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index 19126045c9..1e24b06037 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.DocumentTypes', name: 'Document Types Menu Item', weight: 10, 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 b0750c2de0..8db47b18a8 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 @@ -16,7 +16,7 @@ const section: ManifestTypes = { const menuSectionSidebarApp: ManifestSectionSidebarAppMenuKind = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SidebarMenu.Content', name: 'Content Sidebar Menu', weight: 100, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index 6267868b06..9e89df3682 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.MediaTypes', name: 'Media Types Menu Item', weight: 20, 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 5b1ca72db8..08dbb2e1a0 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 @@ -34,7 +34,7 @@ const dashboards: Array = [ const menuSectionSidebarApp: ManifestTypes = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SectionSidebarMenu.Media', name: 'Media Section Sidebar Menu', weight: 100, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index d8ec4611da..bdaac9708f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.MemberGroups', name: 'Member Groups Menu Item', weight: 800, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 66a50d0d98..90dcb2dfa5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.MemberTypes', name: 'Member Types Menu Item', weight: 30, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index 5ecad97b1a..f1495736a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.Members', name: 'Members Menu Item', weight: 400, 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 b34cdaabf0..6437e11bb3 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 @@ -37,7 +37,7 @@ const dashboards: Array = [ const menuSectionSidebarApp: ManifestTypes = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SectionSidebarMenu.Members', name: 'Members Section Sidebar Menu', weight: 100, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts index 7ae2fa8d10..2ce1ac3873 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts @@ -16,7 +16,7 @@ const headerApps: Array = [ { type: 'headerApp', - kind: 'Umb.Kind.Button', + kind: 'button', alias: 'Umb.HeaderApp.HackDemo', name: 'Header App Search', weight: 10, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 0b633f5894..6753e4b2a9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.DataTypes', name: 'Data Types Menu Item', weight: 40, 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 76858fc772..8095f981dd 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 @@ -16,7 +16,7 @@ const section: ManifestSection = { const menuSectionSidebarApp: ManifestSectionSidebarAppMenuKind = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SectionSidebarMenu.Settings', name: 'Settings Section Sidebar Menu', weight: 100, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts index 85470d7d0e..7f0857274e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts @@ -7,7 +7,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; export interface ManifestHeaderAppButtonKind extends Omit { type: 'headerApp'; - kind: 'Umb.Kind.Button'; + kind: 'button'; meta: MetaHeaderAppButtonKind; } @@ -19,11 +19,12 @@ export interface MetaHeaderAppButtonKind { const manifest: ManifestKind = { type: 'kind', - matchKind: 'Umb.Kind.Button', + alias: 'Umb.Kind.Button', + matchKind: 'button', matchType: 'headerApp', manifest: { type: 'headerApp', - kind: 'Umb.Kind.Button', + kind: 'button', elementName: 'umb-header-app-button', }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts index 6c42e916b9..105cdddf02 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app.stories.ts @@ -16,7 +16,7 @@ export const Overview: Story = { name: 'Some Manifest', alias: 'someManifestAlias', type: 'headerApp', - kind: 'Umb.Kind.Button', + kind: 'button', meta: { label: 'Some Header', icon: 'umb:home', 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 2795306ba9..6e041176a2 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 @@ -10,7 +10,8 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; // TODO: Move to separate file: const manifest: ManifestKind = { type: 'kind', - matchKind: 'Umb.Kind.Menu', + alias: 'Umb.Kind.Menu', + matchKind: 'menu', matchType: 'sectionSidebarApp', manifest: { type: 'sectionSidebarApp', @@ -21,7 +22,7 @@ umbExtensionsRegistry.register(manifest); export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { type: 'sectionSidebarApp'; - kind: 'Umb.Kind.Menu'; + kind: 'menu'; meta: MetaSectionSidebarAppMenuKind; } 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 107ba009b3..bcbf50aa21 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 @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import type { IRoutingInfo } from '@umbraco-cms/router'; import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; +import type { IRoutingInfo } from '@umbraco-cms/router'; import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/models'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; import { UmbLitElement } from '@umbraco-cms/element'; @@ -45,7 +45,7 @@ export class UmbSectionElement extends UmbLitElement { private _routes?: Array; @state() - private _menus?: Array; + private _menus?: Array>; connectedCallback() { super.connectedCallback(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts index 9c9386594d..8580b11052 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts @@ -7,7 +7,8 @@ import { ManifestKind, ManifestMenuItem } from '@umbraco-cms/extensions-registry // TODO: Move to separate file: const manifest: ManifestKind = { type: 'kind', - matchKind: 'Umb.Kind.Tree', + alias: 'Umb.Kind.Tree', + matchKind: 'tree', matchType: 'menuItem', manifest: { type: 'menuItem', @@ -18,7 +19,7 @@ umbExtensionsRegistry.register(manifest); export interface ManifestMenuItemTreeKind extends Omit, 'meta'> { type: 'menuItem'; - kind: 'Umb.Kind.Tree'; + kind: 'tree'; meta: MetaMenuItemTreeKind; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index f1be387b72..680141f6d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -151,7 +151,7 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { private _propertyContext = new UmbWorkspacePropertyContext(this); - private propertyEditorUIObserver?: UmbObserverController; + private propertyEditorUIObserver?: UmbObserverController; private _valueObserver?: UmbObserverController; private _configObserver?: UmbObserverController; 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 d04efd3ec4..b2bae27adf 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 @@ -11,7 +11,7 @@ const menu: ManifestMenu = { const menuSectionSidebarApp: ManifestTypes = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SectionSidebarMenu.Templating', name: 'Templating Section Sidebar Menu', weight: 100, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts index 9c76e7ee90..8797042651 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/menu-item/manifests.ts @@ -2,7 +2,7 @@ import type { ManifestTypes } from '@umbraco-cms/models'; const menuItem: ManifestTypes = { type: 'menuItem', - kind: 'Umb.Kind.Tree', + kind: 'tree', alias: 'Umb.MenuItem.Templates', name: 'Templates Menu Item', weight: 40, 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 b9fa9ef259..b36c970128 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 @@ -15,7 +15,7 @@ const section: ManifestSection = { const menuSectionSidebarApp: ManifestTypes = { type: 'sectionSidebarApp', - kind: 'Umb.Kind.Menu', + kind: 'menu', alias: 'Umb.SidebarMenu.Dictionary', name: 'Dictionary Sidebar Menu', weight: 100, From 30e165f0ca681b51764a0a21c60c8247efc36354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 12:51:52 +0100 Subject: [PATCH 211/550] type fixes --- .../extensions-api/registry/extension.registry.test.ts | 4 ++-- .../src/backoffice/members/section.manifests.ts | 7 +------ .../workspace/extension-root-workspace.element.ts | 6 +++--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 8fe49a7a8d..e5bcd2979e 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -118,7 +118,7 @@ describe('UmbExtensionRegistry with kinds', () => { }, { type: 'section', - kind: 'test-kind', + kind: 'test-kind' as unknown as undefined, // We do not know about this one, so it makes good sense that its not a valid option. name: 'test-section-1', alias: 'Umb.Test.Section.1', weight: 1, @@ -139,7 +139,7 @@ describe('UmbExtensionRegistry with kinds', () => { }, { type: 'section', - kind: 'test-kind', + kind: 'test-kind' as unknown as undefined, // We do not know about this one, so it makes good sense that its not a valid option. name: 'test-section-3', alias: 'Umb.Test.Section.3', weight: 25, 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 6437e11bb3..eacefe6606 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,9 +1,4 @@ -import type { - ManifestDashboard, - ManifestSection, - ManifestMenuSectionSidebarApp, - ManifestTypes, -} from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Members'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index 218da0a48f..9dcf9c2f7a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -3,14 +3,14 @@ import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestBase } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/models'; import { UmbLitElement } from '@umbraco-cms/element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; @customElement('umb-extension-root-workspace') export class UmbExtensionRootWorkspaceElement extends UmbLitElement { @state() - private _extensions?: Array = undefined; + private _extensions?: Array = undefined; private _modalContext?: UmbModalContext; @@ -43,7 +43,7 @@ export class UmbExtensionRootWorkspaceElement extends UmbLitElement { ); } - async #removeExtension(extension: ManifestBase) { + async #removeExtension(extension: ManifestTypes) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { headline: 'Unload extension', confirmLabel: 'Unload', From 61dca06b8147aa2b82198bacabad715d330575bb Mon Sep 17 00:00:00 2001 From: JesmoDev <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:58:18 +1300 Subject: [PATCH 212/550] bugfix: entity mock save now accepts an item instead of an array (#595) * entity mock save now accepts an item instead of an array * mocks now saves a single item instead of array --------- Co-authored-by: Mads Rasmussen --- .../src/core/mocks/data/entity.data.ts | 26 +++++++++---------- .../core/mocks/domains/dictionary.handlers.ts | 6 ++--- .../mocks/domains/document-type.handlers.ts | 4 +-- .../src/core/mocks/domains/users.handlers.ts | 2 +- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index 29d9fc8f09..58d730e6d4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -10,7 +10,7 @@ export class UmbEntityData extends UmbData { getList(skip: number, take: number) { return this.data.slice(skip, skip + take); } - + getByKey(key: string) { return this.data.find((item) => item.key === key); } @@ -19,20 +19,18 @@ export class UmbEntityData extends UmbData { return this.data.filter((item) => keys.includes(item.key)); } - save(saveItems: Array) { - saveItems.forEach((saveItem) => { - const foundIndex = this.data.findIndex((item) => item.key === saveItem.key); - if (foundIndex !== -1) { - // update - this.data[foundIndex] = saveItem; - this.updateData(saveItem); - } else { - // new - this.data.push(saveItem); - } - }); + save(saveItem: T) { + const foundIndex = this.data.findIndex((item) => item.key === saveItem.key); + if (foundIndex !== -1) { + // update + this.data[foundIndex] = saveItem; + this.updateData(saveItem); + } else { + // new + this.data.push(saveItem); + } - return saveItems; + return saveItem; } move(keys: Array, destinationKey: string) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index ba47b8ec0b..77a3a72942 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -92,7 +92,7 @@ export const handlers = [ }, ]; - const value = umbDictionaryData.save([data])[0]; + const value = umbDictionaryData.save(data); const createdResult = { value, @@ -110,7 +110,7 @@ export const handlers = [ if (!key) return; const dataToSave = JSON.parse(data[0].value); - const saved = umbDictionaryData.save([dataToSave]); + const saved = umbDictionaryData.save(dataToSave); return res(ctx.status(200), ctx.json(saved)); }), @@ -182,7 +182,7 @@ export const handlers = [ if (!file) return; importResponse.parentKey = req.url.searchParams.get('parentId') ?? null; - umbDictionaryData.save([importResponse]); + umbDictionaryData.save(importResponse); // build the path to the new item => reflects the expected server response const path = ['-1']; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index 02fd203f22..2a35512574 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -4,7 +4,7 @@ import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -22,7 +22,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json([document])); }), - rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => { const data = req.body; if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index e6b8cea1fc..52f405beb1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -66,7 +66,7 @@ export const handlers = [ mediaStartNodes: [], }; - const invited = umbUsersData.save([newUser]); + const invited = umbUsersData.save(newUser); console.log('invited', invited); From d5330e5ea12e82a4d8292f55a093cf813c267f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 13:01:06 +0100 Subject: [PATCH 213/550] distinctUntilChanged --- .../registry/extension.registry.ts | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 0b97e9bf68..ef6361daf6 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -8,7 +8,10 @@ import type { } from '../../models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -function ExtensionMemoization(previousValue: Array, currentValue: Array): boolean { +function ExtensionArrayMemoization( + previousValue: Array, + currentValue: Array +): boolean { // If length is different, data is different: if (previousValue.length !== currentValue.length) { return true; @@ -20,6 +23,16 @@ function ExtensionMemoization(previousValue: Array< return false; } +function ExtensionSingleMemoization( + previousValue: T | undefined, + currentValue: T | undefined +): boolean { + if (previousValue && currentValue) { + return previousValue.alias !== currentValue.alias; + } + return previousValue !== currentValue; +} + export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. private _extensions = new BehaviorSubject>([]); @@ -83,25 +96,25 @@ export class UmbExtensionRegistry { private _kindsOfType(type: Key) { return this.kinds.pipe( map((kinds) => kinds.filter((kind) => kind.matchType === type)), - distinctUntilChanged(ExtensionMemoization) + distinctUntilChanged(ExtensionArrayMemoization) ); } private _extensionsOfType(type: Key) { return this.extensions.pipe( map((exts) => exts.filter((ext) => ext.type === type)), - distinctUntilChanged(ExtensionMemoization) + distinctUntilChanged(ExtensionArrayMemoization) ); } private _kindsOfTypes(types: string[]) { return this.kinds.pipe( map((kinds) => kinds.filter((kind) => types.indexOf(kind.matchType) !== -1)), - distinctUntilChanged(ExtensionMemoization) + distinctUntilChanged(ExtensionArrayMemoization) ); } private _extensionsOfTypes(types: string[]): Observable> { return this.extensions.pipe( map((exts) => exts.filter((ext) => types.indexOf(ext.type) !== -1)), - distinctUntilChanged(ExtensionMemoization) + distinctUntilChanged(ExtensionArrayMemoization) ) as Observable>; } @@ -115,17 +128,11 @@ export class UmbExtensionRegistry { map(([ext, kinds]) => { // TODO: Deep merge? return ext ? { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext } : undefined; - }) + }), + distinctUntilChanged(ExtensionSingleMemoization) ) as Observable; } - /* - , - distinctUntilChanged((previousStates?: T, currentStates?: T) => - previousStates && currentStates ? (previousStates as any).alias === (currentStates as any).alias : false - ) - */ - extensionsOfType>(type: Key) { return this._extensionsOfType(type).pipe( withLatestFrom(this._kindsOfType(type)), @@ -136,10 +143,9 @@ export class UmbExtensionRegistry { return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) - ) + ), + distinctUntilChanged(ExtensionArrayMemoization) ) as Observable>; - // - // TODO: DisctinctUntilChanged by using aliases? } extensionsOfTypes(types: string[]): Observable> { @@ -152,10 +158,9 @@ export class UmbExtensionRegistry { return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) - ) + ), + distinctUntilChanged(ExtensionArrayMemoization) ) as Observable>; - // - // TODO: DisctinctUntilChanged by using aliases? } } From 8a7724efa711f9c97d59673568017298b05ca46a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Mar 2023 13:10:15 +0100 Subject: [PATCH 214/550] add todo --- .../workspace-context/workspace-entity-context.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts index 3ab4890af3..e066a7ec1a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts @@ -2,7 +2,7 @@ import type { UmbWorkspaceContextInterface } from './workspace-context.interface export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() - getEntityType(): string; + getEntityType(): string; // TODO: consider of this should be on the repository because a repo is responsible for one entity type getData(): T; save(): Promise; } From 53a218d8b5118ddfd1e1395b058c25c81486af92 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Mar 2023 13:10:48 +0100 Subject: [PATCH 215/550] remove console log --- .../relation-types/workspace/relation-type-workspace.context.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 528516a116..732943af6c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -25,8 +25,6 @@ export class UmbRelationTypeWorkspaceContext if (data) { this.setIsNew(false); this.#data.update(data); - - console.log('THS', this); } } From 0fe909d42e187057f4cbe12bb5f5b1a4644c50ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 13:43:05 +0100 Subject: [PATCH 216/550] docs --- .../src/stories/extending/registration.mdx | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx index 2366eecb43..1b1bc32b16 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx @@ -62,6 +62,67 @@ const manifest = { extensionRegistry.register(extension); ``` +## Using Kinds for registration + +Generally UI extensions, requires you to bring everything for the extension. +But there are several situations where you dont want to bring the full solution, just some configuration. + +In this case we can use Extension 'Kinds'. Kinds enables you to extend a base configuration and make it your own. + +To understand the concept of Kinds, lets look at the Header App extension type: + +```ts +import { extensionRegistry } from '@umbraco-cms/extension-registry'; + +const manifest = { + type: 'headerApp', + kind: 'button', + name: 'My Header App Example', + alias: 'My.HeaderApp.Example', + meta: { + label: 'My Example', + icon: 'umb:home', + href: '/some/path/to/open/when/clicked', + }, +}; + +extensionRegistry.register(extension); +``` + +The above example does not provide a element, but is still visually present through a button element. +The this element comes from the kind 'button'. + +Backoffice comes with a set of predefined Kinds, and you can even create your own. + +Many of the build-in Kinds comes with a default element, but it could be anything. To understand the abilities we can look closer at the registration of your own Kinds. + +## Registering a kind + +The registration of Kinds, is done in the same maner as the registration of other extensions. +But the format of it is quite different, lets look at the Kind registration of the Header App Button Kind (The kind used in the above example): + +```ts +import { extensionRegistry } from '@umbraco-cms/extension-registry'; + +const manifest: ManifestKind = { + type: 'kind', + alias: 'Umb.Kind.Button', + matchKind: 'button', + matchType: 'headerApp', + manifest: { + elementName: 'umb-header-app-button', + }, +}; + +umbExtensionsRegistry.register(manifest); +``` + +The root properties of this object, defines the Kind registration. +And then the manifest property holds the base extension manifest that users of this Kind will be extending. +This object can hold the property values that makes sense for the Kind. + +In the above example the only property value defined a elementName, which is enough to create the button element for all extensions using this Kind. + ### JSON Manifest files TODO: describe how and where to position the JSON manifest files From 6882ad03b00ad0b8419d4753beede257fb741941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 13:45:42 +0100 Subject: [PATCH 217/550] switch props --- .../src/stories/extending/registration.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx index 1b1bc32b16..7ead7a5cc1 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/registration.mdx @@ -107,8 +107,8 @@ import { extensionRegistry } from '@umbraco-cms/extension-registry'; const manifest: ManifestKind = { type: 'kind', alias: 'Umb.Kind.Button', - matchKind: 'button', matchType: 'headerApp', + matchKind: 'button', manifest: { elementName: 'umb-header-app-button', }, From 93ed6d77891fb79e5921147afabe986e6629f06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 14:21:31 +0100 Subject: [PATCH 218/550] fix tests --- .../registry/extension.registry.test.ts | 11 ++++++----- .../libs/extensions-registry/models.ts | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index e5bcd2979e..9bbf85ce6c 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -84,14 +84,13 @@ describe('UmbExtensionRegistry', () => { .unsubscribe(); }); - // TODO: What kind of weighting would we like to use? it('should return extensions ordered by weight', (done) => { extensionRegistry .extensionsOfType(type) .subscribe((extensions) => { - expect(extensions?.[0]?.weight).to.eq(1); + expect(extensions?.[0]?.weight).to.eq(200); expect(extensions?.[1]?.weight).to.eq(25); - expect(extensions?.[2]?.weight).to.eq(200); + expect(extensions?.[2]?.weight).to.eq(1); done(); }) .unsubscribe(); @@ -166,9 +165,11 @@ describe('UmbExtensionRegistry with kinds', () => { .extensionsOfType('section') .subscribe((extensions) => { expect(extensions).to.have.lengthOf(3); - expect(extensions?.[0]?.elementName).to.eq('my-kind-element'); + expect(extensions?.[0]?.elementName).to.not.eq('my-kind-element'); + expect(extensions?.[1]?.alias).to.eq('Umb.Test.Section.3'); expect(extensions?.[1]?.elementName).to.eq('my-kind-element'); - expect(extensions?.[2]?.elementName).to.not.eq('my-kind-element'); + expect(extensions?.[2]?.alias).to.eq('Umb.Test.Section.1'); + expect(extensions?.[2]?.elementName).to.eq('my-kind-element'); done(); }) .unsubscribe(); 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 10bda46dbf..9d617d1e77 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -29,6 +29,9 @@ import type { ManifestModal } from './modal.models'; import type { ManifestStore, ManifestTreeStore } from './store.models'; import type { ClassConstructor } from '@umbraco-cms/models'; +export * from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +export * from '../../src/backoffice/shared/components/header-app/header-app-button.element'; +export * from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; export * from './collection-view.models'; export * from './dashboard-collection.models'; export * from './dashboard.models'; From e3fbe45fe10ed79ec9f123a6c92b2eb7304399b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 14:34:36 +0100 Subject: [PATCH 219/550] a bit of deep merge. --- .../registry/extension.registry.ts | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index ef6361daf6..3f49b4dd61 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -118,29 +118,50 @@ export class UmbExtensionRegistry { ) as Observable>; } - getByTypeAndAlias>( - type: Key, - alias: string - ) { + getByTypeAndAlias< + Key extends keyof ManifestTypeMap | string, + T extends ManifestBase = SpecificManifestTypeOrManifestBase + >(type: Key, alias: string) { return this.extensions.pipe( map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias)), withLatestFrom(this._kindsOfType(type)), map(([ext, kinds]) => { - // TODO: Deep merge? - return ext ? { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext } : undefined; + // Specific Extension Meta merge (does not merge conditions) + if (ext) { + const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; + if (baseManifest) { + const merged = { ...baseManifest, ...ext } as any; + if ((baseManifest as any).meta) { + merged.meta = { ...(baseManifest as any).meta, ...(ext as any).meta }; + } + return merged; + } + } + return ext; }), distinctUntilChanged(ExtensionSingleMemoization) ) as Observable; } - extensionsOfType>(type: Key) { + extensionsOfType< + Key extends keyof ManifestTypeMap | string, + T extends ManifestBase = SpecificManifestTypeOrManifestBase + >(type: Key) { return this._extensionsOfType(type).pipe( withLatestFrom(this._kindsOfType(type)), map(([exts, kinds]) => exts .map((ext) => { - // TODO: Deep merge? - return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; + // Specific Extension Meta merge (does not merge conditions) + const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; + if (baseManifest) { + const merged = { ...baseManifest, ...ext } as any; + if ((baseManifest as any).meta) { + merged.meta = { ...(baseManifest as any).meta, ...(ext as any).meta }; + } + return merged; + } + return ext; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ), From c9b9431ad32eae567e1925160b7147afd5f14971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 14:35:27 +0100 Subject: [PATCH 220/550] todo --- .../extensions-api/registry/extension.registry.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 3f49b4dd61..6c30f58631 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -126,6 +126,7 @@ export class UmbExtensionRegistry { map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias)), withLatestFrom(this._kindsOfType(type)), map(([ext, kinds]) => { + // TODO: share one merge function between the different methods of this class: // Specific Extension Meta merge (does not merge conditions) if (ext) { const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; @@ -175,8 +176,16 @@ export class UmbExtensionRegistry { map(([exts, kinds]) => exts .map((ext) => { - // TODO: Deep merge? - return { ...kinds.find((kind) => kind.matchKind === ext.kind)?.manifest, ...ext }; + // Specific Extension Meta merge (does not merge conditions) + const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; + if (baseManifest) { + const merged = { ...baseManifest, ...ext } as any; + if ((baseManifest as any).meta) { + merged.meta = { ...(baseManifest as any).meta, ...(ext as any).meta }; + } + return merged; + } + return ext; }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ), From c960a1d4ae3babdcdef330fe950cf82fe6eac0c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 14:37:17 +0100 Subject: [PATCH 221/550] fix type --- .../registry/extension.registry.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 6c30f58631..7376ca0652 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -170,20 +170,24 @@ export class UmbExtensionRegistry { ) as Observable>; } - extensionsOfTypes(types: string[]): Observable> { + extensionsOfTypes( + types: string[] + ): Observable> { return this._extensionsOfTypes(types).pipe( withLatestFrom(this._kindsOfTypes(types)), map(([exts, kinds]) => exts .map((ext) => { // Specific Extension Meta merge (does not merge conditions) - const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; - if (baseManifest) { - const merged = { ...baseManifest, ...ext } as any; - if ((baseManifest as any).meta) { - merged.meta = { ...(baseManifest as any).meta, ...(ext as any).meta }; + if (ext) { + const baseManifest = kinds.find((kind) => kind.matchKind === ext.kind)?.manifest; + if (baseManifest) { + const merged = { ...baseManifest, ...ext } as any; + if ((baseManifest as any).meta) { + merged.meta = { ...(baseManifest as any).meta, ...(ext as any).meta }; + } + return merged; } - return merged; } return ext; }) From 12981cdc18fa7f04f9d6525ce8af7e5076e1548e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 14:39:41 +0100 Subject: [PATCH 222/550] test meta merge --- .../libs/extensions-api/registry/extension.registry.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 9bbf85ce6c..4fe94b74b5 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -113,6 +113,9 @@ describe('UmbExtensionRegistry with kinds', () => { manifest: { type: 'section', elementName: 'my-kind-element', + meta: { + label: 'my-kind-meta-label', + }, }, }, { @@ -122,7 +125,7 @@ describe('UmbExtensionRegistry with kinds', () => { alias: 'Umb.Test.Section.1', weight: 1, meta: { - label: 'Test Section 1', + //label: 'Test Section 1',// should come from the kind. pathname: 'test-section-1', }, }, @@ -170,6 +173,7 @@ describe('UmbExtensionRegistry with kinds', () => { expect(extensions?.[1]?.elementName).to.eq('my-kind-element'); expect(extensions?.[2]?.alias).to.eq('Umb.Test.Section.1'); expect(extensions?.[2]?.elementName).to.eq('my-kind-element'); + expect(extensions?.[2]?.meta.label).to.eq('my-kind-meta-label'); done(); }) .unsubscribe(); From b5a9d105b25839a55ffb167c032662c6335cbf57 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Mar 2023 15:44:19 +0100 Subject: [PATCH 223/550] move kind interface into extension registry module --- .../libs/extensions-registry/models.ts | 4 +--- .../section-sidebar-app.models.ts | 13 +++++-------- .../src/backoffice/documents/section.manifests.ts | 2 +- .../src/backoffice/settings/section.manifests.ts | 2 +- .../section-sidebar-menu.element.ts | 15 ++------------- 5 files changed, 10 insertions(+), 26 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 9d617d1e77..9c3e63d71d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,4 +1,3 @@ -import type { ManifestSectionSidebarAppMenuKind } from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; import type { ManifestHeaderAppButtonKind } from '../../src/backoffice/shared/components/header-app/header-app-button.element'; import type { ManifestMenuItemTreeKind } from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; import type { ManifestCollectionView } from './collection-view.models'; @@ -14,7 +13,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 { ManifestSectionSidebarApp, ManifestSectionSidebarAppMenuKind } from './section-sidebar-app.models'; import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; @@ -29,7 +28,6 @@ import type { ManifestModal } from './modal.models'; import type { ManifestStore, ManifestTreeStore } from './store.models'; import type { ClassConstructor } from '@umbraco-cms/models'; -export * from '../../src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; export * from '../../src/backoffice/shared/components/header-app/header-app-button.element'; export * from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; export * from './collection-view.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 af1b20de81..fc8d868f6e 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 @@ -9,16 +9,13 @@ export interface ConditionsSectionSidebarApp { sections: Array; } -/* -// TODO: this is a temp solution until we implement kinds -export interface ManifestMenuSectionSidebarApp extends Omit { - type: 'menuSectionSidebarApp'; - meta: MetaMenuSectionSidebarApp; - conditions: ConditionsSectionSidebarApp; +export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { + type: 'sectionSidebarApp'; + kind: 'menu'; + meta: MetaSectionSidebarAppMenuKind; } -export interface MetaMenuSectionSidebarApp { +export interface MetaSectionSidebarAppMenuKind { label: string; 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 8db47b18a8..0375b56b65 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 { ManifestSectionSidebarAppMenuKind } from '../shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; import type { ManifestTypes } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Content'; 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 8095f981dd..8838706a49 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 { ManifestSectionSidebarAppMenuKind } from '../shared/components/section/section-sidebar-menu/section-sidebar-menu.element'; +import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; import type { ManifestSection } from '@umbraco-cms/models'; const sectionAlias = 'Umb.Section.Settings'; 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 6e041176a2..e81caa76dc 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 { ManifestKind, ManifestMenu, ManifestSectionSidebarApp } from '@umbraco-cms/extensions-registry'; +import { ManifestKind, ManifestMenu, ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/element'; import '../../menu/menu.element'; @@ -20,17 +20,6 @@ const manifest: ManifestKind = { }; umbExtensionsRegistry.register(manifest); -export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { - type: 'sectionSidebarApp'; - kind: 'menu'; - meta: MetaSectionSidebarAppMenuKind; -} - -export interface MetaSectionSidebarAppMenuKind { - label: string; - menu: string; -} - @customElement('umb-section-sidebar-menu') export class UmbSectionSidebarMenuElement extends UmbLitElement { static styles = [ @@ -43,7 +32,7 @@ export class UmbSectionSidebarMenuElement extends UmbLitElement { ]; @property() - manifest?: ManifestSectionSidebarApp; + manifest?: ManifestSectionSidebarAppMenuKind; render() { // TODO: link to dashboards when clicking on the menu item header From d1a8f5fc80c8186647fc21967fb3fa8f38c739a0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Mar 2023 15:48:32 +0100 Subject: [PATCH 224/550] move header app button kind interfaces into extensions registry --- .../libs/extensions-registry/header-app.models.ts | 12 ++++++++++++ .../libs/extensions-registry/models.ts | 4 +--- .../header-app/header-app-button.element.ts | 14 +------------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts index 71e27cdcb1..bf3eff5244 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts @@ -11,3 +11,15 @@ export interface MetaHeaderApp { label: string; icon: string; } + +export interface ManifestHeaderAppButtonKind extends Omit { + type: 'headerApp'; + kind: 'button'; + meta: MetaHeaderAppButtonKind; +} + +export interface MetaHeaderAppButtonKind { + href: string; + label: string; + icon: 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 9c3e63d71d..6d0228d82e 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,4 +1,3 @@ -import type { ManifestHeaderAppButtonKind } from '../../src/backoffice/shared/components/header-app/header-app-button.element'; import type { ManifestMenuItemTreeKind } from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; import type { ManifestCollectionView } from './collection-view.models'; import type { ManifestDashboard } from './dashboard.models'; @@ -6,7 +5,7 @@ import type { ManifestDashboardCollection } from './dashboard-collection.models' import type { ManifestEntityAction } from './entity-action.models'; import type { ManifestEntityBulkAction } from './entity-bulk-action.models'; import type { ManifestExternalLoginProvider } from './external-login-provider.models'; -import type { ManifestHeaderApp } from './header-app.models'; +import type { ManifestHeaderApp, ManifestHeaderAppButtonKind } from './header-app.models'; import type { ManifestHealthCheck } from './health-check.models'; import type { ManifestPackageView } from './package-view.models'; import type { ManifestPropertyAction } from './property-action.models'; @@ -28,7 +27,6 @@ import type { ManifestModal } from './modal.models'; import type { ManifestStore, ManifestTreeStore } from './store.models'; import type { ClassConstructor } from '@umbraco-cms/models'; -export * from '../../src/backoffice/shared/components/header-app/header-app-button.element'; export * from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; export * from './collection-view.models'; export * from './dashboard-collection.models'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts index 7f0857274e..7173cd2d0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts @@ -2,21 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { ManifestHeaderApp, ManifestKind } from '@umbraco-cms/extensions-registry'; +import { ManifestHeaderAppButtonKind, ManifestKind } from '@umbraco-cms/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -export interface ManifestHeaderAppButtonKind extends Omit { - type: 'headerApp'; - kind: 'button'; - meta: MetaHeaderAppButtonKind; -} - -export interface MetaHeaderAppButtonKind { - href: string; - label: string; - icon: string; -} - const manifest: ManifestKind = { type: 'kind', alias: 'Umb.Kind.Button', From 1116770ec84361ab9e4f5518ca392f9cfa58f239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 15:52:42 +0100 Subject: [PATCH 225/550] remove comments --- .../documents/workspace/document-workspace-edit.element.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts index e427be75ba..8d2a27167d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -84,7 +84,6 @@ export class UmbDocumentWorkspaceEditElement extends UmbLitElement { this._availableVariants.forEach((variantB) => { routes.push({ path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), - //component: () => import('./document-workspace-split-view.element'), component: this.splitViewElement, setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { // Set split view/active info.. @@ -101,7 +100,6 @@ export class UmbDocumentWorkspaceEditElement extends UmbLitElement { this._availableVariants.forEach((variant) => { routes.push({ path: new UmbVariantId(variant).toString(), - //component: () => import('./document-workspace-split-view.element'), component: this.splitViewElement, setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { // cause we might come from a split-view, we need to reset index 1. From 2b894102a7b933a6be54d41ed9d46b046519ffe5 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 20 Mar 2023 15:52:56 +0100 Subject: [PATCH 226/550] move menu item tree kind interfaces into extension registry --- .../libs/extensions-registry/menu-item.models.ts | 13 +++++++++++++ .../libs/extensions-registry/models.ts | 4 +--- .../tree/tree-menu-item/tree-menu-item.element.ts | 15 +-------------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts index 56c81a7de8..5278692f0d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts @@ -15,3 +15,16 @@ export interface MetaMenuItem { export interface ConditionsMenuItem { menus: Array; } + +export interface ManifestMenuItemTreeKind extends Omit, 'meta'> { + type: 'menuItem'; + kind: 'tree'; + meta: MetaMenuItemTreeKind; +} + +export interface MetaMenuItemTreeKind { + treeAlias: string; + label: string; + icon: string; + entityType?: 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 6d0228d82e..067a4022a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -1,4 +1,3 @@ -import type { ManifestMenuItemTreeKind } from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; import type { ManifestCollectionView } from './collection-view.models'; import type { ManifestDashboard } from './dashboard.models'; import type { ManifestDashboardCollection } from './dashboard-collection.models'; @@ -14,7 +13,7 @@ import type { ManifestSection } from './section.models'; import type { ManifestSectionView } from './section-view.models'; import type { ManifestSectionSidebarApp, ManifestSectionSidebarAppMenuKind } from './section-sidebar-app.models'; import type { ManifestMenu } from './menu.models'; -import type { ManifestMenuItem } from './menu-item.models'; +import type { ManifestMenuItem, ManifestMenuItemTreeKind } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; import type { ManifestUserDashboard } from './user-dashboard.models'; @@ -27,7 +26,6 @@ import type { ManifestModal } from './modal.models'; import type { ManifestStore, ManifestTreeStore } from './store.models'; import type { ClassConstructor } from '@umbraco-cms/models'; -export * from '../../src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element'; export * from './collection-view.models'; export * from './dashboard-collection.models'; export * from './dashboard.models'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts index 8580b11052..2565b9ce4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts @@ -2,7 +2,7 @@ import { html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/element'; import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestKind, ManifestMenuItem } from '@umbraco-cms/extensions-registry'; +import { ManifestKind, ManifestMenuItemTreeKind } from '@umbraco-cms/extensions-registry'; // TODO: Move to separate file: const manifest: ManifestKind = { @@ -17,19 +17,6 @@ const manifest: ManifestKind = { }; umbExtensionsRegistry.register(manifest); -export interface ManifestMenuItemTreeKind extends Omit, 'meta'> { - type: 'menuItem'; - kind: 'tree'; - meta: MetaMenuItemTreeKind; -} - -export interface MetaMenuItemTreeKind { - treeAlias: string; - label: string; - icon: string; - entityType?: string; -} - @customElement('umb-menu-item-tree') export class UmbMenuItemTreeElement extends UmbLitElement { @state() From 87c67a911d03bf2c917a92311ccd1c9eaee3afd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 16:22:18 +0100 Subject: [PATCH 227/550] remove null --- .../components/workspace-property/workspace-property.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 680141f6d9..7eb5d7c434 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -151,7 +151,7 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { private _propertyContext = new UmbWorkspacePropertyContext(this); - private propertyEditorUIObserver?: UmbObserverController; + private propertyEditorUIObserver?: UmbObserverController; private _valueObserver?: UmbObserverController; private _configObserver?: UmbObserverController; From e52901afaa924e57653138f1b91a953fd947b940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 16:33:13 +0100 Subject: [PATCH 228/550] use pipe for Omits in Kind Types --- .../libs/extensions-registry/header-app.models.ts | 2 +- .../libs/extensions-registry/menu-item.models.ts | 2 +- .../libs/extensions-registry/section-sidebar-app.models.ts | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts index bf3eff5244..8c81ae7b89 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts @@ -12,7 +12,7 @@ export interface MetaHeaderApp { icon: string; } -export interface ManifestHeaderAppButtonKind extends Omit { +export interface ManifestHeaderAppButtonKind extends Omit { type: 'headerApp'; kind: 'button'; meta: MetaHeaderAppButtonKind; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts index 5278692f0d..eb8b1beb64 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts @@ -16,7 +16,7 @@ export interface ConditionsMenuItem { menus: Array; } -export interface ManifestMenuItemTreeKind extends Omit, 'meta'> { +export interface ManifestMenuItemTreeKind extends Omit { type: 'menuItem'; kind: 'tree'; meta: MetaMenuItemTreeKind; 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 fc8d868f6e..bd47820a2f 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 @@ -3,13 +3,14 @@ import type { ManifestElement } from './models'; export interface ManifestSectionSidebarApp extends ManifestElement { type: 'sectionSidebarApp'; conditions: ConditionsSectionSidebarApp; + meta?: unknown; } export interface ConditionsSectionSidebarApp { sections: Array; } -export interface ManifestSectionSidebarAppMenuKind extends Omit, 'meta'> { +export interface ManifestSectionSidebarAppMenuKind extends Omit { type: 'sectionSidebarApp'; kind: 'menu'; meta: MetaSectionSidebarAppMenuKind; From d51bf80b27682a4d4b7dc7283f91430d5af2d9b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 19:56:07 +0100 Subject: [PATCH 229/550] remove ManifestCustom --- .../libs/extensions-registry/models.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 067a4022a5..0232ed944e 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -55,7 +55,6 @@ export * from './modal.models'; export type ManifestTypes = | ManifestCollectionView - | ManifestCustom | ManifestDashboard | ManifestDashboardCollection | ManifestEntityAction @@ -101,7 +100,7 @@ export type SpecificManifestTypeOrManifestBase Date: Mon, 20 Mar 2023 19:56:33 +0100 Subject: [PATCH 230/550] not optional umbExtensionsRegistry --- .../src/backoffice/shared/components/section/section.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bcbf50aa21..7443d3276d 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 @@ -78,7 +78,7 @@ export class UmbSectionElement extends UmbLitElement { #observeSectionSidebarApps() { this.observe( umbExtensionsRegistry - ?.extensionsOfType('sectionSidebarApp') + .extensionsOfType('sectionSidebarApp') .pipe( map((manifests) => manifests.filter((manifest) => manifest.conditions.sections.includes(this.manifest?.alias || '')) From af99ef92a04c8d6823526506d62e6b61c3027371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 20 Mar 2023 19:57:56 +0100 Subject: [PATCH 231/550] Kinds cannot Omit --- .../libs/extensions-registry/header-app.models.ts | 3 +-- .../libs/extensions-registry/menu-item.models.ts | 2 +- .../libs/extensions-registry/section-sidebar-app.models.ts | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts index 8c81ae7b89..4834a8d9bf 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/header-app.models.ts @@ -3,7 +3,6 @@ import type { ManifestElement } from './models'; export interface ManifestHeaderApp extends ManifestElement { type: 'headerApp'; //meta: MetaHeaderApp; - meta?: unknown; } export interface MetaHeaderApp { @@ -12,7 +11,7 @@ export interface MetaHeaderApp { icon: string; } -export interface ManifestHeaderAppButtonKind extends Omit { +export interface ManifestHeaderAppButtonKind extends ManifestHeaderApp { type: 'headerApp'; kind: 'button'; meta: MetaHeaderAppButtonKind; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts index eb8b1beb64..e27223bbf8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/menu-item.models.ts @@ -16,7 +16,7 @@ export interface ConditionsMenuItem { menus: Array; } -export interface ManifestMenuItemTreeKind extends Omit { +export interface ManifestMenuItemTreeKind extends ManifestMenuItem { type: 'menuItem'; kind: 'tree'; meta: MetaMenuItemTreeKind; 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 bd47820a2f..c769ded62b 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 @@ -3,14 +3,13 @@ import type { ManifestElement } from './models'; export interface ManifestSectionSidebarApp extends ManifestElement { type: 'sectionSidebarApp'; conditions: ConditionsSectionSidebarApp; - meta?: unknown; } export interface ConditionsSectionSidebarApp { sections: Array; } -export interface ManifestSectionSidebarAppMenuKind extends Omit { +export interface ManifestSectionSidebarAppMenuKind extends ManifestSectionSidebarApp { type: 'sectionSidebarApp'; kind: 'menu'; meta: MetaSectionSidebarAppMenuKind; From 35c5dd75da40b26875f5cb65dd9ef723dbb8e45d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 21 Mar 2023 09:05:34 +0100 Subject: [PATCH 232/550] camel case functions --- .../registry/extension.registry.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 7376ca0652..bdaca236c5 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -8,7 +8,7 @@ import type { } from '../../models'; import { UmbContextToken } from '@umbraco-cms/context-api'; -function ExtensionArrayMemoization( +function extensionArrayMemoization( previousValue: Array, currentValue: Array ): boolean { @@ -23,7 +23,7 @@ function ExtensionArrayMemoization( return false; } -function ExtensionSingleMemoization( +function extensionSingleMemoization( previousValue: T | undefined, currentValue: T | undefined ): boolean { @@ -96,25 +96,25 @@ export class UmbExtensionRegistry { private _kindsOfType(type: Key) { return this.kinds.pipe( map((kinds) => kinds.filter((kind) => kind.matchType === type)), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ); } private _extensionsOfType(type: Key) { return this.extensions.pipe( map((exts) => exts.filter((ext) => ext.type === type)), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ); } private _kindsOfTypes(types: string[]) { return this.kinds.pipe( map((kinds) => kinds.filter((kind) => types.indexOf(kind.matchType) !== -1)), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ); } private _extensionsOfTypes(types: string[]): Observable> { return this.extensions.pipe( map((exts) => exts.filter((ext) => types.indexOf(ext.type) !== -1)), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ) as Observable>; } @@ -140,7 +140,7 @@ export class UmbExtensionRegistry { } return ext; }), - distinctUntilChanged(ExtensionSingleMemoization) + distinctUntilChanged(extensionSingleMemoization) ) as Observable; } @@ -166,7 +166,7 @@ export class UmbExtensionRegistry { }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ) as Observable>; } @@ -193,7 +193,7 @@ export class UmbExtensionRegistry { }) .sort((a, b) => (b.weight || 0) - (a.weight || 0)) ), - distinctUntilChanged(ExtensionArrayMemoization) + distinctUntilChanged(extensionArrayMemoization) ) as Observable>; } } From 956d2c20407d4000e4f6816cb57f1226f14fdc3e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 21 Mar 2023 09:10:10 +0100 Subject: [PATCH 233/550] add function for extension sorting --- .../libs/extensions-api/registry/extension.registry.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index bdaca236c5..b708ab606f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -33,6 +33,8 @@ function extensionSingleMemoization( return previousValue !== currentValue; } +const sortExtensions = (a: ManifestBase, b: ManifestBase) => (b.weight || 0) - (a.weight || 0); + export class UmbExtensionRegistry { // TODO: Use UniqueBehaviorSubject, as we don't want someone to edit data of extensions. private _extensions = new BehaviorSubject>([]); @@ -164,7 +166,7 @@ export class UmbExtensionRegistry { } return ext; }) - .sort((a, b) => (b.weight || 0) - (a.weight || 0)) + .sort(sortExtensions) ), distinctUntilChanged(extensionArrayMemoization) ) as Observable>; @@ -191,7 +193,7 @@ export class UmbExtensionRegistry { } return ext; }) - .sort((a, b) => (b.weight || 0) - (a.weight || 0)) + .sort(sortExtensions) ), distinctUntilChanged(extensionArrayMemoization) ) as Observable>; From 796533ff11e4abde8b8c465fea520525dfffb080 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 21 Mar 2023 11:41:06 +0100 Subject: [PATCH 234/550] Refactor libs into @umbraco-cms/backoffice/* (#608) * merge libs rollup configs to one rollup * move css from libs to src/core * run rollup on cms build * move test-utils to /utils folder * move css to src/core * mark @umbraco-cms/backoffice as external when building for CMS * rename all models to include @umbraco-cms/backoffice in their path to allow us to publish as a single module * rename all imports to @umbraco-cms/backoffice/* * rename events to umb-events to avoid rollup error of protected module name(?) * test that libs can build * move css to src/core * move umb-lit-element and modal elements to src/core * move some modal interfaces back to libs/modal * move the icon store into src/core since it is very localized to the backoffice * comment out build:libs for now since Github runs out of memory * rename to match tsconfig alias * add package.json to libs * only make libs for lib folders * turn off emit for typescript since we are handling types for libs separately * build libs locally * add script to move libs to final destination with some transform * move libs after build * move package.json to dist folder first (so we can publish from there) * remove inline comments * ensure the outputDir exists * Remove re-export of extensions-registry library from models library * move to individual files to avoid circular imports * check if outputDir exists before trying to create it * write transforms first in dist file and then copy the file to outputDir * ensure all umbraco types are external * copy information from main package.json file --- .../.github/workflows/build_test.yml | 1 + .../.storybook/preview.js | 4 +- .../src/external-login-providers/manifests.ts | 2 +- .../apps/auth/src/index.ts | 6 +-- .../apps/auth/src/login.test.ts | 2 +- .../e2e/installer.spec.ts | 4 +- .../e2e/upgrader.spec.ts | 4 +- .../libs/backend-api/rollup.config.js | 4 -- .../consume/context-consumer.controller.ts | 2 +- .../context-provider.controller.test.ts | 2 +- .../provide/context-provider.controller.ts | 2 +- .../libs/context-api/rollup.config.js | 4 -- .../libs/controller/controller-host.mixin.ts | 2 +- .../libs/controller/controller.test.ts | 2 +- .../libs/controller/rollup.config.js | 3 -- .../libs/element/element.mixin.ts | 8 +-- .../libs/element/index.module.ts | 1 - .../libs/element/index.ts | 1 - .../libs/element/rollup.config.js | 6 --- .../libs/entity-action/action.ts | 6 +-- .../entity-action/actions/copy/copy.action.ts | 4 +- .../actions/delete/delete.action.ts | 8 +-- .../entity-action/actions/move/move.action.ts | 4 +- .../sort-children-of.action.ts | 4 +- .../actions/trash/trash.action.ts | 8 +-- .../libs/entity-action/entity-action.ts | 2 +- .../libs/entity-action/entity-bulk-action.ts | 2 +- .../libs/entity-action/rollup.config.js | 3 -- .../libs/events/rollup.config.js | 3 -- .../create-extension-class.function.ts | 19 +++++-- .../create-extension-element.function.ts | 14 +++-- ...s-manifest-class-instance-type.function.ts | 6 +-- .../is-manifest-classable-type.function.ts | 2 +- .../is-manifest-element-name-type.function.ts | 6 +-- .../is-manifest-elementable-type.function.ts | 2 +- .../is-manifest-js-type.function.ts | 2 +- .../is-manifest-loader-type.function.ts | 2 +- .../extensions-api/load-extension.function.ts | 2 +- .../registry/extension.registry.test.ts | 2 +- .../registry/extension.registry.ts | 4 +- .../libs/extensions-api/rollup.config.js | 3 -- .../extensions-api/umb-lifecycle.interface.ts | 2 +- .../entry-point-extension-initializer.ts | 4 +- .../libs/extensions-registry/models.ts | 2 +- .../libs/extensions-registry/rollup.config.js | 3 -- .../libs/extensions-registry/store.models.ts | 2 +- .../libs/extensions-registry/tree.models.ts | 2 +- .../workspace-action.models.ts | 4 +- src/Umbraco.Web.UI.Client/libs/modal/index.ts | 3 +- .../libs/modal/modal-handler.ts | 8 +-- .../libs/modal/modal.context.ts | 4 +- .../libs/modal/modal.interfaces.ts | 9 ++++ .../libs/models/index.ts | 8 ++- .../libs/models/rollup.config.js | 3 -- .../libs/notification/notification.context.ts | 2 +- .../libs/notification/rollup.config.js | 3 -- .../create-observable-part.function.ts | 4 +- .../libs/observable-api/deep-state.ts | 17 ++----- .../observable-api/default-memoization.ts | 8 +++ .../libs/observable-api/mapping-function.ts | 1 + .../observable-api/memoization-function.ts | 1 + .../observable-api/naive-object-comparison.ts | 3 ++ .../observable-api/observer.controller.ts | 2 +- .../libs/observable-api/rollup.config.js | 3 -- src/Umbraco.Web.UI.Client/libs/package.json | 23 +++++++++ .../libs/property-editor/index.ts | 2 +- .../libs/property-editor/rollup.config.js | 3 -- .../repository/detail-repository.interface.ts | 2 +- ...repository-detail-data-source.interface.ts | 2 +- .../repository-tree-data-source.interface.ts | 4 +- .../libs/repository/rollup.config.js | 3 -- .../repository/tree-repository.interface.ts | 2 +- .../libs/resources/resource.controller.ts | 23 +++++---- .../libs/resources/rollup.config.js | 4 -- .../resources/tryExecuteAndNotify.function.ts | 4 +- src/Umbraco.Web.UI.Client/libs/store/index.ts | 1 - .../libs/store/rollup.config.js | 3 -- .../libs/store/store-base.ts | 4 +- .../libs/store/tree-store-base.ts | 6 +-- .../libs/test-utils/index.ts | 1 - .../{events => umb-events}/change.event.ts | 0 .../{events => umb-events}/delete.event.ts | 0 .../{events => umb-events}/executed.event.ts | 0 .../libs/{events => umb-events}/index.ts | 0 .../{events => umb-events}/input.event.ts | 0 .../libs/utils/rollup.config.js | 4 -- .../libs/utils/utils.test.ts | 2 +- src/Umbraco.Web.UI.Client/libs/utils/utils.ts | 2 +- .../workspace/actions/save/save.action.ts | 2 +- .../actions/workspace-action-base.ts | 4 +- .../libs/workspace/rollup.config.js | 4 -- src/Umbraco.Web.UI.Client/package.json | 3 +- .../rollup-libs.config.js | 33 ++++++++++++ src/Umbraco.Web.UI.Client/src/app.ts | 15 +++--- .../src/backoffice/backoffice.element.ts | 10 ++-- .../documents/dashboards/manifests.ts | 2 +- .../dashboard-redirect-management.element.ts | 8 +-- .../dashboard-redirect-management.test.ts | 2 +- .../document-blueprint.detail.store.ts | 10 ++-- .../document-blueprint.tree.store.ts | 6 +-- .../document-blueprints/manifests.ts | 2 +- .../menu-item/manifests.ts | 2 +- .../workspace/manifests.ts | 6 ++- .../document-types/menu-item/manifests.ts | 2 +- .../allowed-document-types-modal.element.ts | 4 +- .../modals/allowed-document-types/index.ts | 2 +- .../document-types/modals/manifests.ts | 2 +- .../repository/document-type.repository.ts | 10 ++-- .../repository/document-type.store.ts | 10 ++-- .../repository/document-type.tree.store.ts | 6 +-- .../document-types/repository/manifests.ts | 2 +- .../sources/document-type.server.data.ts | 8 +-- .../sources/document-type.tree.server.data.ts | 6 +-- .../document-types/tree/manifests.ts | 2 +- .../document-type-workspace-edit.element.ts | 6 +-- .../document-type-workspace.context.ts | 6 +-- .../document-type-workspace.element.ts | 4 +- .../document-types/workspace/manifests.ts | 8 ++- ...space-view-document-type-design.element.ts | 4 +- .../documents/collection/manifests.ts | 2 +- ...ent-table-actions-column-layout.element.ts | 2 +- .../document-table-collection-view.element.ts | 4 +- .../entity-actions/create-blueprint.action.ts | 4 +- .../entity-actions/create/create.action.ts | 8 +-- .../culture-and-hostnames.action.ts | 4 +- .../documents/entity-actions/manifests.ts | 4 +- .../entity-actions/permissions.action.ts | 4 +- .../entity-actions/public-access.action.ts | 4 +- .../entity-actions/publish.action.ts | 4 +- .../entity-actions/rollback.action.ts | 4 +- .../entity-actions/unpublish.action.ts | 4 +- .../entity-bulk-actions/copy/copy.action.ts | 4 +- .../entity-bulk-actions/manifests.ts | 2 +- .../entity-bulk-actions/move/move.action.ts | 4 +- .../document-picker-modal.element.ts | 2 +- .../documents/modals/document-picker/index.ts | 2 +- .../documents/documents/modals/manifests.ts | 2 +- .../repository/document.repository.ts | 10 ++-- .../documents/repository/document.store.ts | 10 ++-- .../repository/document.tree.store.ts | 6 +-- .../documents/repository/manifests.ts | 2 +- .../sources/document.server.data.ts | 8 +-- .../sources/document.tree.server.data.ts | 6 +-- .../documents/repository/sources/index.ts | 6 +-- .../document-sidebar-menu-item.element.ts | 2 +- .../documents/sidebar-menu-item/manifests.ts | 2 +- .../documents/documents/tree/manifests.ts | 2 +- .../actions/save-and-preview.action.ts | 4 +- .../actions/save-and-publish.action.ts | 4 +- .../actions/save-and-schedule.action.ts | 4 +- .../document-workspace-edit.element.ts | 6 +-- .../document-workspace-split-view.element.ts | 2 +- .../workspace/document-workspace.context.ts | 6 +-- .../workspace/document-workspace.element.ts | 2 +- .../workspace/document-workspace.test.ts | 2 +- .../documents/workspace/manifests.ts | 4 +- ...-workspace-view-edit-properties.element.ts | 4 +- ...ocument-workspace-view-edit-tab.element.ts | 4 +- .../document-workspace-view-edit.element.ts | 6 +-- .../src/backoffice/documents/index.ts | 4 +- .../backoffice/documents/menu.manifests.ts | 2 +- .../backoffice/documents/section.manifests.ts | 4 +- .../src/backoffice/media/index.ts | 4 +- .../entity-actions/create.action.ts | 4 +- .../media-types/entity-actions/manifests.ts | 4 +- .../entity-actions/reload.action.ts | 4 +- .../media/media-types/menu-item/manifests.ts | 2 +- .../media/media-types/repository/manifests.ts | 2 +- .../repository/media-type.detail.store.ts | 10 ++-- .../repository/media-type.repository.ts | 12 ++--- .../repository/media-type.tree.store.ts | 6 +-- .../sources/media-type.detail.server.data.ts | 8 +-- ...edia-type.details.server.data.interface.ts | 2 +- .../sources/media-type.tree.server.data.ts | 8 +-- .../media/media-types/tree/manifests.ts | 2 +- .../media/media-types/workspace/manifests.ts | 2 +- .../media-type-workspace-edit.element.ts | 2 +- .../workspace/media-type-workspace.context.ts | 6 +-- .../workspace/media-type-workspace.element.ts | 4 +- .../media/media/entity-actions/manifests.ts | 2 +- .../entity-bulk-actions/copy/copy.action.ts | 4 +- .../media/entity-bulk-actions/manifests.ts | 2 +- .../entity-bulk-actions/move/move.action.ts | 8 +-- .../entity-bulk-actions/trash/trash.action.ts | 8 +-- .../media/media/menu-item/manifests.ts | 2 +- .../menu-item/media-menu-item.element.ts | 2 +- .../media/media/modals/manifests.ts | 2 +- .../media/media/modals/media-picker/index.ts | 2 +- .../media-picker-modal.element.ts | 2 +- .../media/media/repository/manifests.ts | 2 +- .../media/repository/media.repository.ts | 14 ++--- .../media/media/repository/media.store.ts | 10 ++-- .../media/repository/media.tree.store.ts | 10 ++-- .../sources/media.detail.server.data.ts | 10 ++-- .../sources/media.tree.server.data.ts | 6 +-- .../backoffice/media/media/tree/manifests.ts | 2 +- .../media/media/workspace/manifests.ts | 4 +- .../workspace/media-workspace-edit.element.ts | 2 +- .../workspace/media-workspace.context.ts | 6 +-- .../workspace/media-workspace.element.ts | 4 +- .../src/backoffice/media/menu.manifests.ts | 2 +- .../src/backoffice/media/section.manifests.ts | 6 ++- .../src/backoffice/members/index.ts | 4 +- .../member-groups/entity-actions/manifests.ts | 2 +- .../member-groups/menu-item/manifests.ts | 2 +- .../member-groups/repository/manifests.ts | 2 +- .../repository/member-group.repository.ts | 16 +++--- .../repository/member-group.store.ts | 10 ++-- .../repository/member-group.tree.store.ts | 6 +-- .../member-group.detail.server.data.ts | 10 ++-- .../sources/member-group.tree.server.data.ts | 8 +-- .../members/member-groups/tree/manifests.ts | 2 +- .../member-groups/workspace/manifests.ts | 8 ++- .../member-group-workspace-edit.element.ts | 2 +- .../member-group-workspace.context.ts | 6 +-- .../member-group-workspace.element.ts | 2 +- ...orkspace-view-member-group-info.element.ts | 4 +- .../member-types/entity-actions/manifests.ts | 4 +- .../member-types/menu-item/manifests.ts | 2 +- .../member-types/repository/manifests.ts | 2 +- .../repository/member-type.repository.ts | 12 ++--- .../repository/member-type.store.ts | 10 ++-- .../repository/member-type.tree.store.ts | 6 +-- .../sources/member-type.detail.server.data.ts | 10 ++-- .../sources/member-type.tree.server.data.ts | 8 +-- .../members/member-types/tree/manifests.ts | 2 +- .../member-types/workspace/manifests.ts | 6 ++- .../member-type-workspace-edit.element.ts | 2 +- .../member-type-workspace.context.ts | 4 +- .../member-type-workspace.element.ts | 2 +- .../members/entity-actions/manifests.ts | 2 +- .../members/members/member.detail.store.ts | 10 ++-- .../members/members/menu-item/manifests.ts | 2 +- .../members/members/repository/manifests.ts | 2 +- .../members/repository/member.repository.ts | 10 ++-- .../members/repository/member.store.ts | 10 ++-- .../members/repository/member.tree.store.ts | 6 +-- .../members/repository/sources/index.ts | 7 ++- .../sources/member.tree.server.data.ts | 2 +- .../members/members/tree/manifests.ts | 2 +- .../members/members/workspace/manifests.ts | 6 ++- .../workspace/member-workspace.context.ts | 4 +- .../workspace/member-workspace.element.ts | 2 +- .../src/backoffice/members/menu.manifests.ts | 2 +- .../backoffice/members/section.manifests.ts | 2 +- .../src/backoffice/packages/index.ts | 4 +- .../packages/package-builder/manifests.ts | 2 +- .../workspace-package-builder.element.ts | 8 +-- .../packages/package-repo/manifests.ts | 2 +- .../packages/package-section/manifests.ts | 2 +- .../created-packages-section-view.element.ts | 8 +-- .../packages-created-overview.element.ts | 8 +-- ...lled-packages-section-view-item.element.ts | 18 +++---- ...installed-packages-section-view.element.ts | 4 +- .../packages/repository/manifests.ts | 2 +- .../packages/repository/package.repository.ts | 10 ++-- .../packages/repository/package.store.ts | 13 ++--- .../repository/server-extension.controller.ts | 4 +- .../repository/sources/package.server.data.ts | 6 +-- .../src/backoffice/search/index.ts | 4 +- .../src/backoffice/search/manifests.ts | 2 +- .../src/backoffice/search/modals/manifests.ts | 2 +- .../backoffice/search/modals/search/index.ts | 2 +- .../search/umb-search-header-app.element.ts | 4 +- .../cultures/repository/culture.repository.ts | 6 +-- .../repository/sources/culture.server.data.ts | 6 +-- .../cultures/repository/sources/index.ts | 4 +- .../dashboard-examine-management.element.ts | 4 +- .../modal-views/fields-settings.element.ts | 2 +- .../modal-views/fields-viewer.element.ts | 4 +- .../views/modal-views/index.ts | 2 +- .../views/section-view-examine-indexers.ts | 8 +-- .../views/section-view-examine-overview.ts | 6 +-- .../views/section-view-examine-searchers.ts | 8 +-- .../dashboard-health-check.element.ts | 12 ++--- .../health-check-dashboard.context.ts | 4 +- .../health-check/health-check.context.ts | 8 +-- .../views/health-check-action.element.ts | 6 +-- ...health-check-group-box-overview.element.ts | 8 +-- .../views/health-check-group.element.ts | 6 +-- .../views/health-check-overview.element.ts | 6 +-- .../settings/dashboards/manifests.ts | 2 +- .../dashboard-models-builder.element.ts | 6 +-- ...dashboard-performance-profiling.element.ts | 6 +-- .../dashboard-published-status.element.ts | 8 +-- .../dashboard-published-status.test.ts | 2 +- .../dashboard-settings-welcome.test.ts | 2 +- .../telemetry/dashboard-telemetry.element.ts | 6 +-- .../telemetry/dashboard-telemetry.test.ts | 2 +- .../data-types/menu-item/manifests.ts | 2 +- .../repository/data-type.repository.ts | 10 ++-- .../data-types/repository/data-type.store.ts | 10 ++-- .../repository/data-type.tree.store.ts | 6 +-- .../data-types/repository/manifests.ts | 2 +- .../sources/data-type.server.data.ts | 8 +-- .../sources/data-type.tree.server.data.ts | 6 +-- .../settings/data-types/tree/manifests.ts | 2 +- .../data-type-workspace-edit.element.ts | 6 +-- .../workspace/data-type-workspace.context.ts | 6 +-- .../workspace/data-type-workspace.element.ts | 4 +- .../data-types/workspace/manifests.ts | 8 ++- ...ata-type-details-workspace-view.element.ts | 8 +-- .../workspace-view-data-type-info.element.ts | 4 +- .../extensions/menu-item/manifests.ts | 2 +- .../extension-root-workspace.element.ts | 8 +-- .../extensions/workspace/manifests.ts | 6 ++- .../src/backoffice/settings/index.ts | 4 +- .../app-language-select.element.ts | 4 +- .../app-language.context.ts | 8 +-- .../app-language-select/manifests.ts | 2 +- .../languages/entity-actions/manifests.ts | 4 +- .../settings/languages/menu-item/manifests.ts | 2 +- .../languages/modals/language-picker/index.ts | 4 +- .../language-picker-modal.element.ts | 4 +- .../settings/languages/modals/manifests.ts | 2 +- .../repository/language.repository.ts | 8 +-- .../languages/repository/language.store.ts | 10 ++-- .../languages/repository/manifests.ts | 2 +- .../languages/repository/sources/index.ts | 6 +-- .../sources/language.server.data.ts | 6 +-- ...root-table-delete-column-layout.element.ts | 4 +- .../language-root-workspace.element.ts | 4 +- .../workspace/language-root/manifests.ts | 6 ++- .../language-workspace-edit.element.ts | 4 +- .../language/language-workspace.context.ts | 6 +-- .../language/language-workspace.element.ts | 4 +- .../languages/workspace/language/manifests.ts | 8 ++- ...language-details-workspace-view.element.ts | 6 +-- .../settings/logviewer/menu-item/manifests.ts | 2 +- .../repository/log-viewer.repository.ts | 8 +-- .../logviewer/repository/sources/index.ts | 16 +++--- .../sources/log-viewer.server.data.ts | 8 +-- .../log-viewer-date-range-selector.element.ts | 2 +- .../log-viewer-level-tag.element.ts | 2 +- .../logviewer-root-workspace.element.ts | 10 ++-- .../workspace/logviewer-root/manifests.ts | 6 ++- .../logviewer/workspace/logviewer.context.ts | 8 +-- .../log-viewer-log-level-overview.element.ts | 4 +- .../log-viewer-log-types-chart.element.ts | 4 +- ...ewer-message-templates-overview.element.ts | 4 +- ...-viewer-saved-searches-overview.element.ts | 4 +- .../overview/log-overview-view.element.ts | 4 +- ...og-viewer-log-level-filter-menu.element.ts | 4 +- .../components/log-viewer-message.element.ts | 4 +- .../log-viewer-messages-list.element.ts | 4 +- .../log-viewer-polling-button.element.ts | 2 +- .../log-viewer-search-input.element.ts | 4 +- .../views/search/log-search-view.element.ts | 2 +- .../src/backoffice/settings/menu.manifests.ts | 2 +- .../relation-types/menu-item/manifests.ts | 2 +- .../relation-types-menu-item.element.ts | 2 +- .../relation-types/repository/manifests.ts | 2 +- .../repository/relation-type.repository.ts | 10 ++-- .../repository/relation-type.store.ts | 10 ++-- .../repository/relation-type.tree.store.ts | 6 +-- .../repository/sources/index.ts | 4 +- .../sources/relation-type.server.data.ts | 8 +-- .../sources/relation-type.tree.server.data.ts | 6 +-- .../settings/relation-types/tree/manifests.ts | 2 +- .../relation-types/workspace/manifests.ts | 8 ++- .../relation-type-workspace-edit.element.ts | 4 +- .../relation-type-workspace.context.ts | 6 +-- .../relation-type-workspace.element.ts | 4 +- ...pe-workspace-view-relation-type.element.ts | 4 +- ...ace-view-relation-type-relation.element.ts | 4 +- .../backoffice/settings/section.manifests.ts | 4 +- .../collection-selection-actions.element.ts | 9 ++-- .../collection/collection-toolbar.element.ts | 6 +-- .../shared/collection/collection.context.ts | 14 ++--- .../shared/collection/collection.element.ts | 9 ++-- .../dashboard-collection.element.ts | 6 +-- .../collection-view-media-grid.element.ts | 4 +- .../collection-view-media-table.element.ts | 6 +-- .../shared/collection/views/manifests.ts | 2 +- .../backoffice-header-sections.element.ts | 7 ++- .../backoffice-main.element.ts | 8 +-- .../backoffice-modal-container.element.ts | 4 +- ...ckoffice-notification-container.element.ts | 4 +- .../backoffice-frame/backoffice.context.ts | 6 +-- .../shared/components/debug/debug.element.ts | 6 +-- .../shared/components/debug/manifests.ts | 2 +- .../debug/modals/debug/debug-modal.element.ts | 2 +- .../components/debug/modals/debug/index.ts | 2 +- .../components/dropdown/dropdown.element.ts | 2 +- .../entity-action-list.element.ts | 4 +- .../entity-action/entity-action.element.ts | 6 +-- .../entity-bulk-action.element.ts | 8 +-- .../extension-slot/extension-slot.element.ts | 4 +- .../extension-slot/extension-slot.test.ts | 6 +-- .../header-app/header-app-button.element.ts | 4 +- .../history/history-item.element.ts | 2 +- .../history/history-list.element.ts | 2 +- .../input-checkbox-list.element.ts | 2 +- .../input-color-picker.element.ts | 6 +-- .../input-color-picker.test.ts | 2 +- .../input-culture-select.element.ts | 6 +-- .../input-document-picker.element.ts | 8 +-- .../input-document-picker.test.ts | 2 +- .../input-eye-dropper.element.ts | 2 +- .../input-eye-dropper.test.ts | 2 +- .../input-language-picker.element.ts | 10 ++-- .../input-list-base/input-list-base.ts | 4 +- .../input-media-picker.element.ts | 8 +-- .../input-media-picker.test.ts | 2 +- .../input-multi-url-picker.element.ts | 4 +- .../input-number-range.element.ts | 2 +- .../input-number-range.test.ts | 2 +- .../input-radio-button-list.element.ts | 2 +- .../input-section/input-section.element.ts | 4 +- .../input-section/input-section.test.ts | 2 +- .../input-slider/input-slider.element.ts | 2 +- .../input-toggle/input-toggle.element.ts | 2 +- .../input-user-group.element.ts | 2 +- .../input-user-group/input-user-group.test.ts | 2 +- .../input-user/input-user.element.ts | 2 +- .../components/input-user/input-user.test.ts | 2 +- .../components/menu-item/menu-item.element.ts | 4 +- .../shared/components/menu/menu.element.ts | 4 +- .../property-type-based-property.element.ts | 6 +-- .../section-sidebar-context-menu.element.ts | 2 +- .../section-sidebar-menu.element.ts | 10 ++-- .../section-sidebar.context.ts | 6 +-- .../section-sidebar.element.ts | 2 +- .../section-views/section-views.element.ts | 10 ++-- .../components/section/section.context.ts | 7 +-- .../components/section/section.element.ts | 8 +-- .../tree-context-menu-page.service.ts | 6 +-- .../context-menu/tree-context-menu.service.ts | 4 +- .../components/tree/tree-item.element.ts | 8 +-- .../tree-menu-item/tree-menu-item.element.ts | 6 +-- .../shared/components/tree/tree.context.ts | 8 +-- .../shared/components/tree/tree.element.ts | 7 +-- .../variant-selector.element.ts | 6 +-- .../variantable-property.element.ts | 4 +- .../workspace-property.context.ts | 8 +-- .../workspace-property.element.ts | 12 ++--- .../workspace-action-menu.element.ts | 4 +- .../workspace-action.element.ts | 8 +-- .../workspace-view-collection.element.ts | 6 +-- .../workspace-view-content-edit.element.ts | 4 +- .../workspace-view-content-info.element.ts | 4 +- .../workspace-content.element.ts | 2 +- .../entity-manager-controller.ts | 12 ++--- .../workspace-context.interface.ts | 2 +- .../workspace-context/workspace-context.ts | 6 +-- ...-invariantable-entity-context.interface.ts | 2 +- ...kspace-property-structure-manager.class.ts | 6 +-- .../workspace-split-view-manager.class.ts | 4 +- ...space-variable-entity-context.interface.ts | 2 +- .../workspace-footer-layout.element.ts | 4 +- .../workspace-layout.element.ts | 11 ++-- .../workspace-variant.context.ts | 8 +-- .../workspace-variant.element.ts | 2 +- .../components/workspace/workspace.element.ts | 4 +- .../src/backoffice/shared/index.ts | 4 +- .../modals/confirm/confirm-modal.element.ts | 4 +- .../backoffice/shared/modals/confirm/index.ts | 2 +- .../icon-picker/icon-picker-modal.element.ts | 2 +- .../icon-picker/icon-picker-modal.test.ts | 2 +- .../shared/modals/icon-picker/index.ts | 2 +- .../shared/modals/link-picker/index.ts | 2 +- .../link-picker/link-picker-modal.element.ts | 4 +- .../src/backoffice/shared/modals/manifests.ts | 2 +- .../shared/modals/property-settings/index.ts | 2 +- .../property-settings-modal.element.ts | 7 +-- .../shared/modals/section-picker/index.ts | 2 +- .../section-picker-modal.element.ts | 6 +-- .../section-picker/section-picker.test.ts | 2 +- .../clear/property-action-clear.element.ts | 2 +- .../copy/property-action-copy.element.ts | 4 +- .../shared/property-actions/manifests.ts | 2 +- .../property-action-menu.context.ts | 6 +-- .../property-action-menu.element.ts | 8 +-- .../property-action.element.ts | 4 +- .../property-creator.element.ts | 4 +- .../property-editors/modals/manifests.ts | 2 +- .../modals/property-editor-ui-picker/index.ts | 2 +- ...property-editor-ui-picker-modal.element.ts | 8 +-- .../models/Umbraco.BlockGrid.ts | 2 +- .../models/Umbraco.BlockList.ts | 2 +- .../models/Umbraco.CheckboxList.ts | 2 +- .../models/Umbraco.ColorPicker.EyeDropper.ts | 2 +- .../models/Umbraco.ColorPicker.ts | 2 +- .../models/Umbraco.ContentPicker.ts | 2 +- .../models/Umbraco.DateTime.ts | 2 +- .../models/Umbraco.Decimal.ts | 2 +- .../models/Umbraco.Dropdown.Flexible.ts | 2 +- .../models/Umbraco.EmailAddress.ts | 2 +- .../models/Umbraco.ImageCropper.ts | 2 +- .../models/Umbraco.Integer.ts | 2 +- .../property-editors/models/Umbraco.JSON.ts | 2 +- .../property-editors/models/Umbraco.Label.ts | 2 +- .../models/Umbraco.ListView.ts | 2 +- .../models/Umbraco.MarkdownEditor.ts | 2 +- .../models/Umbraco.MediaPicker3.ts | 2 +- .../models/Umbraco.MemberGroupPicker.ts | 2 +- .../models/Umbraco.MemberPicker.ts | 2 +- .../models/Umbraco.MultiNodeTreePicker.ts | 2 +- .../models/Umbraco.MultiUrlPicker.ts | 2 +- .../models/Umbraco.MultipleTextString.ts | 2 +- .../models/Umbraco.RadioButtonList.ts | 2 +- .../property-editors/models/Umbraco.Slider.ts | 2 +- .../property-editors/models/Umbraco.Tags.ts | 2 +- .../models/Umbraco.TextArea.ts | 2 +- .../models/Umbraco.TextBox.ts | 2 +- .../models/Umbraco.TinyMCE.ts | 2 +- .../models/Umbraco.TrueFalse.ts | 2 +- .../models/Umbraco.UploadField.ts | 2 +- .../models/Umbraco.UserPicker.ts | 2 +- .../property-editors/models/manifests.ts | 2 +- .../property-editor-config.element.ts | 9 ++-- .../config/block-configuration/manifests.ts | 2 +- ...-block-grid-block-configuration.element.ts | 2 +- ...-ui-block-grid-block-configuration.test.ts | 2 +- .../config/group-configuration/manifests.ts | 2 +- ...-block-grid-group-configuration.element.ts | 2 +- ...-ui-block-grid-group-configuration.test.ts | 2 +- .../config/stylesheet-picker/manifests.ts | 2 +- ...ui-block-grid-stylesheet-picker.element.ts | 2 +- ...or-ui-block-grid-stylesheet-picker.test.ts | 2 +- .../uis/block-grid/manifests.ts | 2 +- ...editor-ui-block-grid-inner-test.element.ts | 4 +- .../property-editor-ui-block-grid.element.ts | 6 +-- .../property-editor-ui-block-grid.test.ts | 2 +- .../config/block-configuration/manifests.ts | 2 +- ...-block-list-block-configuration.element.ts | 2 +- ...-ui-block-list-block-configuration.test.ts | 2 +- .../uis/block-list/manifests.ts | 2 +- .../property-editor-ui-block-list.element.ts | 4 +- .../property-editor-ui-block-list.test.ts | 2 +- .../uis/checkbox-list/manifests.ts | 2 +- ...roperty-editor-ui-checkbox-list.element.ts | 6 +-- .../property-editor-ui-checkbox-list.test.ts | 2 +- .../bulk-action-permissions/manifests.ts | 2 +- ...on-view-bulk-action-permissions.element.ts | 2 +- ...ction-view-bulk-action-permissions.test.ts | 2 +- .../config/column-configuration/manifests.ts | 2 +- ...ction-view-column-configuration.element.ts | 2 +- ...llection-view-column-configuration.test.ts | 2 +- .../config/layout-configuration/manifests.ts | 2 +- ...ction-view-layout-configuration.element.ts | 2 +- ...llection-view-layout-configuration.test.ts | 2 +- .../config/order-by/manifests.ts | 2 +- ...tor-ui-collection-view-order-by.element.ts | 2 +- ...editor-ui-collection-view-order-by.test.ts | 2 +- .../uis/collection-view/manifests.ts | 2 +- ...perty-editor-ui-collection-view.element.ts | 2 +- ...property-editor-ui-collection-view.test.ts | 2 +- .../uis/color-picker/manifests.ts | 2 +- ...property-editor-ui-color-picker.element.ts | 8 +-- .../property-editor-ui-color-picker.test.ts | 2 +- .../uis/date-picker/manifests.ts | 9 ++-- .../property-editor-ui-date-picker.element.ts | 6 +-- .../property-editor-ui-date-picker.test.ts | 2 +- .../uis/document-picker/manifests.ts | 2 +- ...perty-editor-ui-document-picker.element.ts | 6 +-- .../uis/dropdown/manifests.ts | 2 +- .../property-editor-ui-dropdown.element.ts | 4 +- .../property-editor-ui-dropdown.test.ts | 2 +- .../uis/eye-dropper/manifests.ts | 2 +- .../property-editor-ui-eye-dropper.element.ts | 6 +-- .../property-editor-ui-eye-dropper.test.ts | 2 +- .../uis/icon-picker/manifests.ts | 2 +- .../property-editor-ui-icon-picker.element.ts | 6 +-- .../property-editor-ui-icon-picker.test.ts | 2 +- .../uis/image-cropper/manifests.ts | 2 +- ...roperty-editor-ui-image-cropper.element.ts | 4 +- .../property-editor-ui-image-cropper.test.ts | 2 +- .../image-crops-configuration/manifests.ts | 2 +- ...or-ui-image-crops-configuration.element.ts | 4 +- ...ditor-ui-image-crops-configuration.test.ts | 2 +- .../property-editors/uis/label/manifests.ts | 2 +- .../label/property-editor-ui-label.element.ts | 4 +- .../label/property-editor-ui-label.test.ts | 2 +- .../shared/property-editors/uis/manifests.ts | 2 +- .../uis/markdown-editor/manifests.ts | 2 +- ...perty-editor-ui-markdown-editor.element.ts | 4 +- ...property-editor-ui-markdown-editor.test.ts | 2 +- .../uis/media-picker/manifests.ts | 2 +- ...property-editor-ui-media-picker.element.ts | 6 +-- .../property-editor-ui-media-picker.test.ts | 2 +- .../uis/member-group-picker/manifests.ts | 2 +- ...y-editor-ui-member-group-picker.element.ts | 4 +- ...erty-editor-ui-member-group-picker.test.ts | 2 +- .../uis/member-picker/manifests.ts | 2 +- ...roperty-editor-ui-member-picker.element.ts | 4 +- .../property-editor-ui-member-picker.test.ts | 2 +- .../uis/multi-url-picker/manifests.ts | 2 +- ...erty-editor-ui-multi-url-picker.element.ts | 6 +-- ...roperty-editor-ui-multi-url-picker.test.ts | 2 +- ...input-multiple-text-string-item.element.ts | 6 +-- .../input-multiple-text-string.element.ts | 4 +- .../uis/multiple-text-string/manifests.ts | 2 +- ...-editor-ui-multiple-text-string.element.ts | 6 +-- ...rty-editor-ui-multiple-text-string.test.ts | 2 +- .../uis/number-range/manifests.ts | 2 +- ...property-editor-ui-number-range.element.ts | 4 +- .../property-editor-ui-number-range.test.ts | 2 +- .../property-editors/uis/number/manifests.ts | 2 +- .../property-editor-ui-number.element.ts | 4 +- .../uis/order-direction/manifests.ts | 2 +- ...perty-editor-ui-order-direction.element.ts | 4 +- ...property-editor-ui-order-direction.test.ts | 2 +- .../uis/overlay-size/manifests.ts | 2 +- ...property-editor-ui-overlay-size.element.ts | 4 +- .../property-editor-ui-overlay-size.test.ts | 2 +- .../uis/radio-button-list/manifests.ts | 2 +- ...rty-editor-ui-radio-button-list.element.ts | 6 +-- ...operty-editor-ui-radio-button-list.test.ts | 2 +- .../property-editors/uis/slider/manifests.ts | 2 +- .../property-editor-ui-slider.element.ts | 6 +-- .../slider/property-editor-ui-slider.test.ts | 2 +- .../uis/tags/config/storage-type/manifests.ts | 2 +- ...rty-editor-ui-tags-storage-type.element.ts | 2 +- ...operty-editor-ui-tags-storage-type.test.ts | 2 +- .../property-editors/uis/tags/manifests.ts | 2 +- .../tags/property-editor-ui-tags.element.ts | 4 +- .../uis/tags/property-editor-ui-tags.test.ts | 2 +- .../uis/text-box/manifests.ts | 2 +- .../property-editor-ui-text-box.element.ts | 4 +- .../uis/textarea/manifests.ts | 2 +- .../property-editor-ui-textarea.element.ts | 4 +- .../config/configuration/manifests.ts | 2 +- ...ditor-ui-tiny-mce-configuration.element.ts | 2 +- ...y-editor-ui-tiny-mce-configuration.test.ts | 2 +- .../uis/tiny-mce/manifests.ts | 2 +- .../property-editor-ui-tiny-mce.element.ts | 4 +- .../property-editor-ui-tiny-mce.test.ts | 2 +- .../property-editors/uis/toggle/manifests.ts | 2 +- .../property-editor-ui-toggle.element.ts | 6 +-- .../toggle/property-editor-ui-toggle.test.ts | 2 +- .../config/start-node/manifests.ts | 2 +- ...ditor-ui-tree-picker-start-node.element.ts | 2 +- ...y-editor-ui-tree-picker-start-node.test.ts | 2 +- .../uis/tree-picker/manifests.ts | 2 +- .../property-editor-ui-tree-picker.element.ts | 4 +- .../property-editor-ui-tree-picker.test.ts | 2 +- .../uis/upload-field/manifests.ts | 2 +- ...property-editor-ui-upload-field.element.ts | 4 +- .../property-editor-ui-upload-field.test.ts | 2 +- .../uis/user-picker/manifests.ts | 2 +- .../property-editor-ui-user-picker.element.ts | 4 +- .../property-editor-ui-user-picker.test.ts | 2 +- .../uis/value-type/manifests.ts | 2 +- .../property-editor-ui-value-type.element.ts | 4 +- .../property-editor-ui-value-type.test.ts | 2 +- .../src/backoffice/templating/index.ts | 4 +- .../backoffice/templating/menu.manifests.ts | 2 +- .../entity-actions/create/create.action.ts | 4 +- .../templates/entity-actions/manifests.ts | 2 +- .../templates/menu-item/manifests.ts | 2 +- .../templates/repository/manifests.ts | 2 +- .../templates/repository/sources/index.ts | 7 ++- .../sources/template.detail.server.data.ts | 8 +-- .../sources/template.tree.server.data.ts | 6 +-- .../repository/template.repository.ts | 8 +-- .../templates/repository/template.store.ts | 10 ++-- .../repository/template.tree.store.ts | 6 +-- .../templating/templates/tree/manifests.ts | 2 +- .../templates/workspace/manifests.ts | 8 ++- .../workspace/template-workspace.context.ts | 6 +-- .../workspace/template-workspace.element.ts | 2 +- .../src/backoffice/themes/manifests.ts | 2 +- .../src/backoffice/themes/theme.context.ts | 10 ++-- ...ashboard-translation-dictionary.element.ts | 8 +-- .../create-dictionary-modal-layout.element.ts | 2 +- .../entity-actions/create/create.action.ts | 8 +-- .../dictionary/entity-actions/create/index.ts | 2 +- .../export-dictionary-modal-layout.element.ts | 2 +- .../entity-actions/export/export.action.ts | 8 +-- .../dictionary/entity-actions/export/index.ts | 2 +- .../import-dictionary-modal-layout.element.ts | 4 +- .../entity-actions/import/import.action.ts | 8 +-- .../dictionary/entity-actions/import/index.ts | 2 +- .../dictionary/entity-actions/manifests.ts | 4 +- .../entity-actions/reload.action.ts | 4 +- .../menu-item/dictionary-menu-item.element.ts | 2 +- .../dictionary/menu-item/manifests.ts | 2 +- .../translation/dictionary/menu.manifests.ts | 2 +- .../repository/dictionary.repository.ts | 12 ++--- .../dictionary/repository/dictionary.store.ts | 10 ++-- .../repository/dictionary.tree.store.ts | 6 +-- .../dictionary/repository/manifests.ts | 2 +- .../sources/dictionary.detail.server.data.ts | 8 +-- ...ictionary.details.server.data.interface.ts | 4 +- .../sources/dictionary.tree.server.data.ts | 8 +-- .../translation/dictionary/tree/manifests.ts | 2 +- .../dictionary-workspace-edit.element.ts | 2 +- .../workspace/dictionary-workspace.context.ts | 6 +-- .../workspace/dictionary-workspace.element.ts | 2 +- .../dictionary/workspace/manifests.ts | 8 ++- .../workspace-view-dictionary-edit.element.ts | 4 +- .../src/backoffice/translation/index.ts | 4 +- .../translation/section.manifest.ts | 2 +- .../current-user-header-app.element.ts | 6 +-- .../current-user-history.store.ts | 4 +- .../users/current-user/current-user.store.ts | 9 ++-- .../users/current-user/manifests.ts | 2 +- .../change-password-modal.element.ts | 4 +- .../modals/change-password/index.ts | 2 +- .../current-user-modal.element.ts | 6 +-- .../current-user/modals/current-user/index.ts | 2 +- .../users/current-user/modals/manifests.ts | 2 +- .../user-dashboard-themes.element.ts | 6 +-- .../src/backoffice/users/index.ts | 4 +- .../users/user-groups/modals/manifests.ts | 2 +- .../modals/user-group-picker/index.ts | 4 +- .../user-group-picker-modal.element.ts | 4 +- .../user-group-picker-modal.test.ts | 2 +- .../users/user-groups/repository/manifests.ts | 2 +- .../repository/user-group.repository.ts | 2 +- .../repository/user-group.store.ts | 21 +++----- ...orkspace-action-user-group-save.element.ts | 2 +- .../users/user-groups/workspace/manifests.ts | 6 ++- .../user-group-workspace-edit.element.ts | 4 +- .../workspace/user-group-workspace.context.ts | 4 +- .../workspace/user-group-workspace.element.ts | 10 ++-- .../workspace/user-group-workspace.test.ts | 2 +- .../users/user-section/manifests.ts | 2 +- .../user-section/section-users.element.ts | 4 +- ...up-table-sections-column-layout.element.ts | 4 +- .../workspace-view-user-groups.element.ts | 4 +- .../grid/workspace-view-users-grid.element.ts | 6 +-- .../grid/workspace-view-users-grid.test.ts | 2 +- ...user-table-status-column-layout.element.ts | 2 +- .../workspace-view-users-table.element.ts | 4 +- .../views/users/section-view-users.element.ts | 11 ++-- .../views/users/section-view-users.test.ts | 2 +- .../workspace-view-users-overview.element.ts | 6 +-- .../workspace-view-users-overview.test.ts | 2 +- .../workspace-view-users-selection.element.ts | 2 +- .../workspace-view-users-selection.test.ts | 2 +- .../create-user/create-user-modal.element.ts | 6 +-- .../create-user/create-user-modal.test.ts | 2 +- .../users/users/modals/create-user/index.ts | 2 +- .../users/users/modals/invite-user/index.ts | 2 +- .../invite-user/invite-user-modal.element.ts | 4 +- .../invite-user/invite-user-modal.test.ts | 2 +- .../users/users/modals/manifests.ts | 2 +- .../users/users/modals/user-picker/index.ts | 4 +- .../user-picker/user-picker-modal.element.ts | 4 +- .../user-picker/user-picker-modal.test.ts | 2 +- .../users/users/repository/manifests.ts | 2 +- .../users/users/repository/user.repository.ts | 2 +- .../users/users/repository/user.store.ts | 10 ++-- .../workspace-action-user-save.element.ts | 2 +- .../users/users/workspace/manifests.ts | 8 ++- .../workspace/user-workspace-edit.element.ts | 8 +-- .../users/workspace/user-workspace.context.ts | 4 +- .../users/workspace/user-workspace.element.ts | 4 +- .../users/workspace/user-workspace.test.ts | 2 +- .../context-provider.element.test.ts | 2 +- .../context-provider.element.ts | 4 +- .../controller-host-test.element.ts | 4 +- .../controller-host-test.test.ts | 6 +-- .../core}/css/custom-properties.css | 0 .../src/core/lit-element/index.ts | 1 + .../core/lit-element}/lit-element.element.ts | 2 +- .../src/core/mocks/browser.ts | 2 +- .../src/core/mocks/data/culture.data.ts | 2 +- .../src/core/mocks/data/data-type.data.ts | 2 +- .../src/core/mocks/data/dictionary.data.ts | 4 +- .../mocks/data/document-blueprint.data.ts | 2 +- .../src/core/mocks/data/document-type.data.ts | 2 +- .../src/core/mocks/data/document.data.ts | 2 +- .../src/core/mocks/data/entity.data.ts | 2 +- .../src/core/mocks/data/examine.data.ts | 2 +- .../src/core/mocks/data/health-check.data.ts | 2 +- .../src/core/mocks/data/languages.data.ts | 2 +- .../src/core/mocks/data/log-viewer.data.ts | 2 +- .../src/core/mocks/data/logs.data.ts | 2 +- .../src/core/mocks/data/media-type.data.ts | 4 +- .../src/core/mocks/data/media.data.ts | 4 +- .../src/core/mocks/data/member-group.data.ts | 4 +- .../src/core/mocks/data/member-type.data.ts | 4 +- .../src/core/mocks/data/member.data.ts | 7 ++- .../src/core/mocks/data/relation-type.data.ts | 2 +- .../src/core/mocks/data/template.data.ts | 2 +- .../src/core/mocks/data/user-groups.data.ts | 2 +- .../src/core/mocks/data/users.data.ts | 2 +- .../src/core/mocks/data/utils.ts | 2 +- .../core/mocks/domains/culture.handlers.ts | 2 +- .../core/mocks/domains/data-type.handlers.ts | 2 +- .../core/mocks/domains/dictionary.handlers.ts | 4 +- .../mocks/domains/document-type.handlers.ts | 2 +- .../core/mocks/domains/document.handlers.ts | 4 +- .../domains/examine-management.handlers.ts | 4 +- .../mocks/domains/health-check.handlers.ts | 4 +- .../core/mocks/domains/install.handlers.ts | 4 +- .../core/mocks/domains/language.handlers.ts | 4 +- .../core/mocks/domains/log-viewer.handlers.ts | 4 +- .../core/mocks/domains/manifests.handlers.ts | 5 +- .../src/core/mocks/domains/media.handlers.ts | 2 +- .../mocks/domains/modelsbuilder.handlers.ts | 4 +- .../core/mocks/domains/package.handlers.ts | 4 +- .../domains/performance-profiling.handlers.ts | 4 +- .../domains/published-status.handlers.ts | 2 +- .../domains/redirect-management.handlers.ts | 4 +- .../mocks/domains/relation-type.handlers.ts | 2 +- .../src/core/mocks/domains/server.handlers.ts | 4 +- .../core/mocks/domains/telemetry.handlers.ts | 4 +- .../core/mocks/domains/template.handlers.ts | 4 +- .../core/mocks/domains/upgrade.handlers.ts | 4 +- .../mocks/domains/user-groups.handlers.ts | 2 +- .../src/core/mocks/domains/user.handlers.ts | 2 +- .../src/core/mocks/domains/users.handlers.ts | 2 +- .../src/core/modal/index.ts | 2 + .../core/modal}/modal-element-picker-base.ts | 14 +---- .../core/modal}/modal-element.element.ts | 4 +- .../core}/modal/stories/modal.mdx | 0 .../core}/modal/stories/modal.stories.ts | 0 .../story-modal-service-example.element.ts | 4 +- .../notification-layout-default.element.ts | 2 +- .../notification-layout-default.test.ts | 2 +- .../stories/notification.stories.ts | 2 +- ...ry-notification-default-example.element.ts | 4 +- .../core/stores}/icon/icon.store.ts | 2 +- .../core/stores}/icon/icon.stories.ts | 2 +- .../core/stores}/icon/svgs/icon-activity.svg | 0 .../core/stores}/icon/svgs/icon-add.svg | 0 .../stores}/icon/svgs/icon-addressbook.svg | 0 .../stores}/icon/svgs/icon-alarm-clock.svg | 0 .../core/stores}/icon/svgs/icon-alert-alt.svg | 0 .../core/stores}/icon/svgs/icon-alert.svg | 0 .../core/stores}/icon/svgs/icon-alt.svg | 0 .../core/stores}/icon/svgs/icon-anchor.svg | 0 .../core/stores}/icon/svgs/icon-app.svg | 0 .../icon/svgs/icon-application-error.svg | 0 .../icon/svgs/icon-application-window-alt.svg | 0 .../icon/svgs/icon-application-window.svg | 0 .../core/stores}/icon/svgs/icon-arrivals.svg | 0 .../stores}/icon/svgs/icon-arrow-down.svg | 0 .../stores}/icon/svgs/icon-arrow-left.svg | 0 .../stores}/icon/svgs/icon-arrow-right.svg | 0 .../core/stores}/icon/svgs/icon-arrow-up.svg | 0 .../core/stores}/icon/svgs/icon-art-easel.svg | 0 .../core/stores}/icon/svgs/icon-article.svg | 0 .../stores}/icon/svgs/icon-attachment.svg | 0 .../stores}/icon/svgs/icon-auction-hammer.svg | 0 .../core/stores}/icon/svgs/icon-autofill.svg | 0 .../core/stores}/icon/svgs/icon-award.svg | 0 .../icon/svgs/icon-axis-rotation-2.svg | 0 .../icon/svgs/icon-axis-rotation-3.svg | 0 .../stores}/icon/svgs/icon-axis-rotation.svg | 0 .../stores}/icon/svgs/icon-baby-stroller.svg | 0 .../core/stores}/icon/svgs/icon-backspace.svg | 0 .../core/stores}/icon/svgs/icon-badge-add.svg | 0 .../stores}/icon/svgs/icon-badge-count.svg | 0 .../stores}/icon/svgs/icon-badge-remove.svg | 0 .../icon/svgs/icon-badge-restricted.svg | 0 .../core/stores}/icon/svgs/icon-ball.svg | 0 .../core/stores}/icon/svgs/icon-band-aid.svg | 0 .../core/stores}/icon/svgs/icon-bar-chart.svg | 0 .../core/stores}/icon/svgs/icon-barcode.svg | 0 .../core/stores}/icon/svgs/icon-bars.svg | 0 .../stores}/icon/svgs/icon-battery-full.svg | 0 .../stores}/icon/svgs/icon-battery-low.svg | 0 .../stores}/icon/svgs/icon-beer-glass.svg | 0 .../core/stores}/icon/svgs/icon-bell-off.svg | 0 .../core/stores}/icon/svgs/icon-bell.svg | 0 .../stores}/icon/svgs/icon-bill-dollar.svg | 0 .../core/stores}/icon/svgs/icon-bill-euro.svg | 0 .../stores}/icon/svgs/icon-bill-pound.svg | 0 .../core/stores}/icon/svgs/icon-bill-yen.svg | 0 .../core/stores}/icon/svgs/icon-bill.svg | 0 .../core/stores}/icon/svgs/icon-billboard.svg | 0 .../stores}/icon/svgs/icon-bills-dollar.svg | 0 .../stores}/icon/svgs/icon-bills-euro.svg | 0 .../stores}/icon/svgs/icon-bills-pound.svg | 0 .../core/stores}/icon/svgs/icon-bills-yen.svg | 0 .../core/stores}/icon/svgs/icon-bills.svg | 0 .../stores}/icon/svgs/icon-binarycode.svg | 0 .../stores}/icon/svgs/icon-binoculars.svg | 0 .../core/stores}/icon/svgs/icon-bird.svg | 0 .../stores}/icon/svgs/icon-birthday-cake.svg | 0 .../core/stores}/icon/svgs/icon-block.svg | 0 .../core/stores}/icon/svgs/icon-blueprint.svg | 0 .../core/stores}/icon/svgs/icon-bluetooth.svg | 0 .../stores}/icon/svgs/icon-boat-shipping.svg | 0 .../core/stores}/icon/svgs/icon-bomb.svg | 0 .../core/stores}/icon/svgs/icon-bones.svg | 0 .../stores}/icon/svgs/icon-book-alt-2.svg | 0 .../core/stores}/icon/svgs/icon-book-alt.svg | 0 .../core/stores}/icon/svgs/icon-book.svg | 0 .../core/stores}/icon/svgs/icon-bookmark.svg | 0 .../core/stores}/icon/svgs/icon-books.svg | 0 .../core/stores}/icon/svgs/icon-box-alt.svg | 0 .../core/stores}/icon/svgs/icon-box-open.svg | 0 .../core/stores}/icon/svgs/icon-box.svg | 0 .../core/stores}/icon/svgs/icon-brackets.svg | 0 .../core/stores}/icon/svgs/icon-brick.svg | 0 .../core/stores}/icon/svgs/icon-briefcase.svg | 0 .../stores}/icon/svgs/icon-browser-window.svg | 0 .../stores}/icon/svgs/icon-brush-alt-2.svg | 0 .../core/stores}/icon/svgs/icon-brush-alt.svg | 0 .../core/stores}/icon/svgs/icon-brush.svg | 0 .../core/stores}/icon/svgs/icon-bug.svg | 0 .../stores}/icon/svgs/icon-bulleted-list.svg | 0 .../core/stores}/icon/svgs/icon-burn.svg | 0 .../core/stores}/icon/svgs/icon-bus.svg | 0 .../stores}/icon/svgs/icon-calculator.svg | 0 .../stores}/icon/svgs/icon-calendar-alt.svg | 0 .../core/stores}/icon/svgs/icon-calendar.svg | 0 .../core/stores}/icon/svgs/icon-camcorder.svg | 0 .../stores}/icon/svgs/icon-camera-roll.svg | 0 .../core/stores}/icon/svgs/icon-candy.svg | 0 .../core/stores}/icon/svgs/icon-caps-lock.svg | 0 .../core/stores}/icon/svgs/icon-car.svg | 0 .../stores}/icon/svgs/icon-cash-register.svg | 0 .../stores}/icon/svgs/icon-categories.svg | 0 .../stores}/icon/svgs/icon-certificate.svg | 0 .../stores}/icon/svgs/icon-chart-curve.svg | 0 .../core/stores}/icon/svgs/icon-chart.svg | 0 .../stores}/icon/svgs/icon-chat-active.svg | 0 .../core/stores}/icon/svgs/icon-chat.svg | 0 .../core/stores}/icon/svgs/icon-check.svg | 0 .../icon/svgs/icon-checkbox-dotted-active.svg | 0 .../icon/svgs/icon-checkbox-dotted.svg | 0 .../stores}/icon/svgs/icon-checkbox-empty.svg | 0 .../core/stores}/icon/svgs/icon-checkbox.svg | 0 .../core/stores}/icon/svgs/icon-chess.svg | 0 .../core/stores}/icon/svgs/icon-chip-alt.svg | 0 .../core/stores}/icon/svgs/icon-chip.svg | 0 .../core/stores}/icon/svgs/icon-cinema.svg | 0 .../icon/svgs/icon-circle-dotted-active.svg | 0 .../stores}/icon/svgs/icon-circle-dotted.svg | 0 .../core/stores}/icon/svgs/icon-circuits.svg | 0 .../core/stores}/icon/svgs/icon-circus.svg | 0 .../core/stores}/icon/svgs/icon-client.svg | 0 .../stores}/icon/svgs/icon-clothes-hanger.svg | 0 .../stores}/icon/svgs/icon-cloud-drive.svg | 0 .../stores}/icon/svgs/icon-cloud-upload.svg | 0 .../core/stores}/icon/svgs/icon-cloud.svg | 0 .../core/stores}/icon/svgs/icon-cloudy.svg | 0 .../core/stores}/icon/svgs/icon-clubs.svg | 0 .../core/stores}/icon/svgs/icon-cocktail.svg | 0 .../core/stores}/icon/svgs/icon-code.svg | 0 .../core/stores}/icon/svgs/icon-coffee.svg | 0 .../stores}/icon/svgs/icon-coin-dollar.svg | 0 .../core/stores}/icon/svgs/icon-coin-euro.svg | 0 .../stores}/icon/svgs/icon-coin-pound.svg | 0 .../core/stores}/icon/svgs/icon-coin-yen.svg | 0 .../core/stores}/icon/svgs/icon-coin.svg | 0 .../core/stores}/icon/svgs/icon-coins-alt.svg | 0 .../icon/svgs/icon-coins-dollar-alt.svg | 0 .../stores}/icon/svgs/icon-coins-dollar.svg | 0 .../stores}/icon/svgs/icon-coins-euro-alt.svg | 0 .../stores}/icon/svgs/icon-coins-euro.svg | 0 .../icon/svgs/icon-coins-pound-alt.svg | 0 .../stores}/icon/svgs/icon-coins-pound.svg | 0 .../stores}/icon/svgs/icon-coins-yen-alt.svg | 0 .../core/stores}/icon/svgs/icon-coins-yen.svg | 0 .../core/stores}/icon/svgs/icon-coins.svg | 0 .../stores}/icon/svgs/icon-color-bucket.svg | 0 .../stores}/icon/svgs/icon-colorpicker.svg | 0 .../core/stores}/icon/svgs/icon-columns.svg | 0 .../core/stores}/icon/svgs/icon-comb.svg | 0 .../icon/svgs/icon-combination-lock-open.svg | 0 .../icon/svgs/icon-combination-lock.svg | 0 .../core/stores}/icon/svgs/icon-command.svg | 0 .../core/stores}/icon/svgs/icon-company.svg | 0 .../core/stores}/icon/svgs/icon-compress.svg | 0 .../stores}/icon/svgs/icon-connection.svg | 0 .../core/stores}/icon/svgs/icon-console.svg | 0 .../core/stores}/icon/svgs/icon-contrast.svg | 0 .../icon/svgs/icon-conversation-alt.svg | 0 .../stores}/icon/svgs/icon-conversation.svg | 0 .../core/stores}/icon/svgs/icon-coverflow.svg | 0 .../icon/svgs/icon-credit-card-alt.svg | 0 .../stores}/icon/svgs/icon-credit-card.svg | 0 .../core/stores}/icon/svgs/icon-crop.svg | 0 .../core/stores}/icon/svgs/icon-crosshair.svg | 0 .../core/stores}/icon/svgs/icon-crown-alt.svg | 0 .../core/stores}/icon/svgs/icon-crown.svg | 0 .../core/stores}/icon/svgs/icon-cupcake.svg | 0 .../core/stores}/icon/svgs/icon-curve.svg | 0 .../core/stores}/icon/svgs/icon-cut.svg | 0 .../core/stores}/icon/svgs/icon-dashboard.svg | 0 .../core/stores}/icon/svgs/icon-defrag.svg | 0 .../stores}/icon/svgs/icon-delete-key.svg | 0 .../core/stores}/icon/svgs/icon-delete.svg | 0 .../core/stores}/icon/svgs/icon-departure.svg | 0 .../core/stores}/icon/svgs/icon-desk.svg | 0 .../core/stores}/icon/svgs/icon-desktop.svg | 0 .../stores}/icon/svgs/icon-diagnostics.svg | 0 .../icon/svgs/icon-diagonal-arrow-alt.svg | 0 .../stores}/icon/svgs/icon-diagonal-arrow.svg | 0 .../core/stores}/icon/svgs/icon-diamond.svg | 0 .../core/stores}/icon/svgs/icon-diamonds.svg | 0 .../core/stores}/icon/svgs/icon-dice.svg | 0 .../stores}/icon/svgs/icon-diploma-alt.svg | 0 .../core/stores}/icon/svgs/icon-diploma.svg | 0 .../stores}/icon/svgs/icon-directions-alt.svg | 0 .../stores}/icon/svgs/icon-directions.svg | 0 .../core/stores}/icon/svgs/icon-disc.svg | 0 .../stores}/icon/svgs/icon-disk-image.svg | 0 .../core/stores}/icon/svgs/icon-display.svg | 0 .../core/stores}/icon/svgs/icon-dna.svg | 0 .../stores}/icon/svgs/icon-dock-connector.svg | 0 .../icon/svgs/icon-document-dashed-line.svg | 0 .../core/stores}/icon/svgs/icon-document.svg | 0 .../core/stores}/icon/svgs/icon-documents.svg | 0 .../stores}/icon/svgs/icon-dollar-bag.svg | 0 .../core/stores}/icon/svgs/icon-donate.svg | 0 .../stores}/icon/svgs/icon-door-open-alt.svg | 0 .../core/stores}/icon/svgs/icon-door-open.svg | 0 .../stores}/icon/svgs/icon-download-alt.svg | 0 .../core/stores}/icon/svgs/icon-download.svg | 0 .../core/stores}/icon/svgs/icon-drop.svg | 0 .../core/stores}/icon/svgs/icon-eco.svg | 0 .../core/stores}/icon/svgs/icon-economy.svg | 0 .../core/stores}/icon/svgs/icon-edit.svg | 0 .../core/stores}/icon/svgs/icon-eject.svg | 0 .../core/stores}/icon/svgs/icon-employee.svg | 0 .../icon/svgs/icon-energy-saving-bulb.svg | 0 .../core/stores}/icon/svgs/icon-enter.svg | 0 .../core/stores}/icon/svgs/icon-equalizer.svg | 0 .../core/stores}/icon/svgs/icon-escape.svg | 0 .../core/stores}/icon/svgs/icon-ethernet.svg | 0 .../core/stores}/icon/svgs/icon-euro-bag.svg | 0 .../icon/svgs/icon-exit-fullscreen.svg | 0 .../core/stores}/icon/svgs/icon-eye.svg | 0 .../stores}/icon/svgs/icon-facebook-like.svg | 0 .../core/stores}/icon/svgs/icon-factory.svg | 0 .../core/stores}/icon/svgs/icon-favorite.svg | 0 .../stores}/icon/svgs/icon-female-symbol.svg | 0 .../stores}/icon/svgs/icon-file-cabinet.svg | 0 .../core/stores}/icon/svgs/icon-files.svg | 0 .../stores}/icon/svgs/icon-filter-arrows.svg | 0 .../core/stores}/icon/svgs/icon-filter.svg | 0 .../stores}/icon/svgs/icon-fingerprint.svg | 0 .../core/stores}/icon/svgs/icon-fire.svg | 0 .../core/stores}/icon/svgs/icon-firewall.svg | 0 .../core/stores}/icon/svgs/icon-firewire.svg | 0 .../core/stores}/icon/svgs/icon-flag-alt.svg | 0 .../core/stores}/icon/svgs/icon-flag.svg | 0 .../core/stores}/icon/svgs/icon-flash.svg | 0 .../stores}/icon/svgs/icon-flashlight.svg | 0 .../core/stores}/icon/svgs/icon-flowerpot.svg | 0 .../stores}/icon/svgs/icon-folder-open.svg | 0 .../stores}/icon/svgs/icon-folder-outline.svg | 0 .../core/stores}/icon/svgs/icon-folder.svg | 0 .../core/stores}/icon/svgs/icon-folders.svg | 0 .../core/stores}/icon/svgs/icon-font.svg | 0 .../core/stores}/icon/svgs/icon-food.svg | 0 .../stores}/icon/svgs/icon-footprints.svg | 0 .../core/stores}/icon/svgs/icon-forking.svg | 0 .../core/stores}/icon/svgs/icon-frame-alt.svg | 0 .../core/stores}/icon/svgs/icon-frame.svg | 0 .../stores}/icon/svgs/icon-fullscreen-alt.svg | 0 .../stores}/icon/svgs/icon-fullscreen.svg | 0 .../core/stores}/icon/svgs/icon-game.svg | 0 .../core/stores}/icon/svgs/icon-geometry.svg | 0 .../core/stores}/icon/svgs/icon-gift.svg | 0 .../core/stores}/icon/svgs/icon-glasses.svg | 0 .../core/stores}/icon/svgs/icon-globe-alt.svg | 0 .../stores}/icon/svgs/icon-globe-asia.svg | 0 .../icon/svgs/icon-globe-europe-africa.svg | 0 .../icon/svgs/icon-globe-inverted-america.svg | 0 .../icon/svgs/icon-globe-inverted-asia.svg | 0 .../icon-globe-inverted-europe-africa.svg | 0 .../core/stores}/icon/svgs/icon-globe.svg | 0 .../core/stores}/icon/svgs/icon-gps.svg | 0 .../core/stores}/icon/svgs/icon-graduate.svg | 0 .../core/stores}/icon/svgs/icon-grid.svg | 0 .../core/stores}/icon/svgs/icon-hammer.svg | 0 .../icon/svgs/icon-hand-active-alt.svg | 0 .../stores}/icon/svgs/icon-hand-active.svg | 0 .../icon/svgs/icon-hand-pointer-alt.svg | 0 .../stores}/icon/svgs/icon-hand-pointer.svg | 0 .../core/stores}/icon/svgs/icon-handprint.svg | 0 .../core/stores}/icon/svgs/icon-handshake.svg | 0 .../stores}/icon/svgs/icon-handtool-alt.svg | 0 .../core/stores}/icon/svgs/icon-handtool.svg | 0 .../stores}/icon/svgs/icon-hard-drive-alt.svg | 0 .../stores}/icon/svgs/icon-hard-drive.svg | 0 .../core/stores}/icon/svgs/icon-hat.svg | 0 .../core/stores}/icon/svgs/icon-hd.svg | 0 .../stores}/icon/svgs/icon-headphones.svg | 0 .../core/stores}/icon/svgs/icon-headset.svg | 0 .../core/stores}/icon/svgs/icon-hearts.svg | 0 .../core/stores}/icon/svgs/icon-height.svg | 0 .../core/stores}/icon/svgs/icon-help-alt.svg | 0 .../core/stores}/icon/svgs/icon-help.svg | 0 .../core/stores}/icon/svgs/icon-home.svg | 0 .../core/stores}/icon/svgs/icon-hourglass.svg | 0 .../core/stores}/icon/svgs/icon-imac.svg | 0 .../stores}/icon/svgs/icon-inactive-line.svg | 0 .../stores}/icon/svgs/icon-inbox-full.svg | 0 .../core/stores}/icon/svgs/icon-inbox.svg | 0 .../core/stores}/icon/svgs/icon-indent.svg | 0 .../core/stores}/icon/svgs/icon-infinity.svg | 0 .../core/stores}/icon/svgs/icon-info.svg | 0 .../core/stores}/icon/svgs/icon-invoice.svg | 0 .../core/stores}/icon/svgs/icon-ipad.svg | 0 .../core/stores}/icon/svgs/icon-iphone.svg | 0 .../icon/svgs/icon-item-arrangement.svg | 0 .../core/stores}/icon/svgs/icon-junk.svg | 0 .../core/stores}/icon/svgs/icon-key.svg | 0 .../core/stores}/icon/svgs/icon-keyboard.svg | 0 .../core/stores}/icon/svgs/icon-keychain.svg | 0 .../core/stores}/icon/svgs/icon-keyhole.svg | 0 .../core/stores}/icon/svgs/icon-lab.svg | 0 .../core/stores}/icon/svgs/icon-laptop.svg | 0 .../stores}/icon/svgs/icon-layers-alt.svg | 0 .../core/stores}/icon/svgs/icon-layers.svg | 0 .../core/stores}/icon/svgs/icon-layout.svg | 0 .../icon/svgs/icon-left-double-arrow.svg | 0 .../core/stores}/icon/svgs/icon-legal.svg | 0 .../core/stores}/icon/svgs/icon-lense.svg | 0 .../core/stores}/icon/svgs/icon-library.svg | 0 .../stores}/icon/svgs/icon-light-down.svg | 0 .../core/stores}/icon/svgs/icon-light-up.svg | 0 .../icon/svgs/icon-lightbulb-active.svg | 0 .../core/stores}/icon/svgs/icon-lightbulb.svg | 0 .../core/stores}/icon/svgs/icon-lightning.svg | 0 .../core/stores}/icon/svgs/icon-link.svg | 0 .../core/stores}/icon/svgs/icon-linux-tux.svg | 0 .../core/stores}/icon/svgs/icon-list.svg | 0 .../core/stores}/icon/svgs/icon-load.svg | 0 .../core/stores}/icon/svgs/icon-loading.svg | 0 .../core/stores}/icon/svgs/icon-locate.svg | 0 .../icon/svgs/icon-location-near-me.svg | 0 .../icon/svgs/icon-location-nearby.svg | 0 .../core/stores}/icon/svgs/icon-lock.svg | 0 .../core/stores}/icon/svgs/icon-log-out.svg | 0 .../core/stores}/icon/svgs/icon-logout.svg | 0 .../core/stores}/icon/svgs/icon-loupe.svg | 0 .../core/stores}/icon/svgs/icon-magnet.svg | 0 .../core/stores}/icon/svgs/icon-mailbox.svg | 0 .../icon/svgs/icon-male-and-female.svg | 0 .../stores}/icon/svgs/icon-male-symbol.svg | 0 .../core/stores}/icon/svgs/icon-map-alt.svg | 0 .../stores}/icon/svgs/icon-map-location.svg | 0 .../stores}/icon/svgs/icon-map-marker.svg | 0 .../core/stores}/icon/svgs/icon-map.svg | 0 .../core/stores}/icon/svgs/icon-medal.svg | 0 .../icon/svgs/icon-medical-emergency.svg | 0 .../core/stores}/icon/svgs/icon-medicine.svg | 0 .../core/stores}/icon/svgs/icon-meeting.svg | 0 .../core/stores}/icon/svgs/icon-megaphone.svg | 0 .../core/stores}/icon/svgs/icon-merge.svg | 0 .../stores}/icon/svgs/icon-message-open.svg | 0 .../icon/svgs/icon-message-unopened.svg | 0 .../core/stores}/icon/svgs/icon-message.svg | 0 .../stores}/icon/svgs/icon-microscope.svg | 0 .../core/stores}/icon/svgs/icon-mindmap.svg | 0 .../core/stores}/icon/svgs/icon-mobile.svg | 0 .../icon/svgs/icon-molecular-network.svg | 0 .../core/stores}/icon/svgs/icon-molecular.svg | 0 .../core/stores}/icon/svgs/icon-mountain.svg | 0 .../stores}/icon/svgs/icon-mouse-cursor.svg | 0 .../core/stores}/icon/svgs/icon-mouse.svg | 0 .../core/stores}/icon/svgs/icon-movie-alt.svg | 0 .../core/stores}/icon/svgs/icon-movie.svg | 0 .../icon/svgs/icon-multiple-credit-cards.svg | 0 .../icon/svgs/icon-multiple-windows.svg | 0 .../core/stores}/icon/svgs/icon-music.svg | 0 .../stores}/icon/svgs/icon-name-badge.svg | 0 .../icon/svgs/icon-navigation-bottom.svg | 0 .../icon/svgs/icon-navigation-down.svg | 0 .../icon/svgs/icon-navigation-first.svg | 0 .../icon/svgs/icon-navigation-horizontal.svg | 0 .../icon/svgs/icon-navigation-last.svg | 0 .../icon/svgs/icon-navigation-left.svg | 0 .../icon/svgs/icon-navigation-right.svg | 0 .../icon/svgs/icon-navigation-road.svg | 0 .../stores}/icon/svgs/icon-navigation-top.svg | 0 .../stores}/icon/svgs/icon-navigation-up.svg | 0 .../icon/svgs/icon-navigation-vertical.svg | 0 .../stores}/icon/svgs/icon-navigation.svg | 0 .../icon/svgs/icon-navigational-arrow.svg | 0 .../stores}/icon/svgs/icon-network-alt.svg | 0 .../stores}/icon/svgs/icon-newspaper-alt.svg | 0 .../core/stores}/icon/svgs/icon-newspaper.svg | 0 .../stores}/icon/svgs/icon-next-media.svg | 0 .../core/stores}/icon/svgs/icon-next.svg | 0 .../core/stores}/icon/svgs/icon-nodes.svg | 0 .../stores}/icon/svgs/icon-notepad-alt.svg | 0 .../core/stores}/icon/svgs/icon-notepad.svg | 0 .../core/stores}/icon/svgs/icon-old-key.svg | 0 .../core/stores}/icon/svgs/icon-old-phone.svg | 0 .../core/stores}/icon/svgs/icon-operator.svg | 0 .../stores}/icon/svgs/icon-ordered-list.svg | 0 .../core/stores}/icon/svgs/icon-os-x.svg | 0 .../core/stores}/icon/svgs/icon-out.svg | 0 .../core/stores}/icon/svgs/icon-outbox.svg | 0 .../core/stores}/icon/svgs/icon-outdent.svg | 0 .../core/stores}/icon/svgs/icon-page-add.svg | 0 .../core/stores}/icon/svgs/icon-page-down.svg | 0 .../stores}/icon/svgs/icon-page-remove.svg | 0 .../icon/svgs/icon-page-restricted.svg | 0 .../core/stores}/icon/svgs/icon-page-up.svg | 0 .../stores}/icon/svgs/icon-paint-roller.svg | 0 .../core/stores}/icon/svgs/icon-palette.svg | 0 .../stores}/icon/svgs/icon-panel-show.svg | 0 .../stores}/icon/svgs/icon-pannel-close.svg | 0 .../core/stores}/icon/svgs/icon-pants.svg | 0 .../core/stores}/icon/svgs/icon-paper-bag.svg | 0 .../icon/svgs/icon-paper-plane-alt.svg | 0 .../stores}/icon/svgs/icon-paper-plane.svg | 0 .../stores}/icon/svgs/icon-parachute-drop.svg | 0 .../icon/svgs/icon-parental-control.svg | 0 .../stores}/icon/svgs/icon-partly-cloudy.svg | 0 .../core/stores}/icon/svgs/icon-paste-in.svg | 0 .../core/stores}/icon/svgs/icon-path.svg | 0 .../core/stores}/icon/svgs/icon-pause.svg | 0 .../core/stores}/icon/svgs/icon-pc.svg | 0 .../stores}/icon/svgs/icon-people-alt-2.svg | 0 .../stores}/icon/svgs/icon-people-alt.svg | 0 .../stores}/icon/svgs/icon-people-female.svg | 0 .../core/stores}/icon/svgs/icon-people.svg | 0 .../stores}/icon/svgs/icon-phone-ring.svg | 0 .../core/stores}/icon/svgs/icon-phone.svg | 0 .../stores}/icon/svgs/icon-photo-album.svg | 0 .../core/stores}/icon/svgs/icon-picture.svg | 0 .../stores}/icon/svgs/icon-pictures-alt-2.svg | 0 .../stores}/icon/svgs/icon-pictures-alt.svg | 0 .../core/stores}/icon/svgs/icon-pictures.svg | 0 .../core/stores}/icon/svgs/icon-pie-chart.svg | 0 .../stores}/icon/svgs/icon-piggy-bank.svg | 0 .../stores}/icon/svgs/icon-pin-location.svg | 0 .../core/stores}/icon/svgs/icon-piracy.svg | 0 .../core/stores}/icon/svgs/icon-plane.svg | 0 .../core/stores}/icon/svgs/icon-planet.svg | 0 .../core/stores}/icon/svgs/icon-play.svg | 0 .../stores}/icon/svgs/icon-playing-cards.svg | 0 .../core/stores}/icon/svgs/icon-playlist.svg | 0 .../core/stores}/icon/svgs/icon-plugin.svg | 0 .../core/stores}/icon/svgs/icon-podcast.svg | 0 .../stores}/icon/svgs/icon-poker-chip.svg | 0 .../core/stores}/icon/svgs/icon-poll.svg | 0 .../core/stores}/icon/svgs/icon-post-it.svg | 0 .../core/stores}/icon/svgs/icon-pound-bag.svg | 0 .../stores}/icon/svgs/icon-power-outlet.svg | 0 .../core/stores}/icon/svgs/icon-power.svg | 0 .../stores}/icon/svgs/icon-presentation.svg | 0 .../stores}/icon/svgs/icon-previous-media.svg | 0 .../core/stores}/icon/svgs/icon-previous.svg | 0 .../stores}/icon/svgs/icon-price-dollar.svg | 0 .../stores}/icon/svgs/icon-price-euro.svg | 0 .../stores}/icon/svgs/icon-price-pound.svg | 0 .../core/stores}/icon/svgs/icon-price-yen.svg | 0 .../core/stores}/icon/svgs/icon-print.svg | 0 .../stores}/icon/svgs/icon-printer-alt.svg | 0 .../core/stores}/icon/svgs/icon-projector.svg | 0 .../core/stores}/icon/svgs/icon-pulse.svg | 0 .../core/stores}/icon/svgs/icon-pushpin.svg | 0 .../core/stores}/icon/svgs/icon-qr-code.svg | 0 .../core/stores}/icon/svgs/icon-quote.svg | 0 .../core/stores}/icon/svgs/icon-radio-alt.svg | 0 .../stores}/icon/svgs/icon-radio-receiver.svg | 0 .../core/stores}/icon/svgs/icon-radio.svg | 0 .../core/stores}/icon/svgs/icon-rain.svg | 0 .../core/stores}/icon/svgs/icon-rate.svg | 0 .../core/stores}/icon/svgs/icon-re-post.svg | 0 .../core/stores}/icon/svgs/icon-readonly.svg | 0 .../stores}/icon/svgs/icon-receipt-alt.svg | 0 .../stores}/icon/svgs/icon-receipt-dollar.svg | 0 .../stores}/icon/svgs/icon-receipt-euro.svg | 0 .../stores}/icon/svgs/icon-receipt-pound.svg | 0 .../stores}/icon/svgs/icon-receipt-yen.svg | 0 .../core/stores}/icon/svgs/icon-reception.svg | 0 .../core/stores}/icon/svgs/icon-record.svg | 0 .../core/stores}/icon/svgs/icon-redo.svg | 0 .../core/stores}/icon/svgs/icon-refresh.svg | 0 .../core/stores}/icon/svgs/icon-remote.svg | 0 .../core/stores}/icon/svgs/icon-remove.svg | 0 .../stores}/icon/svgs/icon-repeat-one.svg | 0 .../core/stores}/icon/svgs/icon-repeat.svg | 0 .../stores}/icon/svgs/icon-reply-arrow.svg | 0 .../core/stores}/icon/svgs/icon-resize.svg | 0 .../stores}/icon/svgs/icon-return-to-top.svg | 0 .../icon/svgs/icon-right-double-arrow.svg | 0 .../core/stores}/icon/svgs/icon-road.svg | 0 .../core/stores}/icon/svgs/icon-roadsign.svg | 0 .../core/stores}/icon/svgs/icon-rocket.svg | 0 .../core/stores}/icon/svgs/icon-rss.svg | 0 .../core/stores}/icon/svgs/icon-ruler-alt.svg | 0 .../core/stores}/icon/svgs/icon-ruler.svg | 0 .../core/stores}/icon/svgs/icon-safe.svg | 0 .../core/stores}/icon/svgs/icon-safedial.svg | 0 .../stores}/icon/svgs/icon-sandbox-toys.svg | 0 .../stores}/icon/svgs/icon-satellite-dish.svg | 0 .../core/stores}/icon/svgs/icon-save.svg | 0 .../core/stores}/icon/svgs/icon-scan.svg | 0 .../core/stores}/icon/svgs/icon-school.svg | 0 .../stores}/icon/svgs/icon-screensharing.svg | 0 .../stores}/icon/svgs/icon-script-alt.svg | 0 .../core/stores}/icon/svgs/icon-script.svg | 0 .../core/stores}/icon/svgs/icon-scull.svg | 0 .../core/stores}/icon/svgs/icon-search.svg | 0 .../icon/svgs/icon-security-camera.svg | 0 .../core/stores}/icon/svgs/icon-sensor.svg | 0 .../stores}/icon/svgs/icon-server-alt.svg | 0 .../core/stores}/icon/svgs/icon-server.svg | 0 .../stores}/icon/svgs/icon-settings-alt-2.svg | 0 .../stores}/icon/svgs/icon-settings-alt.svg | 0 .../core/stores}/icon/svgs/icon-settings.svg | 0 .../stores}/icon/svgs/icon-share-alt-2.svg | 0 .../core/stores}/icon/svgs/icon-share-alt.svg | 0 .../core/stores}/icon/svgs/icon-share.svg | 0 .../stores}/icon/svgs/icon-sharing-iphone.svg | 0 .../core/stores}/icon/svgs/icon-shield.svg | 0 .../core/stores}/icon/svgs/icon-shift.svg | 0 .../stores}/icon/svgs/icon-shipping-box.svg | 0 .../core/stores}/icon/svgs/icon-shipping.svg | 0 .../core/stores}/icon/svgs/icon-shoe.svg | 0 .../icon/svgs/icon-shopping-basket-alt-2.svg | 0 .../icon/svgs/icon-shopping-basket-alt.svg | 0 .../icon/svgs/icon-shopping-basket.svg | 0 .../core/stores}/icon/svgs/icon-shorts.svg | 0 .../core/stores}/icon/svgs/icon-shuffle.svg | 0 .../core/stores}/icon/svgs/icon-sience.svg | 0 .../core/stores}/icon/svgs/icon-simcard.svg | 0 .../stores}/icon/svgs/icon-single-note.svg | 0 .../core/stores}/icon/svgs/icon-sitemap.svg | 0 .../core/stores}/icon/svgs/icon-sleep.svg | 0 .../core/stores}/icon/svgs/icon-slideshow.svg | 0 .../icon/svgs/icon-smiley-inverted.svg | 0 .../core/stores}/icon/svgs/icon-smiley.svg | 0 .../core/stores}/icon/svgs/icon-snow.svg | 0 .../core/stores}/icon/svgs/icon-sound-low.svg | 0 .../stores}/icon/svgs/icon-sound-medium.svg | 0 .../core/stores}/icon/svgs/icon-sound-off.svg | 0 .../stores}/icon/svgs/icon-sound-waves.svg | 0 .../core/stores}/icon/svgs/icon-sound.svg | 0 .../core/stores}/icon/svgs/icon-spades.svg | 0 .../core/stores}/icon/svgs/icon-speaker.svg | 0 .../stores}/icon/svgs/icon-speed-gauge.svg | 0 .../core/stores}/icon/svgs/icon-split-alt.svg | 0 .../core/stores}/icon/svgs/icon-split.svg | 0 .../core/stores}/icon/svgs/icon-sprout.svg | 0 .../stores}/icon/svgs/icon-squiggly-line.svg | 0 .../core/stores}/icon/svgs/icon-ssd.svg | 0 .../stores}/icon/svgs/icon-stacked-disks.svg | 0 .../core/stores}/icon/svgs/icon-stamp.svg | 0 .../core/stores}/icon/svgs/icon-stop-alt.svg | 0 .../core/stores}/icon/svgs/icon-stop-hand.svg | 0 .../core/stores}/icon/svgs/icon-stop.svg | 0 .../core/stores}/icon/svgs/icon-store.svg | 0 .../core/stores}/icon/svgs/icon-stream.svg | 0 .../core/stores}/icon/svgs/icon-sunny.svg | 0 .../stores}/icon/svgs/icon-sweatshirt.svg | 0 .../core/stores}/icon/svgs/icon-sync.svg | 0 .../core/stores}/icon/svgs/icon-t-shirt.svg | 0 .../core/stores}/icon/svgs/icon-tab-key.svg | 0 .../core/stores}/icon/svgs/icon-tab.svg | 0 .../core/stores}/icon/svgs/icon-tactics.svg | 0 .../core/stores}/icon/svgs/icon-tag.svg | 0 .../core/stores}/icon/svgs/icon-tags.svg | 0 .../stores}/icon/svgs/icon-takeaway-cup.svg | 0 .../core/stores}/icon/svgs/icon-target.svg | 0 .../icon/svgs/icon-temperatrure-alt.svg | 0 .../stores}/icon/svgs/icon-temperature.svg | 0 .../core/stores}/icon/svgs/icon-terminal.svg | 0 .../core/stores}/icon/svgs/icon-theater.svg | 0 .../core/stores}/icon/svgs/icon-theif.svg | 0 .../stores}/icon/svgs/icon-thought-bubble.svg | 0 .../stores}/icon/svgs/icon-thumb-down.svg | 0 .../core/stores}/icon/svgs/icon-thumb-up.svg | 0 .../stores}/icon/svgs/icon-thumbnail-list.svg | 0 .../icon/svgs/icon-thumbnails-small.svg | 0 .../stores}/icon/svgs/icon-thumbnails.svg | 0 .../core/stores}/icon/svgs/icon-ticket.svg | 0 .../core/stores}/icon/svgs/icon-time.svg | 0 .../core/stores}/icon/svgs/icon-timer.svg | 0 .../core/stores}/icon/svgs/icon-tools.svg | 0 .../core/stores}/icon/svgs/icon-top.svg | 0 .../stores}/icon/svgs/icon-traffic-alt.svg | 0 .../core/stores}/icon/svgs/icon-trafic.svg | 0 .../core/stores}/icon/svgs/icon-train.svg | 0 .../stores}/icon/svgs/icon-trash-alt-2.svg | 0 .../core/stores}/icon/svgs/icon-trash-alt.svg | 0 .../core/stores}/icon/svgs/icon-trash.svg | 0 .../core/stores}/icon/svgs/icon-tree.svg | 0 .../core/stores}/icon/svgs/icon-trophy.svg | 0 .../core/stores}/icon/svgs/icon-truck.svg | 0 .../core/stores}/icon/svgs/icon-tv-old.svg | 0 .../core/stores}/icon/svgs/icon-tv.svg | 0 .../stores}/icon/svgs/icon-umb-content.svg | 0 .../stores}/icon/svgs/icon-umb-contour.svg | 0 .../stores}/icon/svgs/icon-umb-deploy.svg | 0 .../stores}/icon/svgs/icon-umb-developer.svg | 0 .../core/stores}/icon/svgs/icon-umb-media.svg | 0 .../stores}/icon/svgs/icon-umb-members.svg | 0 .../stores}/icon/svgs/icon-umb-settings.svg | 0 .../core/stores}/icon/svgs/icon-umb-users.svg | 0 .../core/stores}/icon/svgs/icon-umbraco.svg | 0 .../core/stores}/icon/svgs/icon-umbrella.svg | 0 .../core/stores}/icon/svgs/icon-undo.svg | 0 .../core/stores}/icon/svgs/icon-universal.svg | 0 .../core/stores}/icon/svgs/icon-unlocked.svg | 0 .../core/stores}/icon/svgs/icon-untitled.svg | 0 .../stores}/icon/svgs/icon-usb-connector.svg | 0 .../core/stores}/icon/svgs/icon-usb.svg | 0 .../stores}/icon/svgs/icon-user-female.svg | 0 .../icon/svgs/icon-user-females-alt.svg | 0 .../stores}/icon/svgs/icon-user-females.svg | 0 .../stores}/icon/svgs/icon-user-glasses.svg | 0 .../core/stores}/icon/svgs/icon-user.svg | 0 .../core/stores}/icon/svgs/icon-users-alt.svg | 0 .../core/stores}/icon/svgs/icon-users.svg | 0 .../core/stores}/icon/svgs/icon-utilities.svg | 0 .../core/stores}/icon/svgs/icon-vcard.svg | 0 .../core/stores}/icon/svgs/icon-video.svg | 0 .../core/stores}/icon/svgs/icon-voice.svg | 0 .../core/stores}/icon/svgs/icon-wall-plug.svg | 0 .../core/stores}/icon/svgs/icon-wallet.svg | 0 .../core/stores}/icon/svgs/icon-wand.svg | 0 .../core/stores}/icon/svgs/icon-war.svg | 0 .../core/stores}/icon/svgs/icon-weight.svg | 0 .../core/stores}/icon/svgs/icon-width.svg | 0 .../core/stores}/icon/svgs/icon-wifi.svg | 0 .../stores}/icon/svgs/icon-window-popin.svg | 0 .../stores}/icon/svgs/icon-window-sizes.svg | 0 .../core/stores}/icon/svgs/icon-windows.svg | 0 .../stores}/icon/svgs/icon-wine-glass.svg | 0 .../core/stores}/icon/svgs/icon-wrench.svg | 0 .../core/stores}/icon/svgs/icon-wrong.svg | 0 .../core/stores}/icon/svgs/icon-yen-bag.svg | 0 .../core/stores}/icon/svgs/icon-zip.svg | 0 .../core/stores}/icon/svgs/icon-zom-out.svg | 0 .../core/stores}/icon/svgs/icon-zoom-in.svg | 0 .../consent/installer-consent.element.ts | 4 +- .../consent/installer-content.test.ts | 2 +- .../database/installer-database.element.ts | 6 +-- .../database/installer-database.stories.ts | 2 +- .../database/installer-database.test.ts | 2 +- .../error/installer-error.element.ts | 4 +- .../installer/error/installer-error.test.ts | 2 +- .../src/installer/installer.context.ts | 8 +-- .../src/installer/installer.element.ts | 2 +- .../src/installer/installer.test.ts | 2 +- .../installing/installer-installing.test.ts | 2 +- .../shared/layout/installer-layout.test.ts | 2 +- .../installer/user/installer-user.element.ts | 2 +- .../src/installer/user/installer-user.test.ts | 2 +- .../src/upgrader/upgrader-view.element.ts | 2 +- .../src/upgrader/upgrader-view.test.ts | 2 +- .../src/upgrader/upgrader.element.ts | 6 +-- src/Umbraco.Web.UI.Client/tsconfig.json | 51 +++++++++---------- src/Umbraco.Web.UI.Client/utils/move-libs.js | 49 ++++++++++++++++++ .../utils/rollup.config.js | 27 ---------- .../chai.ts => utils/test-utils.ts} | 0 src/Umbraco.Web.UI.Client/vite.cms.config.ts | 3 ++ .../web-test-runner.config.mjs | 45 ++++++++-------- 1447 files changed, 1888 insertions(+), 1761 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/context-api/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/controller/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/element/index.module.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/element/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/events/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/rollup.config.js create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/modal.interfaces.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/models/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/notification/rollup.config.js create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/default-memoization.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/mapping-function.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/memoization-function.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/naive-object-comparison.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/observable-api/rollup.config.js create mode 100644 src/Umbraco.Web.UI.Client/libs/package.json delete mode 100644 src/Umbraco.Web.UI.Client/libs/property-editor/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/resources/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/store/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/test-utils/index.ts rename src/Umbraco.Web.UI.Client/libs/{events => umb-events}/change.event.ts (100%) rename src/Umbraco.Web.UI.Client/libs/{events => umb-events}/delete.event.ts (100%) rename src/Umbraco.Web.UI.Client/libs/{events => umb-events}/executed.event.ts (100%) rename src/Umbraco.Web.UI.Client/libs/{events => umb-events}/index.ts (100%) rename src/Umbraco.Web.UI.Client/libs/{events => umb-events}/input.event.ts (100%) delete mode 100644 src/Umbraco.Web.UI.Client/libs/utils/rollup.config.js delete mode 100644 src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js create mode 100644 src/Umbraco.Web.UI.Client/rollup-libs.config.js rename src/Umbraco.Web.UI.Client/{libs => src/core}/css/custom-properties.css (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/core/lit-element/index.ts rename src/Umbraco.Web.UI.Client/{libs/element => src/core/lit-element}/lit-element.element.ts (60%) create mode 100644 src/Umbraco.Web.UI.Client/src/core/modal/index.ts rename src/Umbraco.Web.UI.Client/{libs/modal/elements => src/core/modal}/modal-element-picker-base.ts (80%) rename src/Umbraco.Web.UI.Client/{libs/modal/elements => src/core/modal}/modal-element.element.ts (78%) rename src/Umbraco.Web.UI.Client/{libs => src/core}/modal/stories/modal.mdx (100%) rename src/Umbraco.Web.UI.Client/{libs => src/core}/modal/stories/modal.stories.ts (100%) rename src/Umbraco.Web.UI.Client/{libs => src/core}/modal/stories/story-modal-service-example.element.ts (88%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/icon.store.ts (93%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/icon.stories.ts (93%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-activity.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-add.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-addressbook.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-alarm-clock.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-alert-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-alert.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-anchor.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-app.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-application-error.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-application-window-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-application-window.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-arrivals.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-arrow-down.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-arrow-left.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-arrow-right.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-arrow-up.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-art-easel.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-article.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-attachment.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-auction-hammer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-autofill.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-award.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-axis-rotation-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-axis-rotation-3.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-axis-rotation.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-baby-stroller.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-backspace.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-badge-add.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-badge-count.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-badge-remove.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-badge-restricted.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ball.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-band-aid.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bar-chart.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-barcode.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bars.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-battery-full.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-battery-low.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-beer-glass.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bell-off.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bell.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bill-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bill-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bill-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bill-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bill.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-billboard.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bills-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bills-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bills-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bills-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bills.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-binarycode.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-binoculars.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bird.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-birthday-cake.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-block.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-blueprint.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bluetooth.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-boat-shipping.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bomb.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bones.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-book-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-book-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-book.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bookmark.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-books.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-box-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-box-open.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-box.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-brackets.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-brick.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-briefcase.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-browser-window.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-brush-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-brush-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-brush.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bug.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bulleted-list.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-burn.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-bus.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-calculator.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-calendar-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-calendar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-camcorder.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-camera-roll.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-candy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-caps-lock.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-car.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cash-register.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-categories.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-certificate.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chart-curve.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chart.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chat-active.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chat.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-check.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-checkbox-dotted-active.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-checkbox-dotted.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-checkbox-empty.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-checkbox.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chess.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chip-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-chip.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cinema.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-circle-dotted-active.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-circle-dotted.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-circuits.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-circus.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-client.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-clothes-hanger.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cloud-drive.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cloud-upload.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cloud.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cloudy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-clubs.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cocktail.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-code.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coffee.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coin-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coin-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coin-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coin-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coin.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-dollar-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-euro-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-pound-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-yen-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coins.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-color-bucket.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-colorpicker.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-columns.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-comb.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-combination-lock-open.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-combination-lock.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-command.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-company.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-compress.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-connection.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-console.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-contrast.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-conversation-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-conversation.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-coverflow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-credit-card-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-credit-card.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-crop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-crosshair.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-crown-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-crown.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cupcake.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-curve.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-cut.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-dashboard.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-defrag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-delete-key.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-delete.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-departure.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-desk.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-desktop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diagnostics.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diagonal-arrow-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diagonal-arrow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diamond.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diamonds.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-dice.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diploma-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-diploma.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-directions-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-directions.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-disc.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-disk-image.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-display.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-dna.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-dock-connector.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-document-dashed-line.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-document.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-documents.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-dollar-bag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-donate.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-door-open-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-door-open.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-download-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-download.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-drop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-eco.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-economy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-edit.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-eject.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-employee.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-energy-saving-bulb.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-enter.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-equalizer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-escape.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ethernet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-euro-bag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-exit-fullscreen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-eye.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-facebook-like.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-factory.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-favorite.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-female-symbol.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-file-cabinet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-files.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-filter-arrows.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-filter.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-fingerprint.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-fire.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-firewall.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-firewire.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-flag-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-flag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-flash.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-flashlight.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-flowerpot.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-folder-open.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-folder-outline.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-folder.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-folders.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-font.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-food.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-footprints.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-forking.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-frame-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-frame.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-fullscreen-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-fullscreen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-game.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-geometry.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-gift.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-glasses.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-asia.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-europe-africa.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-inverted-america.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-inverted-asia.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe-inverted-europe-africa.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-globe.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-gps.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-graduate.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-grid.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hammer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hand-active-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hand-active.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hand-pointer-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hand-pointer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-handprint.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-handshake.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-handtool-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-handtool.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hard-drive-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hard-drive.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hat.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hd.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-headphones.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-headset.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hearts.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-height.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-help-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-help.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-home.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-hourglass.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-imac.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-inactive-line.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-inbox-full.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-inbox.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-indent.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-infinity.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-info.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-invoice.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ipad.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-iphone.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-item-arrangement.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-junk.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-key.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-keyboard.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-keychain.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-keyhole.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lab.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-laptop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-layers-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-layers.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-layout.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-left-double-arrow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-legal.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lense.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-library.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-light-down.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-light-up.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lightbulb-active.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lightbulb.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lightning.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-link.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-linux-tux.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-list.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-load.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-loading.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-locate.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-location-near-me.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-location-nearby.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-lock.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-log-out.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-logout.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-loupe.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-magnet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mailbox.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-male-and-female.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-male-symbol.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-map-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-map-location.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-map-marker.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-map.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-medal.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-medical-emergency.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-medicine.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-meeting.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-megaphone.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-merge.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-message-open.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-message-unopened.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-message.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-microscope.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mindmap.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mobile.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-molecular-network.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-molecular.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mountain.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mouse-cursor.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-mouse.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-movie-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-movie.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-multiple-credit-cards.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-multiple-windows.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-music.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-name-badge.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-bottom.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-down.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-first.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-horizontal.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-last.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-left.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-right.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-road.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-top.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-up.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation-vertical.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigation.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-navigational-arrow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-network-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-newspaper-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-newspaper.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-next-media.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-next.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-nodes.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-notepad-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-notepad.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-old-key.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-old-phone.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-operator.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ordered-list.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-os-x.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-out.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-outbox.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-outdent.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-page-add.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-page-down.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-page-remove.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-page-restricted.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-page-up.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-paint-roller.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-palette.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-panel-show.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pannel-close.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pants.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-paper-bag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-paper-plane-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-paper-plane.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-parachute-drop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-parental-control.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-partly-cloudy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-paste-in.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-path.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pause.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pc.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-people-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-people-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-people-female.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-people.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-phone-ring.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-phone.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-photo-album.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-picture.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pictures-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pictures-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pictures.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pie-chart.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-piggy-bank.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pin-location.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-piracy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-plane.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-planet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-play.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-playing-cards.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-playlist.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-plugin.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-podcast.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-poker-chip.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-poll.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-post-it.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pound-bag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-power-outlet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-power.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-presentation.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-previous-media.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-previous.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-price-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-price-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-price-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-price-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-print.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-printer-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-projector.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pulse.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-pushpin.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-qr-code.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-quote.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-radio-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-radio-receiver.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-radio.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-rain.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-rate.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-re-post.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-readonly.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-receipt-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-receipt-dollar.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-receipt-euro.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-receipt-pound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-receipt-yen.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-reception.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-record.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-redo.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-refresh.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-remote.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-remove.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-repeat-one.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-repeat.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-reply-arrow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-resize.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-return-to-top.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-right-double-arrow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-road.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-roadsign.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-rocket.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-rss.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ruler-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ruler.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-safe.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-safedial.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sandbox-toys.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-satellite-dish.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-save.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-scan.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-school.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-screensharing.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-script-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-script.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-scull.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-search.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-security-camera.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sensor.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-server-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-server.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-settings-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-settings-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-settings.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-share-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-share-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-share.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sharing-iphone.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shield.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shift.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shipping-box.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shipping.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shoe.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shopping-basket-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shopping-basket-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shopping-basket.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shorts.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-shuffle.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sience.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-simcard.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-single-note.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sitemap.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sleep.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-slideshow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-smiley-inverted.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-smiley.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-snow.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sound-low.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sound-medium.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sound-off.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sound-waves.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sound.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-spades.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-speaker.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-speed-gauge.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-split-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-split.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sprout.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-squiggly-line.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ssd.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stacked-disks.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stamp.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stop-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stop-hand.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stop.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-store.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-stream.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sunny.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sweatshirt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-sync.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-t-shirt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tab-key.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tab.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tactics.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tags.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-takeaway-cup.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-target.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-temperatrure-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-temperature.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-terminal.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-theater.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-theif.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thought-bubble.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thumb-down.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thumb-up.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thumbnail-list.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thumbnails-small.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-thumbnails.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-ticket.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-time.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-timer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tools.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-top.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-traffic-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-trafic.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-train.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-trash-alt-2.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-trash-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-trash.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tree.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-trophy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-truck.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tv-old.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-tv.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-content.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-contour.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-deploy.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-developer.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-media.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-members.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-settings.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umb-users.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umbraco.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-umbrella.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-undo.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-universal.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-unlocked.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-untitled.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-usb-connector.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-usb.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-user-female.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-user-females-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-user-females.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-user-glasses.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-user.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-users-alt.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-users.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-utilities.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-vcard.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-video.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-voice.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wall-plug.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wallet.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wand.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-war.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-weight.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-width.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wifi.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-window-popin.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-window-sizes.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-windows.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wine-glass.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wrench.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-wrong.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-yen-bag.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-zip.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-zom-out.svg (100%) rename src/Umbraco.Web.UI.Client/{libs/store => src/core/stores}/icon/svgs/icon-zoom-in.svg (100%) create mode 100644 src/Umbraco.Web.UI.Client/utils/move-libs.js delete mode 100644 src/Umbraco.Web.UI.Client/utils/rollup.config.js rename src/Umbraco.Web.UI.Client/{libs/test-utils/chai.ts => utils/test-utils.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml index 9f2304afbc..5a1a10a376 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml @@ -34,6 +34,7 @@ jobs: - run: npm ci --no-audit --no-fund --prefer-offline - run: npm run lint - run: npm run build + # - run: npm run build:libs - run: sudo npx playwright install-deps - run: npm test - name: Upload Code Coverage reports diff --git a/src/Umbraco.Web.UI.Client/.storybook/preview.js b/src/Umbraco.Web.UI.Client/.storybook/preview.js index ae238d9981..3835dc98b1 100644 --- a/src/Umbraco.Web.UI.Client/.storybook/preview.js +++ b/src/Umbraco.Web.UI.Client/.storybook/preview.js @@ -1,5 +1,5 @@ import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '../libs/css/custom-properties.css'; +import '../src/core/css/custom-properties.css'; import '@umbraco-ui/uui'; import '@umbraco-ui/uui-modal'; @@ -21,7 +21,7 @@ import { UmbIconStore } from '../libs/store/icon/icon.store'; import { onUnhandledRequest } from '../src/core/mocks/browser'; import { handlers } from '../src/core/mocks/browser-handlers'; import { UMB_MODAL_CONTEXT_TOKEN, UmbModalContext } from '../libs/modal'; -import { UmbLitElement } from '../libs/element'; +import { UmbLitElement } from '../src/core/umb-element'; import { umbExtensionsRegistry } from '../libs/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts index 2e780045be..956ebae221 100644 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts +++ b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts @@ -1,5 +1,5 @@ // TODO: could these be renamed as login providers? -import type { ManifestExternalLoginProvider } from '@umbraco-cms/models'; +import type { ManifestExternalLoginProvider } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts index c86d00fb89..ac1d861af1 100644 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts +++ b/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts @@ -1,9 +1,9 @@ -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { manifests as externalLoginProviders } from './external-login-providers/manifests'; import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '@umbraco-cms/css'; +import '@umbraco-cms/backoffice/css'; import '@umbraco-ui/uui'; import './login.element'; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts index 4908a6342e..d633c813aa 100644 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts +++ b/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts @@ -1,5 +1,5 @@ import { expect, fixture, html } from '@open-wc/testing'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; import UmbLogin from './login.element'; describe('UmbLogin', () => { diff --git a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts index 1de975d7c8..cc6845ff00 100644 --- a/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/installer.spec.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; -import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { expect, test } from './test'; test.describe('installer tests', () => { diff --git a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts index 646f1811b5..07fcffe006 100644 --- a/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts +++ b/src/Umbraco.Web.UI.Client/e2e/upgrader.spec.ts @@ -1,6 +1,6 @@ import { rest } from 'msw'; -import { umbracoPath } from '@umbraco-cms/utils'; -import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backend-api'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { ProblemDetailsModel, RuntimeLevelModel, ServerStatusResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { expect, test } from './test'; test.describe('upgrader tests', () => { diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/backend-api/rollup.config.js deleted file mode 100644 index 44c6c08405..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import config from '../../utils/rollup.config.js'; -export default [ - ...config, -]; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts index fe96b6e817..2d30084d7f 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '../context-token'; import { UmbContextConsumer } from './context-consumer'; import { UmbContextCallback } from './context-request.event'; -import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/controller'; +import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; export class UmbContextConsumerController extends UmbContextConsumer diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts index 621ae25a1a..481a916122 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, defineCE } from '@open-wc/testing'; import { UmbContextConsumer } from '../consume/context-consumer'; import { UmbContextProviderController } from './context-provider.controller'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; class MyClass { prop = 'value from provider'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts index 9a54497be8..54c9e2e167 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts @@ -1,6 +1,6 @@ import { UmbContextToken } from '../context-token'; import { UmbContextProvider } from './context-provider'; -import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/controller'; +import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; export class UmbContextProviderController extends UmbContextProvider diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/context-api/rollup.config.js deleted file mode 100644 index 44c6c08405..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/context-api/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import config from '../../utils/rollup.config.js'; -export default [ - ...config, -]; diff --git a/src/Umbraco.Web.UI.Client/libs/controller/controller-host.mixin.ts b/src/Umbraco.Web.UI.Client/libs/controller/controller-host.mixin.ts index 6c0342846b..7c7b2a7913 100644 --- a/src/Umbraco.Web.UI.Client/libs/controller/controller-host.mixin.ts +++ b/src/Umbraco.Web.UI.Client/libs/controller/controller-host.mixin.ts @@ -1,5 +1,5 @@ import { UmbControllerInterface } from './controller.interface'; -import type { HTMLElementConstructor } from '@umbraco-cms/models'; +import type { HTMLElementConstructor } from '@umbraco-cms/backoffice/models'; export declare class UmbControllerHostInterface extends HTMLElement { //#controllers:UmbController[]; diff --git a/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts b/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts index 3d16f3a207..445af3b6d3 100644 --- a/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts @@ -1,7 +1,7 @@ import { expect } from '@open-wc/testing'; import { customElement } from 'lit/decorators.js'; import { UmbControllerHostInterface, UmbControllerHostMixin } from './controller-host.mixin'; -import { UmbContextProviderController } from '@umbraco-cms/context-api'; +import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; class MyClass { prop = 'value from provider'; diff --git a/src/Umbraco.Web.UI.Client/libs/controller/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/controller/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/controller/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/element/element.mixin.ts b/src/Umbraco.Web.UI.Client/libs/element/element.mixin.ts index 39748f9f26..aa81248a25 100644 --- a/src/Umbraco.Web.UI.Client/libs/element/element.mixin.ts +++ b/src/Umbraco.Web.UI.Client/libs/element/element.mixin.ts @@ -1,15 +1,15 @@ import { Observable } from 'rxjs'; -import type { HTMLElementConstructor } from '@umbraco-cms/models'; +import type { HTMLElementConstructor } from '@umbraco-cms/backoffice/models'; -import { UmbControllerHostInterface, UmbControllerHostMixin } from '@umbraco-cms/controller'; +import { UmbControllerHostInterface, UmbControllerHostMixin } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken, UmbContextCallback, UmbContextConsumerController, UmbContextProviderController, -} from '@umbraco-cms/context-api'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; +} from '@umbraco-cms/backoffice/context-api'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; // TODO: can we use this aliases to generate the key of this type interface ResolvedContexts { diff --git a/src/Umbraco.Web.UI.Client/libs/element/index.module.ts b/src/Umbraco.Web.UI.Client/libs/element/index.module.ts deleted file mode 100644 index 18d6126ccc..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/element/index.module.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './element.mixin'; diff --git a/src/Umbraco.Web.UI.Client/libs/element/index.ts b/src/Umbraco.Web.UI.Client/libs/element/index.ts index 4048b79c02..18d6126ccc 100644 --- a/src/Umbraco.Web.UI.Client/libs/element/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/element/index.ts @@ -1,2 +1 @@ export * from './element.mixin'; -export * from './lit-element.element'; diff --git a/src/Umbraco.Web.UI.Client/libs/element/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/element/rollup.config.js deleted file mode 100644 index d3af596f5f..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/element/rollup.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -config[0].input = 'index.module.ts'; -config[1].input = 'index.module.ts'; - -export default config; 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 70c4a25985..939ba6712a 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/action.ts @@ -1,6 +1,6 @@ -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/extensions-api'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; export interface UmbAction { host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts index ac5995ea1f..bb2ff47436 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/copy/copy.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbCopyEntityAction }> extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts index e6d9deb818..91b855ca74 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts @@ -1,8 +1,8 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../src/backoffice/shared/modals/confirm'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; export class UmbDeleteEntityAction< T extends { delete(unique: string): Promise; requestItems(uniques: Array): any } diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts index 79c9a20dd1..284e33aba4 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/move/move.action.ts @@ -1,5 +1,5 @@ -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbMoveEntityAction }> extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/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 index 002e0b6613..ec055860c2 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/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 @@ -1,5 +1,5 @@ -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbSortChildrenOfEntityAction< T extends { sortChildrenOf(): Promise } diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts index 36ade2fef0..95888d0ec9 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts @@ -1,8 +1,8 @@ import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../src/backoffice/shared/modals/confirm'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; export class UmbTrashEntityAction< T extends { trash(unique: Array): Promise; requestTreeItems(uniques: Array): any } 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 17b010128b..2e050d0eaf 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,5 +1,5 @@ import { UmbAction, UmbActionBase } from './action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export interface UmbEntityAction extends UmbAction { unique: string; 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 a75ae2e498..16e084927b 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,5 @@ import { UmbAction, UmbActionBase } from './action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export interface UmbEntityBulkAction extends UmbAction { selection: Array; 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 deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/events/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-class.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-class.function.ts index 8057ab4b62..be6781fe16 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-class.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-class.function.ts @@ -1,11 +1,14 @@ -import type { ClassConstructor, ManifestClass } from '../models'; import { hasDefaultExport } from './has-default-export.function'; import { isManifestClassConstructorType } from './is-manifest-class-instance-type.function'; import { loadExtension } from './load-extension.function'; +import type { ClassConstructor } from '@umbraco-cms/backoffice/models'; +import type { ManifestClass } from '@umbraco-cms/backoffice/extensions-registry'; //TODO: Write tests for this method: -export async function createExtensionClass(manifest: ManifestClass, constructorArguments: unknown[]): Promise { - +export async function createExtensionClass( + manifest: ManifestClass, + constructorArguments: unknown[] +): Promise { const js = await loadExtension(manifest); if (isManifestClassConstructorType(manifest)) { @@ -17,11 +20,17 @@ export async function createExtensionClass(manifest: ManifestClass, return new js.default(...constructorArguments); } - console.error('-- Extension did not succeed creating an class instance, missing a default export of the served JavaScript file', manifest); + console.error( + '-- Extension did not succeed creating an class instance, missing a default export of the served JavaScript file', + manifest + ); return undefined; } - console.error('-- Extension did not succeed creating an class instance, missing a default export or `class` in the manifest.', manifest); + console.error( + '-- Extension did not succeed creating an class instance, missing a default export or `class` in the manifest.', + manifest + ); return undefined; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts index f6e1966c0d..4da597bcb4 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts @@ -1,10 +1,10 @@ -import type { HTMLElementConstructor, ManifestElement } from '../models'; import { hasDefaultExport } from './has-default-export.function'; import { isManifestElementNameType } from './is-manifest-element-name-type.function'; import { loadExtension } from './load-extension.function'; +import type { HTMLElementConstructor } from '@umbraco-cms/backoffice/models'; +import type { ManifestElement } from '@umbraco-cms/backoffice/extensions-registry'; export async function createExtensionElement(manifest: ManifestElement): Promise { - //TODO: Write tests for these extension options: const js = await loadExtension(manifest); @@ -20,12 +20,18 @@ export async function createExtensionElement(manifest: ManifestElement): Promise return new js.default(); } - console.error('-- Extension did not succeed creating an element, missing a default export of the served JavaScript file', manifest); + console.error( + '-- Extension did not succeed creating an element, missing a default export of the served JavaScript file', + manifest + ); // If some JS was loaded and it did not at least contain a default export, then we are safe to assume that it executed its side effects and does not need to be returned return undefined; } - console.error('-- Extension did not succeed creating an element, missing a default export or `elementName` in the manifest.', manifest); + console.error( + '-- Extension did not succeed creating an element, missing a default export or `elementName` in the manifest.', + manifest + ); return undefined; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-class-instance-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-class-instance-type.function.ts index a66cd5de85..1683d083a2 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-class-instance-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-class-instance-type.function.ts @@ -1,7 +1,5 @@ -import type { ManifestClass, ManifestClassWithClassConstructor } from '../models'; +import type { ManifestClass, ManifestClassWithClassConstructor } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestClassConstructorType(manifest: unknown): manifest is ManifestClassWithClassConstructor { - return ( - typeof manifest === 'object' && manifest !== null && (manifest as ManifestClass).class !== undefined - ); + return typeof manifest === 'object' && manifest !== null && (manifest as ManifestClass).class !== undefined; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-classable-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-classable-type.function.ts index e6f247b3f4..1b80efcbc7 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-classable-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-classable-type.function.ts @@ -1,7 +1,7 @@ import { isManifestJSType } from './is-manifest-js-type.function'; import { isManifestLoaderType } from './is-manifest-loader-type.function'; import { isManifestClassConstructorType } from './is-manifest-class-instance-type.function'; -import type { ManifestBase, ManifestClass } from '@umbraco-cms/extensions-registry'; +import type { ManifestBase, ManifestClass } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestClassableType(manifest: ManifestBase): manifest is ManifestClass { return isManifestClassConstructorType(manifest) || isManifestLoaderType(manifest) || isManifestJSType(manifest); diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-element-name-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-element-name-type.function.ts index a5176b90c8..0a1ec48892 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-element-name-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-element-name-type.function.ts @@ -1,7 +1,5 @@ -import type { ManifestElement, ManifestElementWithElementName } from '../models'; +import type { ManifestElement, ManifestElementWithElementName } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestElementNameType(manifest: unknown): manifest is ManifestElementWithElementName { - return ( - typeof manifest === 'object' && manifest !== null && (manifest as ManifestElement).elementName !== undefined - ); + return typeof manifest === 'object' && manifest !== null && (manifest as ManifestElement).elementName !== undefined; } diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-elementable-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-elementable-type.function.ts index 25d9c8f478..c794099245 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-elementable-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-elementable-type.function.ts @@ -1,7 +1,7 @@ import { isManifestElementNameType } from './is-manifest-element-name-type.function'; import { isManifestJSType } from './is-manifest-js-type.function'; import { isManifestLoaderType } from './is-manifest-loader-type.function'; -import type { ManifestElement, ManifestBase } from '@umbraco-cms/extensions-registry'; +import type { ManifestElement, ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestElementableType(manifest: ManifestBase): manifest is ManifestElement { return isManifestElementNameType(manifest) || isManifestLoaderType(manifest) || isManifestJSType(manifest); 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 24962b7ec0..9d4cfbf7b8 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,5 +1,5 @@ import { ManifestJSType } from './load-extension.function'; -import type { ManifestBase } from '@umbraco-cms/extensions-registry'; +import type { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestJSType(manifest: ManifestBase | unknown): manifest is ManifestJSType { return (manifest as ManifestJSType).js !== undefined; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-loader-type.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-loader-type.function.ts index b2a3ba7dbf..1f018b2d6f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-loader-type.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/is-manifest-loader-type.function.ts @@ -1,5 +1,5 @@ import { ManifestLoaderType } from './load-extension.function'; -import type { ManifestBase } from '@umbraco-cms/extensions-registry'; +import type { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; export function isManifestLoaderType(manifest: ManifestBase): manifest is ManifestLoaderType { return typeof (manifest as ManifestLoaderType).loader === 'function'; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/load-extension.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/load-extension.function.ts index 516a5d6d68..7e0c0ebda3 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/load-extension.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/load-extension.function.ts @@ -1,6 +1,6 @@ -import type { ManifestElement } from '../models'; import { isManifestJSType } from './is-manifest-js-type.function'; import { isManifestLoaderType } from './is-manifest-loader-type.function'; +import type { ManifestElement } from '@umbraco-cms/backoffice/extensions-registry'; export type ManifestLoaderType = ManifestElement & { loader: () => Promise }; export type ManifestJSType = ManifestElement & { js: string }; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts index 4fe94b74b5..d9d2047d24 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.test.ts @@ -1,6 +1,6 @@ import { expect } from '@open-wc/testing'; -import type { ManifestKind, ManifestTypes } from '../../models'; import { UmbExtensionRegistry } from './extension.registry'; +import type { ManifestKind, ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; describe('UmbExtensionRegistry', () => { let extensionRegistry: UmbExtensionRegistry; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index b708ab606f..5eee6b93ff 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -5,8 +5,8 @@ import type { ManifestBase, SpecificManifestTypeOrManifestBase, ManifestKind, -} from '../../models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +} from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; function extensionArrayMemoization( previousValue: Array, diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts index f602a5d9cc..a676b15c1b 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/umb-lifecycle.interface.ts @@ -1,5 +1,5 @@ import type { UmbExtensionRegistry } from './registry/extension.registry'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export type UmbEntrypointOnInit = (host: UmbControllerHostInterface, extensionRegistry: UmbExtensionRegistry) => void; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts index 368dee2996..e1e051f5f8 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/entry-point-extension-initializer.ts @@ -1,6 +1,6 @@ import type { ManifestEntrypoint } from './models'; -import { hasInitExport, loadExtension, UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { hasInitExport, loadExtension, UmbExtensionRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbEntryPointExtensionInitializer { #rootHost; 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 0232ed944e..871567b74d 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -24,7 +24,7 @@ import type { ManifestWorkspaceViewCollection } from './workspace-view-collectio import type { ManifestRepository } from './repository.models'; import type { ManifestModal } from './modal.models'; import type { ManifestStore, ManifestTreeStore } from './store.models'; -import type { ClassConstructor } from '@umbraco-cms/models'; +import type { ClassConstructor } from '@umbraco-cms/backoffice/models'; export * from './collection-view.models'; export * from './dashboard-collection.models'; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/extensions-registry/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts index 35a156c466..abeb6b9fda 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts @@ -1,5 +1,5 @@ import type { ManifestClass } from './models'; -import { UmbStoreBase, UmbTreeStoreBase } from '@umbraco-cms/store'; +import { UmbStoreBase, UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; export interface ManifestStore extends ManifestClass { type: 'store'; diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts index b0f83e99f7..d4eea123a9 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts @@ -1,5 +1,5 @@ import type { ManifestBase } from './models'; -import type { ClassConstructor } from '@umbraco-cms/models'; +import type { ClassConstructor } from '@umbraco-cms/backoffice/models'; export interface ManifestTree extends ManifestBase { type: 'tree'; 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 2ba63ea647..d55d4f4f89 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,7 +1,7 @@ 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'; +import { UmbWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { ClassConstructor } from '@umbraco-cms/backoffice/models'; export interface ManifestWorkspaceAction extends ManifestElement { type: 'workspaceAction'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/index.ts index 5882bda117..3c252e27f2 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/index.ts @@ -1,5 +1,4 @@ export * from './modal.context'; export * from './modal-handler'; -export * from './elements/modal-element.element'; -export * from './elements/modal-element-picker-base'; export * from './token/modal-token'; +export * from './modal.interfaces'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts index bf46856f13..ec77d83c3e 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts @@ -5,10 +5,10 @@ import { v4 as uuidv4 } from 'uuid'; import { BehaviorSubject } from 'rxjs'; import { UmbModalConfig, UmbModalType } from './modal.context'; import { UmbModalToken } from './token/modal-token'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ManifestModal } from '@umbraco-cms/extensions-registry'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; /** * Type which omits the real submit method, and replaces it with a submit method which accepts an optional argument depending on the generic type. diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts index aacb0f1646..0b54fbf806 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts @@ -6,8 +6,8 @@ import { BehaviorSubject } from 'rxjs'; import type { UUIModalDialogElement } from '@umbraco-ui/uui-modal-dialog'; import { UmbModalHandler, UmbModalHandlerClass } from './modal-handler'; import type { UmbModalToken } from './token/modal-token'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export type UmbModalType = 'dialog' | 'sidebar'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal.interfaces.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal.interfaces.ts new file mode 100644 index 0000000000..86ad653a1b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal.interfaces.ts @@ -0,0 +1,9 @@ +export interface UmbPickerModalData { + multiple: boolean; + selection: Array; + filter?: (language: T) => boolean; +} + +export interface UmbPickerModalResult { + selection: Array; +} diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 9a0da3170f..0b8f2907f5 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -1,18 +1,16 @@ -import { +import type { ContentTreeItemResponseModel, DictionaryItemTranslationModel, EntityTreeItemResponseModel, FolderTreeItemResponseModel, PackageManifestResponseModel, ProblemDetailsModel, -} from '@umbraco-cms/backend-api'; - -// Extension Manifests -export * from '@umbraco-cms/extensions-registry'; +} from '@umbraco-cms/backoffice/backend-api'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export type HTMLElementConstructor = new (...args: any[]) => T; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type ClassConstructor = new (...args: any[]) => T; // Users diff --git a/src/Umbraco.Web.UI.Client/libs/models/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/models/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/models/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/notification/notification.context.ts b/src/Umbraco.Web.UI.Client/libs/notification/notification.context.ts index e3aad5ccd4..1cf55a0525 100644 --- a/src/Umbraco.Web.UI.Client/libs/notification/notification.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/notification/notification.context.ts @@ -1,6 +1,6 @@ import { BehaviorSubject } from 'rxjs'; import { UmbNotificationHandler } from './notification-handler'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; /** * The default data of notifications diff --git a/src/Umbraco.Web.UI.Client/libs/notification/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/notification/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/notification/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/create-observable-part.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/create-observable-part.function.ts index 5dd2e2f085..c795965a84 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/create-observable-part.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/create-observable-part.function.ts @@ -1,5 +1,7 @@ import { distinctUntilChanged, map, Observable, shareReplay } from 'rxjs'; -import { MappingFunction, MemoizationFunction, defaultMemoization } from './deep-state'; +import { MemoizationFunction } from './memoization-function'; +import { MappingFunction } from './mapping-function'; +import { defaultMemoization } from './default-memoization'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts index ad3bf66ca0..201ab479c8 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts @@ -1,20 +1,9 @@ import { BehaviorSubject } from 'rxjs'; import { createObservablePart } from './create-observable-part.function'; import { deepFreeze } from './deep-freeze.function'; - -export function naiveObjectComparison(objOne: any, objTwo: any): boolean { - return JSON.stringify(objOne) === JSON.stringify(objTwo); -} - -export type MappingFunction = (mappable: T) => R; -export type MemoizationFunction = (previousResult: R, currentResult: R) => boolean; - -export function defaultMemoization(previousValue: any, currentValue: any): boolean { - if (typeof previousValue === 'object' && typeof currentValue === 'object') { - return naiveObjectComparison(previousValue, currentValue); - } - return previousValue === currentValue; -} +import type { MappingFunction } from './mapping-function'; +import type { MemoizationFunction } from './memoization-function'; +import { naiveObjectComparison } from './naive-object-comparison'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/default-memoization.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/default-memoization.ts new file mode 100644 index 0000000000..f8811febad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/default-memoization.ts @@ -0,0 +1,8 @@ +import { naiveObjectComparison } from './naive-object-comparison'; + +export function defaultMemoization(previousValue: any, currentValue: any): boolean { + if (typeof previousValue === 'object' && typeof currentValue === 'object') { + return naiveObjectComparison(previousValue, currentValue); + } + return previousValue === currentValue; +} diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/mapping-function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/mapping-function.ts new file mode 100644 index 0000000000..1b843ecff4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/mapping-function.ts @@ -0,0 +1 @@ +export type MappingFunction = (mappable: T) => R; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/memoization-function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/memoization-function.ts new file mode 100644 index 0000000000..1d43da86ea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/memoization-function.ts @@ -0,0 +1 @@ +export type MemoizationFunction = (previousResult: R, currentResult: R) => boolean; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/naive-object-comparison.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/naive-object-comparison.ts new file mode 100644 index 0000000000..4afbe928cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/naive-object-comparison.ts @@ -0,0 +1,3 @@ +export function naiveObjectComparison(objOne: any, objTwo: any): boolean { + return JSON.stringify(objOne) === JSON.stringify(objTwo); +} diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts index 98b1575241..2975d41555 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts @@ -1,6 +1,6 @@ import { Observable } from 'rxjs'; import { UmbObserver } from './observer'; -import { UmbControllerInterface, UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbControllerInterface, UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbObserverController extends UmbObserver implements UmbControllerInterface { _alias?: string; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/observable-api/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/package.json b/src/Umbraco.Web.UI.Client/libs/package.json new file mode 100644 index 0000000000..0064a56274 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/package.json @@ -0,0 +1,23 @@ +{ + "name": "@umbraco-cms/backoffice", + "version": "13.0.0-alpha.0", + "license": "MIT", + "repository": { + "url": "https://github.com/umbraco/Umbraco.CMS.Backoffice", + "type": "git" + }, + "bugs": { + "url": "https://github.com/umbraco/Umbraco.CMS.Backoffice/issues" + }, + "author": { + "name": "Umbraco A/S", + "email": "backoffice@umbraco.com", + "url": "https://umbraco.com" + }, + "type": "module", + "peerDependencies": { + "@types/uuid": "^9.0.1", + "@umbraco-ui/uui": "^1.2.0-rc.0", + "rxjs": "^7.8.0" + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts index 61b6a23c04..afa798d5e8 100644 --- a/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/property-editor/index.ts @@ -1,4 +1,4 @@ -import { DataTypePropertyPresentationModel } from '@umbraco-cms/backend-api'; +import { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbPropertyEditorElement extends HTMLElement { value: unknown; diff --git a/src/Umbraco.Web.UI.Client/libs/property-editor/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/property-editor/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/property-editor/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index ea842ef36f..11862c979b 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -1,4 +1,4 @@ -import type { ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import type { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbDetailRepository { createScaffold(parentKey: string | null): Promise<{ diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts index 7715d5a61e..fe06b8d271 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts @@ -1,4 +1,4 @@ -import type { DataSourceResponse } from '@umbraco-cms/models'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; export interface RepositoryDetailDataSource { createScaffold(parentKey: string | null): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index 7e51e5a566..639237d65b 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,5 +1,5 @@ -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; export interface RepositoryTreeDataSource { getRootItems(): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/repository/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index b702adaaec..a1de9f88ba 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -1,5 +1,5 @@ import type { Observable } from 'rxjs'; -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbTreeRepository { requestRootTreeItems: () => Promise<{ diff --git a/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts b/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts index 26c8a481a2..c2b3acd578 100644 --- a/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts @@ -3,11 +3,11 @@ import { UmbNotificationOptions, UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN, -} from '@umbraco-cms/notification'; -import { ApiError, CancelablePromise, ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/notification'; +import { ApiError, CancelablePromise, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; export class UmbResourceController extends UmbController { #promise: Promise; @@ -56,9 +56,9 @@ export class UmbResourceController extends UmbController { */ static async tryExecute(promise: Promise): Promise> { try { - return {data: await promise}; + return { data: await promise }; } catch (e) { - return {error: UmbResourceController.toProblemDetailsModel(e)}; + return { error: UmbResourceController.toProblemDetailsModel(e) }; } } @@ -67,15 +67,16 @@ export class UmbResourceController extends UmbController { * If the executor function throws an error, then show the details in a notification. */ async tryExecuteAndNotify(options?: UmbNotificationOptions): Promise> { - const {data, error} = await UmbResourceController.tryExecute(this.#promise); + const { data, error } = await UmbResourceController.tryExecute(this.#promise); if (error) { if (this.#notificationContext) { this.#notificationContext?.peek('danger', { data: { headline: error.title ?? 'Server Error', - message: error.detail ?? 'Something went wrong' - }, ...options + message: error.detail ?? 'Something went wrong', + }, + ...options, }); } else { console.group('UmbResourceController'); @@ -84,7 +85,7 @@ export class UmbResourceController extends UmbController { } } - return {data, error}; + return { data, error }; } /** diff --git a/src/Umbraco.Web.UI.Client/libs/resources/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/resources/rollup.config.js deleted file mode 100644 index 44c6c08405..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/resources/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import config from '../../utils/rollup.config.js'; -export default [ - ...config, -]; diff --git a/src/Umbraco.Web.UI.Client/libs/resources/tryExecuteAndNotify.function.ts b/src/Umbraco.Web.UI.Client/libs/resources/tryExecuteAndNotify.function.ts index 8a280ec876..b9b4222d59 100644 --- a/src/Umbraco.Web.UI.Client/libs/resources/tryExecuteAndNotify.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/resources/tryExecuteAndNotify.function.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { UmbResourceController } from './resource.controller'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import type { UmbNotificationOptions } from '@umbraco-cms/notification'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import type { UmbNotificationOptions } from '@umbraco-cms/backoffice/notification'; export function tryExecuteAndNotify( host: UmbControllerHostInterface, diff --git a/src/Umbraco.Web.UI.Client/libs/store/index.ts b/src/Umbraco.Web.UI.Client/libs/store/index.ts index fbda429a4b..865fdf2b5a 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/index.ts @@ -1,4 +1,3 @@ -export * from './icon/icon.store'; export * from './store'; export * from './store-base'; export * from './tree-store-base'; diff --git a/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js deleted file mode 100644 index 35421e5ce7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/store/rollup.config.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from '../../utils/rollup.config.js'; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts index 0c640fe58e..b377a59391 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts @@ -1,5 +1,5 @@ -import { UmbContextProviderController } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbStoreBase { constructor(protected _host: UmbControllerHostInterface, public readonly storeAlias: string) { diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts index 0f199a1f3b..7b2f35893e 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts @@ -1,6 +1,6 @@ -import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/libs/test-utils/index.ts b/src/Umbraco.Web.UI.Client/libs/test-utils/index.ts deleted file mode 100644 index 0d2296cc1c..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/test-utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './chai'; diff --git a/src/Umbraco.Web.UI.Client/libs/events/change.event.ts b/src/Umbraco.Web.UI.Client/libs/umb-events/change.event.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/events/change.event.ts rename to src/Umbraco.Web.UI.Client/libs/umb-events/change.event.ts diff --git a/src/Umbraco.Web.UI.Client/libs/events/delete.event.ts b/src/Umbraco.Web.UI.Client/libs/umb-events/delete.event.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/events/delete.event.ts rename to src/Umbraco.Web.UI.Client/libs/umb-events/delete.event.ts diff --git a/src/Umbraco.Web.UI.Client/libs/events/executed.event.ts b/src/Umbraco.Web.UI.Client/libs/umb-events/executed.event.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/events/executed.event.ts rename to src/Umbraco.Web.UI.Client/libs/umb-events/executed.event.ts diff --git a/src/Umbraco.Web.UI.Client/libs/events/index.ts b/src/Umbraco.Web.UI.Client/libs/umb-events/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/events/index.ts rename to src/Umbraco.Web.UI.Client/libs/umb-events/index.ts diff --git a/src/Umbraco.Web.UI.Client/libs/events/input.event.ts b/src/Umbraco.Web.UI.Client/libs/umb-events/input.event.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/events/input.event.ts rename to src/Umbraco.Web.UI.Client/libs/umb-events/input.event.ts diff --git a/src/Umbraco.Web.UI.Client/libs/utils/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/utils/rollup.config.js deleted file mode 100644 index 44c6c08405..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/utils/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import config from '../../utils/rollup.config.js'; -export default [ - ...config, -]; diff --git a/src/Umbraco.Web.UI.Client/libs/utils/utils.test.ts b/src/Umbraco.Web.UI.Client/libs/utils/utils.test.ts index 47950df551..36bbe2e2a0 100644 --- a/src/Umbraco.Web.UI.Client/libs/utils/utils.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/utils/utils.test.ts @@ -1,7 +1,7 @@ import { expect } from '@open-wc/testing'; import { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types'; import { getLookAndColorFromUserStatus } from './utils'; -import type { UserStatus } from '@umbraco-cms/models'; +import type { UserStatus } from '@umbraco-cms/backoffice/models'; describe('UmbUserExtensions', () => { it('returns correct look and color from a status string', () => { diff --git a/src/Umbraco.Web.UI.Client/libs/utils/utils.ts b/src/Umbraco.Web.UI.Client/libs/utils/utils.ts index 15c6ed72c4..76da7bba7c 100644 --- a/src/Umbraco.Web.UI.Client/libs/utils/utils.ts +++ b/src/Umbraco.Web.UI.Client/libs/utils/utils.ts @@ -1,5 +1,5 @@ import { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types'; -import type { UserStatus } from '@umbraco-cms/models'; +import type { UserStatus } from '@umbraco-cms/backoffice/models'; export const getLookAndColorFromUserStatus = (status: UserStatus): { look: InterfaceLook; color: InterfaceColor } => { switch ((status || '').toLowerCase()) { 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 5429581259..38dd1744eb 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,6 +1,6 @@ import { UmbWorkspaceContextInterface } from '../../../../src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; import { UmbWorkspaceActionBase } from '../workspace-action-base'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; // TODO: add interface for repo/partial repo/save-repo export class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase { 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 f717762b18..cf7e2f97b0 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,5 +1,5 @@ -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; export interface UmbWorkspaceAction { host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js b/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js deleted file mode 100644 index 44c6c08405..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/workspace/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import config from '../../utils/rollup.config.js'; -export default [ - ...config, -]; diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 4658635c7f..c44eae8127 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -28,8 +28,9 @@ "scripts": { "dev": "vite", "build": "tsc && vite build --mode staging", + "build:libs": "rollup -c rollup-libs.config.js && node utils/move-libs.js", "build:for:static": "tsc && vite build", - "build:for:cms": "tsc && vite build -c vite.cms.config.ts && node utils/build-libs.js", + "build:for:cms": "tsc && vite build -c vite.cms.config.ts && npm run build:libs", "build:for:cms:watch": "vite build -c vite.cms.config.ts --watch", "preview": "vite preview --open", "test": "web-test-runner --coverage", diff --git a/src/Umbraco.Web.UI.Client/rollup-libs.config.js b/src/Umbraco.Web.UI.Client/rollup-libs.config.js new file mode 100644 index 0000000000..18f16539aa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/rollup-libs.config.js @@ -0,0 +1,33 @@ +import esbuild from 'rollup-plugin-esbuild'; +import pluginJson from '@rollup/plugin-json'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import dts from 'rollup-plugin-dts'; +import { readdirSync, lstatSync } from 'fs'; + +const libs = readdirSync('./libs').filter(lib => lstatSync(`libs/${lib}`).isDirectory()); +const outputDir = './dist/libs'; + +export default libs.map(lib => { + /** @type {import('rollup').RollupOptions[]} */ + return [ + { + input: `./libs/${lib}/index.ts`, + external: [/^@umbraco-cms\//], + output: { + file: `${outputDir}/${lib}.js`, + format: 'es', + sourcemap: true, + }, + plugins: [nodeResolve(), pluginJson(), esbuild()] + }, + { + input: `./libs/${lib}/index.ts`, + external: [/^@umbraco/, /^lit/, /^rxjs/, /^uuid/], + output: { + file: `${outputDir}/${lib}.d.ts`, + format: 'es' + }, + plugins: [dts({ respectExternal: true })], + } + ]; +}).flat(); diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 10fd0f49e3..5f71faa122 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -1,5 +1,5 @@ import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '@umbraco-cms/css'; +import './core/css/custom-properties.css'; // TODO: remove these imports when they are part of UUI import '@umbraco-ui/uui-modal'; @@ -10,17 +10,18 @@ import 'element-internals-polyfill'; import './core/router/router-slot.element'; import './core/notification/layouts/default'; +import './core/modal/modal-element.element'; import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import type { Guard, IRoute } from '@umbraco-cms/router'; -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 { umbDebugContextEventType } from '@umbraco-cms/context-api'; +import type { Guard, IRoute } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbIconStore } from './core/stores/icon/icon.store'; +import { umbDebugContextEventType } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-app') export class UmbApp extends UmbLitElement { 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 b719c0f8eb..9deb5efb8e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -18,10 +18,11 @@ import { UmbAppLanguageContext, } from './settings/languages/app-language-select/app-language.context'; import { UmbServerExtensionController } from './packages/repository/server-extension.controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { createExtensionClass, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { createExtensionClass, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbEntryPointExtensionInitializer } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; // Domains import './settings'; @@ -34,7 +35,6 @@ import './packages'; import './search'; import './templating'; import './shared'; -import { UmbEntryPointExtensionInitializer } from '@umbraco-cms/extensions-registry'; @defineElement('umb-backoffice') export class UmbBackofficeElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts index 6ebc283a4c..e059b11888 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard } from '@umbraco-cms/models'; +import type { ManifestDashboard } from '@umbraco-cms/backoffice/extensions-registry'; const dashboards: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 45e447f840..22ebfabae6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -3,10 +3,10 @@ import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; import { UUIButtonState, UUIPaginationElement, UUIPaginationEvent } from '@umbraco-ui/uui'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { RedirectManagementResource, RedirectStatusModel, RedirectUrlResponseModel } from '@umbraco-cms/backend-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { RedirectManagementResource, RedirectStatusModel, RedirectUrlResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-redirect-management') export class UmbDashboardRedirectManagementElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.test.ts index 2d960a1757..48709103be 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbDashboardRedirectManagementElement } from './dashboard-redirect-management.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbDashboardRedirectManagement', () => { let element: UmbDashboardRedirectManagementElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index c847dbb2cb..febb564943 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -1,8 +1,8 @@ -import type { DocumentBlueprintDetails } from '@umbraco-cms/models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { DocumentBlueprintDetails } from '@umbraco-cms/backoffice/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts index 08aa3e6b3e..fb1968d7a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( 'UmbDocumentBlueprintTreeStore' 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 4b80c03dbb..d4bf4ceeaa 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 @@ -2,7 +2,7 @@ import { UmbDocumentBlueprintStore } from './document-blueprint.detail.store'; import { UmbDocumentBlueprintTreeStore } from './document-blueprint.tree.store'; import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; -import type { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import type { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const DOCUMENT_BLUEPRINT_STORE_ALIAS = 'Umb.Store.DocumentBlueprint'; export const DOCUMENT_BLUEPRINT_TREE_STORE_ALIAS = 'Umb.Store.DocumentBlueprintTree'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts index fba786754b..6a91c95697 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/manifests.ts index 1391409e25..50af2c386e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/workspace/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts index 1e24b06037..95e1e8cf94 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index c515f6007f..bf146b2944 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -4,8 +4,8 @@ import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; -import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-allowed-document-types-modal') export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts index 940cbc3074..f4c5820dd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts @@ -1,4 +1,4 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbAllowedDocumentTypesModalData { key: string | null; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts index f6be3880fb..e0e2b4d05f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index c5a1a610d5..2d7269184d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -3,12 +3,12 @@ import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.s import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = DocumentTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index b1ff1f9bea..80d83734c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -1,8 +1,8 @@ -import { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts index 0f1e5b38ca..7cfdee24df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/manifests.ts index 5a6bf52874..567468606f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/manifests.ts @@ -1,7 +1,7 @@ import { UmbDocumentTypeRepository } from './document-type.repository'; import { UmbDocumentTypeStore } from './document-type.store'; import { UmbDocumentTypeTreeStore } from './document-type.tree.store'; -import { ManifestRepository, ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestRepository, ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const DOCUMENT_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.DocumentType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 62bdb7cf4a..358910aabc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -1,7 +1,7 @@ -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document Type that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 8e4b1fefeb..8abb552356 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -1,7 +1,7 @@ import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; -import { ProblemDetailsModel, DocumentTypeResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel, DocumentTypeResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts index 1a2876f55f..fbe7421b2c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts index 5192564679..57d9095924 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -4,9 +4,9 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; -import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @customElement('umb-document-type-workspace-edit') export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { 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 1ec5daf8fe..30c185de69 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 @@ -1,9 +1,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ObjectState } from '@umbraco-cms/observable-api'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; type EntityType = DocumentTypeResponseModel; export class UmbWorkspaceDocumentTypeContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 8bcd5f7aff..efdaab0cdd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -3,8 +3,8 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; import { UmbDocumentTypeWorkspaceEditElement } from './document-type-workspace-edit.element'; -import { IRoutingInfo } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-document-type-workspace') export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { 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 c2f912764b..b596be3178 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,5 +1,9 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 2b97b194c8..d4007d6ccc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -2,8 +2,8 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-design') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts index 46a81915a4..85d3376119 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/manifests.ts @@ -1,4 +1,4 @@ -import { ManifestCollectionView } from '@umbraco-cms/extensions-registry'; +import { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts index cd8b0fcd0a..48781fd710 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts @@ -2,7 +2,7 @@ import { css, html, LitElement, nothing } from 'lit'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { customElement, property, state } from 'lit/decorators.js'; import type { UmbTableColumn, UmbTableItem } from '../../../../../../shared/components/table'; -import { UmbExecutedEvent } from '@umbraco-cms/events'; +import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; // TODO: this could be done more generic, but for now we just need it for the document table @customElement('umb-document-table-actions-column-layout') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts index 18c642313e..5f63a23d34 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts @@ -14,8 +14,8 @@ import { UmbTableOrderedEvent, UmbTableSelectedEvent, } from '../../../../../shared/components/table'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import './column-layouts/document-table-actions-column-layout.element'; 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 a0780eb967..f81918a27c 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbCreateDocumentBlueprintEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 864248e63a..2c0bdfbcc1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,9 +1,9 @@ import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN } from '../../../document-types/modals/allowed-document-types'; import type { UmbDocumentRepository } from '../../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { #modalContext?: UmbModalContext; 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 1ba8de7356..f487877ac3 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentCultureAndHostnamesEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 428dbc55e5..ab2d9ac5b8 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 @@ -12,8 +12,8 @@ import { UmbMoveEntityAction, UmbTrashEntityAction, UmbSortChildrenOfEntityAction, -} from '@umbraco-cms/entity-action'; -import { ManifestEntityAction, ManifestModal } from '@umbraco-cms/extensions-registry'; +} from '@umbraco-cms/backoffice/entity-action'; +import { ManifestEntityAction, ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'document'; 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 a116358cce..e1e9b98d10 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentPermissionsEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 aff79a03b2..18498d3aa9 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentPublicAccessEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 47d49c6517..53ca56ea8c 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbPublishDocumentEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 8e473ecbfb..ae0f80225b 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbRollbackDocumentEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 3820cae4d9..e7025457a8 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,6 +1,6 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 daf1482bed..42b95a1253 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,6 +1,6 @@ import { UmbDocumentRepository } from '../../repository/document.repository'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentCopyEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts index b7032e2bc7..3f3e873d4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-bulk-actions/manifests.ts @@ -1,7 +1,7 @@ import { DOCUMENT_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbDocumentMoveEntityBulkAction } from './move/move.action'; import { UmbDocumentCopyEntityBulkAction } from './copy/copy.action'; -import { ManifestEntityBulkAction } from '@umbraco-cms/extensions-registry'; +import { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'document'; 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 ebe5bb2a8a..bbc16b3a4f 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,6 +1,6 @@ import { UmbDocumentRepository } from '../../repository/document.repository'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentMoveEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts index 811c812a64..1fc81dbb4a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import type { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDocumentPickerModalData, UmbDocumentPickerModalResult } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; // TODO: make use of UmbPickerLayoutBase @customElement('umb-document-picker-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts index b67bffe04e..4452cf228d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts @@ -1,4 +1,4 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbDocumentPickerModalData { multiple?: boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/manifests.ts index dcaf83f082..ae03c13d31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index 0595eba64a..07506ec4b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -3,12 +3,12 @@ import { DocumentTreeServerDataSource } from './sources/document.tree.server.dat import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; import { UmbDocumentServerDataSource } from './sources/document.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = DocumentResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index 2fb2a87fe4..8454ce8ef3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -1,8 +1,8 @@ -import { DocumentResponseModel } from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts index 71a563ed34..4b3bbaa7f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts index da7a9197b2..6276b2c00b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbDocumentRepository } from '../repository/document.repository'; import { UmbDocumentStore } from './document.store'; import { UmbDocumentTreeStore } from './document.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const DOCUMENT_REPOSITORY_ALIAS = 'Umb.Repository.Document'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 59b9e2f0c8..467b0fa35f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,13 +1,13 @@ import { v4 as uuidv4 } from 'uuid'; -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; import { DocumentResource, ProblemDetailsModel, DocumentResponseModel, ContentStateModel, -} from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 25e3094778..ca96c3374f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -1,7 +1,7 @@ import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; -import { ProblemDetailsModel, DocumentResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel, DocumentResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index bb7b3aeefb..6ff622d5db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,6 +1,6 @@ -import { DocumentResponseModel } from '@umbraco-cms/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import type { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; export interface UmbDocumentDataSource extends RepositoryDetailDataSource { createScaffold(documentTypeKey: string): Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts index d0e12bfbd7..7102a30105 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-document-sidebar-menu-item') export class UmbDocumentSidebarMenuItemElement extends UmbLitElement { 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 06754de189..e06fc87a74 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,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts index 1abb5fd1f5..c1e6a79314 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Documents'; 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 10470f8d25..6a54050580 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,6 +1,6 @@ import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentSaveAndPreviewWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { 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 ef49816688..eb0fc8c24c 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,6 +1,6 @@ import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDocumentSaveAndPublishWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { 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 aa630bbc6e..8b25669b5a 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,6 +1,6 @@ import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbWorkspaceActionBase } from '@umbraco-cms/workspace'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbWorkspaceActionBase } from '@umbraco-cms/backoffice/workspace'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbSaveAndScheduleDocumentWorkspaceAction extends UmbWorkspaceActionBase { constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts index e427be75ba..9097b679e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-edit.element.ts @@ -6,10 +6,10 @@ import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; -import { VariantModelBaseModel } from '@umbraco-cms/backend-api'; +import { VariantModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-document-workspace-edit') export class UmbDocumentWorkspaceEditElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-split-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-split-view.element.ts index ec66755894..ada7416b49 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-split-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-split-view.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; @customElement('umb-document-workspace-split-view') 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 f7ac814b09..b3c9df0e28 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 @@ -5,9 +5,9 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../../../shared/comp import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; -import type { DocumentResponseModel } from '@umbraco-cms/backend-api'; -import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; // TODO: should this context be called DocumentDraft instead of workspace? or should the draft be part of this? // TODO: Should we have a DocumentStructureContext and maybe even a DocumentDraftContext? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index d51b7ae609..d341351acd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -3,7 +3,7 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './document-workspace-edit.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts index 99dbc4d512..3bf624e247 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbDocumentWorkspaceElement } from './document-workspace.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbDocumentWorkspaceElement', () => { let element: UmbDocumentWorkspaceElement; 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 07342f39d0..f2398a0f7c 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,13 +1,13 @@ 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 { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, -} from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts index e9bfd39eec..74b013eb46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-properties.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentTypePropertyTypeResponseModel, PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTypePropertyTypeResponseModel, PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-document-workspace-view-edit-properties') export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts index 8992495248..50e53737c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit-tab.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import './document-workspace-view-edit-properties.element'; @customElement('umb-document-workspace-view-edit-tab') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts index 36032110ec..1740119748 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/document-workspace-view-edit.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../document-workspace.context'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backend-api'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-document-workspace-view-edit') export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { 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 7cfabc7cce..96b85feed0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/index.ts @@ -5,8 +5,8 @@ import { manifests as documentBlueprintManifests } from './document-blueprints/m import { manifests as documentTypeManifests } from './document-types/manifests'; import { manifests as documentManifests } from './documents/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [ ...dashboardManifests, 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 1595462273..d9c7475351 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 '@umbraco-cms/extensions-registry'; +import { ManifestMenu } from '@umbraco-cms/backoffice/extensions-registry'; const menu: ManifestMenu = { type: 'menu', 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 0375b56b65..f92e70697c 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,5 +1,5 @@ -import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; +import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/backoffice/extensions-registry'; const sectionAlias = 'Umb.Section.Content'; 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 76a1e6c199..c6eb537f80 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/index.ts @@ -3,8 +3,8 @@ import { manifests as mediaMenuManifests } from './menu.manifests'; import { manifests as mediaManifests } from './media/manifests'; import { manifests as mediaTypesManifests } from './media-types/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [...mediaSectionManifests, ...mediaMenuManifests, ...mediaManifests, ...mediaTypesManifests]; 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 9d5c7cdf57..b00705305e 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,6 +1,6 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbCreateMediaTypeEntityAction extends UmbEntityActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, unique: string) { 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 8970c9af81..0535ffc768 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,8 +1,8 @@ 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'; +import { UmbDeleteEntityAction, UmbMoveEntityAction, UmbCopyEntityAction } from '@umbraco-cms/backoffice/entity-action'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'media-type'; const repositoryAlias = MEDIA_TYPE_REPOSITORY_ALIAS; 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 e12ee63785..01d31ebd07 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,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbEntityActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export default class UmbReloadMediaTypeEntityAction extends UmbEntityActionBase { static styles = [UUITextStyles]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts index 9e89df3682..ea1ac3dbe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts index dc5de79647..23906ac74e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbMediaTypeRepository } from './media-type.repository'; import { UmbMediaTypeStore } from './media-type.detail.store'; import { UmbMediaTypeTreeStore } from './media-type.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const MEDIA_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.MediaType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts index 57dc378d61..601807dfd6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts @@ -1,8 +1,8 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import type { MediaTypeDetails } from '@umbraco-cms/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 8123483e57..5bdfda591d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -2,12 +2,12 @@ import { UmbMediaTypeTreeStore, UMB_MEDIA_TYPE_TREE_STORE_CONTEXT_TOKEN } from ' import { UmbMediaTypeDetailServerDataSource } from './sources/media-type.detail.server.data'; import { UmbMediaTypeStore, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN } from './media-type.detail.store'; import { MediaTypeTreeServerDataSource } from './sources/media-type.tree.server.data'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import type { MediaTypeDetails } from '@umbraco-cms/models'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { UmbTreeRepository, RepositoryTreeDataSource } from '@umbraco-cms/repository'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbTreeRepository, RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; export class UmbMediaTypeRepository implements UmbTreeRepository { #init!: Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts index a70127f5d6..6e6f69ed7d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts index d0fe79bfc7..9a96c2c7e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts @@ -1,8 +1,8 @@ import { MediaTypeDetailDataSource } from './media-type.details.server.data.interface'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import type { MediaTypeDetails } from '@umbraco-cms/models'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * @description - A data source for the Media Type detail that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts index b3a4306511..21f43f7f94 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts @@ -1,4 +1,4 @@ -import type { DataSourceResponse, MediaTypeDetails } from '@umbraco-cms/models'; +import type { DataSourceResponse, MediaTypeDetails } from '@umbraco-cms/backoffice/models'; // TODO => Use models when they exist export interface MediaTypeDetailDataSource { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index b24810721b..b246beefef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -1,7 +1,7 @@ -import { MediaTypeResource, ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/repository'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { MediaTypeResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the MediaType tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts index 2b64d4357b..526aff49b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/manifests.ts index e7dae7efa0..b7965aad4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, -} from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts index eb247d96f1..43923578ac 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace-edit.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-type-workspace-edit') export class UmbMediaTypeWorkspaceEditElement extends UmbLitElement { 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 d08f00a937..5bbbb01e3b 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 @@ -1,9 +1,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ObjectState } from '@umbraco-cms/observable-api'; -import type { MediaTypeDetails } from '@umbraco-cms/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; type EntityType = MediaTypeDetails; export class UmbWorkspaceMediaTypeContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index ffa03ecea4..5b1ef7f277 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; import { UmbMediaTypeWorkspaceEditElement } from './media-type-workspace-edit.element'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { IRoutingInfo } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { IRoutingInfo } from '@umbraco-cms/internal/router'; @customElement('umb-media-type-workspace') export class UmbMediaTypeWorkspaceElement extends UmbLitElement { 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 10d74bb1ae..eb7b4c6ce0 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,5 +1,5 @@ import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbTrashEntityAction } from '@umbraco-cms/entity-action'; +import { UmbTrashEntityAction } from '@umbraco-cms/backoffice/entity-action'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ 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 273334c4b7..7a6a36cd51 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,6 +1,6 @@ import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbMediaCopyEntityBulkAction extends UmbEntityBulkActionBase { constructor(host: UmbControllerHostInterface, repositoryAlias: string, selection: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts index a7159898b0..1574cf57c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/entity-bulk-actions/manifests.ts @@ -2,7 +2,7 @@ import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbMediaMoveEntityBulkAction } from './move/move.action'; import { UmbMediaCopyEntityBulkAction } from './copy/copy.action'; import { UmbMediaTrashEntityBulkAction } from './trash/trash.action'; -import { ManifestEntityBulkAction } from '@umbraco-cms/extensions-registry'; +import { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'media'; 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 42f84f7b43..2e2496632c 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,9 +1,9 @@ import type { UmbMediaRepository } from '../../repository/media.repository'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../modals/media-picker'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; export class UmbMediaMoveEntityBulkAction extends UmbEntityBulkActionBase { #modalContext?: UmbModalContext; 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 4ff8837bfd..0b14d85089 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,10 +1,10 @@ import { html } from 'lit'; import type { UmbMediaRepository } from '../../repository/media.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; -import { UmbEntityBulkActionBase } from '@umbraco-cms/entity-action'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; export class UmbMediaTrashEntityBulkAction extends UmbEntityBulkActionBase { #modalContext?: UmbModalContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts index 337bb74407..fa30637221 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts index 6bba1af067..6a4157ece4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/menu-item/media-menu-item.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-menu-item') export class UmbMediaMenuItemElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/manifests.ts index a1230b8792..cced5231cb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts index 7075158e15..4cb0657504 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts @@ -1,4 +1,4 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbMediaPickerModalData { multiple?: boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts index 82fa6411f0..8fa0de909e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbMediaPickerModalData, UmbMediaPickerModalResult } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-media-picker-modal') export class UmbMediaPickerModalElement extends UmbModalBaseElement< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts index 0cbeb9aede..30c09e5a8b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbMediaRepository } from './media.repository'; import { UmbMediaStore } from './media.store'; import { UmbMediaTreeStore } from './media.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const MEDIA_REPOSITORY_ALIAS = 'Umb.Repository.Media'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 9adb982bff..244b95084c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -2,14 +2,14 @@ import { MediaTreeServerDataSource } from './sources/media.tree.server.data'; import { UmbMediaTreeStore, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store'; import { UmbMediaStore, UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store'; import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data'; -import type { RepositoryTreeDataSource } from '@umbraco-cms/repository'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; -import type { MediaDetails } from '@umbraco-cms/models'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemDetailType = MediaDetails; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts index 070a596885..6c86790418 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts @@ -1,8 +1,8 @@ -import type { MediaDetails } from '@umbraco-cms/models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index 9028802a8d..88903b1cb1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -1,8 +1,8 @@ -import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMediaTreeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 2cbbe19cc0..18c2c6d213 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -1,8 +1,8 @@ -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import type { MediaDetails } from '@umbraco-cms/models'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; /** * A data source for the Template detail that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts index 3ea980f8f5..b2acd11c55 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts @@ -1,7 +1,7 @@ import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; -import { ProblemDetailsModel, MediaResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel, MediaResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Media tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts index 0e60c1d4af..6f40b6d6ee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMediaRepository } from '../repository/media.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Media'; 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 5b26b451bc..ce78d95519 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,11 +1,11 @@ import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, -} from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts index e7f23ea7bc..a3d56721ae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace-edit') export class UmbMediaWorkspaceEditElement extends UmbLitElement { 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 a2eee22259..60cef78f13 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 @@ -1,9 +1,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbMediaRepository } from '../repository/media.repository'; import type { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import type { MediaDetails } from '@umbraco-cms/models'; +import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; type EntityType = MediaDetails; export class UmbMediaWorkspaceContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index 6e78b7a7ad..cc3e954a76 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; -import { IRoute, IRoutingInfo } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace') export class UmbMediaWorkspaceElement extends UmbLitElement { 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 48f15abb44..46ae89c9d2 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 '@umbraco-cms/extensions-registry'; +import { ManifestMenu } from '@umbraco-cms/backoffice/extensions-registry'; const menu: ManifestMenu = { type: 'menu', 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 08dbb2e1a0..425af38e6d 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,5 +1,9 @@ import { MEDIA_REPOSITORY_ALIAS } from './media/repository/manifests'; -import type { ManifestDashboardCollection, ManifestSection, ManifestTypes } from '@umbraco-cms/models'; +import type { + ManifestDashboardCollection, + ManifestSection, + ManifestTypes, +} from '@umbraco-cms/backoffice/extensions-registry'; const sectionAlias = 'Umb.Section.Media'; 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 386a38582f..ec7c105679 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/index.ts @@ -4,8 +4,8 @@ import { manifests as memberGroupManifests } from './member-groups/manifests'; import { manifests as memberTypeManifests } from './member-types/manifests'; import { manifests as memberManifests } from './members/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [ ...memberSectionManifests, 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 35d0341dbb..174945b696 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,5 +1,5 @@ import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/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/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts index bdaac9708f..d9c2d2b8a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts index c4fb973526..c9efa0f4be 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbMemberGroupRepository } from './member-group.repository'; import { UmbMemberGroupStore } from './member-group.store'; import { UmbMemberGroupTreeStore } from './member-group.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const MEMBER_GROUP_REPOSITORY_ALIAS = 'Umb.Repository.MemberGroup'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 0c0f315b71..0ed1749225 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -2,12 +2,16 @@ import { UmbMemberGroupTreeStore, UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN } fr import { UmbMemberGroupDetailServerDataSource } from './sources/member-group.detail.server.data'; import { UmbMemberGroupStore, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN } from './member-group.store'; import { MemberGroupTreeServerDataSource } from './sources/member-group.tree.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import type { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/repository'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import type { + RepositoryTreeDataSource, + UmbDetailRepository, + UmbTreeRepository, +} from '@umbraco-cms/backoffice/repository'; // TODO => Update type when backend updated export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRepository { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts index 864430facf..b58cd314c0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts @@ -1,8 +1,8 @@ -import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbStoreBase } from '@umbraco-cms/store'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts index 4d1f4ce44a..1a67085088 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts index 354888fb1a..91d1b54cd7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts @@ -1,8 +1,8 @@ -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; /** * @description - A data source for the MemberGroup detail that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index c0e3cce038..6ccabbbf3c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -1,7 +1,7 @@ -import { MemberGroupResource, ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/repository'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { MemberGroupResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Member Group tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts index 32cdd97328..ee8ef370fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberGroupRepository } from '../repository/member-group.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberGroups'; 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 9a1f8802e9..24bacb44ca 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,9 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts index bf1a593e9a..7fe6a6d456 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** * @element umb-member-group-edit-workspace 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 9f5828a437..ea030f00fb 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 @@ -1,9 +1,9 @@ import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; import { UmbMemberGroupRepository } from '../repository/member-group.repository'; -import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ObjectState } from '@umbraco-cms/observable-api'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; type EntityType = MemberGroupDetails; export class UmbWorkspaceMemberGroupContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index 368b175a4d..674512ad7f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; import { UmbMemberGroupWorkspaceEditElement } from './member-group-workspace-edit.element'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** * @element umb-member-group-workspace diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts index faf7d7e59d..58296b175a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceMemberGroupContext } from '../../member-group-workspace.context'; -import type { MemberGroupDetails } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-workspace-view-member-group-info') export class UmbWorkspaceViewMemberGroupInfoElement extends UmbLitElement { 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 b569d782c6..db52c2c7a8 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,6 +1,6 @@ import { MEMBER_TYPES_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; -import type { ManifestEntityAction } from '@umbraco-cms/models'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/entity-action'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'member-type'; const repositoryAlias = MEMBER_TYPES_REPOSITORY_ALIAS; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts index 90dcb2dfa5..2feda6caeb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/manifests.ts index f40c631433..3c06da7999 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/manifests.ts @@ -1,7 +1,7 @@ import { UmbMemberTypeRepository } from './member-type.repository'; import { UmbMemberTypeStore } from './member-type.store'; import { UmbMemberTypeTreeStore } from './member-type.tree.store'; -import type { ManifestRepository, ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import type { ManifestRepository, ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const MEMBER_TYPES_REPOSITORY_ALIAS = 'Umb.Repository.MemberType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 83120d5b3d..5b7f0cf65d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -2,12 +2,12 @@ import { MemberTypeTreeServerDataSource } from './sources/member-type.tree.serve import { UmbMemberTypeTreeStore, UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN } from './member-type.tree.store'; import { UmbMemberTypeStore, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN } from './member-type.store'; import { UmbMemberTypeDetailServerDataSource } from './sources/member-type.detail.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import type { MemberTypeDetails } from '@umbraco-cms/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; // TODO => use correct type when available type ItemType = any; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts index c13dacc56f..9920319c4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts @@ -1,8 +1,8 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import type { MemberTypeDetails } from '@umbraco-cms/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts index d10cf2953e..f008de15aa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index 58ec90e115..91ed934ef9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -1,8 +1,8 @@ -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import type { MemberTypeDetails } from '@umbraco-cms/models'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; /** * @description - A data source for the MemberType detail that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 8e147af77d..1384165787 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -1,7 +1,7 @@ -import { MemberTypeResource, ProblemDetailsModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/repository'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { MemberTypeResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the MemberType tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts index 2e16d022d4..042a06d314 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberTypeRepository } from '../repository/member-type.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberTypes'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/manifests.ts index a90305204e..7eb06e2bf4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts index 99d8acb36b..eac47341ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace-edit.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-type-workspace-edit') export class UmbMemberTypeWorkspaceEditElement extends UmbLitElement { 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 359230671f..9c8fb39b76 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 @@ -1,8 +1,8 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberTypeRepository } from '../repository/member-type.repository'; -import { ObjectState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; // TODO => use correct tpye type EntityType = any; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index 8345578924..a5e1593549 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UmbMemberTypeWorkspaceEditElement } from './member-type-workspace-edit.element'; import { UmbMemberTypeWorkspaceContext } from './member-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-type-workspace') export class UmbMemberTypeWorkspaceElement extends UmbLitElement { 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 cef15f5563..b9a055bbd6 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,5 +1,5 @@ import { MEMBER_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/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/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index a3a52703fb..a57a23e317 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -1,10 +1,10 @@ import { Observable } from 'rxjs'; import { umbMemberData } from '../../../core/mocks/data/member.data'; -import type { MemberDetails, MemberGroupDetails } from '@umbraco-cms/models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState, createObservablePart } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/store'; +import type { MemberDetails, MemberGroupDetails } from '@umbraco-cms/backoffice/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState, createObservablePart } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts index f1495736a2..93d9cbbc5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts index a2e150c0ca..e5cd53441d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbMemberRepository } from './member.repository'; import { UmbMemberStore } from './member.store'; import { UmbMemberTreeStore } from './member.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const MEMBER_REPOSITORY_ALIAS = 'Umb.Repository.Member'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts index 74b1d752fe..06d8dd2c48 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts @@ -1,10 +1,10 @@ import { UmbMemberTreeStore, UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN } from './member.tree.store'; import { MemberTreeServerDataSource } from './sources/member.tree.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbTreeRepository } from '@umbraco-cms/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbMemberRepository implements UmbTreeRepository { #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts index 991ada05f4..4db3ae37b9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts @@ -1,8 +1,8 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import type { MemberDetails } from '@umbraco-cms/models'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import type { MemberDetails } from '@umbraco-cms/backoffice/models'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts index 6dd095fded..b315e84c5a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMemberTreeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts index 8659bec685..6680f2b499 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts @@ -1,5 +1,8 @@ -import type { DataSourceResponse } from '@umbraco-cms/models'; -import type { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; +import type { + EntityTreeItemResponseModel, + PagedEntityTreeItemResponseModel, +} from '@umbraco-cms/backoffice/backend-api'; export interface MemberTreeDataSource { getRootItems(): Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts index 4f4fce08c8..ba110ff410 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts @@ -1,5 +1,5 @@ import { MemberTreeDataSource } from '.'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * A data source for the Member tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts index b059f518fd..3be0767383 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberRepository } from '../repository/member.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/manifests.ts index e4b4fe560f..a2e1875688 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', 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 96aae13705..99086c9254 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 @@ -1,8 +1,8 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbMemberRepository } from '../repository/member.repository'; -import type { MemberDetails } from '@umbraco-cms/models'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { MemberDetails } from '@umbraco-cms/backoffice/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbMemberWorkspaceContext extends UmbWorkspaceContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index dc78cf8575..5b76fa0e97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UmbMemberWorkspaceEditElement } from './member-workspace-edit.element'; import { UmbMemberWorkspaceContext } from './member-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-workspace') export class UmbMemberWorkspaceElement extends UmbLitElement { 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 1bd7ca6a85..b5ffba5eb7 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 '@umbraco-cms/extensions-registry'; +import { ManifestMenu } from '@umbraco-cms/backoffice/extensions-registry'; const menu: ManifestMenu = { type: 'menu', 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 eacefe6606..8165066175 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, ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestSection, ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const sectionAlias = 'Umb.Section.Members'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/index.ts index f0a7107779..41064c5222 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/index.ts @@ -3,8 +3,8 @@ import { manifests as packageBuilderManifests } from './package-builder/manifest import { manifests as packageRepoManifests } from './package-repo/manifests'; import { manifests as packageSectionManifests } from './package-section/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [ ...repositoryManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/manifests.ts index 7218ebf120..e9a0e23c03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, -} from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 4023dfd261..2b5b277390 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -6,10 +6,10 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbInputDocumentPickerElement } from '../../../shared/components/input-document-picker/input-document-picker.element'; import { UmbInputMediaPickerElement } from '../../../shared/components/input-media-picker/input-media-picker.element'; import { UmbInputLanguagePickerElement } from '../../../shared/components/input-language-picker/input-language-picker.element'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backoffice/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; @customElement('umb-workspace-package-builder') export class UmbWorkspacePackageBuilderElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/manifests.ts index 0c5a80a574..66eb9eeaf9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/manifests.ts @@ -3,7 +3,7 @@ import type { ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, -} from '@umbraco-cms/models'; +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts index c67ff995cc..287b2fe14e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestSection, ManifestSectionView } from '@umbraco-cms/models'; +import type { ManifestSection, ManifestSectionView } from '@umbraco-cms/backoffice/extensions-registry'; const sectionAlias = 'Umb.Section.Packages'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts index 15f3abadbf..3910947772 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts @@ -1,9 +1,9 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/router'; -import type { ManifestTree, ManifestWorkspace } from '@umbraco-cms/models'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { ManifestTree, ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-created-packages-section-view') export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index 02af893cbd..c51f1dbb9a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -4,10 +4,10 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; -import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @customElement('umb-packages-created-overview') export class UmbPackagesCreatedOverviewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts index 063afe1b25..bce3d35726 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts @@ -5,14 +5,14 @@ import { firstValueFrom, map } from 'rxjs'; import { UUIButtonState } from '@umbraco-ui/uui'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; -import type { ManifestPackageView } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { PackageResource } from '@umbraco-cms/backend-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import type { ManifestPackageView } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { PackageResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; @customElement('umb-installed-packages-section-view-item') export class UmbInstalledPackagesSectionViewItem extends UmbLitElement { @@ -27,7 +27,7 @@ export class UmbInstalledPackagesSectionViewItem extends UmbLitElement { name?: string; @property() - version?: string; + version?: string | null; @property() hasPendingMigrations = false; @@ -106,7 +106,7 @@ export class UmbInstalledPackagesSectionViewItem extends UmbLitElement { return html` ${this.customIcon ? html`` : nothing} 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 7880202c02..de77a3a9a2 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 @@ -4,8 +4,8 @@ import { repeat } from 'lit/directives/repeat.js'; import { combineLatest } from 'rxjs'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbPackageRepository } from '../../../repository/package.repository'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { UmbPackageWithMigrationStatus } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { UmbPackageWithMigrationStatus } from '@umbraco-cms/backoffice/models'; import './installed-packages-section-view-item.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts index ab052945f7..f59cbfc4c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts @@ -1,7 +1,7 @@ import { UmbPackageRepository } from './package.repository'; import { UmbPackageStore } from './package.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore } from '@umbraco-cms/backoffice/extensions-registry'; export const PACKAGE_REPOSITORY_ALIAS = 'Umb.Repository.Package'; 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 5ace32228e..d22e510625 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 @@ -1,10 +1,10 @@ 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'; -import { isManifestJSType } from '@umbraco-cms/extensions-api'; -import { OpenAPI } from '@umbraco-cms/backend-api'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import type { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; +import { isManifestJSType } from '@umbraco-cms/backoffice/extensions-api'; +import { OpenAPI } from '@umbraco-cms/backoffice/backend-api'; // TODO: Figure out if we should base stores like this on something more generic for "collections" rather than trees. 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 f7bcfc0b11..560e9eed24 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,10 +1,11 @@ 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 { ManifestBase, UmbPackage } from '@umbraco-cms/models'; -import type { PackageMigrationStatusResponseModel } from '@umbraco-cms/backend-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import type { UmbPackage } from '@umbraco-cms/backoffice/models'; +import type { PackageMigrationStatusResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken('UmbPackageStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts index e48711da84..2f07556f6a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/server-extension.controller.ts @@ -1,7 +1,7 @@ import { Subject, takeUntil } from 'rxjs'; import { UmbPackageRepository } from './package.repository'; -import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbExtensionRegistry } from '@umbraco-cms/extensions-api'; +import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbExtensionRegistry } from '@umbraco-cms/backoffice/extensions-api'; export class UmbServerExtensionController extends UmbController { #host: UmbControllerHostInterface; 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 251f76608c..fdac0c0809 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,6 +1,6 @@ -import { PackageResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { PackageResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * Data source for packages from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/index.ts index e0d341e7cc..040b21d817 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/index.ts @@ -1,7 +1,7 @@ import { manifests as searchManifests } from '../search/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [...searchManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts index 2ce1ac3873..9f3ad717e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const headerApps: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/manifests.ts index 7765c306fc..e90acac916 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/index.ts index 9859d03434..8044cac830 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/index.ts @@ -1,3 +1,3 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export const UMB_SEARCH_MODAL_TOKEN = new UmbModalToken('Umb.Modal.Search'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/umb-search-header-app.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/umb-search-header-app.element.ts index 64a53e5e3b..90227bbd00 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/umb-search-header-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/umb-search-header-app.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-search-header-app') export class UmbSearchHeaderApp extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/culture.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/culture.repository.ts index 8e68ea40b5..d75993f9b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/culture.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/culture.repository.ts @@ -1,7 +1,7 @@ import { UmbCultureServerDataSource } from './sources/culture.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; export class UmbCultureRepository { #init!: Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/culture.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/culture.server.data.ts index 02ac62a9bb..2728d5c78b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/culture.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/culture.server.data.ts @@ -1,7 +1,7 @@ import { UmbCultureDataSource } from '.'; -import { CultureResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { CultureResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Language that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts index 3abfe139d2..00eaeeffbe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/sources/index.ts @@ -1,5 +1,5 @@ -import { PagedCultureReponseModel } from '@umbraco-cms/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; +import { PagedCultureReponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; // TODO: This is a temporary solution until we have a proper paging interface type paging = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts index a82f3676bc..4fdafa6210 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts @@ -3,9 +3,9 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbDashboardExamineIndexElement } from './views/section-view-examine-indexers'; import { UmbDashboardExamineSearcherElement } from './views/section-view-examine-searchers'; -import type { IRoute, IRoutingInfo, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; +import type { IRoute, IRoutingInfo, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-dashboard-examine-management') export class UmbDashboardExamineManagementElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts index 8da8cf647e..60a1acfb8e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts @@ -2,7 +2,7 @@ import { html, css } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbCreateDocumentModalResultData, UmbExamineFieldsSettingsModalData } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-examine-fields-settings-modal') export class UmbExamineFieldsSettingsModalElement extends UmbModalBaseElement< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts index 84f319ab80..df1870aba9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-viewer.element.ts @@ -1,8 +1,8 @@ import { html, css, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; -import type { SearchResultResponseModel } from '@umbraco-cms/backend-api'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import type { SearchResultResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-modal-element-fields-viewer') export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts index 3ff332b969..1e1e727379 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts @@ -1,4 +1,4 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export type UmbExamineFieldsSettingsModalData = Array<{ name: string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts index 05ff3cf331..6920abc579 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts @@ -3,10 +3,10 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui-button'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { HealthStatusModel, IndexResponseModel, IndexerResource } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { HealthStatusModel, IndexResponseModel, IndexerResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import './section-view-examine-searchers'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts index beb5218eed..02c5b7f89c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-overview.ts @@ -8,9 +8,9 @@ import { IndexerResource, SearcherResponseModel, SearcherResource, -} from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-examine-overview') export class UmbDashboardExamineOverviewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts index 62c8d2280d..10439bad30 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { SearchResultResponseModel, SearcherResource, FieldPresentationModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { SearchResultResponseModel, SearcherResource, FieldPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import './modal-views/fields-viewer.element'; import './modal-views/fields-settings.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts index 486f315d04..1828d225a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts @@ -6,12 +6,12 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from './health-check-dashboard.context'; import { UmbHealthCheckContext } from './health-check.context'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { ManifestHealthCheck } from '@umbraco-cms/extensions-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { HealthCheckGroupResponseModel, HealthCheckResource } from '@umbraco-cms/backend-api'; +import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { HealthCheckGroupResponseModel, HealthCheckResource } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-dashboard-health-check') export class UmbDashboardHealthCheckElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts index 73f987fdea..0d3d4cd0a3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check-dashboard.context.ts @@ -1,6 +1,6 @@ import { UmbHealthCheckContext } from './health-check.context'; -import type { ManifestHealthCheck } from '@umbraco-cms/models'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export class UmbHealthCheckDashboardContext { #manifests: ManifestHealthCheck[] = []; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts index 70cdf9d5bb..96ea04fb9d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/health-check.context.ts @@ -3,10 +3,10 @@ import { HealthCheckGroupPresentationModel, HealthCheckGroupWithResultResponseModel, HealthCheckResource, -} from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; export class UmbHealthCheckContext { private _checks = new BehaviorSubject(undefined); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts index 00958c21c4..adb82e765b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-action.element.ts @@ -4,9 +4,9 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { HealthCheckActionRequestModel, HealthCheckResource } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { HealthCheckActionRequestModel, HealthCheckResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-health-check-action') export class UmbDashboardHealthCheckActionElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts index 3f880f186a..a298ec6672 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts @@ -6,10 +6,10 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, UmbHealthCheckDashboardContext, } from '../health-check-dashboard.context'; -import { ensureSlash, path } from '@umbraco-cms/router'; -import type { ManifestHealthCheck } from '@umbraco-cms/models'; -import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { ensureSlash, path } from '@umbraco-cms/internal/router'; +import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; +import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-health-check-group-box-overview') export class UmbHealthCheckGroupBoxOverviewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts index 0b9467d1e4..ce5e9c3278 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts @@ -16,9 +16,9 @@ import { HealthCheckResource, HealthCheckWithResultPresentationModel, StatusResultTypeModel, -} from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import './health-check-action.element'; @customElement('umb-dashboard-health-check-group') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts index cb1d908195..aabb536218 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts @@ -7,10 +7,10 @@ import { UmbHealthCheckDashboardContext, UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from '../health-check-dashboard.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { ManifestHealthCheck } from '@umbraco-cms/extensions-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import './health-check-group-box-overview.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts index 45891534c5..a3227bd94e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestDashboard, ManifestModal } from '@umbraco-cms/models'; +import type { ManifestDashboard, ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const dashboards: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts index b9f792af70..03b80a367f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ModelsBuilderResponseModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ModelsBuilderResponseModel, ModelsBuilderResource, ModelsModeModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-models-builder') export class UmbDashboardModelsBuilderElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts index fb74431a4b..630e6de151 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ProfilingResource } from '@umbraco-cms/backend-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { ProfilingResource } from '@umbraco-cms/backoffice/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-dashboard-performance-profiling') export class UmbDashboardPerformanceProfilingElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts index 6f4fd6a691..dfe7fcd8b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -3,10 +3,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { PublishedCacheResource } from '@umbraco-cms/backend-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { PublishedCacheResource } from '@umbraco-cms/backoffice/backend-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-dashboard-published-status') export class UmbDashboardPublishedStatusElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.test.ts index ed4c366109..ce625f94c8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbDashboardPublishedStatusElement } from './dashboard-published-status.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbDashboardPublishedStatus', () => { let element: UmbDashboardPublishedStatusElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.test.ts index 1ca8ac3378..7cd3eee814 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbDashboardSettingsWelcomeElement } from './dashboard-settings-welcome.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbDashboardSettingsWelcomeElement', () => { let element: UmbDashboardSettingsWelcomeElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts index ee02adaf77..76507ae5c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.element.ts @@ -3,9 +3,9 @@ import { customElement, state } from 'lit/decorators.js'; import { unsafeHTML } from 'lit/directives/unsafe-html.js'; import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { TelemetryResponseModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { TelemetryResponseModel, TelemetryLevelModel, TelemetryResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-dashboard-telemetry') export class UmbDashboardTelemetryElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.test.ts index 72662348af..a77fe00869 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbDashboardTelemetryElement } from './dashboard-telemetry.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbDashboardTelemetryElement', () => { let element: UmbDashboardTelemetryElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 6753e4b2a9..23a3229006 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestTypes } from '@umbraco-cms/models'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestTypes = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index d69e722a9b..34621a3190 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -3,12 +3,12 @@ import { UmbDataTypeTreeStore, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './ import { UmbDataTypeServerDataSource } from './sources/data-type.server.data'; import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type.store'; import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = DataTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index 169e7499e7..14b0a96478 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -1,8 +1,8 @@ -import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbDataTypeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.tree.store.ts index a29ae02cf8..9e079f39bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts index 4d54186a90..8e68419718 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbDataTypeRepository } from '../repository/data-type.repository'; import { UmbDataTypeStore } from './data-type.store'; import { UmbDataTypeTreeStore } from './data-type.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const DATA_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.DataType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 254b052954..375237041e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -1,13 +1,13 @@ import { v4 as uuidv4 } from 'uuid'; -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, DataTypeResource, DataTypeResponseModel, DataTypeModelBaseModel, -} from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Data Type that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index 1ddaf7e517..596eaaf33d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -1,7 +1,7 @@ import type { RepositoryTreeDataSource } from '../../../../../../libs/repository/repository-tree-data-source.interface'; -import { ProblemDetailsModel, DataTypeResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel, DataTypeResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts index 6d1c73262f..6aef98a542 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDataTypeRepository } from '../repository/data-type.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts index 260103dec1..26dfe86ba8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; -import { UmbRouteLocation } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { ManifestWorkspace } from '@umbraco-cms/extensions-registry'; +import { UmbRouteLocation } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; /** * @element umb-data-type-workspace-edit-element 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 73421518ad..2db15a8016 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 @@ -1,9 +1,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; -import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 3562dd7418..69ddcdeed1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './data-type-workspace-edit.element'; 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 6a966d092d..337c38cf7d 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,5 +1,9 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts index 8a46de7cae..b5c5da1ce6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts @@ -3,10 +3,10 @@ import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN } from '../../../../../shared/property-editors/modals/property-editor-ui-picker'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DataTypeResponseModel } from '@umbraco-cms/backend-api'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import '../../../../../shared/property-editors/shared/property-editor-config/property-editor-config.element'; import '../../../../../shared/components/ref-property-editor-ui/ref-property-editor-ui.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index 7ea6345d41..9e0063bd12 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DataTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-workspace-view-data-type-info') export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts index 82c1c4b7a4..37020217d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index 9dcf9c2f7a..bf56e13af7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -2,10 +2,10 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; -import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestTypes } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @customElement('umb-extension-root-workspace') export class UmbExtensionRootWorkspaceElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/manifests.ts index b6fb47aaf6..e0496a26ae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', 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 f037e3fdbf..a578c12d5c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/index.ts @@ -8,8 +8,8 @@ import { manifests as cultureManifests } from './cultures/manifests'; import { manifests as languageManifests } from './languages/manifests'; import { manifests as logviewerManifests } from './logviewer/manifests'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestTypes } from '@umbraco-cms/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests = [ ...settingsSectionManifests, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts index 9c4c8165fb..f0bec83961 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts @@ -6,8 +6,8 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UUIMenuItemEvent } from '@umbraco-ui/uui'; import { UmbLanguageRepository } from '../repository/language.repository'; import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './app-language.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-app-language-select') export class UmbAppLanguageSelectElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts index bd9686fe99..93fe69b4cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts @@ -1,8 +1,8 @@ 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'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbAppLanguageContext { #host: UmbControllerHostInterface; 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 874da97023..dde0bf07e1 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,4 +1,4 @@ -import { ManifestSectionSidebarApp } from '@umbraco-cms/extensions-registry'; +import { ManifestSectionSidebarApp } from '@umbraco-cms/backoffice/extensions-registry'; 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 b9dd61f2b9..c917cfb11b 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,6 +1,6 @@ import { LANGUAGE_REPOSITORY_ALIAS } from '../repository/manifests'; -import { UmbDeleteEntityAction } from '@umbraco-cms/entity-action'; -import { ManifestEntityAction } from '@umbraco-cms/extensions-registry'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/entity-action'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; const entityType = 'language'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts index 55fc1b1c0c..2a732a7f06 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts index f057aa3800..477754bc5d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts @@ -1,5 +1,5 @@ -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; -import { UmbModalToken } from '@umbraco-cms/modal'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbLanguagePickerModalData { multiple?: boolean; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts index 53bf09acbd..1afe97afbb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts @@ -5,8 +5,8 @@ import { repeat } from 'lit-html/directives/repeat.js'; import { UUIMenuItemElement, UUIMenuItemEvent } from '@umbraco-ui/uui'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbLanguageRepository } from '../../repository/language.repository'; -import { UmbModalElementPickerBase } from '@umbraco-cms/modal'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbModalElementPickerBase } from '@umbraco-cms/internal/modal'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-language-picker-modal') export class UmbLanguagePickerModalElement extends UmbModalElementPickerBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/manifests.ts index 06cf317a04..8b9b68e450 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts index 6339112735..b25b113edd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts @@ -1,9 +1,9 @@ import { UmbLanguageServerDataSource } from './sources/language.server.data'; import { UmbLanguageStore, UMB_LANGUAGE_STORE_CONTEXT_TOKEN } from './language.store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { LanguageResponseModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbLanguageRepository { #init!: Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts index 18f10bc156..d4dc740843 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts @@ -1,8 +1,8 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbLanguageStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts index a69836165b..a068bc239f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts @@ -1,7 +1,7 @@ import { UmbLanguageRepository } from '../repository/language.repository'; import { UmbLanguageStore } from './language.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore } from '@umbraco-cms/backoffice/extensions-registry'; export const LANGUAGE_REPOSITORY_ALIAS = 'Umb.Repository.Language'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts index 449c07448b..64ba64d222 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts @@ -1,6 +1,6 @@ -import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; // TODO: This is a temporary solution until we have a proper paging interface type paging = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts index 98653be2ed..35b7dc8bfb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts @@ -1,6 +1,6 @@ -import { ProblemDetailsModel, LanguageResource, LanguageResponseModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { ProblemDetailsModel, LanguageResource, LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Language that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts index 081addf7c2..e336aa457e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-language-root-table-delete-column-layout') export class UmbLanguageRootTableDeleteColumnLayoutElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index f49d18e17f..8a42443bfc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbTableColumn, UmbTableConfig, UmbTableItem } from '../../../../shared/components/table'; import { UmbLanguageRepository } from '../../repository/language.repository'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; import './components/language-root-table-delete-column-layout.element'; import './components/language-root-table-name-column-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts index c70acd49cc..d04dc6b395 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts index 9128a4c69a..5119c0ba85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -4,8 +4,8 @@ import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-language-workspace-thingy') export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { 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 3dd49bcd97..0619b4a4d8 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 @@ -1,8 +1,8 @@ import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbWorkspaceContext } from '../../../../shared/components/workspace/workspace-context/workspace-context'; -import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; -import { ObjectState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext { #data = new ObjectState(undefined); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index d78aff8de3..3eb52b81f3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/router'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-language-workspace') export class UmbLanguageWorkspaceElement extends UmbLitElement { 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 8c13575889..4e85e5b348 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,9 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts index 270df84963..3314cbd8ef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts @@ -6,9 +6,9 @@ import { ifDefined } from 'lit/directives/if-defined.js'; 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 { LanguageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-language-details-workspace-view') export class UmbLanguageDetailsWorkspaceViewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts index 160e8e0a5c..a841df0875 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts index 5870e28762..f7e3f1ab57 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts @@ -1,8 +1,8 @@ import { UmbLogMessagesServerDataSource, UmbLogSearchesServerDataSource } from './sources/log-viewer.server.data'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; -import { DirectionModel, LogLevelModel } from '@umbraco-cms/backend-api'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { DirectionModel, LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts index 5b70410caf..25de74156d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts @@ -1,4 +1,4 @@ -import { +import type { DirectionModel, LogLevelCountsReponseModel, LogLevelModel, @@ -7,10 +7,8 @@ import { PagedLogTemplateResponseModel, PagedSavedLogSearchResponseModel, SavedLogSearchResponseModel, -} from '@umbraco-cms/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/models'; - - +} from '@umbraco-cms/backoffice/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; export interface LogSearchDataSource { getAllSavedSearches({ @@ -30,7 +28,13 @@ export interface LogSearchDataSource { } export interface LogMessagesDataSource { - getLogViewerLevel({ skip, take }: { skip?: number; take?: number }): Promise>; + getLogViewerLevel({ + skip, + take, + }: { + skip?: number; + take?: number; + }): Promise>; getLogViewerLevelCount({ startDate, endDate, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts index 822f63f8e4..459585e07b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts @@ -1,7 +1,7 @@ import { LogMessagesDataSource, LogSearchDataSource } from '.'; -import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { DirectionModel, LogLevelModel, LogViewerResource, SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the log saved searches @@ -64,7 +64,7 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { } } /** - * A data source for the log messages and levels + * A data source for the log messages and levels * * @export * @class UmbLogMessagesServerDataSource diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts index cfa465cb79..4ae57c93cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts @@ -7,7 +7,7 @@ import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, } from '../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-date-range-selector') export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts index d0fc55eb86..41cfb3f78c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts @@ -3,7 +3,7 @@ import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types'; -import { LogLevelModel } from '@umbraco-cms/backend-api'; +import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; interface LevelMapStyles { look?: InterfaceLook; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 53d29fabfc..2b70f422b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -1,15 +1,15 @@ import './components'; import { map } from 'rxjs'; import { css, html, nothing } from 'lit'; -import { customElement, state, property } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { repeat } from 'lit-html/directives/repeat.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/extensions-api'; -import { ManifestWorkspaceView, ManifestWorkspaceViewCollection } from '@umbraco-cms/extensions-registry'; -import { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestWorkspaceView, ManifestWorkspaceViewCollection } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; //TODO make uui-input accept min and max values @customElement('umb-logviewer-workspace') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index 6e01d52f37..1d6ee72173 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -1,4 +1,8 @@ -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspaceAlias = 'Umb.Workspace.LogviewerRoot'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 57539c9aa4..c03196a421 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -1,5 +1,5 @@ import { UmbLogViewerRepository } from '../repository/log-viewer.repository'; -import { ArrayState, createObservablePart, DeepState, ObjectState, StringState } from '@umbraco-cms/observable-api'; +import { ArrayState, createObservablePart, DeepState, ObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; import { DirectionModel, LogLevelCountsReponseModel, @@ -8,9 +8,9 @@ import { PagedLogMessageResponseModel, PagedLogTemplateResponseModel, PagedSavedLogSearchResponseModel, -} from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { BasicState } from 'libs/observable-api/basic-state'; export type PoolingInterval = 0 | 2000 | 5000 | 10000 | 20000 | 30000; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts index 4cce6a35ec..bae9ab55f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts @@ -1,8 +1,8 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LoggerResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LoggerResponseModel } from '@umbraco-cms/backoffice/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-log-level-overview') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts index 051d554f90..e0b286c9a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts @@ -1,8 +1,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-log-viewer-log-types-chart') export class UmbLogViewerLogTypesChartElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index 4b71250eb3..d96280149b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { PagedLogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PagedLogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; //TODO: fix pagination bug when API is fixed @customElement('umb-log-viewer-message-templates-overview') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index 205c5d0626..761f06c97b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; //TODO: implement the saved searches pagination when the API total bug is fixed @customElement('umb-log-viewer-saved-searches-overview') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts index c4c3be8e8b..d59f75d181 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts @@ -1,8 +1,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; -import { LogLevelCountsReponseModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { LogLevelCountsReponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; //TODO: add a disabled attribute to the show more button when the total number of items is correctly returned from the endpoint @customElement('umb-log-viewer-overview-view') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index dc72dcec91..78c554931e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -4,8 +4,8 @@ import { css, html } from 'lit'; import { customElement, queryAll, state } from 'lit/decorators.js'; import _ from 'lodash'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { LogLevelModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-log-level-filter-menu') export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index c0adf422c3..6669964aa3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { LogLevelModel, LogMessagePropertyPresentationModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { LogLevelModel, LogMessagePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; //TODO: check how to display EventId field in the message properties @customElement('umb-log-viewer-message') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts index aca5bcf552..896fedc78c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DirectionModel, LogMessageResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DirectionModel, LogMessageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-log-viewer-messages-list') export class UmbLogViewerMessagesListElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts index 5ee674f1d4..44b19b8cae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts @@ -8,7 +8,7 @@ import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, } from '../../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-polling-button') export class UmbLogViewerPollingButtonElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index 445127aefd..32ae06990d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; -import { SavedLogSearchResponseModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-search-input') export class UmbLogViewerSearchInputElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts index c9813ae53c..d936195362 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-search-view') export class UmbLogViewerSearchViewElement extends UmbLitElement { 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 9147a6a50a..687f7807df 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 '@umbraco-cms/extensions-registry'; +import { ManifestMenu } from '@umbraco-cms/backoffice/extensions-registry'; const menu: ManifestMenu = { type: 'menu', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts index e9213498d3..8138e8f9c9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; const menuItem: ManifestMenuItem = { type: 'menuItem', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts index 5057feee0a..f9973b6dcb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts @@ -1,6 +1,6 @@ import { html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-relation-types-menu-item') export class UmbRelationTypesMenuItemElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts index b12632ed53..fbbf4e87bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts @@ -2,7 +2,7 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repositor import { UmbRelationTypeStore } from './relation-type.store'; import { UmbRelationTypeTreeStore } from './relation-type.tree.store'; import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/extensions-registry'; +import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const RELATION_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.RelationType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 583fedf448..5ba5077140 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -3,12 +3,12 @@ import { UmbRelationTypeServerDataSource } from './sources/relation-type.server. import { UmbRelationTypeStore, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN } from './relation-type.store'; import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; import { RelationTypeTreeDataSource } from './sources'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/repository'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/notification'; +import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = RelationTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts index 3faf944e08..50c33961f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts @@ -1,8 +1,8 @@ -import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { ArrayState } from '@umbraco-cms/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/store'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbRelationTypeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts index b23208ba80..0220ccaa87 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbTreeStoreBase } from '@umbraco-cms/store'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index cd64590110..2aa585d817 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -1,5 +1,5 @@ -import type { DataSourceResponse } from '@umbraco-cms/models'; -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { DataSourceResponse } from '@umbraco-cms/backoffice/models'; +import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export interface RelationTypeTreeDataSource { getRootItems(): Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 0ae8d21897..d7756f9ae9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -1,13 +1,13 @@ -import { RepositoryDetailDataSource } from '@umbraco-cms/repository'; +import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, RelationTypeResource, RelationTypeResponseModel, CreateRelationTypeRequestModel, UpdateRelationTypeRequestModel, -} from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Relation Type that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 42026680ff..beb081494b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -1,8 +1,8 @@ import { RelationTypeTreeDataSource } from '.'; -import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backend-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the RelationType tree that fetches data from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts index 59001af52b..9b806c1dd6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; -import type { ManifestTree } from '@umbraco-cms/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts index 4d264bdbd8..0e4adf80b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/manifests.ts @@ -1,5 +1,9 @@ -import { UmbSaveWorkspaceAction } from '@umbraco-cms/workspace'; -import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView } from '@umbraco-cms/models'; +import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts index 8245a2034b..6d3bc52f0d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace-edit.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; /** * @element umb-relation-type-workspace-edit-element diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 732943af6c..2ec2e3383c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -1,10 +1,10 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; import { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; -import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { ObjectState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export class UmbRelationTypeWorkspaceContext extends UmbWorkspaceContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index bec947804b..3e36f0dc74 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; import './relation-type-workspace-edit.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index ea73010413..3013673446 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -4,8 +4,8 @@ import { customElement, state } from 'lit/decorators.js'; import { UUIBooleanInputEvent, UUIRadioGroupElement, UUIRadioGroupEvent, UUIToggleElement } from '@umbraco-ui/uui'; import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbRelationTypeWorkspaceContext } from '../../relation-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { RelationTypeResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-relation-type-workspace-view-relation-type') export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts index adc750459f..b8006df518 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbTableColumn, UmbTableConfig } from '../../../../../shared/components/table'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { RelationResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { RelationResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-workspace-view-relation-type-relation') export class UmbWorkspaceViewRelationTypeRelationElement extends UmbLitElement { 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 8838706a49..6c45267c2b 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,5 +1,5 @@ -import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; -import type { ManifestSection } from '@umbraco-cms/models'; +import { ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; const sectionAlias = 'Umb.Section.Settings'; 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 0b663112f6..0c7ceb3cfc 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 @@ -3,10 +3,11 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from './collection.context'; -import type { ManifestEntityBulkAction, MediaDetails } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbExecutedEvent } from '@umbraco-cms/events'; +import type { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extensions-registry'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; import '../components/entity-bulk-action/entity-bulk-action.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts index 13a1c7e426..270823236a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection-toolbar.element.ts @@ -4,9 +4,9 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { TooltipMenuItem } from '../components/tooltip-menu'; import '../components/tooltip-menu/tooltip-menu.element'; -import type { ManifestCollectionView } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-collection-toolbar') export class UmbCollectionToolbarElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 164cbdee97..4347266039 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,12 +1,12 @@ import { Observable } from 'rxjs'; -import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import type { UmbTreeStore } from '@umbraco-cms/store'; -import type { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { ArrayState, UmbObserverController } from '@umbraco-cms/observable-api'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { createExtensionClass } from 'libs/extensions-api/create-extension-class.function'; -import { UmbTreeRepository } from '@umbraco-cms/repository'; +import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). export class UmbCollectionContext< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts index 5e1922a789..58e9eb69c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts @@ -5,10 +5,11 @@ import { map } from 'rxjs'; import './collection-selection-actions.element'; import './collection-toolbar.element'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from './collection.context'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import type { ManifestCollectionView, MediaDetails } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { UmbObserverController } from '@umbraco-cms/observable-api'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-collection') export class UmbCollectionElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index d73b5edcbd..fe647018d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -3,9 +3,9 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit-html/directives/if-defined.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; -import type { ManifestDashboardCollection } from '@umbraco-cms/models'; -import type { FolderTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { ManifestDashboardCollection } from '@umbraco-cms/backoffice/extensions-registry'; +import type { FolderTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../collection.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts index dd3c39e2af..24e14c877b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-grid.element.ts @@ -3,8 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../collection.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-collection-view-media-grid') export class UmbCollectionViewsMediaGridElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-table.element.ts index f225d490b4..83772305aa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/collection-view-media-table.element.ts @@ -11,9 +11,9 @@ import { UmbTableOrderedEvent, UmbTableSelectedEvent, } from '../../components/table'; -import type { MediaDetails } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; +import type { MediaDetails } from '@umbraco-cms/backoffice/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-collection-view-media-table') export class UmbCollectionViewMediaTableElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts index e56717323b..b2a7bb7a83 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/views/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestCollectionView } from '@umbraco-cms/models'; +import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; export const manifests: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-header-sections.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-header-sections.element.ts index 1c696d7216..b219de183c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-header-sections.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-header-sections.element.ts @@ -4,8 +4,8 @@ import { customElement, state } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; import { UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; import type { UmbBackofficeContext } from './backoffice.context'; -import type { ManifestSection } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-backoffice-header-sections') export class UmbBackofficeHeaderSections extends UmbLitElement { @@ -104,8 +104,7 @@ export class UmbBackofficeHeaderSections extends UmbLitElement { @click="${() => this._handleSectionTabClick(section.alias)}" ?active="${this._currentSectionAlias === section.alias}" href="${`section/${section.meta.pathname}`}" - label="${section.meta.label || section.name}" - > + label="${section.meta.label || section.name}"> ` )} ${this._renderExtraSections()} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index 9924de36fa..fc054295d3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -5,10 +5,10 @@ import { state } from 'lit/decorators.js'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; import { UmbSectionElement } from '../section/section.element'; import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; -import type { IRoutingInfo, UmbRouterSlotChangeEvent } from '@umbraco-cms/router'; -import type { ManifestSection } from '@umbraco-cms/models'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { createExtensionElementOrFallback } from '@umbraco-cms/extensions-api'; +import type { IRoutingInfo, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; +import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { createExtensionElementOrFallback } from '@umbraco-cms/backoffice/extensions-api'; @defineElement('umb-backoffice-main') export class UmbBackofficeMain extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-modal-container.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-modal-container.element.ts index dd257e3841..f6c4590009 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-modal-container.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-modal-container.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-backoffice-modal-container') export class UmbBackofficeModalContainer extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-notification-container.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-notification-container.element.ts index eb5268301e..7b4e5ac181 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-notification-container.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-notification-container.element.ts @@ -6,8 +6,8 @@ import { UmbNotificationHandler, UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN, -} from '@umbraco-cms/notification'; -import { UmbLitElement } from '@umbraco-cms/element'; +} from '@umbraco-cms/backoffice/notification'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-backoffice-notification-container') export class UmbBackofficeNotificationContainer extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice.context.ts index f6a6ce4c24..9a5d46fcc1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice.context.ts @@ -1,6 +1,6 @@ -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { StringState } from '@umbraco-cms/observable-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { StringState } from '@umbraco-cms/backoffice/observable-api'; export class UmbBackofficeContext { #activeSectionAlias = new StringState(undefined); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts index f790057ecf..9552a2e7dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts @@ -2,9 +2,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing, TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UMB_CONTEXT_DEBUGGER_MODAL_TOKEN } from './modals/debug'; -import { UmbContextDebugRequest } from '@umbraco-cms/context-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbContextDebugRequest } from '@umbraco-cms/backoffice/context-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @customElement('umb-debug') export class UmbDebug extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/manifests.ts index 2b82b6cb72..fd0b85cdf1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestModal } from '@umbraco-cms/extensions-registry'; +import type { ManifestModal } from '@umbraco-cms/backoffice/extensions-registry'; const modals: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts index 841bc6c32b..ba14f65b7a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbContextDebuggerModalData } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-context-debugger-modal') export default class UmbContextDebuggerModalElement extends UmbModalBaseElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts index 2bf39440e8..760efebb80 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts @@ -1,5 +1,5 @@ import { TemplateResult } from 'lit'; -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbContextDebuggerModalData { content: TemplateResult | string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/dropdown/dropdown.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/dropdown/dropdown.element.ts index 20a72a57d9..c2164ab66b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/dropdown/dropdown.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/dropdown/dropdown.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; // TODO: maybe move this to UI Library. @customElement('umb-dropdown') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts index 6b1f0d61b2..a3edc8b9f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts @@ -1,8 +1,8 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; @customElement('umb-entity-action-list') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts index fb8da88a95..3ef6ad3819 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action.element.ts @@ -2,9 +2,9 @@ import { html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { UUIMenuItemEvent } from '@umbraco-ui/uui'; -import { UmbExecutedEvent } from '@umbraco-cms/events'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { ManifestEntityAction } from '@umbraco-cms/extensions-registry'; +import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; @customElement('umb-entity-action') class UmbEntityActionElement extends UmbLitElement { 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 01b150f737..313851140d 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 { UmbEntityBulkAction } from '@umbraco-cms/backoffice/entity-action'; +import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { ManifestEntityBulkAction } from '@umbraco-cms/backoffice/extensions-registry'; @customElement('umb-entity-bulk-action') class UmbEntityBulkActionElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index 8f8ea8b747..ff7e0176de 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -4,8 +4,8 @@ import type { TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import { createExtensionElement, isManifestElementableType, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { createExtensionElement, isManifestElementableType, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; export type InitializedExtension = { alias: string; weight: number; component: HTMLElement | null }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts index 1030779e98..a61451b20b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts @@ -1,9 +1,9 @@ import { customElement } from 'lit/decorators.js'; import { expect, fixture, html } from '@open-wc/testing'; import { InitializedExtension, UmbExtensionSlotElement } from './extension-slot.element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestDashboard } from '@umbraco-cms/extensions-registry'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestDashboard } from '@umbraco-cms/backoffice/extensions-registry'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; @customElement('test-extension-slot-manifest-element') class MyExtensionSlotManifestElement extends HTMLElement {} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts index 7173cd2d0b..36dc14343d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/header-app/header-app-button.element.ts @@ -2,8 +2,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, LitElement } from 'lit'; import { customElement } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { ManifestHeaderAppButtonKind, ManifestKind } from '@umbraco-cms/extensions-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import { ManifestHeaderAppButtonKind, ManifestKind } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; const manifest: ManifestKind = { type: 'kind', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-item.element.ts index 1db73bb340..9202a44398 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-item.element.ts @@ -1,7 +1,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 { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-history-item') export class UmbHistoryItemElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.element.ts index c89a0f39d5..8e1a1b78de 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-history-list') export class UmbHistoryListElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts index 9555158e76..5285262242 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts @@ -4,7 +4,7 @@ import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { repeat } from 'lit/directives/repeat.js'; import { UUIBooleanInputEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-input-checkbox-list') export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.element.ts index 3764f7ac75..4125f2e8a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.element.ts @@ -3,13 +3,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIColorSwatchesEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { SwatchDetails } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { SwatchDetails } from '@umbraco-cms/backoffice/models'; /* * This wraps the UUI library uui-color-swatches component * @element umb-input-color-picker -*/ + */ @customElement('umb-input-color-picker') export class UmbInputColorPickerElement extends FormControlMixin(UmbLitElement) { static styles = [UUITextStyles]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.test.ts index 1cc62c08c9..437f318e7f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-color-picker/input-color-picker.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbInputColorPickerElement } from './input-color-picker.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbInputColorPickerElement', () => { let element: UmbInputColorPickerElement; 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 ed3f11f018..6b3387030a 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 @@ -6,9 +6,9 @@ import { ifDefined } from 'lit-html/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-ui/uui'; import { UmbCultureRepository } from '../../../settings/cultures/repository/culture.repository'; -import { UmbChangeEvent } from '@umbraco-cms/events'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { CultureReponseModel } from '@umbraco-cms/backend-api'; +import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { CultureReponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-input-culture-select') export class UmbInputCultureSelectElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index f51dc2af03..e17dc66fa5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -7,10 +7,10 @@ import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/docume import type { UmbDocumentTreeStore } from '../../../documents/documents/repository/document.tree.store'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import type { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-input-document-picker') export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.test.ts index d7f33ff52c..4c20a6ec05 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbInputDocumentPickerElement } from './input-document-picker.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbInputDocumentPickerElement', () => { let element: UmbInputDocumentPickerElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.element.ts index 75b173a544..73e3de3c2e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIColorPickerChangeEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-input-eye-dropper') export class UmbInputEyeDropperElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.test.ts index 5f471eea16..78c8726490 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-eye-dropper/input-eye-dropper.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbInputEyeDropperElement } from './input-eye-dropper.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbInputEyeDropperElement', () => { let element: UmbInputEyeDropperElement; 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 7372d64a27..e53bf6b15d 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 @@ -6,11 +6,11 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from '../../../settings/languages/modals/language-picker'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbChangeEvent } from '@umbraco-cms/events'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { LanguageResponseModel } from '@umbraco-cms/backend-api'; -import type { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-input-language-picker') export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts index a1d954be41..a750f92d04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts @@ -7,8 +7,8 @@ import { UmbModalType, UMB_MODAL_CONTEXT_TOKEN, UmbPickerModalData, -} from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; +} from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** TODO: Make use of UUI FORM Mixin, to make it easily take part of a form. */ export class UmbInputListBase extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index ef74cc83da..7c1c4b12e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -6,10 +6,10 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbMediaRepository } from '../../../media/media/repository/media.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../../media/media/modals/media-picker'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { EntityTreeItemResponseModel } from '@umbraco-cms/backend-api'; -import type { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-input-media-picker') export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.test.ts index 29b81bd464..157f18dc4e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbInputMediaPickerElement } from './input-media-picker.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbInputMediaPickerElement', () => { let element: UmbInputMediaPickerElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index be778585ad..bf514d7bed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -4,8 +4,8 @@ import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; /** * @element umb-input-multi-url-picker diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts index 8cf1a4ed09..46910eb48f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; function getNumberOrUndefined(value: string) { const num = parseInt(value, 10); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.test.ts index ade9185f53..693933b07c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.test.ts @@ -1,6 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; import { UmbInputNumberRangeElement } from './input-number-range.element'; -import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; describe('UmbPropertyEditorUINumberRangeElement', () => { let element: UmbInputNumberRangeElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-radio-button-list/input-radio-button-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-radio-button-list/input-radio-button-list.element.ts index e68110dabc..5d69da7ad4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-radio-button-list/input-radio-button-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-radio-button-list/input-radio-button-list.element.ts @@ -4,7 +4,7 @@ import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { repeat } from 'lit/directives/repeat.js'; import { UUIBooleanInputEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-input-radio-button-list') export class UmbInputRadioButtonListElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts index a68fe5ee37..34799eeeff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts @@ -3,8 +3,8 @@ import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; import { UMB_SECTION_PICKER_MODAL_TOKEN } from '../../modals/section-picker'; -import type { ManifestSection } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; @customElement('umb-input-section') export class UmbInputPickerSectionElement extends UmbInputListBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.test.ts index dc5e319cbb..38973836c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; //TODO: Test has been commented out while we figure out how to setup import maps for the test environment // import { UmbPickerSectionElement } from './picker-section.element'; -// import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +// import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; // describe('UmbPickerSectionElement', () => { // let element: UmbPickerSectionElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-slider/input-slider.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-slider/input-slider.element.ts index 9ffcacdb12..19c468d194 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-slider/input-slider.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-slider/input-slider.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUISliderEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-input-slider') export class UmbInputSliderElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-toggle/input-toggle.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-toggle/input-toggle.element.ts index 987749adaa..6142481ef0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-toggle/input-toggle.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-toggle/input-toggle.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIBooleanInputEvent } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-input-toggle') export class UmbInputToggleElement extends FormControlMixin(UmbLitElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index bce191a089..d27245d136 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -8,7 +8,7 @@ import { } from '../../../users/user-groups/repository/user-group.store'; import { UMB_USER_GROUP_PICKER_MODAL_TOKEN } from '../../../users/user-groups/modals/user-group-picker'; -import type { UserGroupEntity } from '@umbraco-cms/models'; +import type { UserGroupEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user-group') export class UmbInputPickerUserGroupElement extends UmbInputListBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.test.ts index 20550a4780..d4cf1c0e7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; //TODO: Test has been commented out while we figure out how to setup import maps for the test environment // import { UmbPickerUserGroupElement } from './picker-user-group.element'; -// import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +// import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; // describe('UmbPickerLayoutUserGroupElement', () => { // let element: UmbPickerUserGroupElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts index b2e077a60d..87fd8c3b19 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/users/repository/user.store'; import { UMB_USER_PICKER_MODAL_TOKEN } from '../../../users/users/modals/user-picker'; -import type { UserEntity } from '@umbraco-cms/models'; +import type { UserEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user') export class UmbPickerUserElement extends UmbInputListBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.test.ts index 483a865475..7d85d80d5f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, html } from '@open-wc/testing'; //TODO: Test has been commented out while we figure out how to setup import maps for the test environment // import { UmbPickerUserElement } from './picker-user.element'; -// import { defaultA11yConfig } from '@umbraco-cms/test-utils'; +// import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; // describe('UmbPickerUserElement', () => { // let element: UmbPickerUserElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts index 4e04ea25a5..994f942516 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts @@ -3,8 +3,8 @@ 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 { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { ManifestMenuItem } from '@umbraco-cms/models'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; @customElement('umb-menu-item') export class UmbMenuItem extends UmbLitElement { 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 index 86dffedd6f..62cc9d6c76 100644 --- 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 @@ -1,8 +1,8 @@ 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 { ManifestMenu, ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../menu-item/menu-item.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts index 5bfae994a8..ea1c67bcea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts @@ -9,10 +9,10 @@ import type { DataTypeResponseModel, DataTypePropertyPresentationModel, PropertyTypeResponseModelBaseModel, -} from '@umbraco-cms/backend-api'; +} from '@umbraco-cms/backoffice/backend-api'; import '../workspace-property/workspace-property.element'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-property-type-based-property') export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts index daf4285728..12fa64dcf3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts @@ -6,7 +6,7 @@ import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, } from '../section-sidebar/section-sidebar.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-section-sidebar-context-menu') export class UmbSectionSidebarContextMenu extends UmbLitElement { 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 e81caa76dc..67510ed5bf 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,11 +1,15 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ManifestKind, ManifestMenu, ManifestSectionSidebarAppMenuKind } from '@umbraco-cms/extensions-registry'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { + ManifestKind, + ManifestMenu, + ManifestSectionSidebarAppMenuKind, +} from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import '../../menu/menu.element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; // TODO: Move to separate file: const manifest: ManifestKind = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts index c926095689..4ef7539100 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts @@ -1,6 +1,6 @@ -import { UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { StringState } from '@umbraco-cms/observable-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { StringState } from '@umbraco-cms/backoffice/observable-api'; import { BasicState } from 'libs/observable-api/basic-state'; export class UmbSectionSidebarContext { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.element.ts index d388e8bfc2..f16bc17cb6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN } from './section-sidebar.context'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../../tree/context-menu/tree-context-menu.service'; import '../section-sidebar-context-menu/section-sidebar-context-menu.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 5dba7bfcba..5f117f02b3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -3,11 +3,11 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/router'; -import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/models'; -import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; +import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/backoffice/extensions-registry'; +import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; // TODO: this might need a new name, since it's both view and dashboard now @customElement('umb-section-views') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index 2c4e8a4068..66f502e948 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -1,6 +1,7 @@ -import type { Entity, ManifestSection, ManifestSectionView } from '@umbraco-cms/models'; -import { ObjectState, StringState } from '@umbraco-cms/observable-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; +import type { Entity } from '@umbraco-cms/backoffice/models'; +import { ObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export type ActiveTreeItemType = Entity | undefined; 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 7443d3276d..5fa2a8be93 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 @@ -4,10 +4,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; -import type { IRoutingInfo } from '@umbraco-cms/router'; -import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import type { IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './section-sidebar-menu/section-sidebar-menu.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts index 25bc723a4d..2be951ebe5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, nothing, PropertyValueMap } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DeepState } from '@umbraco-cms/observable-api'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; // TODO: Refactor this, its not a service and the data should be handled by a context api. @customElement('umb-tree-context-menu-page-service') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu.service.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu.service.ts index c982250ea0..2be00be4f1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu.service.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu.service.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { UmbContextToken } from '@umbraco-cms/context-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-tree-context-menu-service') export class UmbTreeContextMenuService extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts index 322191fe83..2e4345ed17 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts @@ -10,10 +10,10 @@ import { UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, } from '../section/section-sidebar/section-sidebar.context'; import type { UmbTreeContextBase } from './tree.context'; -import type { Entity } from '@umbraco-cms/models'; -import type { UmbTreeStore } from '@umbraco-cms/store'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; +import type { Entity } from '@umbraco-cms/backoffice/models'; +import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; // TODO: align menu items and tree items @customElement('umb-tree-item') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts index 2565b9ce4f..91a0304a92 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts @@ -1,8 +1,8 @@ import { html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { ManifestKind, ManifestMenuItemTreeKind } from '@umbraco-cms/extensions-registry'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestKind, ManifestMenuItemTreeKind } from '@umbraco-cms/backoffice/extensions-registry'; // TODO: Move to separate file: const manifest: ManifestKind = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts index fa0ef9d55c..d01a1dc0ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts @@ -1,8 +1,8 @@ import type { Observable } from 'rxjs'; -import { UmbTreeRepository } from '@umbraco-cms/repository'; -import type { ManifestTree } from '@umbraco-cms/models'; -import { DeepState } from '@umbraco-cms/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; +import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export interface UmbTreeContext { tree: ManifestTree; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 133b30cf17..62e461fcf9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -3,9 +3,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit-html/directives/repeat.js'; import { UmbTreeContextBase } from './tree.context'; -import type { Entity, ManifestTree } from '@umbraco-cms/models'; -import { umbExtensionsRegistry } from '@umbraco-cms/extensions-api'; -import { UmbLitElement } from '@umbraco-cms/element'; +import type { Entity } from '@umbraco-cms/backoffice/models'; +import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './tree-item.element'; import './context-menu/tree-context-menu-page.service'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 16b1c12ef9..2125acb5b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -8,8 +8,8 @@ import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN, } from '../workspace/workspace-variant/workspace-variant.context'; import { ActiveVariant } from '../workspace/workspace-context/workspace-split-view-manager.class'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { DocumentVariantResponseModel, ContentStateModel } from '@umbraco-cms/backend-api'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentVariantResponseModel, ContentStateModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-variant-selector') export class UmbVariantSelectorElement extends UmbLitElement { @@ -334,7 +334,7 @@ export class UmbVariantSelectorElement extends UmbLitElement { html`
  • - - ${this.selected ? '(Default template)' : 'Set default'} + + ${this.default ? '(Default template)' : 'Set default'} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-cards/template-card.stories.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.stories.ts From 0c2ca8996209f5bee91f9e076ca46df36160db0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz?= Date: Wed, 22 Mar 2023 10:34:19 +0100 Subject: [PATCH 274/550] #579 Drop lit-html as direct dependency (#609) * Drop lit-html as direct dependency * remove lit-html imports after merge --------- Co-authored-by: Mads Rasmussen --- .../.storybook/preview.js | 2 +- .../property-editor-ui/stories.ts.hbs | 2 +- src/Umbraco.Web.UI.Client/package-lock.json | 1 - src/Umbraco.Web.UI.Client/package.json | 1 - .../src/backoffice/backoffice.stories.ts | 2 +- .../dashboard-redirect-management.stories.ts | 2 +- .../welcome/dashboard-welcome.stories.ts | 2 +- .../allowed-document-types-modal.element.ts | 2 +- .../document-type-workspace.stories.ts | 2 +- ...space-view-document-type-design.stories.ts | 2 +- ...ent-table-actions-column-layout.element.ts | 2 +- .../workspace/document-workspace.stories.ts | 2 +- .../document-info-workspace-view.stories.ts | 2 +- .../workspace/media-workspace.stories.ts | 2 +- .../edit/media-edit-workspace-view.stories.ts | 2 +- .../info/media-info-workspace-view.stories.ts | 2 +- .../dashboard-members-welcome.stories.ts | 2 +- .../member-group-workspace.stories.ts | 2 +- ...orkspace-view-member-group-info.stories.ts | 2 +- .../workspace/member-workspace.stories.ts | 2 +- .../workspace-package-builder.element.ts | 2 +- .../modals/search/search-modal.element.ts | 2 +- .../dashboard-examine-management.stories.ts | 2 +- .../dashboard-health-check.stories.ts | 2 +- .../dashboard-models-builder.stories.ts | 2 +- ...dashboard-performance-profiling.stories.ts | 2 +- .../dashboard-published-status.stories.ts | 2 +- .../dashboard-settings-welcome.stories.ts | 2 +- .../telemetry/dashboard-telemetry.stories.ts | 2 +- .../workspace/data-type-workspace.stories.ts | 2 +- ...ata-type-details-workspace-view.stories.ts | 2 +- .../workspace-view-data-type-info.stories.ts | 2 +- .../extension-root-workspace.stories.ts | 2 +- .../app-language-select.element.ts | 2 +- .../language-picker-modal.element.ts | 4 +- ...root-table-delete-column-layout.element.ts | 2 +- .../language-workspace-edit.element.ts | 2 +- .../log-viewer-level-tag.element.ts | 2 +- .../logviewer-root-workspace.element.ts | 2 +- .../relation-type-workspace.stories.ts | 2 +- ...pe-workspace-view-relation-type.stories.ts | 2 +- ...ace-view-relation-type-relation.stories.ts | 2 +- .../dashboard-collection.element.ts | 2 +- .../dashboard-collection.stories.ts | 2 +- .../body-layout/body-layout.stories.ts | 15 +++--- .../button-with-dropdown.stories.ts | 3 +- .../code-block/code-block.stories.ts | 23 ++++---- .../donut-chart/donut-chart.stories.ts | 2 +- .../empty-state/empty-state.stories.ts | 27 +++++----- .../entity-bulk-action.element.ts | 2 +- .../footer-layout/footer-layout.stories.ts | 2 +- .../history/history-list.stories.ts | 2 +- .../input-culture-select.element.ts | 2 +- .../input-document-picker.element.ts | 2 +- .../input-language-picker.element.ts | 2 +- .../input-media-picker.element.ts | 2 +- .../components/menu-item/menu-item.element.ts | 2 +- .../property-type-based-property.element.ts | 2 +- .../ref-property-editor-ui.stories.ts | 53 +++++++++---------- .../section-main/section-main.stories.ts | 2 +- .../section-sidebar-context-menu.element.ts | 2 +- .../section-sidebar-menu.stories.ts | 2 +- .../section-sidebar.stories.ts | 2 +- .../shared/components/table/table.element.ts | 4 +- .../components/tree/tree-item.element.ts | 2 +- .../shared/components/tree/tree.element.ts | 2 +- .../variant-selector.element.ts | 2 +- .../workspace-property.element.ts | 2 +- .../workspace-property.stories.ts | 2 +- .../workspace-view-collection.element.ts | 2 +- .../workspace-footer-layout.stories.ts | 2 +- .../workspace-layout.stories.ts | 2 +- .../workspace-property-layout.stories.ts | 2 +- .../clear/property-action-clear.stories.ts | 2 +- .../copy/property-action-copy.stories.ts | 2 +- .../property-editor-config.element.ts | 2 +- .../property-editor-config.stories.ts | 2 +- ...-block-grid-block-configuration.stories.ts | 2 +- ...-block-grid-group-configuration.stories.ts | 2 +- ...ui-block-grid-stylesheet-picker.stories.ts | 2 +- .../property-editor-ui-block-grid.stories.ts | 2 +- ...-block-list-block-configuration.stories.ts | 2 +- .../property-editor-ui-block-list.stories.ts | 2 +- ...roperty-editor-ui-checkbox-list.stories.ts | 2 +- ...on-view-bulk-action-permissions.stories.ts | 2 +- ...ction-view-column-configuration.stories.ts | 2 +- ...ction-view-layout-configuration.stories.ts | 2 +- ...tor-ui-collection-view-order-by.stories.ts | 2 +- ...perty-editor-ui-collection-view.stories.ts | 2 +- ...property-editor-ui-color-picker.stories.ts | 2 +- .../property-editor-ui-date-picker.stories.ts | 35 ++++++------ ...perty-editor-ui-document-picker.stories.ts | 2 +- .../property-editor-ui-dropdown.stories.ts | 2 +- .../property-editor-ui-eye-dropper.stories.ts | 2 +- .../property-editor-ui-icon-picker.stories.ts | 2 +- ...roperty-editor-ui-image-cropper.stories.ts | 2 +- ...or-ui-image-crops-configuration.stories.ts | 2 +- .../label/property-editor-ui-label.stories.ts | 2 +- ...perty-editor-ui-markdown-editor.stories.ts | 2 +- ...property-editor-ui-media-picker.stories.ts | 2 +- ...y-editor-ui-member-group-picker.stories.ts | 2 +- ...roperty-editor-ui-member-picker.stories.ts | 2 +- ...erty-editor-ui-multi-url-picker.stories.ts | 2 +- ...-editor-ui-multiple-text-string.element.ts | 2 +- ...-editor-ui-multiple-text-string.stories.ts | 2 +- ...property-editor-ui-number-range.stories.ts | 2 +- .../property-editor-ui-number.stories.ts | 2 +- ...perty-editor-ui-order-direction.stories.ts | 2 +- ...property-editor-ui-overlay-size.stories.ts | 2 +- ...rty-editor-ui-radio-button-list.stories.ts | 2 +- .../property-editor-ui-slider.stories.ts | 2 +- ...rty-editor-ui-tags-storage-type.stories.ts | 2 +- .../tags/property-editor-ui-tags.stories.ts | 2 +- .../property-editor-ui-text-box.stories.ts | 2 +- .../property-editor-ui-textarea.stories.ts | 2 +- ...ditor-ui-tiny-mce-configuration.stories.ts | 2 +- .../property-editor-ui-tiny-mce.stories.ts | 2 +- .../property-editor-ui-toggle.stories.ts | 2 +- ...ditor-ui-tree-picker-start-node.stories.ts | 2 +- .../property-editor-ui-tree-picker.stories.ts | 2 +- ...property-editor-ui-upload-field.stories.ts | 2 +- .../property-editor-ui-user-picker.stories.ts | 2 +- .../property-editor-ui-value-type.stories.ts | 2 +- ...ashboard-translation-dictionary.element.ts | 2 +- .../create-dictionary-modal-layout.element.ts | 2 +- .../import-dictionary-modal-layout.element.ts | 2 +- .../workspace/dictionary-workspace.stories.ts | 2 +- .../workspace-view-dictionary-edit.element.ts | 2 +- .../workspace-view-dictionary-edit.stories.ts | 6 +-- .../grid/workspace-view-users-grid.element.ts | 2 +- .../controller-host-test.element.ts | 2 +- .../src/core/modal/stories/modal.stories.ts | 2 +- .../story-modal-service-example.element.ts | 2 +- .../src/core/stores/icon/icon.stories.ts | 2 +- .../consent/installer-consent.stories.ts | 2 +- .../database/installer-database.stories.ts | 2 +- .../error/installer-error.stories.ts | 2 +- .../src/installer/installer.stories.ts | 2 +- .../installer-installing.stories.ts | 2 +- .../shared/layout/installer-layout.stories.ts | 2 +- .../installer/shared/utils.story-helpers.ts | 2 +- .../installer/user/installer-user.stories.ts | 2 +- .../src/upgrader/upgrader.stories.ts | 2 +- 143 files changed, 214 insertions(+), 222 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.storybook/preview.js b/src/Umbraco.Web.UI.Client/.storybook/preview.js index bf9f28adbd..63cdf70dc3 100644 --- a/src/Umbraco.Web.UI.Client/.storybook/preview.js +++ b/src/Umbraco.Web.UI.Client/.storybook/preview.js @@ -7,7 +7,7 @@ import '@umbraco-ui/uui-modal-container'; import '@umbraco-ui/uui-modal-dialog'; import '@umbraco-ui/uui-modal-sidebar'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { initialize, mswDecorator } from 'msw-storybook-addon'; import { setCustomElements } from '@storybook/web-components'; diff --git a/src/Umbraco.Web.UI.Client/devops/plop/templates/property-editor-ui/stories.ts.hbs b/src/Umbraco.Web.UI.Client/devops/plop/templates/property-editor-ui/stories.ts.hbs index 639e3b1fa8..69c46995b8 100644 --- a/src/Umbraco.Web.UI.Client/devops/plop/templates/property-editor-ui/stories.ts.hbs +++ b/src/Umbraco.Web.UI.Client/devops/plop/templates/property-editor-ui/stories.ts.hbs @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { {{className extensionType name}} } from './{{ extensionFilename extensionType name }}.element'; import './{{ extensionFilename extensionType name }}.element'; diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 45bc7cf754..b12d83fb70 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -56,7 +56,6 @@ "eslint-plugin-local-rules": "^1.3.2", "eslint-plugin-storybook": "^0.6.11", "eslint-plugin-wc": "^1.4.0", - "lit-html": "^2.6.1", "msw": "^1.1.0", "msw-storybook-addon": "^1.7.0", "openapi-typescript-codegen": "^0.23.0", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index c44eae8127..555f6d2cca 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -106,7 +106,6 @@ "eslint-plugin-local-rules": "^1.3.2", "eslint-plugin-storybook": "^0.6.11", "eslint-plugin-wc": "^1.4.0", - "lit-html": "^2.6.1", "msw": "^1.1.0", "msw-storybook-addon": "^1.7.0", "openapi-typescript-codegen": "^0.23.0", diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.stories.ts index a43b869b1a..3fd59b80df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbBackofficeElement } from './backoffice.element'; import './backoffice.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.stories.ts index 99d180a303..5ca04fc51e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.stories.ts @@ -1,7 +1,7 @@ import './dashboard-redirect-management.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardRedirectManagementElement } from './dashboard-redirect-management.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.stories.ts index 82ad05aea5..20d0abcacb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/welcome/dashboard-welcome.stories.ts @@ -1,7 +1,7 @@ import './dashboard-welcome.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardWelcomeElement } from './dashboard-welcome.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index bf146b2944..85a14bb33c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -1,7 +1,7 @@ import { html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts index 4ea7c3095f..ae5c5e8fc8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts @@ -1,6 +1,6 @@ import './document-type-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { ifDefined } from 'lit/directives/if-defined.js'; import { treeData } from '../../../../core/mocks/data/document-type.data'; import type { UmbDocumentTypeWorkspaceElement } from './document-type-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.stories.ts index b3d14fe840..e1de486962 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.stories.ts @@ -1,7 +1,7 @@ import './workspace-view-document-type-design.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/document-type.data'; //import { UmbDocumentTypeContext } from '../../document-type.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts index 48781fd710..c5dd3bac32 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts @@ -1,5 +1,5 @@ import { css, html, LitElement, nothing } from 'lit'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { customElement, property, state } from 'lit/decorators.js'; import type { UmbTableColumn, UmbTableItem } from '../../../../../../shared/components/table'; import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts index ce3a24444b..95bd2cf1d3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.stories.ts @@ -1,6 +1,6 @@ import './document-workspace-edit.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDocumentWorkspaceElement } from './document-workspace.element'; export default { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts index 1b213e6803..60431116de 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts @@ -1,7 +1,7 @@ import './document-info-workspace-view.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; // import { data } from '../../../../../../core/mocks/data/document.data'; // import { UmbNodeContext } from '../../node.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts index 019047dc04..82e5edea53 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts @@ -1,6 +1,6 @@ import './media-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data as mediaNodes } from '../../../../core/mocks/data/media.data'; import type { UmbMediaWorkspaceElement } from './media-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/edit/media-edit-workspace-view.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/edit/media-edit-workspace-view.stories.ts index ea00e6733b..b0e7827cae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/edit/media-edit-workspace-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/edit/media-edit-workspace-view.stories.ts @@ -1,7 +1,7 @@ import './media-edit-workspace-view.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; // import { data } from '../../../../../../core/mocks/data/media.data'; // import { UmbNodeContext } from '../../node.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/info/media-info-workspace-view.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/info/media-info-workspace-view.stories.ts index 4afbc8700b..b05665cbb3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/info/media-info-workspace-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/views/info/media-info-workspace-view.stories.ts @@ -1,7 +1,7 @@ import './media-info-workspace-view.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; // import { data } from '../../../../../../core/mocks/data/media.data'; // import { UmbNodeContext } from '../../node.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/dashboards/welcome/dashboard-members-welcome.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/dashboards/welcome/dashboard-members-welcome.stories.ts index ab8c3929e2..0f85b67184 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/dashboards/welcome/dashboard-members-welcome.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/dashboards/welcome/dashboard-members-welcome.stories.ts @@ -1,7 +1,7 @@ import './dashboard-members-welcome.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardMembersWelcomeElement } from './dashboard-members-welcome.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts index 844cd022ab..ac44105f27 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts @@ -1,7 +1,7 @@ import './member-group-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data } from '../../../../core/mocks/data/member-group.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.stories.ts index 6ef526d298..97b745c4ad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.stories.ts @@ -1,7 +1,7 @@ import './workspace-view-member-group-info.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/data-type.data'; //import { UmbDataTypeContext } from '../../data-type.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts index 4a9f3778ae..ebe1cce2ce 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts @@ -1,7 +1,7 @@ import './member-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data } from '../../../../core/mocks/data/member.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 2b5b277390..8903993ffb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { UUIBooleanInputEvent, UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { css, html, nothing } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbInputDocumentPickerElement } from '../../../shared/components/input-document-picker/input-document-picker.element'; import { UmbInputMediaPickerElement } from '../../../shared/components/input-media-picker/input-media-picker.element'; import { UmbInputLanguagePickerElement } from '../../../shared/components/input-language-picker/input-language-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/search-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/search-modal.element.ts index b294c49eda..9c44c331c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/search-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/search-modal.element.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement, nothing } from 'lit'; -import { repeat } from 'lit-html/directives/repeat.js'; +import { repeat } from 'lit/directives/repeat.js'; import { customElement, query, state } from 'lit/decorators.js'; export type SearchItem = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.stories.ts index 3e3b5c194e..1631ca4528 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardExamineManagementElement } from './dashboard-examine-management.element'; import './dashboard-examine-management.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.stories.ts index e444c665c2..b45b7e3d99 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardHealthCheckOverviewElement } from './views/health-check-overview.element'; import './views/health-check-overview.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.stories.ts index a4174331da..98bc351222 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardModelsBuilderElement } from './dashboard-models-builder.element'; import './dashboard-models-builder.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.stories.ts index fedf360d27..affb5f940b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/performance-profiling/dashboard-performance-profiling.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardPerformanceProfilingElement } from './dashboard-performance-profiling.element'; import './dashboard-performance-profiling.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.stories.ts index c8fe24cd10..7c80cdeaa1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardPublishedStatusElement } from './dashboard-published-status.element'; import './dashboard-published-status.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.stories.ts index a6b3b2a257..82f0475336 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/settings-welcome/dashboard-settings-welcome.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardSettingsWelcomeElement } from './dashboard-settings-welcome.element'; import './dashboard-settings-welcome.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.stories.ts index cb92a9de25..c101e73f41 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/telemetry/dashboard-telemetry.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardTelemetryElement } from './dashboard-telemetry.element'; import './dashboard-telemetry.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts index 254a12f137..3b560f8660 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts @@ -1,7 +1,7 @@ import './data-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data } from '../../../../core/mocks/data/data-type.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts index 466e56d2b0..42cce1558e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/data-type.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.stories.ts index 81ff7b8607..b819c5c983 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.stories.ts @@ -1,7 +1,7 @@ import './workspace-view-data-type-info.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/data-type.data'; //import { UmbDataTypeContext } from '../../data-type.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.stories.ts index 65223c1522..55f8ef3fbd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.stories.ts @@ -1,7 +1,7 @@ import './extension-root-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbExtensionRootWorkspaceElement } from './extension-root-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts index f0bec83961..9ccf25f8e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language-select.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UUIMenuItemEvent } from '@umbraco-ui/uui'; import { UmbLanguageRepository } from '../repository/language.repository'; import { UMB_APP_LANGUAGE_CONTEXT_TOKEN, UmbAppLanguageContext } from './app-language.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts index 1afe97afbb..e59782b652 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/language-picker-modal.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { repeat } from 'lit-html/directives/repeat.js'; +import { repeat } from 'lit/directives/repeat.js'; import { UUIMenuItemElement, UUIMenuItemEvent } from '@umbraco-ui/uui'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbModalElementPickerBase } from '@umbraco-cms/internal/modal'; import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts index e336aa457e..2da293c6b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts index 5119c0ba85..ecb56842c0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts index 41cfb3f78c..4bf03dbf85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { InterfaceColor, InterfaceLook } from '@umbraco-ui/uui-base/lib/types'; import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index c656c4394a..46382e5690 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -4,7 +4,7 @@ import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { repeat } from 'lit-html/directives/repeat.js'; +import { repeat } from 'lit/directives/repeat.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts index eb6dfa676e..0a95080b53 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -1,7 +1,7 @@ import './relation-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data } from '../../../../core/mocks/data/relation-type.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts index 284b58e8ce..b7a59493e3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/relation-type.data'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts index 49657d8e70..486766b227 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts @@ -1,7 +1,7 @@ import './workspace-view-relation-type-relation.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/relation-type.data'; //import { UmbRelationTypeContext } from '../../relation-type.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index fe647018d6..5c21bbee38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; import type { ManifestDashboardCollection } from '@umbraco-cms/backoffice/extensions-registry'; import type { FolderTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.stories.ts index ae18d8c2c6..7a736b1f28 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbDashboardCollectionElement } from './dashboard-collection.element'; import './dashboard-collection.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/body-layout/body-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/body-layout/body-layout.stories.ts index 087ae4c959..01c959db84 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/body-layout/body-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/body-layout/body-layout.stories.ts @@ -1,22 +1,21 @@ import { Meta, StoryObj } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import './body-layout.element'; import type { UmbBodyLayout } from './body-layout.element'; const meta: Meta = { - title: 'Components/Workspace Layout', - component: 'umb-body-layout' + title: 'Components/Workspace Layout', + component: 'umb-body-layout', }; - + export default meta; type Story = StoryObj; -export const Overview: Story = { - render: () => html` - +export const Overview: Story = { + render: () => html`
    Header slot
    Main slot
    Footer slot
    -
    ` +
    `, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/button-with-dropdown/button-with-dropdown.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/button-with-dropdown/button-with-dropdown.stories.ts index d42a021c21..f9b2f79643 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/button-with-dropdown/button-with-dropdown.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/button-with-dropdown/button-with-dropdown.stories.ts @@ -1,6 +1,5 @@ - import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { UmbButtonWithDropdownElement } from './button-with-dropdown.element'; export default { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts index 533a46b28e..4955d7cc10 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts @@ -1,26 +1,21 @@ import { Meta, StoryObj } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import './code-block.element'; import type { UUICodeBlock } from './code-block.element'; const meta: Meta = { - title: 'Components/Code Block', - component: 'uui-code-block' + title: 'Components/Code Block', + component: 'uui-code-block', }; - + export default meta; type Story = StoryObj; - + export const Overview: Story = { - args: { - } + args: {}, }; export const WithCode: Story = { - decorators: [], - render: () => html` - - // Lets write some javascript - alert("Hello World"); - ` -}; \ No newline at end of file + decorators: [], + render: () => html` // Lets write some javascript alert("Hello World"); `, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts index 72529b5b1e..efeb9c3405 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts @@ -2,7 +2,7 @@ import './donut-slice'; import './donut-chart'; import { Meta } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; export default { title: 'Components/Donut chart', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/empty-state/empty-state.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/empty-state/empty-state.stories.ts index 5784914c4e..ddcd24e6fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/empty-state/empty-state.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/empty-state/empty-state.stories.ts @@ -1,26 +1,27 @@ import { Meta, StoryObj } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import './empty-state.element'; import type { UmbEmptyStateElement } from './empty-state.element'; const meta: Meta = { - title: 'Components/Empty State', - component: 'umb-empty-state', - render: (args) => html` - There are no items to be found`, + title: 'Components/Empty State', + component: 'umb-empty-state', + render: (args) => html` There are no items to be found`, }; - + export default meta; type Story = StoryObj; export const Overview: Story = { - args: { - size: 'large', - } + args: { + size: 'large', + }, }; export const Small: Story = { - args: { - size: 'small', - } -}; \ No newline at end of file + args: { + size: 'small', + }, +}; 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 313851140d..f21156c02c 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,6 +1,6 @@ import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbEntityBulkAction } from '@umbraco-cms/backoffice/entity-action'; import { UmbExecutedEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/footer-layout/footer-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/footer-layout/footer-layout.stories.ts index dc5fce7e70..bf10d72e8b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/footer-layout/footer-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/footer-layout/footer-layout.stories.ts @@ -1,7 +1,7 @@ import './footer-layout.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbFooterLayout } from './footer-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.stories.ts index fdc13cc6e0..5537f44735 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/history/history-list.stories.ts @@ -2,7 +2,7 @@ import './history-list.element'; import './history-item.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbHistoryListElement } from './history-list.element'; import type { UmbHistoryItemElement } from './history-item.element'; 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 6b3387030a..847c14bcb7 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 @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIComboboxElement, UUIComboboxEvent } from '@umbraco-ui/uui'; import { UmbCultureRepository } from '../../../settings/cultures/repository/culture.repository'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index e17dc66fa5..7b3d2bdea9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -1,7 +1,7 @@ import { css, html, nothing } from 'lit'; 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 { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/documents/repository/document.tree.store'; import type { UmbDocumentTreeStore } from '../../../documents/documents/repository/document.tree.store'; 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 e53bf6b15d..cd21264afa 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 @@ -1,7 +1,7 @@ import { css, html } from 'lit'; 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 { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 7c1c4b12e8..d497dda6df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -1,7 +1,7 @@ import { css, html, nothing } from 'lit'; 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 { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbMediaRepository } from '../../../media/media/repository/media.repository'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts index 994f942516..73203fe3f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; 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 { ifDefined } from 'lit/directives/if-defined.js'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts index ea1c67bcea..707cc6be5a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts @@ -1,6 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbDataTypeRepository } from '../../../settings/data-types/repository/data-type.repository'; import { UmbVariantId } from '../../variants/variant-id.class'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/ref-property-editor-ui/ref-property-editor-ui.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/ref-property-editor-ui/ref-property-editor-ui.stories.ts index 34d8e5365b..cf45fa130e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/ref-property-editor-ui/ref-property-editor-ui.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/ref-property-editor-ui/ref-property-editor-ui.stories.ts @@ -1,44 +1,43 @@ import { Meta, StoryObj } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import './ref-property-editor-ui.element'; import type { UmbRefPropertyEditorUIElement } from './ref-property-editor-ui.element'; const meta: Meta = { - title: 'Components/Ref Property Editor UI', - component: 'umb-ref-property-editor-ui', + title: 'Components/Ref Property Editor UI', + component: 'umb-ref-property-editor-ui', }; - + export default meta; type Story = StoryObj; - + export const Overview: Story = { - args: { - name: "Custom Property Editor UI", - alias: "Umb.PropertyEditorUI.CustomUI", - propertyEditorAlias: "Umbraco.JSON" - } + args: { + name: 'Custom Property Editor UI', + alias: 'Umb.PropertyEditorUI.CustomUI', + propertyEditorAlias: 'Umbraco.JSON', + }, }; - export const WithDetail: Story = { - args: { - name: "Custom Property Editor UI", - alias: "Umb.PropertyEditorUI.CustomUI", - propertyEditorAlias: "Umbraco.JSON", - detail: "With some custom details" - } + args: { + name: 'Custom Property Editor UI', + alias: 'Umb.PropertyEditorUI.CustomUI', + propertyEditorAlias: 'Umbraco.JSON', + detail: 'With some custom details', + }, }; export const WithSlots: Story = { - args: { - name: "Custom Property Editor UI", - alias: "Umb.PropertyEditorUI.CustomUI", - propertyEditorAlias: "Umbraco.JSON", - detail: "With some custom details" - }, + args: { + name: 'Custom Property Editor UI', + alias: 'Umb.PropertyEditorUI.CustomUI', + propertyEditorAlias: 'Umbraco.JSON', + detail: 'With some custom details', + }, render: (args) => html` - @@ -51,5 +50,5 @@ export const WithSlots: Story = { - ` -}; \ No newline at end of file + `, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.stories.ts index 37b6555aa0..8f7ae070a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-main/section-main.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbSectionMainElement } from './section-main.element'; import './section-main.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts index 12fa64dcf3..bae231e7cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.stories.ts index 002ab577eb..797b347e47 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar-menu/section-sidebar-menu.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbSectionSidebarMenuElement } from './section-sidebar-menu.element'; import './section-sidebar-menu.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.stories.ts index 4e6b79e49c..4b8c2a3fdd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbSectionSidebarElement } from './section-sidebar.element'; import './section-sidebar.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts index 67a2bfa9b1..192818c781 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement, nothing } from 'lit'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; -import { when } from 'lit-html/directives/when.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { when } from 'lit/directives/when.js'; import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts index 2e4345ed17..6f9eb57709 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts @@ -1,7 +1,7 @@ import { css, html, nothing } from 'lit'; 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 { ifDefined } from 'lit/directives/if-defined.js'; import { map, Observable } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 62e461fcf9..e5e5d1c5a7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import { repeat } from 'lit-html/directives/repeat.js'; +import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeContextBase } from './tree.context'; import type { Entity } from '@umbraco-cms/backoffice/models'; import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts index 2125acb5b4..57391b102a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/variant-selector/variant-selector.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbWorkspaceVariantContext, UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 08d7b8b1ac..2f270c7fef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbVariantId } from '../../variants/variant-id.class'; import { UmbWorkspacePropertyContext } from './workspace-property.context'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.stories.ts index 9897607990..ffe256bb60 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbWorkspacePropertyElement } from './workspace-property.element'; import './workspace-property.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index b3ca949023..a5a5be1fec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.stories.ts index b673c8b304..ac7c825d27 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-footer-layout/workspace-footer-layout.stories.ts @@ -2,7 +2,7 @@ import '../workspace-layout/workspace-layout.element'; import './workspace-footer-layout.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbWorkspaceFooterLayout } from './workspace-footer-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.stories.ts index b40e13d850..aa83696013 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.stories.ts @@ -1,7 +1,7 @@ import './workspace-layout.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbWorkspaceLayout } from './workspace-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.stories.ts index 8d3e036bd6..acc53311bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbWorkspacePropertyLayoutElement } from './workspace-property-layout.element'; import './workspace-property-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.stories.ts index 7f3b7cf5cb..45bb332668 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyActionClearElement } from './property-action-clear.element'; import './property-action-clear.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/copy/property-action-copy.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/copy/property-action-copy.stories.ts index 875f26e338..99c7fb230d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/copy/property-action-copy.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/copy/property-action-copy.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyActionCopyElement } from './property-action-copy.element'; import './property-action-copy.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.element.ts index d55cc3836d..c53387f381 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import type { PropertyEditorConfigDefaultData, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.stories.ts index 46d8606f61..d3457f26bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/shared/property-editor-config/property-editor-config.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorConfigElement } from './property-editor-config.element'; import './property-editor-config.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/block-configuration/property-editor-ui-block-grid-block-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/block-configuration/property-editor-ui-block-grid-block-configuration.stories.ts index b5abe7e06a..84a24b1a83 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/block-configuration/property-editor-ui-block-grid-block-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/block-configuration/property-editor-ui-block-grid-block-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockGridBlockConfigurationElement } from './property-editor-ui-block-grid-block-configuration.element'; import './property-editor-ui-block-grid-block-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/group-configuration/property-editor-ui-block-grid-group-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/group-configuration/property-editor-ui-block-grid-group-configuration.stories.ts index 6a27630cce..dad33027be 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/group-configuration/property-editor-ui-block-grid-group-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/group-configuration/property-editor-ui-block-grid-group-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockGridGroupConfigurationElement } from './property-editor-ui-block-grid-group-configuration.element'; import './property-editor-ui-block-grid-group-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/stylesheet-picker/property-editor-ui-block-grid-stylesheet-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/stylesheet-picker/property-editor-ui-block-grid-stylesheet-picker.stories.ts index 724705e5c2..e66213c7f6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/stylesheet-picker/property-editor-ui-block-grid-stylesheet-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/config/stylesheet-picker/property-editor-ui-block-grid-stylesheet-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockGridStylesheetPickerElement } from './property-editor-ui-block-grid-stylesheet-picker.element'; import './property-editor-ui-block-grid-stylesheet-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.stories.ts index 227722a7ca..2e2536347b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockGridElement } from './property-editor-ui-block-grid.element'; import './property-editor-ui-block-grid.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/config/block-configuration/property-editor-ui-block-list-block-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/config/block-configuration/property-editor-ui-block-list-block-configuration.stories.ts index 4d2f85052e..d4e2142c6b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/config/block-configuration/property-editor-ui-block-list-block-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/config/block-configuration/property-editor-ui-block-list-block-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockListBlockConfigurationElement } from './property-editor-ui-block-list-block-configuration.element'; import './property-editor-ui-block-list-block-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/property-editor-ui-block-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/property-editor-ui-block-list.stories.ts index c04c90de3a..93b3d74e03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/property-editor-ui-block-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-list/property-editor-ui-block-list.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIBlockListElement } from './property-editor-ui-block-list.element'; import './property-editor-ui-block-list.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.stories.ts index e47e8c68c2..123de52638 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICheckboxListElement } from './property-editor-ui-checkbox-list.element'; import './property-editor-ui-checkbox-list.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/bulk-action-permissions/property-editor-ui-collection-view-bulk-action-permissions.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/bulk-action-permissions/property-editor-ui-collection-view-bulk-action-permissions.stories.ts index 89bdedf1d2..c8d47e30af 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/bulk-action-permissions/property-editor-ui-collection-view-bulk-action-permissions.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/bulk-action-permissions/property-editor-ui-collection-view-bulk-action-permissions.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICollectionViewBulkActionPermissionsElement } from './property-editor-ui-collection-view-bulk-action-permissions.element'; import './property-editor-ui-collection-view-bulk-action-permissions.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/column-configuration/property-editor-ui-collection-view-column-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/column-configuration/property-editor-ui-collection-view-column-configuration.stories.ts index e570b2d3fb..440113392e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/column-configuration/property-editor-ui-collection-view-column-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/column-configuration/property-editor-ui-collection-view-column-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICollectionViewColumnConfigurationElement } from './property-editor-ui-collection-view-column-configuration.element'; import './property-editor-ui-collection-view-column-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/layout-configuration/property-editor-ui-collection-view-layout-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/layout-configuration/property-editor-ui-collection-view-layout-configuration.stories.ts index e0b72a1299..745c9c6fa8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/layout-configuration/property-editor-ui-collection-view-layout-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/layout-configuration/property-editor-ui-collection-view-layout-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICollectionViewLayoutConfigurationElement } from './property-editor-ui-collection-view-layout-configuration.element'; import './property-editor-ui-collection-view-layout-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/order-by/property-editor-ui-collection-view-order-by.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/order-by/property-editor-ui-collection-view-order-by.stories.ts index f4117b8581..f599980509 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/order-by/property-editor-ui-collection-view-order-by.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/config/order-by/property-editor-ui-collection-view-order-by.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICollectionViewOrderByElement } from './property-editor-ui-collection-view-order-by.element'; import './property-editor-ui-collection-view-order-by.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/property-editor-ui-collection-view.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/property-editor-ui-collection-view.stories.ts index 7b052f9d15..69e743a8ab 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/property-editor-ui-collection-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/collection-view/property-editor-ui-collection-view.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUICollectionViewElement } from './property-editor-ui-collection-view.element'; import './property-editor-ui-collection-view.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.stories.ts index bc99333127..64f562c20c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/color-picker/property-editor-ui-color-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIColorPickerElement } from './property-editor-ui-color-picker.element'; import './property-editor-ui-color-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/date-picker/property-editor-ui-date-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/date-picker/property-editor-ui-date-picker.stories.ts index b3f5beae7e..4d7638d61c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/date-picker/property-editor-ui-date-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/date-picker/property-editor-ui-date-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIDatePickerElement } from './property-editor-ui-date-picker.element'; import './property-editor-ui-date-picker.element'; @@ -12,19 +12,20 @@ export default { config: [ { alias: 'format', - value: 'YYYY-MM-DD HH:mm:ss' - } - ] - } + value: 'YYYY-MM-DD HH:mm:ss', + }, + ], + }, } as Meta; -const Template: Story = ({config, value}) => html``; +const Template: Story = ({ config, value }) => + html``; export const Overview = Template.bind({}); export const WithDateValue = Template.bind({}); WithDateValue.args = { - value: '2021-01-24 15:20' + value: '2021-01-24 15:20', }; export const WithFormat = Template.bind({}); @@ -32,9 +33,9 @@ WithFormat.args = { config: [ { alias: 'format', - value: 'dd/MM/yyyy HH:mm:ss' - } - ] + value: 'dd/MM/yyyy HH:mm:ss', + }, + ], }; export const TimeOnly = Template.bind({}); @@ -42,9 +43,9 @@ TimeOnly.args = { config: [ { alias: 'format', - value: 'HH:mm:ss' - } - ] + value: 'HH:mm:ss', + }, + ], }; export const DateOnly = Template.bind({}); @@ -52,7 +53,7 @@ DateOnly.args = { config: [ { alias: 'format', - value: 'dd/MM/yyyy' - } - ] -}; \ No newline at end of file + value: 'dd/MM/yyyy', + }, + ], +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.stories.ts index a9eda5c776..f4eed0d05b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIContentPickerElement } from './property-editor-ui-document-picker.element'; import './property-editor-ui-document-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/dropdown/property-editor-ui-dropdown.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/dropdown/property-editor-ui-dropdown.stories.ts index 790e638e37..e38867d3a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/dropdown/property-editor-ui-dropdown.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/dropdown/property-editor-ui-dropdown.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIDropdownElement } from './property-editor-ui-dropdown.element'; import './property-editor-ui-dropdown.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.stories.ts index 1bf169f897..6bc8746807 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/eye-dropper/property-editor-ui-eye-dropper.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIEyeDropperElement } from './property-editor-ui-eye-dropper.element'; import './property-editor-ui-eye-dropper.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts index 37beb48855..3c5d0856f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbIconPickerModalElement } from '../../../../shared/modals/icon-picker/icon-picker-modal.element'; import type { UmbPropertyEditorUIIconPickerElement } from './property-editor-ui-icon-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-cropper/property-editor-ui-image-cropper.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-cropper/property-editor-ui-image-cropper.stories.ts index c73186ac2f..2f75d4945a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-cropper/property-editor-ui-image-cropper.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-cropper/property-editor-ui-image-cropper.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIImageCropperElement } from './property-editor-ui-image-cropper.element'; import './property-editor-ui-image-cropper.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-crops-configuration/property-editor-ui-image-crops-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-crops-configuration/property-editor-ui-image-crops-configuration.stories.ts index e9f75ddc91..811330e122 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-crops-configuration/property-editor-ui-image-crops-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/image-crops-configuration/property-editor-ui-image-crops-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIImageCropsConfigurationElement } from './property-editor-ui-image-crops-configuration.element'; import './property-editor-ui-image-crops-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/label/property-editor-ui-label.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/label/property-editor-ui-label.stories.ts index 862aa36bd2..77beeb6727 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/label/property-editor-ui-label.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/label/property-editor-ui-label.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUILabelElement } from './property-editor-ui-label.element'; import './property-editor-ui-label.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/markdown-editor/property-editor-ui-markdown-editor.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/markdown-editor/property-editor-ui-markdown-editor.stories.ts index 33ba0d5203..0e7ada92e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/markdown-editor/property-editor-ui-markdown-editor.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/markdown-editor/property-editor-ui-markdown-editor.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMarkdownEditorElement } from './property-editor-ui-markdown-editor.element'; import './property-editor-ui-markdown-editor.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.stories.ts index 1fec0a8e86..66e8ad7aa7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/media-picker/property-editor-ui-media-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMediaPickerElement } from './property-editor-ui-media-picker.element'; import './property-editor-ui-media-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-group-picker/property-editor-ui-member-group-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-group-picker/property-editor-ui-member-group-picker.stories.ts index 8d437fdf32..abdf596558 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-group-picker/property-editor-ui-member-group-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-group-picker/property-editor-ui-member-group-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMemberGroupPickerElement } from './property-editor-ui-member-group-picker.element'; import './property-editor-ui-member-group-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-picker/property-editor-ui-member-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-picker/property-editor-ui-member-picker.stories.ts index be840c23ed..a2da67c5d5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-picker/property-editor-ui-member-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/member-picker/property-editor-ui-member-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMemberPickerElement } from './property-editor-ui-member-picker.element'; import './property-editor-ui-member-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.stories.ts index ec833487f1..cc86da68ca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMultiUrlPickerElement } from './property-editor-ui-multi-url-picker.element'; import './property-editor-ui-multi-url-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.element.ts index 9e4704946f..6f8dc64a1f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbPropertyValueChangeEvent } from '../..'; import UmbInputMultipleTextStringElement, { MultipleTextStringValue, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.stories.ts index 39f2b28be8..455f61bcea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/property-editor-ui-multiple-text-string.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIMultipleTextStringElement } from './property-editor-ui-multiple-text-string.element'; import './property-editor-ui-multiple-text-string.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number-range/property-editor-ui-number-range.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number-range/property-editor-ui-number-range.stories.ts index b3b0027c60..e562fe2603 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number-range/property-editor-ui-number-range.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number-range/property-editor-ui-number-range.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUINumberRangeElement } from './property-editor-ui-number-range.element'; import './property-editor-ui-number-range.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number/property-editor-ui-number.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number/property-editor-ui-number.stories.ts index be74c018be..0bb4c88e3b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number/property-editor-ui-number.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/number/property-editor-ui-number.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUINumberElement } from './property-editor-ui-number.element'; import './property-editor-ui-number.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/order-direction/property-editor-ui-order-direction.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/order-direction/property-editor-ui-order-direction.stories.ts index ecf903f68d..2db7f21592 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/order-direction/property-editor-ui-order-direction.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/order-direction/property-editor-ui-order-direction.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIOrderDirectionElement } from './property-editor-ui-order-direction.element'; import './property-editor-ui-order-direction.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/overlay-size/property-editor-ui-overlay-size.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/overlay-size/property-editor-ui-overlay-size.stories.ts index 4ae4156e8e..5a428f985c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/overlay-size/property-editor-ui-overlay-size.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/overlay-size/property-editor-ui-overlay-size.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIOverlaySizeElement } from './property-editor-ui-overlay-size.element'; import './property-editor-ui-overlay-size.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.stories.ts index 731d38eeab..67d1fde28d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/radio-button-list/property-editor-ui-radio-button-list.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIRadioButtonListElement } from './property-editor-ui-radio-button-list.element'; import './property-editor-ui-radio-button-list.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.stories.ts index 2c409547b9..3a1276d23f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/slider/property-editor-ui-slider.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUISliderElement } from './property-editor-ui-slider.element'; import './property-editor-ui-slider.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/config/storage-type/property-editor-ui-tags-storage-type.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/config/storage-type/property-editor-ui-tags-storage-type.stories.ts index 77f2d144f8..2dde067661 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/config/storage-type/property-editor-ui-tags-storage-type.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/config/storage-type/property-editor-ui-tags-storage-type.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITagsStorageTypeElement } from './property-editor-ui-tags-storage-type.element'; import './property-editor-ui-tags-storage-type.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/property-editor-ui-tags.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/property-editor-ui-tags.stories.ts index 2e81b69e8a..de47fda75b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/property-editor-ui-tags.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tags/property-editor-ui-tags.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITagsElement } from './property-editor-ui-tags.element'; import './property-editor-ui-tags.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/text-box/property-editor-ui-text-box.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/text-box/property-editor-ui-text-box.stories.ts index a636a73f31..f0ac712382 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/text-box/property-editor-ui-text-box.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/text-box/property-editor-ui-text-box.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITextBoxElement } from './property-editor-ui-text-box.element'; import './property-editor-ui-text-box.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.stories.ts index 49cfb72302..389abbb0fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITextareaElement } from './property-editor-ui-textarea.element'; import './property-editor-ui-textarea.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.stories.ts index 447be2a933..7d3ea279e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITinyMceConfigurationElement } from './property-editor-ui-tiny-mce-configuration.element'; import './property-editor-ui-tiny-mce-configuration.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.stories.ts index 3dc06cef73..9de6efe4eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITinyMceElement } from './property-editor-ui-tiny-mce.element'; import './property-editor-ui-tiny-mce.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.stories.ts index 4720a23399..27b2a4a29f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/toggle/property-editor-ui-toggle.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIToggleElement } from './property-editor-ui-toggle.element'; import './property-editor-ui-toggle.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts index 3cec8808f8..514000a8ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITreePickerStartNodeElement } from './property-editor-ui-tree-picker-start-node.element'; import './property-editor-ui-tree-picker-start-node.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/property-editor-ui-tree-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/property-editor-ui-tree-picker.stories.ts index ef4f2ef961..cfc9ef64b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/property-editor-ui-tree-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/tree-picker/property-editor-ui-tree-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUITreePickerElement } from './property-editor-ui-tree-picker.element'; import './property-editor-ui-tree-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.stories.ts index ba5426d78b..7729437b01 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIUploadFieldElement } from './property-editor-ui-upload-field.element'; import './property-editor-ui-upload-field.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/user-picker/property-editor-ui-user-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/user-picker/property-editor-ui-user-picker.stories.ts index 503373fd41..b57a2e47f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/user-picker/property-editor-ui-user-picker.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/user-picker/property-editor-ui-user-picker.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIUserPickerElement } from './property-editor-ui-user-picker.element'; import './property-editor-ui-user-picker.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/value-type/property-editor-ui-value-type.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/value-type/property-editor-ui-value-type.stories.ts index e2883ab499..f0ec7b357f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/value-type/property-editor-ui-value-type.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/value-type/property-editor-ui-value-type.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbPropertyEditorUIValueTypeElement } from './property-editor-ui-value-type.element'; import './property-editor-ui-value-type.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index d54a609082..8107a3c8f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { when } from 'lit-html/directives/when.js'; +import { when } from 'lit/directives/when.js'; import { UmbTableConfig, UmbTableColumn, UmbTableItem } from '../../../../backoffice/shared/components/table'; import { UmbDictionaryRepository } from '../../dictionary/repository/dictionary.repository'; import { UMB_CREATE_DICTIONARY_MODAL_TOKEN } from '../../dictionary/entity-actions/create/'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts index 6386bd5cfc..984a59dacf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query } from 'lit/decorators.js'; -import { when } from 'lit-html/directives/when.js'; +import { when } from 'lit/directives/when.js'; import { UmbCreateDictionaryModalData, UmbCreateDictionaryModalResult } from '.'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts index 041c5ffd67..3dc06e07e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query, state } from 'lit/decorators.js'; -import { when } from 'lit-html/directives/when.js'; +import { when } from 'lit/directives/when.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts index 71a1059e42..3c1afd4dad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts @@ -1,6 +1,6 @@ import './dictionary-workspace.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { data } from '../../../../core/mocks/data/dictionary.data'; import type { UmbWorkspaceDictionaryElement } from './dictionary-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts index a7c3c1eab6..e9d43ece41 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { UUITextareaElement, UUITextareaEvent } from '@umbraco-ui/uui'; import { UmbDictionaryWorkspaceContext } from '../../dictionary-workspace.context'; import { UmbDictionaryRepository } from '../../../repository/dictionary.repository'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.stories.ts index 806bd714e5..f2afe0facf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/views/edit/workspace-view-dictionary-edit.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; //import { data } from '../../../../../core/mocks/data/dictionary.data'; import type { UmbWorkspaceViewDictionaryEditElement } from './workspace-view-dictionary-edit.element'; import './workspace-view-dictionary-edit.element'; @@ -15,11 +15,11 @@ export default { /*html` ${story()} `,*/ - } + }, ], } as Meta; export const AAAOverview: Story = () => html` `; - + AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts index f3566ee265..99f10ee203 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts @@ -2,7 +2,7 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { ifDefined } from 'lit-html/directives/if-defined.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; import type { UmbSectionViewUsersElement } from '../../section-view-users.element'; import { UmbUserGroupStore, diff --git a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts index 30fa1449ae..5ab064e243 100644 --- a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.element.ts @@ -1,4 +1,4 @@ -import { html } from 'lit-html'; +import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; 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 index a1002bf1cf..e1c4bb2daa 100644 --- 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 @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; export default { title: 'API/Modals', diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts index ff597b1948..42f97388b3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts @@ -1,4 +1,4 @@ -import { html } from 'lit-html'; +import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UMB_MODAL_CONTEXT_TOKEN, UmbModalContext } from '@umbraco-cms/backoffice/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/core/stores/icon/icon.stories.ts b/src/Umbraco.Web.UI.Client/src/core/stores/icon/icon.stories.ts index 5ae2c50da3..33a278ba1c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/stores/icon/icon.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/core/stores/icon/icon.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { repeat } from 'lit/directives/repeat.js'; import icons from '../../../../public-assets/icons/icons.json'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.stories.ts index 747b7665ca..df99ad1c6c 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/consent/installer-consent.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { installerContextProvider } from '../shared/utils.story-helpers'; import type { UmbInstallerConsentElement } from './installer-consent.element'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts index 5453cae29d..0c4df7d1e3 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/database/installer-database.stories.ts @@ -1,7 +1,7 @@ import './installer-database.element'; import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { rest } from 'msw'; import { installerContextProvider } from '../shared/utils.story-helpers'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/error/installer-error.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/error/installer-error.stories.ts index 941eba5c87..8583f1ec65 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/error/installer-error.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/error/installer-error.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { installerContextProvider } from '../shared/utils.story-helpers'; import { UmbInstallerContext } from '../installer.context'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/installer.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/installer.stories.ts index 5022d30ccd..ee6dcf05da 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installer.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installer.stories.ts @@ -1,5 +1,5 @@ import { Meta } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import '.'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/installing/installer-installing.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/installing/installer-installing.stories.ts index 585bd6fb62..679d66ef66 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installing/installer-installing.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installing/installer-installing.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { installerContextProvider } from '../shared/utils.story-helpers'; import type { UmbInstallerInstallingElement } from './installer-installing.element'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/shared/layout/installer-layout.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/shared/layout/installer-layout.stories.ts index 3b6a66584e..e84aab175e 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/shared/layout/installer-layout.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/shared/layout/installer-layout.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbInstallerLayoutElement } from './installer-layout.element'; import './installer-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/shared/utils.story-helpers.ts b/src/Umbraco.Web.UI.Client/src/installer/shared/utils.story-helpers.ts index 7b03df75c4..f131df752a 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/shared/utils.story-helpers.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/shared/utils.story-helpers.ts @@ -1,4 +1,4 @@ -import { html } from 'lit-html'; +import { html } from 'lit'; import { UmbInstallerContext } from '../installer.context'; import '../../core/context-provider/context-provider.element'; diff --git a/src/Umbraco.Web.UI.Client/src/installer/user/installer-user.stories.ts b/src/Umbraco.Web.UI.Client/src/installer/user/installer-user.stories.ts index 625ef190a1..5ad27fc76e 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/user/installer-user.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/user/installer-user.stories.ts @@ -1,5 +1,5 @@ import { Meta, Story } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import { installerContextProvider } from '../shared/utils.story-helpers'; import type { UmbInstallerUserElement } from './installer-user.element'; diff --git a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts index 7b57f9266b..77d63cefb8 100644 --- a/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/upgrader/upgrader.stories.ts @@ -1,7 +1,7 @@ import './upgrader-view.element'; import type { Meta, StoryObj } from '@storybook/web-components'; -import { html } from 'lit-html'; +import { html } from 'lit'; import type { UmbUpgraderView } from './upgrader-view.element'; From 254a07e6c317002c55312d328b5490f1286e2014 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 10:41:27 +0100 Subject: [PATCH 275/550] authenticate --- .../workflows/npm-publish-github-packages.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index dbd2f1bb49..09842d5015 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -48,6 +48,8 @@ jobs: concurrency: group: npm-publish cancel-in-progress: true + env: + NPM_TOKEN: ${{secrets.NPM_TOKEN}} steps: - uses: actions/download-artifact@v3 with: @@ -55,11 +57,14 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - registry-url: https://registry.npmjs.org/ - always-auth: true - - run: | + - name: Authenticate with Registry + run: | + echo "@umbraco-cms:registry=https://registry.npmjs.org/" > .npmrc + echo "registry=https://registry.npmjs.org/" >> .npmrc + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc + npm whoami + - name: Version and publish + run: | SHA_SHORT=$(echo $GITHUB_SHA | cut -c1-8) npm version 1.0.0-next.$SHA_SHORT --allow-same-version --no-git-tag-version - - run: npm publish --tag next --access public - env: - NPM_TOKEN: ${{secrets.NPM_TOKEN}} + npm publish --tag next --access public From 2da9f57c04f2c8bbb4a6f56e868517fd1b480410 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 22 Mar 2023 10:50:05 +0100 Subject: [PATCH 276/550] fix breaking changes --- ...ce-view-document-type-templates.element.ts | 10 +- .../document-type-picker-modal.element.ts | 2 +- .../modals/document-type-picker/index.ts | 2 +- .../src/backoffice/shared/components/index.ts | 1 - .../input-document-type-picker.element.ts | 20 ++-- .../input-template-picker.element.ts | 28 ++--- .../template-card-list.element.ts | 110 ------------------ .../template-card/template-card.element.ts | 3 +- .../src/core/mocks/browser.ts | 2 +- 9 files changed, 26 insertions(+), 152 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card-list.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts index 361d8a7ecb..99fbdacaa7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts @@ -1,10 +1,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; -import { UmbTemplateCardListElement } from '../../../../../shared/components/template-card/template-card-list.element'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; + import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-templates') @@ -41,7 +41,7 @@ export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement defaultTemplateKey?: string = '123'; @state() - _documentType?: DocumentTypeModel; + _documentType?: DocumentTypeResponseModel; @state() _templates = [ @@ -70,7 +70,7 @@ export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement } #changeDefaultTemplate(e: CustomEvent) { - this.defaultTemplateKey = (e.target as UmbTemplateCardListElement).value as string; + //this.defaultTemplateKey = (e.target as UmbTemplateCardElement).value as string; console.log('default template key', this.defaultTemplateKey); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.element.ts index 1854ccf003..ee3540f564 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.element.ts @@ -1,9 +1,9 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; import type { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDocumentTypePickerModalData, UmbDocumentTypePickerModalResult } from '.'; -import { UmbModalBaseElement } from '@umbraco-cms/modal'; // TODO: make use of UmbPickerLayoutBase @customElement('umb-document-type-picker-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/index.ts index c7e6efe767..8c7834fd28 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/index.ts @@ -1,4 +1,4 @@ -import { UmbModalToken } from '@umbraco-cms/modal'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbDocumentTypePickerModalData { multiple?: boolean; 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 b5f81dd933..56b4dddf34 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 @@ -51,6 +51,5 @@ import './workspace/workspace-layout/workspace-layout.element'; import './workspace/workspace-footer-layout/workspace-footer-layout.element'; import './template-card/template-card.element'; -import './template-card/template-card-list.element'; export const manifests = [...debugManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index 029db1e806..6eb5872571 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -3,16 +3,16 @@ 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 { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTypeResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN, } from '../../../documents/document-types/repository/document-type.tree.store'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UMB_DOCUMENT_TYPE_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-type-picker'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel, DocumentTypeTreeItemModel, FolderTreeItemModel } from '@umbraco-cms/backend-api'; -import type { UmbObserverController } from '@umbraco-cms/observable-api'; @customElement('umb-input-document-type-picker') export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitElement) { @@ -52,14 +52,14 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl } @property() - currentDocumentType?: DocumentTypeModel; + currentDocumentType?: DocumentTypeResponseModel; @state() - private _items?: Array; + private _items?: Array; private _modalContext?: UmbModalContext; private _documentTypeStore?: UmbDocumentTypeTreeStore; - private _pickedItemsObserver?: UmbObserverController; + private _pickedItemsObserver?: UmbObserverController; constructor() { super(); @@ -99,7 +99,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl }); } - private async _removeItem(item: FolderTreeItemModel) { + private async _removeItem(item: EntityTreeItemResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -129,9 +129,9 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl `; } - private _renderItem(item: FolderTreeItemModel) { + private _renderItem(item: EntityTreeItemResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as FolderTreeItemModel & { isTrashed: boolean }; + const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index f73d13ff09..8311ae6099 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -3,14 +3,13 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, queryAll, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; + +import { TemplateResource } from '@umbraco-cms/backoffice/backend-api'; import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; import { UmbTemplateCardElement } from '../template-card/template-card.element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; -import { UmbLitElement } from '@umbraco-cms/element'; -import { TemplateModel, TemplateResource } from '@umbraco-cms/backend-api'; -import { tryExecuteAndNotify } from '@umbraco-cms/resources'; - -type DocTypTemplateModel = TemplateModel & { default: boolean }; @customElement('umb-input-template-picker') export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElement) { @@ -83,16 +82,6 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen @property({ type: String, attribute: 'min-message' }) maxMessage = 'This field exceeds the allowed amount of items'; - private _templates: Array = []; - public get templates(): Array { - return this._templates; - } - public set templates(newTemplates: Array) { - const keys = newTemplates.map((template) => template.key); - super.value = keys.join(','); - this._templates = newTemplates; - } - @state() private _items: Array = [ { key: '2bf464b6-3aca-4388-b043-4eb439cc2643', name: 'Doc 1', default: false }, @@ -103,21 +92,18 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen //private _documentStore?: UmbDocumentTreeStore; //private _pickedItemsObserver?: UmbObserverController; - @queryAll('.template-card') - private _templateCardElements?: NodeListOf; - constructor() { super(); this.addValidator( 'rangeUnderflow', () => this.minMessage, - () => !!this.min && this._templates.length < this.min + () => !!this.min && this._items.length < this.min ); this.addValidator( 'rangeOverflow', () => this.maxMessage, - () => !!this.max && this._templates.length > this.max + () => !!this.max && this._items.length > this.max ); this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card-list.element.ts deleted file mode 100644 index a886ac8012..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card-list.element.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { css, html } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property } from 'lit/decorators.js'; -import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { repeat } from 'lit/directives/repeat.js'; -import { UmbLitElement } from '@umbraco-cms/element'; -import './template-card.element'; -import UmbTemplateCardElement from './template-card.element'; - -export interface TemplateModel { - name: string; - key: string; -} - -@customElement('umb-template-card-list') -export class UmbTemplateCardListElement extends FormControlMixin(UmbLitElement) { - static styles = [ - UUITextStyles, - css` - :host { - box-sizing: border-box; - display: flex; - align-items: stretch; - gap: var(--uui-size-space-4); - min-height: 180px; - } - `, - ]; - - @property({ type: Array }) - templates: TemplateModel[] = [ - { - name: 'Named template', - key: '123', - }, - { - name: 'Named template 2', - key: '456', - }, - ]; - - private _selected?: number; - - private _templateCardElements: UmbTemplateCardElement[] = []; - - protected getFormElement() { - return undefined; - } - - #changeSelectedState(e: UmbTemplateCardElement) { - const newValue = e.value; - this._templateCardElements.forEach((el, index) => { - if ((el.value as string) === newValue) { - el.selected = true; - this._selected = index; - } else { - el.selected = false; - } - }); - this.value = newValue; - this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); - } - - #delete(e: Event) { - const key = (e.target as UmbTemplateCardElement).value; - const i = this.templates.findIndex((x) => x.key === key); - this.templates.splice(i, 1); - this.templates = [...this.templates]; - } - - #openTemplate(e: Event) { - console.log(e.target); - const key = (e.target as UmbTemplateCardElement).value; - console.log('open', key); - } - - #openTemplatePicker() { - console.log('template picker'); - } - - #slotchange(e: Event) { - this._templateCardElements.forEach((el) => { - el.removeEventListener('selected', (e) => this.#changeSelectedState(e.target as UmbTemplateCardElement)); - el.removeEventListener('open', (e) => this.#openTemplate(e)); - }); - - this._templateCardElements = (e.target as HTMLSlotElement) - .assignedElements({ flatten: true }) - .filter((el) => el instanceof UmbTemplateCardElement) as UmbTemplateCardElement[]; - - if (this._templateCardElements.length === 0) return; - - this._templateCardElements.forEach((el) => { - el.addEventListener('selected', (e) => this.#changeSelectedState(e.target as UmbTemplateCardElement)); - el.addEventListener('open', (e) => this.#openTemplate(e)); - }); - } - - render() { - return html` `; - } -} - -export default UmbTemplateCardListElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-template-card-list': UmbTemplateCardListElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts index cbe43a0648..c971f22dbb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts @@ -2,11 +2,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { UmbLitElement } from '@umbraco-cms/element'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** * @element umb-template-card - * @description wrap inside a umb-template-card-list * @slot actions * @fires open * @fires selected diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/browser.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/browser.ts index 980b6cbecf..030c9bd69a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/browser.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/browser.ts @@ -1,6 +1,6 @@ import { MockedRequest, setupWorker } from 'msw'; -import { handlers } from './browser-handlers'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { handlers } from './browser-handlers'; const worker = setupWorker(...handlers); From ef243ef9335e1f283281abd75ee8823fee599a98 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 22 Mar 2023 10:56:28 +0100 Subject: [PATCH 277/550] Feature/code editor (#607) * create component * import styles correctly * import component * show code editor element on the template workspace * wire input event * sync code property with editor value * move workers to a separate file * create class for code editor * add very simple insert method * focus after insert * make scroll bar bit nicer * add markdown example and fancier template * make insert work with multiple cursors and selections * now really make it works with selections and multiple cursors * map options * add hack to fix the jumpy cursor * Observe themes * add own model for range, return array of ranges from find * add backoffice-fit dark mode * add theme story * add themes folder * add new methods insertAtPosition getValueInRange select * add documentation to editor class * add docs * rename file * rename donut files * cleanup * add some more imports * test heap size fix * heap error test 2 * fix imports * node fail error test * rename --------- Co-authored-by: Mads Rasmussen --- .../.github/workflows/build_test.yml | 3 + src/Umbraco.Web.UI.Client/package-lock.json | 11 + src/Umbraco.Web.UI.Client/package.json | 1 + .../code-editor/code-editor.controller.ts | 370 ++++++++++++++++++ .../code-editor/code-editor.element.ts | 172 ++++++++ .../code-editor/code-editor.model.ts | 229 +++++++++++ .../code-editor/code-editor.stories.ts | 232 +++++++++++ .../shared/components/code-editor/index.ts | 8 + .../components/code-editor/languageWorkers.ts | 33 ++ .../shared/components/code-editor/styles.ts | 14 + .../themes/code-editor.dark.theme.ts | 10 + .../themes/code-editor.hc-dark.theme.ts | 8 + .../themes/code-editor.hc-light.theme.ts | 8 + .../themes/code-editor.light.theme.ts | 8 + .../components/code-editor/themes/index.ts | 24 ++ ...{donut-chart.ts => donut-chart.element.ts} | 4 +- .../donut-chart/donut-chart.stories.ts | 4 +- ...{donut-slice.ts => donut-slice.element.ts} | 0 .../shared/components/donut-chart/index.ts | 4 +- .../src/backoffice/shared/components/index.ts | 1 + .../workspace/template-workspace.element.ts | 50 ++- .../src/core/mocks/data/template.data.ts | 15 +- 22 files changed, 1191 insertions(+), 18 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.model.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/languageWorkers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/styles.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.dark.theme.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-dark.theme.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-light.theme.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.light.theme.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/index.ts rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/{donut-chart.ts => donut-chart.element.ts} (99%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/{donut-slice.ts => donut-slice.element.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml index 5a1a10a376..f806a8eaa1 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml @@ -15,6 +15,9 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: +env: + NODE_OPTIONS: --max_old_space_size=16384 + jobs: build: diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index b12d83fb70..524f3d9036 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -18,6 +18,7 @@ "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", + "monaco-editor": "^0.36.1", "router-slot": "file:router-slot-1.6.1.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" @@ -13446,6 +13447,11 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/monaco-editor": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz", + "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg==" + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -28332,6 +28338,11 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "monaco-editor": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz", + "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg==" + }, "mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 555f6d2cca..833bb4bde1 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -68,6 +68,7 @@ "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", + "monaco-editor": "^0.36.1", "router-slot": "file:router-slot-1.6.1.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts new file mode 100644 index 0000000000..f79acaeace --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts @@ -0,0 +1,370 @@ +import { UmbChangeEvent, UmbInputEvent } from '@umbraco-cms/backoffice/events'; +import * as monaco from 'monaco-editor'; +import { + CodeEditorConstructorOptions, + CodeEditorSearchOptions, + CodeEditorTheme, + UmbCodeEditorCursorPosition, + UmbCodeEditorCursorPositionChangedEvent, + UmbCodeEditorCursorSelectionChangedEvent, + UmbCodeEditorHost, + UmbCodeEditorRange, + UmbCodeEditorSelection, +} from './code-editor.model'; +import themes from './themes'; + +//TODO - consider firing change event on blur + +/** + * This is a wrapper class for the [monaco editor](https://microsoft.github.io/monaco-editor). It exposes some of the monaco editor API. It also handles the creation of the monaco editor. + * It allows access to the entire monaco editor object through `monacoEditor` property, but mind the fact that editor might be swapped in the future for a different library, so use on your own responsibility. + * Through the UmbCodeEditorHost interface it can be used in a custom element. + * By using monaco library directly you can access the entire monaco API along with code completions, actions etc. This class creates some level of abstraction over the monaco editor. It only provides basic functionality, that should be enough for most of the use cases and should be possible to implement with any code editor library. + * + * Current issues: [shadow DOM related issues](https://github.com/microsoft/monaco-editor/labels/editor-shadow-dom) #3217 currently fixed by a hack , [razor syntax highlight](https://github.com/microsoft/monaco-editor/issues/1997) + * + * + * @export + * @class UmbCodeEditor + */ +export class UmbCodeEditorController { + #host: UmbCodeEditorHost; + #editor?: monaco.editor.IStandaloneCodeEditor; + /** + * The monaco editor object. This is the actual monaco editor object. It is exposed for advanced usage, but mind the fact that editor might be swapped in the future for a different library, so use on your own responsibility. For more information see [monaco editor API](https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneCodeEditor.html). + * + * @readonly + * @memberof UmbCodeEditor + */ + get monacoEditor() { + return this.#editor; + } + + #options: CodeEditorConstructorOptions = {}; + /** + * The options used to create the editor. + * + * @readonly + * @type {CodeEditorConstructorOptions} + * @memberof UmbCodeEditor + */ + get options(): CodeEditorConstructorOptions { + return this.#options; + } + + #defaultMonacoOptions: monaco.editor.IStandaloneEditorConstructionOptions = { + automaticLayout: true, + scrollBeyondLastLine: false, + scrollbar: { + verticalScrollbarSize: 5, + }, + // disable this, as it does not work with shadow dom properly. + colorDecorators: false, + }; + + #position: UmbCodeEditorCursorPosition | null = null; + /** + * Provides the current position of the cursor. + * + * @readonly + * @memberof UmbCodeEditor + */ + get position() { + return this.#position; + } + #secondaryPositions: UmbCodeEditorCursorPosition[] = []; + /** + * Provides positions of all the secondary cursors. + * + * @readonly + * @memberof UmbCodeEditor + */ + get secondaryPositions() { + return this.#secondaryPositions; + } + + /** + * Provides the current value of the editor. + * + * @memberof UmbCodeEditor + */ + get value() { + if (!this.#editor) return ''; + const value = this.#editor.getValue(); + return value; + } + + set value(newValue: string) { + if (!this.#editor) throw new Error('Editor object not found'); + + const oldValue = this.value; + if (newValue !== oldValue) { + this.#editor.setValue(newValue); + } + } + /** + * Provides the current model of the editor. For advanced usage. Bare in mind that in case of the monaco library being swapped in the future, this might not be available. For more information see [monaco editor model API](https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.ITextModel.html). + * + * @readonly + * @memberof UmbCodeEditor + */ + get monacoModel() { + if (!this.#editor) return null; + return this.#editor.getModel(); + } + /** + * Creates an instance of UmbCodeEditor. You should instantiate this class through the `UmbCodeEditorHost` interface and that should happen when inside DOM nodes of the host container are available, otherwise the editor will not be able to initialize, for example in lit `firstUpdated` lifecycle hook. It will make host emit change and input events when the value of the editor changes. + * @param {UmbCodeEditorHost} host + * @param {CodeEditorConstructorOptions} [options] + * @memberof UmbCodeEditor + */ + constructor(host: UmbCodeEditorHost, options?: CodeEditorConstructorOptions) { + this.#options = { ...options }; + this.#host = host; + this.#registerThemes(); + this.#createEditor(options); + } + + #registerThemes() { + Object.entries(themes).forEach(([name, theme]) => { + this.#defineTheme(name, theme); + }); + } + + #defineTheme(name: string, theme: monaco.editor.IStandaloneThemeData) { + monaco.editor.defineTheme(name, theme); + } + + #initiateEvents() { + this.#editor?.onDidChangeModelContent(() => { + this.#host.code = this.value ?? ''; + this.#host.dispatchEvent(new UmbInputEvent()); + }); + + this.#editor?.onDidChangeModel(() => { + this.#host.dispatchEvent(new UmbChangeEvent()); + }); + this.#editor?.onDidChangeCursorPosition((e) => { + this.#position = e.position; + this.#secondaryPositions = e.secondaryPositions; + }); + } + + #mapOptions(options: CodeEditorConstructorOptions): monaco.editor.IStandaloneEditorConstructionOptions { + const hasLineNumbers = Object.prototype.hasOwnProperty.call(options, 'lineNumbers'); + const hasMinimap = Object.prototype.hasOwnProperty.call(options, 'minimap'); + const hasLightbulb = Object.prototype.hasOwnProperty.call(options, 'lightbulb'); + + return { + ...options, + lineNumbers: hasLineNumbers ? (options.lineNumbers ? 'on' : 'off') : undefined, + minimap: hasMinimap ? (options.minimap ? { enabled: true } : { enabled: false }) : undefined, + lightbulb: hasLightbulb ? (options.lightbulb ? { enabled: true } : { enabled: false }) : undefined, + }; + } + /** + * Updates the options of the editor. This is useful for updating the options after the editor has been created. + * + * @param {CodeEditorConstructorOptions} newOptions + * @memberof UmbCodeEditor + */ + updateOptions(newOptions: CodeEditorConstructorOptions) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#options = { ...this.#options, ...newOptions }; + this.#editor.updateOptions(this.#mapOptions(newOptions)); + } + + #createEditor(options: CodeEditorConstructorOptions = {}) { + if (!this.#host.container) throw new Error('Container not found'); + if (this.#host.container.hasChildNodes()) throw new Error('Editor container should be empty'); + + const mergedOptions = { ...this.#defaultMonacoOptions, ...this.#mapOptions(options) }; + + this.#editor = monaco.editor.create(this.#host.container, { + ...mergedOptions, + value: this.#host.code ?? '', + language: this.#host.language, + theme: this.#host.theme, + readOnly: this.#host.readonly, + ariaLabel: this.#host.label, + }); + this.#initiateEvents(); + } + /** + * Provides the current selections of the editor. + * + * @return {*} {UmbCodeEditorSelection[]} + * @memberof UmbCodeEditor + */ + getSelections(): UmbCodeEditorSelection[] { + if (!this.#editor) return []; + return this.#editor.getSelections() ?? []; + } + /** + * Provides the current positions of the cursor or multiple cursors. + * + * @return {*} {(UmbCodeEditorCursorPosition | null)} + * @memberof UmbCodeEditor + */ + getPositions(): UmbCodeEditorCursorPosition | null { + if (!this.#editor) return null; + return this.#editor.getPosition(); + } + /** + * Inserts text at the current cursor position or multiple cursor positions. + * + * @param {string} text + * @memberof UmbCodeEditor + */ + insert(text: string) { + if (!this.#editor) throw new Error('Editor object not found'); + const selections = this.#editor.getSelections() ?? []; + if (selections?.length > 0) { + this.#editor.executeEdits( + null, + selections.map((selection) => ({ range: selection, text })) + ); + } + } + /** + * Looks for a string or matching strings in the editor and returns the ranges of the found strings. Can use regex, case sensitive and more. If you want regex set the isRegex to true in the options. + * + * @param {string} searchString + * @param {CodeEditorSearchOptions} [searchOptions={}] + * @return {*} {UmbCodeEditorRange[]} + * @memberof UmbCodeEditor + */ + find( + searchString: string, + searchOptions: CodeEditorSearchOptions = {} + ): UmbCodeEditorRange[] { + if (!this.#editor) throw new Error('Editor object not found'); + const defaultOptions = { + searchOnlyEditableRange: false, + + isRegex: false, + + matchCase: false, + + wordSeparators: null, + + captureMatches: false, + }; + + const { searchOnlyEditableRange, isRegex, matchCase, wordSeparators, captureMatches } = { + ...defaultOptions, + ...searchOptions, + }; + return ( + this.monacoModel + ?.findMatches(searchString, searchOnlyEditableRange, isRegex, matchCase, wordSeparators, captureMatches) + .map((findMatch) => ({ + startLineNumber: findMatch.range.startLineNumber, + startColumn: findMatch.range.startColumn, + endLineNumber: findMatch.range.endLineNumber, + endColumn: findMatch.range.endColumn, + })) ?? [] + ); + } + /** + * Returns the value of the editor for a given range. + * + * @param {UmbCodeEditorRange} range + * @return {*} {string} + * @memberof UmbCodeEditor + */ + getValueInRange(range: UmbCodeEditorRange): string { + if (!this.#editor) throw new Error('Editor object not found'); + return this.monacoModel?.getValueInRange(range) ?? ''; + } + /** + * Inserts text at a given position. + * + * @param {string} text + * @param {UmbCodeEditorCursorPosition} position + * @memberof UmbCodeEditor + */ + insertAtPosition(text: string, position: UmbCodeEditorCursorPosition) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.executeEdits(null, [ + { + range: { + startLineNumber: position.lineNumber, + startColumn: position.column, + endLineNumber: position.lineNumber, + endColumn: position.column, + }, + text, + }, + ]); + } + /** + * Selects a range of text in the editor. + * + * @param {UmbCodeEditorRange} range + * @memberof UmbCodeEditor + */ + select(range: UmbCodeEditorRange) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.setSelection(range); + } + /** + * Changes the theme of the editor. + * + * @template T + * @param {(CodeEditorTheme | T)} theme + * @memberof UmbCodeEditor + */ + setTheme(theme: CodeEditorTheme | T) { + if (!this.#editor) throw new Error('Editor object not found'); + monaco.editor.setTheme(theme); + } + /** + * Runs callback on change of model content. (for example when typing) + * + * @param {() => void} callback + * @memberof UmbCodeEditor + */ + onChangeModelContent(callback: () => void) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.onDidChangeModelContent(() => { + callback(); + }); + } + /** + * Runs callback on change of model (when the entire model is replaced ) + * + * @param {() => void} callback + * @memberof UmbCodeEditor + */ + onDidChangeModel(callback: () => void) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.onDidChangeModel(() => { + callback(); + }); + } + /** + * Runs callback on change of cursor position. Gives as parameter the new position. + * + * @param {((e: UmbCodeEditorCursorPositionChangedEvent | undefined) => void)} callback + * @memberof UmbCodeEditor + */ + onDidChangeCursorPosition(callback: (e: UmbCodeEditorCursorPositionChangedEvent | undefined) => void) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.onDidChangeCursorPosition((event) => { + callback(event); + }); + } + /** + * Runs callback on change of cursor selection. Gives as parameter the new selection. + * + * @param {((e: UmbCodeEditorCursorSelectionChangedEvent | undefined) => void)} callback + * @memberof UmbCodeEditor + */ + onDidChangeCursorSelection(callback: (e: UmbCodeEditorCursorSelectionChangedEvent | undefined) => void) { + if (!this.#editor) throw new Error('Editor object not found'); + this.#editor.onDidChangeCursorSelection((event) => { + callback(event); + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.element.ts new file mode 100644 index 0000000000..876d94e08f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.element.ts @@ -0,0 +1,172 @@ +import { css, html, PropertyValues } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { createRef, Ref, ref } from 'lit/directives/ref.js'; +import { UMB_THEME_CONTEXT_TOKEN } from '../../../themes/theme.context'; +import { UmbCodeEditorController } from './code-editor.controller'; +import { CodeEditorLanguage, CodeEditorTheme, UmbCodeEditorHost } from './code-editor.model'; +import { monacoEditorStyles, monacoJumpingCursorHack } from './styles'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +/** + * A custom element that renders a code editor. Code editor is based on the Monaco Editor library. + * The element will listen to the theme context and update the theme accordingly. + * Parts of the monaco Api is exposed through the `editor` property. You can access the monaco editor instance through `editor.monacoEditor`. + * + * @element umb-code-editor + * + * @export + * @class UmbCodeEditorElement + * @extends {UmbLitElement} + * @implements {UmbCodeEditorHost} + * @fires input - Fired when the value of the editor changes. + * @fires change - Fired when the entire model of editor is replaced. + */ +@customElement('umb-code-editor') +export class UmbCodeEditorElement extends UmbLitElement implements UmbCodeEditorHost { + static styles = [ + monacoEditorStyles, + monacoJumpingCursorHack, + css` + :host { + display: block; + } + #editor-container { + width: var(--editor-width); + height: var(--editor-height, 100%); + + --vscode-scrollbar-shadow: #dddddd; + --vscode-scrollbarSlider-background: var(--uui-color-disabled-contrast); + --vscode-scrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7); + --vscode-scrollbarSlider-activeBackground: rgba(0, 0, 0, 0.6); + } + `, + ]; + + private containerRef: Ref = createRef(); + + get container() { + if (!this.containerRef?.value) throw new Error('Container not found'); + return this.containerRef!.value; + } + + #editor?: UmbCodeEditorController; + + get editor() { + return this.#editor; + } + /** + * Theme of the editor. Default is light. Element will listen to the theme context and update the theme accordingly. + * + * @type {CodeEditorTheme} + * @memberof UmbCodeEditorElement + */ + @property() + theme: CodeEditorTheme = CodeEditorTheme.Light; + /** + * Language of the editor. Default is javascript. + * + * @type {CodeEditorLanguage} + * @memberof UmbCodeEditorElement + */ + @property() + language: CodeEditorLanguage = 'javascript'; + /** + * Label of the editor. Default is 'Code Editor'. + * + * @memberof UmbCodeEditorElement + */ + @property() + label = 'Code Editor'; + + //TODO - this should be called a value + #code = ''; + /** + * Value of the editor. Default is empty string. + * + * @readonly + * @memberof UmbCodeEditorElement + */ + @property() + get code() { + return this.#code; + } + + set code(value: string) { + const oldValue = this.#code; + this.#code = value; + if (this.#editor) { + this.#editor.value = value; + } + this.requestUpdate('code', oldValue); + } + /** + * Whether the editor is readonly. Default is false. + * + * @memberof UmbCodeEditorElement + */ + @property({ type: Boolean, attribute: 'readonly' }) + readonly = false; + + constructor() { + super(); + this.consumeContext(UMB_THEME_CONTEXT_TOKEN, (instance) => { + instance.theme.subscribe((themeAlias) => { + this.theme = themeAlias ? this.#translateTheme(themeAlias) : CodeEditorTheme.Light; + }); + }); + } + + firstUpdated() { + this.#editor = new UmbCodeEditorController(this); + } + + protected updated(_changedProperties: PropertyValues): void { + if (_changedProperties.has('theme') || _changedProperties.has('language')) { + this.#editor?.updateOptions({ + theme: this.theme, + language: this.language, + }); + } + } + + #translateTheme(theme: string) { + switch (theme) { + case 'umb-light-theme': + return CodeEditorTheme.Light; + case 'umb-dark-theme': + return CodeEditorTheme.Dark; + case 'umb-high-contrast-theme': + return CodeEditorTheme.HighContrastLight; + default: + return CodeEditorTheme.Light; + } + } + /** + * Inserts text at the current cursor position. + * + * @param {string} text + * @memberof UmbCodeEditorElement + */ + insert(text: string) { + this.#editor?.insert(text); + } + /** + * Finds all occurrence of the given string or matches the given regular expression. + * + * @param {string} text + * @return {*} + * @memberof UmbCodeEditorElement + */ + find(text: string) { + return this.#editor?.find(text); + } + + render() { + return html`
    `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-code-editor': UmbCodeEditorElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.model.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.model.ts new file mode 100644 index 0000000000..e093a81084 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.model.ts @@ -0,0 +1,229 @@ +export type CodeEditorLanguage = 'razor' | 'typescript' | 'javascript' | 'css' | 'markdown' | 'json' | 'html'; + +export enum CodeEditorTheme { + Light = 'umb-light', + Dark = 'umb-dark', + HighContrastLight = 'umb-hc-light', + HighContrastDark = 'umb-hc-dark', +} + +export interface UmbCodeEditorHost extends HTMLElement { + container: HTMLElement; + language: CodeEditorLanguage; + theme: CodeEditorTheme; + code: string; + readonly: boolean; + label: string; +} + +export interface UmbCodeEditorCursorPosition { + column: number; + lineNumber: number; +} + +export interface UmbCodeEditorRange { + startLineNumber: number; + startColumn: number; + endLineNumber: number; + endColumn: number; +} + +export interface UmbCodeEditorSelection { + startLineNumber: number; + startColumn: number; + endLineNumber: number; + endColumn: number; + positionColumn: number; + positionLineNumber: number; + selectionStartColumn: number; + selectionStartLineNumber: number; +} + +export interface UmbCodeEditorCursorPositionChangedEvent { + position: UmbCodeEditorCursorPosition; + secondaryPositions: UmbCodeEditorCursorPosition[]; +} + +export interface UmbCodeEditorCursorSelectionChangedEvent { + selection: UmbCodeEditorSelection; + secondarySelections: UmbCodeEditorSelection[]; +} + +export interface CodeEditorConstructorOptions { + /** + * The initial value of the auto created model in the editor. + */ + value?: string; + /** + * The initial language of the auto created model in the editor. + */ + language?: CodeEditorLanguage; + /** + * Initial theme to be used for rendering. + * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light. + * You can create custom themes via `monaco.editor.defineTheme`. + * To switch a theme, use `monaco.editor.setTheme`. + * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false. + */ + theme?: CodeEditorTheme; + /** + * Container element to use for ARIA messages. + * Defaults to document.body. + */ + ariaContainerElement?: HTMLElement; + /** + * The aria label for the editor's textarea (when it is focused). + */ + ariaLabel?: string; + /** + * The `tabindex` property of the editor's textarea + */ + tabIndex?: number; + + /** + * Control the rendering of line numbers. + * Defaults to `true`. + */ + lineNumbers?: boolean; + /** + * Class name to be added to the editor. + */ + extraEditorClassName?: string; + /** + * Should the editor be read only. See also `domReadOnly`. + * Defaults to false. + */ + readOnly?: boolean; + /** + * Control the behavior and rendering of the minimap. + */ + minimap?: boolean; + /** + * Enable that the editor will install a ResizeObserver to check if its container dom node size has changed. + * Defaults to false. + */ + automaticLayout?: boolean; + /** + * Control the wrapping of the editor. + * When `wordWrap` = "off", the lines will never wrap. + * When `wordWrap` = "on", the lines will wrap at the viewport width. + * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`. + * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn). + * Defaults to "off". + */ + wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded'; + /** + * Enable detecting links and making them clickable. + * Defaults to true. + */ + links?: boolean; + /** + * Enable inline color decorators and color picker rendering. + */ + colorDecorators?: boolean; + /** + * Controls the max number of color decorators that can be rendered in an editor at once. + */ + colorDecoratorsLimit?: number; + /** + * Enable custom contextmenu. + * Defaults to true. + */ + contextmenu?: boolean; + /** + * The modifier to be used to add multiple cursors with the mouse. + * Defaults to 'alt' + */ + multiCursorModifier?: 'ctrlCmd' | 'alt'; + /** + * Controls the max number of text cursors that can be in an active editor at once. + */ + multiCursorLimit?: number; + /** + * Controls the number of lines in the editor that can be read out by a screen reader + */ + accessibilityPageSize?: number; + /** + * Controls the spacing around the editor. + * @type {{bottom: number; top: number}} + * @memberof CodeEditorConstructorOptions + */ + padding?: { bottom: number; top: number }; + /** + * Controls if the editor should allow to move selections via drag and drop. + * Defaults to false. + */ + dragAndDrop?: boolean; + /** + * Show code lens + * Defaults to true. + */ + codeLens?: boolean; + /** + * Control the behavior and rendering of the code action lightbulb. + */ + lightbulb?: boolean; + /** + * Enable code folding. + * Defaults to true. + */ + folding?: boolean; + /** + * The font family + */ + fontFamily?: string; + /** + * The font weight + */ + fontWeight?: string; + /** + * The font size + */ + fontSize?: number; + /** + * The line height + */ + lineHeight?: number; + /** + * The letter spacing + */ + letterSpacing?: number; +} + +export interface CodeEditorSearchOptions { + /** + * Limit the searching to only search inside the editable range of the model. + * + * @type {boolean} + * @memberof CodeEditorSearchOptions + */ + searchOnlyEditableRange: boolean; + /** + * Used to indicate that searchString is a regular expression. + * + * @type {boolean} + * @memberof CodeEditorSearchOptions + */ + isRegex: boolean; + /** + * Force the matching to match lower/upper case exactly. + * + * @type {boolean} + * @memberof CodeEditorSearchOptions + */ + matchCase: boolean; + /** + * Force the matching to match entire words only. Pass null otherwise. + * + * @type {string} + * @memberof CodeEditorSearchOptions + */ + wordSeparators: string | null; + /** + * The result will contain the captured groups. + * + * @type {boolean} + * @memberof CodeEditorSearchOptions + */ + captureMatches: boolean; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts new file mode 100644 index 0000000000..bfa042e01b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts @@ -0,0 +1,232 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import { html } from 'lit'; +import { UmbCodeEditorElement } from './code-editor.element'; +import { CodeEditorLanguage, CodeEditorTheme } from './code-editor.model'; + +const meta: Meta = { + title: 'Components/Code Editor', + component: 'umb-code-editor', + decorators: [(story) => html`
    ${story()}
    `], + parameters: { layout: 'fullscreen' }, + argTypes: { + theme: { + control: 'select', + options: [ + CodeEditorTheme.Dark, + CodeEditorTheme.Light, + CodeEditorTheme.HighContrastLight, + CodeEditorTheme.HighContrastLight, + ], + }, + }, +}; + +const codeSnippets: Record = { + javascript: `// Returns "banana" + ('b' + 'a' + + 'a' + 'a').toLowerCase();`, + css: `:host { + display: flex; + background-color: var(--uui-color-background); + width: 100%; + height: 100%; + flex-direction: column; + } + + #header { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: 70px; + background-color: var(--uui-color-surface); + border-bottom: 1px solid var(--uui-color-border); + box-sizing: border-box; + } + + #headline { + display: block; + margin: 0 var(--uui-size-layout-1); + } + + #tabs { + margin-left: auto; + }`, + html: ` + + + Page Title + + + +

    This is a Heading

    +

    This is a paragraph.

    + + + `, + razor: `@using Umbraco.Extensions + @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + @{ + if (Model?.Areas.Any() != true) { return; } + } + +
    + @foreach (var area in Model.Areas) + { + @await Html.GetBlockGridItemAreaHtmlAsync(area) + } +
    `, + markdown: ` + You will like those projects! + + --- + + # h1 Heading 8-) + ## h2 Heading + ### h3 Heading + #### h4 Heading + ##### h5 Heading + ###### h6 Heading + + + ## Horizontal Rules + + ___ + + --- + + *** + + + ## Typographic replacements + + Enable typographer option to see result. + + (c) (C) (r) (R) (tm) (TM) (p) (P) +- + + test.. test... test..... test?..... test!.... + + !!!!!! ???? ,, -- --- + + "Smartypants, double quotes" and 'single quotes'`, + typescript: `import { UmbTemplateRepository } from '../repository/template.repository'; + import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; + import { createObservablePart, DeepState } from '@umbraco-cms/observable-api'; + import { TemplateModel } from '@umbraco-cms/backend-api'; + import { UmbControllerHostInterface } from '@umbraco-cms/controller'; + + export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { + #data = new DeepState(undefined); + data = this.#data.asObservable(); + name = createObservablePart(this.#data, (data) => data?.name); + content = createObservablePart(this.#data, (data) => data?.content); + + constructor(host: UmbControllerHostInterface) { + super(host, new UmbTemplateRepository(host)); + } + + getData() { + return this.#data.getValue(); + } + + setName(value: string) { + this.#data.next({ ...this.#data.value, $type: this.#data.value?.$type || '', name: value }); + } + + setContent(value: string) { + this.#data.next({ ...this.#data.value, $type: this.#data.value?.$type || '', content: value }); + } + + async load(entityKey: string) { + const { data } = await this.repository.requestByKey(entityKey); + if (data) { + this.setIsNew(false); + this.#data.next(data); + } + } + + async createScaffold(parentKey: string | null) { + const { data } = await this.repository.createScaffold(parentKey); + if (!data) return; + this.setIsNew(true); + this.#data.next(data); + } + }`, + json: `{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "lib": ["es2020", "dom", "dom.iterable"], + "declaration": true, + "emitDeclarationOnly": true, + "noEmitOnError": true, + "outDir": "./types", + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node", + "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "useDefineForClassFields": false, + "skipLibCheck": true, + "resolveJsonModule": true, + "baseUrl": ".", + "paths": { + "@umbraco-cms/css": ["libs/css/custom-properties.css"], + "@umbraco-cms/modal": ["src/core/modal"], + "@umbraco-cms/models": ["libs/models"], + "@umbraco-cms/backend-api": ["libs/backend-api"], + "@umbraco-cms/context-api": ["libs/context-api"], + "@umbraco-cms/controller": ["libs/controller"], + "@umbraco-cms/element": ["libs/element"], + "@umbraco-cms/extensions-api": ["libs/extensions-api"], + "@umbraco-cms/extensions-registry": ["libs/extensions-registry"], + "@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/workspace": ["libs/workspace"], + "@umbraco-cms/utils": ["libs/utils"], + "@umbraco-cms/router": ["libs/router"], + "@umbraco-cms/test-utils": ["libs/test-utils"], + "@umbraco-cms/repository": ["libs/repository"], + "@umbraco-cms/resources": ["libs/resources"], + "@umbraco-cms/store": ["libs/store"], + "@umbraco-cms/components/*": ["src/backoffice/components/*"], + "@umbraco-cms/sections/*": ["src/backoffice/sections/*"] + } + }, + "include": ["src/**/*.ts", "apps/**/*.ts", "libs/**/*.ts", "e2e/**/*.ts"], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] + }`, +}; + +export default meta; +type Story = StoryObj; + +const [Javascript, Css, Html, Razor, Markdown, Typescript, Json]: Story[] = Object.keys(codeSnippets).map( + (language) => { + return { + args: { + language: language as CodeEditorLanguage, + code: codeSnippets[language as CodeEditorLanguage], + }, + }; + } +); + +const Themes: Story = { + args: { + language: 'javascript', + code: codeSnippets.javascript, + theme: CodeEditorTheme.Dark, + }, +}; + +export { Javascript, Css, Html, Razor, Markdown, Typescript, Json, Themes }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/index.ts new file mode 100644 index 0000000000..36b9c2e5c2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/index.ts @@ -0,0 +1,8 @@ +import * as initializeWorkers from './languageWorkers'; +import { UmbCodeEditorElement } from './code-editor.element'; +import { UmbCodeEditorController } from './code-editor.controller'; +import { monacoEditorStyles } from './styles'; + +export default UmbCodeEditorElement; + +export { initializeWorkers, UmbCodeEditorController as UmbCodeEditor, UmbCodeEditorElement, monacoEditorStyles }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/languageWorkers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/languageWorkers.ts new file mode 100644 index 0000000000..8fd766ec2e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/languageWorkers.ts @@ -0,0 +1,33 @@ +//eslint-disable-next-line +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +//eslint-disable-next-line +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +//eslint-disable-next-line +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +//eslint-disable-next-line +import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; +//eslint-disable-next-line +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; + +export const initializeWorkers = () => { + self.MonacoEnvironment = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + getWorker(_: any, label: string) { + if (label === 'json') { + return new jsonWorker(); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new cssWorker(); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new htmlWorker(); + } + if (label === 'typescript' || label === 'javascript') { + return new tsWorker(); + } + return new editorWorker(); + }, + }; +}; + +initializeWorkers(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/styles.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/styles.ts new file mode 100644 index 0000000000..00f7a55e4d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/styles.ts @@ -0,0 +1,14 @@ +import { css, unsafeCSS } from 'lit'; +import styles from 'monaco-editor/min/vs/editor/editor.main.css?inline'; + +export const monacoEditorStyles = css` + ${unsafeCSS(styles)} +`; + +export const monacoJumpingCursorHack = css` + /* a hacky workaround this issue: https://github.com/microsoft/monaco-editor/issues/3217 + should probably be removed when the issue is fixed */ + .view-lines { + font-feature-settings: revert !important; + } +`; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.dark.theme.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.dark.theme.ts new file mode 100644 index 0000000000..cb746a8db7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.dark.theme.ts @@ -0,0 +1,10 @@ +import * as monaco from 'monaco-editor'; + +export const UmbCodeEditorThemeDark: monaco.editor.IStandaloneThemeData = { + base: 'vs-dark', + inherit: true, // can also be false to completely replace the builtin rules + rules: [], + colors: { + 'editor.background': '#21262e', + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-dark.theme.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-dark.theme.ts new file mode 100644 index 0000000000..6e5083021f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-dark.theme.ts @@ -0,0 +1,8 @@ +import * as monaco from 'monaco-editor'; + +export const UmbCodeEditorThemeHighContrastDark: monaco.editor.IStandaloneThemeData = { + base: 'vs-dark', + inherit: true, // can also be false to completely replace the builtin rules + rules: [], + colors: {}, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-light.theme.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-light.theme.ts new file mode 100644 index 0000000000..f783ff22ab --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.hc-light.theme.ts @@ -0,0 +1,8 @@ +import * as monaco from 'monaco-editor'; + +export const UmbCodeEditorThemeHighContrastLight: monaco.editor.IStandaloneThemeData = { + base: 'vs', + inherit: true, // can also be false to completely replace the builtin rules + rules: [], + colors: {}, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.light.theme.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.light.theme.ts new file mode 100644 index 0000000000..1c5c98cbb3 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/code-editor.light.theme.ts @@ -0,0 +1,8 @@ +import * as monaco from 'monaco-editor'; + +export const UmbCodeEditorThemeLight: monaco.editor.IStandaloneThemeData = { + base: 'vs', + inherit: true, // can also be false to completely replace the builtin rules + rules: [], + colors: {}, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/index.ts new file mode 100644 index 0000000000..89c7798708 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/themes/index.ts @@ -0,0 +1,24 @@ +import * as monaco from 'monaco-editor'; +import { CodeEditorTheme } from '../code-editor.model'; +import { UmbCodeEditorThemeHighContrastLight } from './code-editor.hc-light.theme'; +import { UmbCodeEditorThemeHighContrastDark } from './code-editor.hc-dark.theme'; +import { UmbCodeEditorThemeLight } from './code-editor.light.theme'; +import { UmbCodeEditorThemeDark } from './code-editor.dark.theme'; +/** + * 4 themes for the code editor. + * + * @type {*} */ +const themes: Record = { + 'umb-dark': UmbCodeEditorThemeDark, + 'umb-light': UmbCodeEditorThemeLight, + 'umb-hc-light': UmbCodeEditorThemeHighContrastLight, + 'umb-hc-dark': UmbCodeEditorThemeHighContrastDark, +}; +export { + UmbCodeEditorThemeDark, + UmbCodeEditorThemeLight, + UmbCodeEditorThemeHighContrastLight, + UmbCodeEditorThemeHighContrastDark, + themes, +}; +export default themes; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts similarity index 99% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts index 916ce79310..fb3a7bfcd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement, svg } from 'lit'; import { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'; import { clamp } from 'lodash-es'; -import { UmbDonutSliceElement } from './donut-slice'; +import { UmbDonutSliceElement } from './donut-slice.element'; export interface Circle { color: string; @@ -180,8 +180,6 @@ export class UmbDonutChartElement extends LitElement { this.#printCircles(); } - - } #calculatePercentage(partialValue: number) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts index efeb9c3405..94a935efb6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.stories.ts @@ -1,5 +1,5 @@ -import './donut-slice'; -import './donut-chart'; +import './donut-slice.element'; +import './donut-chart.element'; import { Meta } from '@storybook/web-components'; import { html } from 'lit'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-slice.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-slice.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-slice.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-slice.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/index.ts index 218f52b18f..b01b77e83f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/index.ts @@ -1,2 +1,2 @@ -export * from './donut-chart'; -export * from './donut-slice'; +export * from './donut-chart.element'; +export * from './donut-slice.element'; 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 2078c9d6ad..6bdba312a4 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 @@ -45,6 +45,7 @@ import './history/history-item.element'; import './workspace/workspace-action/workspace-action.element'; import './workspace/workspace-layout/workspace-layout.element'; +import './code-editor'; import './workspace/workspace-footer-layout/workspace-footer-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.element.ts index 01ed7e744f..461f748a51 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.element.ts @@ -1,7 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UUIInputElement, UUITextareaElement } from '@umbraco-ui/uui'; +import { customElement, query, state } from 'lit/decorators.js'; +import { UUIInputElement } from '@umbraco-ui/uui'; +import { UmbCodeEditorElement } from '../../../shared/components/code-editor/code-editor.element'; import { UmbTemplateWorkspaceContext } from './template-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -16,8 +17,18 @@ export class UmbTemplateWorkspaceElement extends UmbLitElement { height: 100%; } - #content { - height: 200px; + umb-code-editor { + --editor-height: calc(100vh - 300px); + } + + uui-box { + margin: 1em; + --uui-box-default-padding: 0; + } + + uui-input { + width: 100%; + margin: 1em; } `, ]; @@ -37,6 +48,9 @@ export class UmbTemplateWorkspaceElement extends UmbLitElement { @state() private _content?: string | null = ''; + @query('umb-code-editor') + private _codeEditor?: UmbCodeEditorElement; + #templateWorkspaceContext = new UmbTemplateWorkspaceContext(this); #isNew = false; @@ -59,17 +73,35 @@ export class UmbTemplateWorkspaceElement extends UmbLitElement { this.#templateWorkspaceContext.setName(value); } - #onTextareaInput(event: Event) { - const target = event.target as UUITextareaElement; - const value = target.value as string; + //TODO - debounce that + #onCodeEditorInput(event: Event) { + const target = event.target as UmbCodeEditorElement; + const value = target.code as string; this.#templateWorkspaceContext.setContent(value); } + #insertCode(event: Event) { + const target = event.target as UUIInputElement; + const value = target.value as string; + + this._codeEditor?.insert(`My hovercraft is full of eels`); + } + render() { // TODO: add correct UI elements return html` - - + + + Insert "My hovercraft is full of eels" + + + `; } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index d1714e2ac4..210f4b48d5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -32,8 +32,19 @@ export const data: Array = [ icon: 'icon-layout', hasChildren: false, alias: 'Doc1', - content: - '@using Umbraco.Cms.Web.Common.PublishedModels;\n@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage\r\n@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels;\r\n@{\r\n\tLayout = null;\r\n}', + content: `@using Umbraco.Extensions + @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage + @{ + if (Model?.Areas.Any() != true) { return; } + } + +
    + @foreach (var area in Model.Areas) + { + @await Html.GetBlockGridItemAreaHtmlAsync(area) + } +
    `, }, { $type: '', From 15dc08f74e53705f9245cd55e647fb70f03e1027 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:01:31 +0100 Subject: [PATCH 278/550] set token --- .../workflows/npm-publish-github-packages.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index 09842d5015..b77010f818 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -48,8 +48,6 @@ jobs: concurrency: group: npm-publish cancel-in-progress: true - env: - NPM_TOKEN: ${{secrets.NPM_TOKEN}} steps: - uses: actions/download-artifact@v3 with: @@ -57,14 +55,15 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - - name: Authenticate with Registry - run: | - echo "@umbraco-cms:registry=https://registry.npmjs.org/" > .npmrc - echo "registry=https://registry.npmjs.org/" >> .npmrc - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> .npmrc - npm whoami + registry-url: https://registry.npmjs.org/ + scope: '@umbraco-cms' + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - name: Version and publish run: | SHA_SHORT=$(echo $GITHUB_SHA | cut -c1-8) + npm whoami npm version 1.0.0-next.$SHA_SHORT --allow-same-version --no-git-tag-version npm publish --tag next --access public + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} From 1f78421699a87bb3cb40bf9b1b0f67ee93e32826 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:05:27 +0100 Subject: [PATCH 279/550] more breaking changes fixes --- .../document-type-workspace-edit.element.ts | 13 ++++++++++++- .../document-types/workspace/manifests.ts | 18 ++++++++++++------ ...kspace-view-document-type-design.element.ts | 1 - ...pace-view-document-type-listview.element.ts | 11 +++++------ ...e-view-document-type-permissions.element.ts | 7 ++++--- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts index 57d9095924..099a206e97 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -106,7 +106,18 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { -
    Keyboard Shortcuts
    +
    + + Keyboard Shortcuts + + ALT + + + shift + + + k + + +
    `; } 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 4547fe7f3e..8854d3a53a 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 @@ -27,19 +27,24 @@ const workspaceViews: Array = [ pathname: 'design', icon: 'umb:document-dashed-line', }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, { type: 'workspaceView', alias: 'Umb.WorkspaceView.DocumentType.ListView', - name: 'Document Type Workspace Permissions ListView', + name: 'Document Type Workspace List View', loader: () => import('./views/listview/workspace-view-document-type-listview.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.DocumentType'], - label: 'List View', + label: 'Listview', pathname: 'listview', icon: 'umb:list', }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, { type: 'workspaceView', @@ -48,20 +53,21 @@ const workspaceViews: Array = [ loader: () => import('./views/permissions/workspace-view-document-type-permissions.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Permissions', pathname: 'permissions', icon: 'umb:keychain', }, + conditions: { + workspaces: ['Umb.Workspace.DocumentType'], + }, }, { type: 'workspaceView', alias: 'Umb.WorkspaceView.DocumentType.Templates', - name: 'Document Type Workspace Permissions View', + name: 'Document Type Workspace Templates View', loader: () => import('./views/templates/workspace-view-document-type-templates.element'), weight: 100, meta: { - workspaces: ['Umb.Workspace.DocumentType'], label: 'Templates', pathname: 'templates', icon: 'umb:layout', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index c794b66b8c..2b50b0310e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -14,7 +14,6 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement { css` :host { display: block; - margin: var(--uui-size-layout-1); } #workspace-tab-bar { padding: 0 var(--uui-size-layout-1); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts index 31221d76b2..d5449abd95 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/listview/workspace-view-document-type-listview.element.ts @@ -1,18 +1,17 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, query, state } from 'lit/decorators.js'; -import { repeat } from 'lit/directives/repeat.js'; -import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; +import { customElement, state } from 'lit/decorators.js'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import '../../../../../shared/property-creator/property-creator.element.ts'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; @customElement('umb-workspace-view-document-type-listview') export class UmbWorkspaceViewDocumentTypeListviewElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @state() - _documentType?: DocumentTypeModel; + _documentType?: DocumentTypeResponseModel; private _workspaceContext?: UmbWorkspaceDocumentTypeContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts index f15ede2561..8479c0bbd0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/permissions/workspace-view-document-type-permissions.element.ts @@ -1,9 +1,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; -import { UmbLitElement } from '@umbraco-cms/element'; -import type { DocumentTypeModel } from '@umbraco-cms/backend-api'; + import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-permissions') @@ -27,7 +28,7 @@ export class UmbWorkspaceViewDocumentTypePermissionsElement extends UmbLitElemen ]; @state() - _documentType?: DocumentTypeModel; + _documentType?: DocumentTypeResponseModel; private _workspaceContext?: UmbWorkspaceDocumentTypeContext; From 620a9b5b039475d9d2f5913403603d0f706fbcda Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:07:56 +0100 Subject: [PATCH 280/550] comment --- .../.github/workflows/npm-publish-github-packages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index b77010f818..a44dba0303 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -1,5 +1,6 @@ # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages +# The @umbraco-cms scope is owned by Umbraco HQ name: Node.js Libraries Package From a5a80cadb79629ee54911bf6ae662c4a360fc828 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:11:53 +0100 Subject: [PATCH 281/550] insert condition to publish --- .../.github/workflows/npm-publish-github-packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index a44dba0303..7a99f6fd45 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -43,7 +43,7 @@ jobs: path: ./dist/libs publish-npm: - # if: github.event_name == 'push' && github.ref == 'refs/heads/main' + if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest concurrency: From aeed4071e87ac5fad184d1dd44a8316b98823025 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Wed, 22 Mar 2023 22:58:11 +1000 Subject: [PATCH 282/550] Adds modal layout for embedded media picker in RTE (#582) * adds modal for embedded media in rte * make it pretty * moves modal to shared/modals updates with token fixes story clean up data handling to only pass required * lib import paths * add default export --------- Co-authored-by: Mads Rasmussen --- .../embedded-media-modal.element.ts | 272 ++++++++++++++++++ .../embedded-media-modal.stories.ts | 26 ++ .../shared/modals/embedded-media/index.ts | 35 +++ .../src/backoffice/shared/modals/manifests.ts | 6 + .../src/core/mocks/browser-handlers.ts | 2 + .../core/mocks/domains/rte-embed.handlers.ts | 17 ++ 6 files changed, 358 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts new file mode 100644 index 0000000000..6df72714a6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts @@ -0,0 +1,272 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, state } from 'lit/decorators.js'; +import { when } from 'lit-html/directives/when.js'; +import { unsafeHTML } from 'lit-html/directives/unsafe-html.js'; +import { OEmbedResult, OEmbedStatus, UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalResult } from '.'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; + +interface UmbEmbeddedMediaModalModel { + url?: string; + info?: string; + a11yInfo?: string; + originalWidth: number; + originalHeight: number; + width: number; + height: number; + constrain: boolean; +} + +@customElement('umb-embedded-media-modal') +export class UmbEmbeddedMediaModalElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + h3 { + margin-left: var(--uui-size-space-5); + margin-right: var(--uui-size-space-5); + } + + uui-input { + width: 100%; + --uui-button-border-radius: 0; + } + + .sr-only { + clip: rect(0, 0, 0, 0); + border: 0; + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + } + + umb-workspace-property-layout:first-child { + padding-top: 0; + } + + umb-workspace-property-layout:last-child { + padding-bottom: 0; + } + + p { + margin-bottom: 0; + } + `, + ]; + + #loading = false; + #embedResult!: OEmbedResult; + + @property({ attribute: false }) + modalHandler?: UmbModalHandler; + + @property({ type: Object }) + data?: UmbEmbeddedMediaModalData; + + #handleConfirm() { + this.modalHandler?.submit({ selection: this.#embedResult }); + } + + #handleCancel() { + this.modalHandler?.reject(); + } + + @state() + private _model: UmbEmbeddedMediaModalModel = { + url: '', + width: 360, + height: 240, + constrain: true, + info: '', + a11yInfo: '', + originalHeight: 240, + originalWidth: 360, + }; + + connectedCallback() { + super.connectedCallback(); + if (this.data?.url) { + Object.assign(this._model, this.data); + this.#getPreview(); + } + } + + async #getPreview() { + this._model.info = ''; + this._model.a11yInfo = ''; + + this.#loading = true; + this.requestUpdate('_model'); + + try { + // TODO => use backend cli when available + const result = await fetch( + umbracoPath('/rteembed?') + + new URLSearchParams({ + url: this._model.url, + width: this._model.width?.toString(), + height: this._model.height?.toString(), + } as { [key: string]: string }) + ); + + this.#embedResult = await result.json(); + + switch (this.#embedResult.oEmbedStatus) { + case 0: + this.#onPreviewFailed('Not supported'); + break; + case 1: + this.#onPreviewFailed('Could not embed media - please ensure the URL is valid'); + break; + case 2: + this._model.info = ''; + this._model.a11yInfo = 'Retrieved URL'; + break; + } + } catch (e) { + this.#onPreviewFailed('Could not embed media - please ensure the URL is valid'); + } + + this.#loading = false; + this.requestUpdate('_model'); + } + + #onPreviewFailed(message: string) { + this._model.info = message; + this._model.a11yInfo = message; + } + + #onUrlChange(e: InputEvent) { + this._model.url = (e.target as HTMLInputElement).value; + this.requestUpdate('_model'); + } + + #onWidthChange(e: InputEvent) { + this._model.width = parseInt((e.target as HTMLInputElement).value, 10); + this.#changeSize('width'); + } + + #onHeightChange(e: InputEvent) { + this._model.height = parseInt((e.target as HTMLInputElement).value, 10); + this.#changeSize('height'); + } + + /** + * Calculates the width or height axis dimension when the other is changed. + * If constrain is false, axis change independently + * @param axis {string} + */ + #changeSize(axis: 'width' | 'height') { + const resize = this._model.originalWidth !== this._model.width || this._model.originalHeight !== this._model.height; + + if (this._model.constrain) { + if (axis === 'width') { + this._model.height = Math.round((this._model.width / this._model.originalWidth) * this._model.height); + } else { + this._model.width = Math.round((this._model.height / this._model.originalHeight) * this._model.width); + } + } + + this._model.originalWidth = this._model.width; + this._model.originalHeight = this._model.height; + + if (this._model.url !== '' && resize) { + this.#getPreview(); + } + } + + #onConstrainChange() { + this._model.constrain = !this._model.constrain; + } + + /** + * If the embed does not support dimensions, or was not requested successfully + * the width, height and constrain controls are disabled + * @returns {boolean} + */ + #dimensionControlsDisabled() { + return !this.#embedResult?.supportsDimensions || this.#embedResult?.oEmbedStatus !== OEmbedStatus.Success; + } + + render() { + return html` + + + +
    + + + +
    +
    + + ${when( + this.#embedResult?.oEmbedStatus === OEmbedStatus.Success || this._model.a11yInfo, + () => html` +
    + ${when(this.#loading, () => html``)} + ${when(this.#embedResult.markup, () => html`${unsafeHTML(this.#embedResult.markup)}`)} + ${when(this._model.info, () => html` `)} + ${when(this._model.a11yInfo, () => html` `)} +
    +
    ` + )} + + + + + + + + + + + + +
    + + Cancel + +
    + `; + } +} + +export default UmbEmbeddedMediaModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-embedded-media-modal': UmbEmbeddedMediaModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts new file mode 100644 index 0000000000..5eb102c153 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts @@ -0,0 +1,26 @@ +import '../../components/body-layout/body-layout.element'; +import './embedded-media-modal.element'; + +import { Meta } from '@storybook/web-components'; +import { html } from 'lit'; +import { UmbEmbeddedMediaModalData } from '.'; + +export default { + title: 'API/Modals/Layouts/Embedded Media', + component: 'umb-embedded-media-modal', + id: 'umb-embedded-media-modal', +} as Meta; + +const data: UmbEmbeddedMediaModalData = { + url: 'https://youtu.be/wJNbtYdr-Hg', + width: 360, + height: 240, + constrain: true, +}; + +export const Overview = () => html` + + +`; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts new file mode 100644 index 0000000000..94cde2a310 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts @@ -0,0 +1,35 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export enum OEmbedStatus { + NotSupported, + Error, + Success, +} + +interface UmbEmbeddedMediaDimensions { + width?: number; + height?: number; + constrain?: boolean; +} + +export interface UmbEmbeddedMediaModalData extends UmbEmbeddedMediaDimensions { + url?: string; +} + +export interface OEmbedResult extends UmbEmbeddedMediaDimensions { + oEmbedStatus: OEmbedStatus; + supportsDimensions: boolean; + markup?: string; +} + +export type UmbEmbeddedMediaModalResult = { + selection: OEmbedResult; +}; + +export const UMB_EMBEDDED_MEDIA_MODAL_TOKEN = new UmbModalToken( + 'Umb.Modal.EmbeddedMedia', + { + type: 'sidebar', + size: 'small', + } +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts index ac7dfa75d5..bedaf58b4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts @@ -31,6 +31,12 @@ const modals: Array = [ name: 'Section Picker Modal', loader: () => import('./section-picker/section-picker-modal.element'), }, + { + type: 'modal', + alias: 'Umb.Modal.EmbeddedMedia', + name: 'Embedded Media Modal', + loader: () => import('./embedded-media/embedded-media-modal.element'), + }, ]; export const manifests = [...modals]; 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 fbb30e5394..1219928040 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 @@ -27,6 +27,7 @@ import { handlers as cultureHandlers } from './domains/culture.handlers'; import { handlers as redirectManagementHandlers } from './domains/redirect-management.handlers'; import { handlers as logViewerHandlers } from './domains/log-viewer.handlers'; import { handlers as packageHandlers } from './domains/package.handlers'; +import { handlers as rteEmbedHandlers } from './domains/rte-embed.handlers'; const handlers = [ serverHandlers.serverVersionHandler, @@ -57,6 +58,7 @@ const handlers = [ ...redirectManagementHandlers, ...logViewerHandlers, ...packageHandlers, + ...rteEmbedHandlers, ]; switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts new file mode 100644 index 0000000000..b99050a812 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts @@ -0,0 +1,17 @@ +import { rest } from "msw"; +import { umbracoPath } from "@umbraco-cms/backoffice/utils"; +import { OEmbedResult, OEmbedStatus } from "../../../backoffice/shared/modals/embedded-media"; + +export const handlers = [ + rest.get(umbracoPath('/rteembed'), (req, res, ctx) => { + const width = req.url.searchParams.get('width') ?? 360; + const height = req.url.searchParams.get('height') ?? 240; + const response: OEmbedResult = { + supportsDimensions: true, + markup: ``, + oEmbedStatus: OEmbedStatus.Success, + }; + + return res(ctx.status(200), ctx.json(response)); + }), +]; \ No newline at end of file From e1e1b191c403e6c69b9bb180f9c18470d5d82c42 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2023 15:18:25 +0100 Subject: [PATCH 283/550] add tree item extension point --- .../libs/extensions-registry/models.ts | 3 +++ .../libs/extensions-registry/tree-item.models.ts | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/extensions-registry/tree-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 871567b74d..615b0db9d1 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/models.ts @@ -16,6 +16,7 @@ import type { ManifestMenu } from './menu.models'; import type { ManifestMenuItem, ManifestMenuItemTreeKind } from './menu-item.models'; import type { ManifestTheme } from './theme.models'; import type { ManifestTree } from './tree.models'; +import type { ManifestTreeItem } from './tree-item.models'; import type { ManifestUserDashboard } from './user-dashboard.models'; import type { ManifestWorkspace } from './workspace.models'; import type { ManifestWorkspaceAction } from './workspace-action.models'; @@ -44,6 +45,7 @@ export * from './menu.models'; export * from './menu-item.models'; export * from './theme.models'; export * from './tree.models'; +export * from './tree-item.models'; export * from './user-dashboard.models'; export * from './workspace-action.models'; export * from './workspace-view-collection.models'; @@ -78,6 +80,7 @@ export type ManifestTypes = | ManifestMenuItemTreeKind | ManifestTheme | ManifestTree + | ManifestTreeItem | ManifestUserDashboard | ManifestWorkspace | ManifestWorkspaceAction diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree-item.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree-item.models.ts new file mode 100644 index 0000000000..9231a8ae68 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree-item.models.ts @@ -0,0 +1,10 @@ +import type { ManifestElement } from './models'; + +export interface ManifestTreeItem extends ManifestElement { + type: 'treeItem'; + conditions: ConditionsTreeItem; +} + +export interface ConditionsTreeItem { + entityType: string; +} From cd32c72ad53f82a173c3ec75a92c6d725ff032cc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 22 Mar 2023 15:36:32 +0100 Subject: [PATCH 284/550] add folder for tree-item component --- .../components/tree/tree-item.stories.ts | 27 ------------------- .../tree/{ => tree-item}/tree-item.element.ts | 6 ++--- .../tree/tree-item/tree-item.stories.ts | 27 +++++++++++++++++++ .../shared/components/tree/tree.element.ts | 2 +- 4 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.stories.ts rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/{ => tree-item}/tree-item.element.ts (97%) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.stories.ts deleted file mode 100644 index 5b59cbde3b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.stories.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Meta, StoryObj } from '@storybook/web-components'; -import './tree-item.element'; -import type { UmbTreeItem } from './tree-item.element' - -const meta: Meta = { - title: 'Components/Tree/Tree Item', - component: 'umb-tree-item', -}; - -export default meta; -type Story = StoryObj; - -export const Overview: Story = { - args: { - label: 'My Tree Item', - icon: 'umb:home', - hasChildren: false, - } -}; - -export const WithChildren: Story = { - args: { - label: 'My Tree Item', - icon: 'umb:home', - hasChildren: true, - } -}; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts similarity index 97% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts index 6f9eb57709..f6ae328ae6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts @@ -4,12 +4,12 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { map, Observable } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; +import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, -} from '../section/section-sidebar/section-sidebar.context'; -import type { UmbTreeContextBase } from './tree.context'; +} from '../../section/section-sidebar/section-sidebar.context'; +import type { UmbTreeContextBase } from '../tree.context'; import type { Entity } from '@umbraco-cms/backoffice/models'; import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts new file mode 100644 index 0000000000..90962da327 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts @@ -0,0 +1,27 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import './tree-item.element'; +import type { UmbTreeItem } from './tree-item.element'; + +const meta: Meta = { + title: 'Components/Tree/Tree Item', + component: 'umb-tree-item', +}; + +export default meta; +type Story = StoryObj; + +export const Overview: Story = { + args: { + label: 'My Tree Item', + icon: 'umb:home', + hasChildren: false, + }, +}; + +export const WithChildren: Story = { + args: { + label: 'My Tree Item', + icon: 'umb:home', + hasChildren: true, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index e5e5d1c5a7..9d0629c8db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -8,7 +8,7 @@ import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import './tree-item.element'; +import './tree-item/tree-item.element'; import './context-menu/tree-context-menu-page.service'; import './context-menu/tree-context-menu.service'; From f062d5cabbfe47d223c184ddda9055f12b0a05a3 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:49:41 +0100 Subject: [PATCH 285/550] add max_old_space_size to azure jobs --- .../azure-static-web-apps-ambitious-stone-0033b3603.yml | 3 +++ .../workflows/azure-static-web-apps-ashy-bay-09f36a803.yml | 3 +++ src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ambitious-stone-0033b3603.yml b/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ambitious-stone-0033b3603.yml index ee460e8053..0ec823c46f 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ambitious-stone-0033b3603.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ambitious-stone-0033b3603.yml @@ -9,6 +9,9 @@ on: # branches: # - main +env: + NODE_OPTIONS: --max_old_space_size=16384 + jobs: build_and_deploy_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ashy-bay-09f36a803.yml b/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ashy-bay-09f36a803.yml index 3e9e2ceaaa..76b6ecd96c 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ashy-bay-09f36a803.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/azure-static-web-apps-ashy-bay-09f36a803.yml @@ -9,6 +9,9 @@ on: # branches: # - main +env: + NODE_OPTIONS: --max_old_space_size=16384 + jobs: build_and_deploy_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml index f806a8eaa1..4456c4f876 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml @@ -16,7 +16,7 @@ on: workflow_dispatch: env: - NODE_OPTIONS: --max_old_space_size=16384 + NODE_OPTIONS: --max_old_space_size=16384 jobs: build: From 2584917d47871e616cdc590c8a0da77bb14e3a86 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:53:27 +0100 Subject: [PATCH 286/550] bump engines.node so all actions run with the same version --- src/Umbraco.Web.UI.Client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 833bb4bde1..34a9be94d8 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -55,7 +55,7 @@ "check": "npm run lint && npm run compile && npm run build-storybook" }, "engines": { - "node": ">=18.14 <19", + "node": ">=18.15 <19", "npm": ">=9.5 < 10" }, "dependencies": { From e71ed09b90a67413650d312da5e52cc2a28bd9b8 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:56:07 +0100 Subject: [PATCH 287/550] adjust node version --- src/Umbraco.Web.UI.Client/.nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.nvmrc b/src/Umbraco.Web.UI.Client/.nvmrc index 2ef3430431..932b2b01d7 100644 --- a/src/Umbraco.Web.UI.Client/.nvmrc +++ b/src/Umbraco.Web.UI.Client/.nvmrc @@ -1 +1 @@ -18.14 +18.15 From 4b6774b8bb0a1dfc94b3db149caf458050bdc8c4 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:56:37 +0100 Subject: [PATCH 288/550] Revert "bump engines.node so all actions run with the same version" This reverts commit 2584917d47871e616cdc590c8a0da77bb14e3a86. --- src/Umbraco.Web.UI.Client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 34a9be94d8..833bb4bde1 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -55,7 +55,7 @@ "check": "npm run lint && npm run compile && npm run build-storybook" }, "engines": { - "node": ">=18.15 <19", + "node": ">=18.14 <19", "npm": ">=9.5 < 10" }, "dependencies": { From 401b469e54e01c56f18ed74c2b521d44e4a0b149 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 22 Mar 2023 16:13:37 +0100 Subject: [PATCH 289/550] update docs --- .../src/stories/extending/modals/intro.mdx | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx index d9d5548f8c..4be5f44de7 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx @@ -63,20 +63,21 @@ Notice we are using a Controller here, this means your element has to be a Contr #### Simple Modal Registration ```ts -new UmbModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL, { - path: `:key`, +new UmbPropertyEditorModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL, { + path: `:alias`, onSetup: (params) => { - const keyParam = params.key; - if (!keyParam) return false; + const aliasParam = params.alias; + if (!aliasParam) return false; + // In this example alias is not being used, but we could use it to get the right data set for the modal. // Make a Data object to be used in the modal: return { - key: keyParam, + key: this.myCurrentValue, }; }, onSubmit: (submitData) => { - // Here we got the Result object from the modal: - this._mySetPickedKey(submitData.key); + // Here we got the Result object from the modal, which we can use to get the new selected key. + this.myCurrentValue = submitData.key; }, getUrlBuilder: (urlBuilder) => { // Here we got a urlBuilder, read further down this document for more into on this: @@ -115,11 +116,11 @@ new UmbPropertyEditorModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL The Modal registration has an option to retrive a URL Builder, this is a function that can be used to generate a URL to a modal. ```ts -const modalLink = _myUrlBuilder?.({ key: 'my-key-1234' }); +const modalLink = _myUrlBuilder?.({ alias: 'my-input-alias' }); ``` -The modalLink from above could look like: /umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-key-1234 +The modalLink from above could look like: /umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-input-alias Notice the Property Editor registration will add the property alias and variant id to the URL, so it becomes: -/umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-property-alias/en-us/my-key-1234 +/umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-property-alias/en-us/my-input-alias From 806a59ac99234fe00eb745208a605aec19a747fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 22 Mar 2023 16:14:37 +0100 Subject: [PATCH 290/550] correct imports --- .../input-multi-url-picker/input-multi-url-picker.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index ac6fbbbbf3..df34ed48b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalRouteBuilder, UmbPropertyEditorModalRegistrationController } from '@umbraco-cms/internal/router'; -import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; /** * @element umb-input-multi-url-picker From f62c7c0453e59bd0672af79ce480acf9d827cd9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 22 Mar 2023 20:36:02 +0100 Subject: [PATCH 291/550] mega refactor --- .../.vscode/settings.json | 2 +- src/Umbraco.Web.UI.Client/libs/modal/index.ts | 1 + .../modal/modal-registration-controller.ts | 15 ---- .../modal/modal-registration.controller.ts | 85 +++++++++++++++++++ .../libs/modal/modal-route-registration.ts | 80 +++++++++++++++++ .../input-multi-url-picker.element.ts | 8 +- .../workspace-property.context.ts | 2 +- .../property-editor-ui-block-grid.element.ts | 8 +- .../property-editor-ui-textarea.element.ts | 5 +- .../src/core/mocks/data/document.data.ts | 2 + .../src/core/router/index.ts | 1 - .../router/modal-registration.controller.ts | 47 ---------- ...ty-editor-modal-registration.controller.ts | 83 ------------------ .../src/core/router/route.context.ts | 67 +++++++++------ .../src/core/router/router-slot.element.ts | 2 +- .../router/variant-router-slot.element.ts | 2 +- 16 files changed, 225 insertions(+), 185 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/libs/modal/modal-registration-controller.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts diff --git a/src/Umbraco.Web.UI.Client/.vscode/settings.json b/src/Umbraco.Web.UI.Client/.vscode/settings.json index 196b1d2b83..d2e313ff3b 100644 --- a/src/Umbraco.Web.UI.Client/.vscode/settings.json +++ b/src/Umbraco.Web.UI.Client/.vscode/settings.json @@ -1,6 +1,6 @@ { "cssVariables.lookupFiles": ["node_modules/@umbraco-ui/uui-css/dist/custom-properties.css"], - "cSpell.words": ["combobox", "variantable"], + "cSpell.words": ["combobox", "nesecary", "variantable"], "exportall.config.folderListener": [], "exportall.config.relExclusion": [] } diff --git a/src/Umbraco.Web.UI.Client/libs/modal/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/index.ts index 3c252e27f2..be736301da 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/index.ts @@ -1,4 +1,5 @@ export * from './modal.context'; export * from './modal-handler'; +export * from './modal-registration.controller'; export * from './token/modal-token'; export * from './modal.interfaces'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration-controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-registration-controller.ts deleted file mode 100644 index 6dd45e6e52..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration-controller.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; - -/* -export class UmbModalRegistrationController extends UmbController { - constructor(host: UmbControllerHostInterface, modalAlias: string | NewType) { - super(host); - this.key = config?.key || uuidv4(); - } - - updateSetup() {} - - hostConnected(): void {} - hostDisconnected(): void {} -} -*/ diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts new file mode 100644 index 0000000000..beaaeba8ba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts @@ -0,0 +1,85 @@ +import type { UmbRouteContext } from '../../src/core/router/route.context'; +// TODO: Be aware here we import a class from src! +import { UMB_ROUTE_CONTEXT_TOKEN } from '../../src/core/router/route.context'; +import { UmbModalRouteBuilder, UmbModalRouteOptions, UmbModalRouteRegistration } from './modal-route-registration'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; +import { UmbController } from 'libs/controller/controller.class'; + +export type UmbModalRegistrationToken = UmbModalRouteRegistration; + +export class UmbModalRegistrationController extends UmbController { + #modalToken: UmbModalToken | string; + #modalOptions: UmbModalRouteOptions; + #routeContext?: UmbRouteContext; + #modalRegistration?: UmbModalRegistrationToken; + #uniqueParts; + //#urlBuilder?: UmbModalRouteBuilder; // TODO: not going to work, as this will not trigger a re-render of the host element. + + constructor( + host: UmbControllerHostInterface, + alias: UmbModalToken | string, + options: UmbModalRouteOptions, + unique: Map = new Map() + ) { + super(host); + this.#modalToken = alias; + this.#modalOptions = { + ...options, + /*getUrlBuilder: (urlBuilder) => { + this.#urlBuilder = urlBuilder; + },*/ + }; + this.#uniqueParts = unique; + + new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { + this.#routeContext = _routeContext; + this._registererModal(); + }); + } + + /* + public getUrl(params: { [key: string]: string | number }) { + return this.#urlBuilder?.(params) || null; + } + */ + + setUniqueIdentifier(identifier: string, value: string) { + this.#uniqueParts.set(identifier, value); + } + + private _registererModal() { + if (!this.#routeContext) return; + if (this.#modalRegistration) { + this.#routeContext.unregisterModal(this.#modalRegistration); + } + + const pathParts = Array.from(this.#uniqueParts.values()); + + // Check if there is any undefined values of unique map: + if (pathParts.some((value) => value === undefined)) return; + + // Add the configured part of the path: + pathParts.push(this.#modalOptions.path); + + const modifiedModalOptions = { + ...this.#modalOptions, + path: pathParts.join('/'), + }; + + this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, modifiedModalOptions); + } + + hostConnected() { + if (!this.#modalRegistration) { + this._registererModal(); + } + } + hostDisconnected(): void { + if (this.#modalRegistration) { + this.#routeContext?.unregisterModal(this.#modalRegistration); + this.#modalRegistration = undefined; + } + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts new file mode 100644 index 0000000000..87b2804aaa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -0,0 +1,80 @@ +import type { Params } from 'router-slot'; +import { v4 as uuidv4 } from 'uuid'; +import { UmbModalHandler } from './modal-handler'; +import { UmbModalConfig, UmbModalContext } from './modal.context'; +import { UmbModalToken } from './token/modal-token'; + +export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; + +export type UmbModalRouteOptions = { + path: string; + config?: UmbModalConfig; + onSetup?: (routingInfo: Params) => UmbModalTokenData | false; + onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; + onReject?: () => void; + getUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; +}; + +export class UmbModalRouteRegistration { + #key; + #modalAlias: UmbModalToken | string; + #options: UmbModalRouteOptions; + + #modalHandler: UmbModalHandler | undefined; + + // Notice i removed the key in the transferring to this class. + constructor(modalAlias: UmbModalToken | string, options: UmbModalRouteOptions) { + this.#key = options.config?.key || uuidv4(); + this.#modalAlias = modalAlias; + this.#options = options; + } + + public get key() { + return this.#key; + } + + public get alias() { + return this.#modalAlias; + } + + public get path() { + return this.#options.path; + } + + public get options() { + return this.#options; + } + + /** + * Returns true if the modal is currently active. + */ + public get active() { + return !!this.#modalHandler; + } + + /** + * Returns the modal handler if the modal is currently active. Otherwise its undefined. + */ + public get modalHandler() { + return this.#modalHandler; + } + + routeSetup(modalContext: UmbModalContext, params: Params) { + const modalData = this.#options.onSetup?.(params); + if (modalData !== false) { + this.#modalHandler = modalContext.open(this.#modalAlias, modalData, { ...this.#options.config, key: this.#key }); + this.#modalHandler.onSubmit().then( + (data) => { + this.#options.onSubmit?.(data); + this.#modalHandler = undefined; + }, + () => { + this.#options.onReject?.(); + this.#modalHandler = undefined; + } + ); + return this.#modalHandler; + } + return null; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index df34ed48b5..4073831db0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -5,7 +5,8 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalRouteBuilder, UmbPropertyEditorModalRegistrationController } from '@umbraco-cms/internal/router'; +import { UmbModalRegistrationController } from 'libs/modal/modal-registration.controller'; +import type { UmbModalRouteBuilder } from 'libs/modal/modal-route-registration'; /** * @element umb-input-multi-url-picker @@ -104,6 +105,8 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen @state() private _linkPickerURL?: UmbModalRouteBuilder; + private myModalRegistration; + constructor() { super(); this.addValidator( @@ -118,7 +121,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen ); // TODO: Need concept for contextual being aware about the context, as this might not work if input is used outside a property editor. - new UmbPropertyEditorModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { + this.myModalRegistration = new UmbModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { path: `:index`, onSetup: (params) => { // Get index: @@ -160,6 +163,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this._setSelection(submitData.link, submitData.index); }, getUrlBuilder: (urlBuilder) => { + console.log('got link builder', urlBuilder); this._linkPickerURL = urlBuilder; }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 96d5e3459b..453b373c79 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -19,7 +19,7 @@ export type WorkspacePropertyData = { config?: DataTypeResponseModel['values']; // This could potentially then come from hardcoded JS object and not the DataType store. }; -export class UmbWorkspacePropertyContext { +export class UmbWorkspacePropertyContext { #host: UmbControllerHostInterface; private _providerController: UmbContextProviderController; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts index be2fdb7366..8939911174 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts @@ -2,12 +2,12 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { IRoute, IRoutingInfo } from 'router-slot'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; -import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbVariantId } from '../../../../shared/variants/variant-id.class'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../../../../shared/components/workspace/workspace-variant/workspace-variant.context'; import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; +import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** * @element umb-property-editor-ui-block-grid @@ -97,7 +97,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts index 66605ef279..f39539b6a9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/textarea/property-editor-ui-textarea.element.ts @@ -2,7 +2,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { UUITextareaElement } from '@umbraco-ui/uui'; -import type { UmbWorkspacePropertyContext } from '../../../../shared/components/workspace-property/workspace-property.context'; +import { + UmbWorkspacePropertyContext, + UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, +} from '../../../../shared/components/workspace-property/workspace-property.context'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index 8ff12a5682..811f630616 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -65,6 +65,7 @@ export const data: Array = [ ], }, { + $type: '', alias: 'multiUrlPicker', culture: 'da-dk', segment: null, @@ -286,6 +287,7 @@ export const data: Array = [ updateDate: '2023-02-06T15:31:51.354764', }, { + $type: '', state: ContentStateModel.PUBLISHED, publishDate: '2023-02-06T15:31:51.354764', culture: 'da-dk', diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index 56b50cb113..8977c05ae9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,5 +1,4 @@ export * from 'router-slot'; -export * from './property-editor-modal-registration.controller'; export * from './route.interface'; export * from './route.context'; export * from './router-slot.element'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts deleted file mode 100644 index 0a88f36b09..0000000000 --- a/src/Umbraco.Web.UI.Client/src/core/router/modal-registration.controller.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - UmbModalRegistrationToken, - UmbModalRouteOptions, - UmbRouteContext, - UMB_ROUTE_CONTEXT_TOKEN, -} from './route.context'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalToken } from '@umbraco-cms/modal'; - -export class UmbModalRegistrationController extends UmbController { - #modalToken: UmbModalToken | string; - #modalOptions: UmbModalRouteOptions; - #routeContext?: UmbRouteContext; - #modalRegistration?: UmbModalRegistrationToken; - - constructor( - host: UmbControllerHostInterface, - alias: UmbModalToken | string, - options: UmbModalRouteOptions - ) { - super(host); - this.#modalToken = alias; - this.#modalOptions = options; - - new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { - this.#routeContext = _routeContext; - this._registererModal(); - }); - } - - private _registererModal() { - this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, this.#modalOptions); - } - - hostConnected() { - if (!this.#modalRegistration) { - this._registererModal(); - } - } - hostDisconnected(): void { - if (this.#modalRegistration) { - this.#routeContext?.unregisterModal(this.#modalRegistration); - this.#modalRegistration = undefined; - } - } -} diff --git a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts deleted file mode 100644 index b979ae4837..0000000000 --- a/src/Umbraco.Web.UI.Client/src/core/router/property-editor-modal-registration.controller.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../backoffice/shared/components/workspace-property/workspace-property.context'; -import { - UmbModalRegistrationToken, - UmbModalRouteOptions, - UmbRouteContext, - UMB_ROUTE_CONTEXT_TOKEN, -} from './route.context'; -import { UmbContextConsumerController } from '@umbraco-cms/context-api'; -import { UmbController, UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalToken } from '@umbraco-cms/modal'; -import { UmbObserverController } from '@umbraco-cms/observable-api'; - -// TODO: Somehow get the modal handler via the controller? aka. va the registration. -export class UmbPropertyEditorModalRegistrationController extends UmbController { - #modalToken: UmbModalToken | string; - #modalOptions: UmbModalRouteOptions; - #routeContext?: UmbRouteContext; - #propertyAlias?: string; - #variantId?: string; - #modalRegistration?: UmbModalRegistrationToken; - - constructor( - host: UmbControllerHostInterface, - alias: UmbModalToken | string, - options: UmbModalRouteOptions, - unique: Map = new Map() - ) { - super(host); - this.#modalToken = alias; - this.#modalOptions = options; - - new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { - this.#routeContext = _routeContext; - this._registererModal(); - }); - new UmbContextConsumerController(host, UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (_routeContext) => { - new UmbObserverController(host, _routeContext.alias, (alias) => { - this.#propertyAlias = alias; - this._registererModal(); - }); - new UmbObserverController(host, _routeContext.variantId, (variantId) => { - this.#variantId = variantId?.toString(); - this._registererModal(); - }); - }); - } - - // "alias" : 'my-property-alias' - // "variant" : 'en_us' - addUniqueIdentifier(identifier: string, value: string) { - this._unique.set(identifier, value); - } - - // TODO: Concept about adding identifiers to the modal registration, which is one or more path-folders. - // To replace the specific implementation of propertyAlias and variantId. - // I think it could be a key value pair, where the key is the identifier so it can be updated/replaced at runtime. - - private _registererModal() { - if (!this.#routeContext || !this.#propertyAlias || !this.#variantId) return; - if (this.#modalRegistration) { - this.#routeContext.unregisterModal(this.#modalRegistration); - } - - const modifiedModalOptions = { - ...this.#modalOptions, - path: `${this.#propertyAlias}/${this.#variantId}/${this.#modalOptions.path}`, - }; - - this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, modifiedModalOptions); - } - - hostConnected() { - if (!this.#modalRegistration) { - this._registererModal(); - } - } - hostDisconnected(): void { - if (this.#modalRegistration) { - this.#routeContext?.unregisterModal(this.#modalRegistration); - this.#modalRegistration = undefined; - } - } -} diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 2dd618c754..4b5ce303eb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -1,31 +1,16 @@ -import { IRoute, IRoutingInfo, Params, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; -import { v4 as uuidv4 } from 'uuid'; -import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken } from '@umbraco-cms/context-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/controller'; -import { UmbModalConfig, UmbModalToken, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/modal'; +import { IRoute, IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import { + UmbContextConsumerController, + UmbContextProviderController, + UmbContextToken, +} from '@umbraco-cms/backoffice/context-api'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; +import { UMB_MODAL_CONTEXT_TOKEN } from 'libs/modal/modal.context'; +import { UmbModalRouteOptions, UmbModalRouteRegistration } from 'libs/modal/modal-route-registration'; const EmptyDiv = document.createElement('div'); -export type UmbModalRouteOptions = { - path: string; - config?: UmbModalConfig; - onSetup?: (routingInfo: Params) => UmbModalTokenData | false; - onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; - onReject?: () => void; - getUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; -}; - -export type UmbModalRegistrationToken = UmbModalRouteRegistration; - -type UmbModalRouteRegistration = { - key: string; - alias: UmbModalToken | string; - options: UmbModalRouteOptions; - routeSetup: (component: HTMLElement, info: IRoutingInfo) => void; -}; - -export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; - export class UmbRouteContext { //#host: UmbControllerHostInterface; #modalRegistrations: UmbModalRouteRegistration[] = []; @@ -58,6 +43,7 @@ export class UmbRouteContext { alias: UmbModalToken | string, options: UmbModalRouteOptions ) { + /* const registration = { key: options.config?.key || uuidv4(), alias: alias, @@ -79,6 +65,10 @@ export class UmbRouteContext { } }, }; + */ + const registration = new UmbModalRouteRegistration(alias, options); + + console.log('Route Context Modal Registration', registration); this.#modalRegistrations.push(registration); this.#generateNewUrlBuilder(registration); this.#generateContextRoutes(); @@ -93,14 +83,28 @@ export class UmbRouteContext { } #getModalRoutePath(modalRegistration: UmbModalRouteRegistration) { - return `/modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; + return `/modal/${modalRegistration.alias.toString()}/${modalRegistration.path}`; } #generateRoute(modalRegistration: UmbModalRouteRegistration): IRoute { return { path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, - setup: modalRegistration.routeSetup, + //setup: modalRegistration.routeSetup, + setup: (component: HTMLElement, info: IRoutingInfo) => { + if (!this.#modalContext) return; + const modalHandler = modalRegistration.routeSetup(this.#modalContext, info.match.params); + if (modalHandler) { + modalHandler.onSubmit().then( + () => { + this.#removeModalPath(info); + }, + () => { + this.#removeModalPath(info); + } + ); + } + }, }; } @@ -109,6 +113,8 @@ export class UmbRouteContext { return this.#generateRoute(modalRegistration); }); + // Add an empty route, so that we can always have a route to go to for closing the modals. + // TODO: Check if this is nesecary with the _internal_modalRouterChanged present. this.#contextRoutes.push({ path: '', component: EmptyDiv, @@ -123,9 +129,12 @@ export class UmbRouteContext { this.#routerBasePath = routerBasePath; this.#generateNewUrlBuilders(); } + // TODO: what is going on here, We need to make sure if the modals are still relevant then not close them. + // Also notice each registration should now hold its handler when its active. public _internal_modalRouterChanged(activeModalPath: string | undefined) { if (this.#activeModalPath === activeModalPath) return; if (this.#activeModalPath) { + // If if there is a modal using the old path. const activeModal = this.#modalRegistrations.find( (registration) => this.#getModalRoutePath(registration) === this.#activeModalPath ); @@ -144,7 +153,7 @@ export class UmbRouteContext { if (!modalRegistration.options.getUrlBuilder || !this.#routerBasePath) return; const routeBasePath = this.#routerBasePath.endsWith('/') ? this.#routerBasePath : this.#routerBasePath + '/'; - const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.options.path}`; + const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.path}`; const urlBuilder = (params: { [key: string]: string | number }) => { const localRoutePath = stripSlash( @@ -152,9 +161,11 @@ export class UmbRouteContext { return params[args[0]].toString(); }) ); + console.log('urlBuilder', params, localRoutePath); return routeBasePath + localRoutePath; }; + console.log('Provide new url builder', urlBuilder, modalRegistration.options.getUrlBuilder); modalRegistration.options.getUrlBuilder(urlBuilder); }; } diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index f43faafa36..6ceb4aedb5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -1,6 +1,6 @@ import type { IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; -import { css, PropertyValueMap } from 'lit'; +import { css, html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '../lit-element'; import { UmbRouterSlotInitEvent } from './router-slot-init.event'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts index 94983c5ec9..748644267d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts @@ -74,6 +74,6 @@ export class UmbVariantRouterSlotElement extends UmbRouterSlotElement { declare global { interface HTMLElementTagNameMap { - 'umb-router-slot': UmbRouterSlotElement; + 'umb-variant-router-slot': UmbVariantRouterSlotElement; } } From d329a1e56586a4ac2177cb805273a2eac9b1e589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 22 Mar 2023 20:36:51 +0100 Subject: [PATCH 292/550] revert approved words --- src/Umbraco.Web.UI.Client/.vscode/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.vscode/settings.json b/src/Umbraco.Web.UI.Client/.vscode/settings.json index d2e313ff3b..196b1d2b83 100644 --- a/src/Umbraco.Web.UI.Client/.vscode/settings.json +++ b/src/Umbraco.Web.UI.Client/.vscode/settings.json @@ -1,6 +1,6 @@ { "cssVariables.lookupFiles": ["node_modules/@umbraco-ui/uui-css/dist/custom-properties.css"], - "cSpell.words": ["combobox", "nesecary", "variantable"], + "cSpell.words": ["combobox", "variantable"], "exportall.config.folderListener": [], "exportall.config.relExclusion": [] } From 376c3604b4dc3424a89bca75ccd26f1c2b53cbe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:40:37 +1300 Subject: [PATCH 293/550] added user profile --- .../current-user-modal.element.ts | 29 +---------- .../user-profile-app-profile.element.ts | 49 +++++++++++++++++-- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index fa9c759be0..88dfb0be81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -1,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../change-password'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; @customElement('umb-current-user-modal') @@ -46,16 +45,11 @@ export class UmbCurrentUserModalElement extends UmbLitElement { @state() private _currentUser?: UserDetails; - private _modalContext?: UmbModalContext; private _currentUserStore?: UmbCurrentUserStore; constructor() { super(); - this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { - this._modalContext = instance; - }); - this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (instance) => { this._currentUserStore = instance; this._observeCurrentUser(); @@ -76,21 +70,6 @@ export class UmbCurrentUserModalElement extends UmbLitElement { this.modalHandler?.submit(); } - private _edit() { - if (!this._currentUser) return; - - history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.key); //TODO Change to a tag with href and make dynamic - this._close(); - } - - private _changePassword() { - if (!this._modalContext) return; - - this._modalContext.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { - requireOldPassword: this._currentUserStore?.isAdmin || false, - }); - } - private _logout() { this._currentUserStore?.logout(); } @@ -99,12 +78,6 @@ export class UmbCurrentUserModalElement extends UmbLitElement { return html`
    - - Your profile - Edit - Change password - -
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts index 731df78bd4..25a8f19529 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts @@ -1,24 +1,63 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { UserDetails } from '@umbraco-cms/backoffice/models'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../current-user.store'; +import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../modals/change-password'; @customElement('umb-user-profile-app-profile') export class UmbUserProfileAppProfileElement extends UmbLitElement { static styles = [UUITextStyles, css``]; - private _edit() { - //TODO implement me + @state() + private _currentUser?: UserDetails; + + private _modalContext?: UmbModalContext; + private _currentUserStore?: UmbCurrentUserStore; + + constructor() { + super(); + + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + + this.consumeContext(UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, (instance) => { + this._currentUserStore = instance; + this._observeCurrentUser(); + }); + + this._observeCurrentUser(); } + private async _observeCurrentUser() { + if (!this._currentUserStore) return; + + this.observe(this._currentUserStore.currentUser, (currentUser) => { + this._currentUser = currentUser; + }); + } + + private _edit() { + if (!this._currentUser) return; + + history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.key); //TODO Change to a tag with href and make dynamic + //TODO Implement modal routing for the current-user-modal, so that the modal closes when navigating to the edit profile page + } private _changePassword() { - //TODO implement me + if (!this._modalContext) return; + + this._modalContext.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { + requireOldPassword: this._currentUserStore?.isAdmin || false, + }); } render() { return html` - Your profile - NOT IMPLEMENTED + Your profile Edit Change password From ca31c16efbe3dc8479787c923bd75ff4ba4fb261 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 09:00:25 +0100 Subject: [PATCH 294/550] use tree kind for relation types menu item --- .../relation-types/menu-item/manifests.ts | 8 ++-- .../relation-types-menu-item.element.ts | 40 ------------------- 2 files changed, 4 insertions(+), 44 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts index 8138e8f9c9..1e6694da7d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/manifests.ts @@ -1,15 +1,15 @@ -import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; -const menuItem: ManifestMenuItem = { +const menuItem: ManifestTypes = { type: 'menuItem', + kind: 'tree', alias: 'Umb.MenuItem.RelationTypes', name: 'Relation Types Menu Item', weight: 40, - loader: () => import('./relation-types-menu-item.element'), meta: { + treeAlias: 'Umb.Tree.RelationTypes', label: 'Relation Types', icon: 'umb:folder', - entityType: 'relation-type', }, conditions: { menus: ['Umb.Menu.Settings'], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts deleted file mode 100644 index f9973b6dcb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/menu-item/relation-types-menu-item.element.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { html, nothing } from 'lit'; -import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; - -@customElement('umb-relation-types-menu-item') -export class UmbRelationTypesMenuItemElement extends UmbLitElement { - @state() - private _renderTree = false; - - private _onShowChildren() { - this._renderTree = true; - } - - private _onHideChildren() { - this._renderTree = false; - } - - // TODO: check if root has children before settings the has-children attribute - // TODO: how do we want to cache the tree? (do we want to rerender every time the user opens the tree)? - // TODO: can we make this reusable? - render() { - return html` - ${this._renderTree ? html`` : nothing} - `; - } -} - -export default UmbRelationTypesMenuItemElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-relation-types-menu-item': UmbRelationTypesMenuItemElement; - } -} From 8edd96d23518408e883dee71b7482ef0f4cada17 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 09:18:54 +0100 Subject: [PATCH 295/550] remove these methods to force refactoring of them --- .../components/section/section.context.ts | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index 66f502e948..2f90f58eca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -13,16 +13,6 @@ export class UmbSectionContext { public readonly pathname = this.#manifestPathname.asObservable(); public readonly label = this.#manifestLabel.asObservable(); - /* - This was not used anywhere - private _activeTree = new BehaviorSubject(undefined); - public readonly activeTree = this._activeTree.asObservable(); - */ - - // TODO: what is the best context to put this in? - #activeTreeItem = new ObjectState(undefined); - public readonly activeTreeItem = this.#activeTreeItem.asObservable(); - constructor(manifest: ManifestSection) { this.setManifest(manifest); } @@ -32,17 +22,6 @@ export class UmbSectionContext { this.#manifestPathname.next(manifest?.meta?.pathname); this.#manifestLabel.next(manifest ? manifest.meta?.label || manifest.name : undefined); } - - /* - This was not used anywhere - public setActiveTree(tree: ManifestTree) { - this._activeTree.next(tree); - } - */ - - public setActiveTreeItem(item?: ActiveTreeItemType) { - this.#activeTreeItem.next(item); - } } export const UMB_SECTION_CONTEXT_TOKEN = new UmbContextToken('UmbSectionContext'); From 9dcc631ea3d35820dc9b858c3e7a283fe872df82 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 09:19:42 +0100 Subject: [PATCH 296/550] move most business logic from tree item element to a tree item context --- .../tree/tree-item/tree-item.context.ts | 136 +++++++++++ .../tree/tree-item/tree-item.element.ts | 230 ++++-------------- .../shared/components/tree/tree.element.ts | 21 +- 3 files changed, 196 insertions(+), 191 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts new file mode 100644 index 0000000000..d7c6b91b7e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts @@ -0,0 +1,136 @@ +import { map } from 'rxjs'; +import { + UmbSectionSidebarContext, + UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, +} from '../../section/section-sidebar/section-sidebar.context'; +import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; +import { UmbTreeContextBase } from '../tree.context'; +import { BooleanState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController, UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; + +export class UmbTreeItemContextBase { + public host: UmbControllerHostInterface; + public treeItem: T; + public unique: string; + public type: string; + + #isLoading = new BooleanState(false); + isLoading = this.#isLoading.asObservable(); + + #isSelectable = new BooleanState(false); + isSelectable = this.#isSelectable.asObservable(); + + #isSelected = new BooleanState(false); + isSelected = this.#isSelected.asObservable(); + + #isActive = new BooleanState(false); + isActive = this.#isActive.asObservable(); + + #hasActions = new BooleanState(false); + hasActions = this.#hasActions.asObservable(); + + #path = new StringState(''); + path = this.#path.asObservable(); + + treeContext?: UmbTreeContextBase; + #sectionContext?: UmbSectionContext; + #sectionSidebarContext?: UmbSectionSidebarContext; + + constructor(host: UmbControllerHostInterface, treeItem: T, getUnique: (x: T) => string | null | undefined) { + this.host = host; + this.treeItem = treeItem; + + const unique = getUnique(this.treeItem); + if (!unique) throw new Error('Could not create tree item context, unique key is missing'); + this.unique = unique; + + if (!this.treeItem.type) throw new Error('Could not create tree item context, tree item type is missing'); + + this.type = this.treeItem.type; + + new UmbContextConsumerController(host, UMB_SECTION_CONTEXT_TOKEN, (instance) => { + this.#sectionContext = instance; + this.#observeSectionPath(); + }); + + new UmbContextConsumerController(host, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, (instance) => { + this.#sectionSidebarContext = instance; + }); + + new UmbContextConsumerController(host, 'umbTreeContext', (treeContext: UmbTreeContextBase) => { + this.treeContext = treeContext; + this.#observeIsSelectable(); + this.#observeIsSelected(); + }); + + this.#observeTreeItemActions(); + } + + public async requestChildren() { + // TODO: wait for tree context to be ready + this.#isLoading.next(true); + const response = await this.treeContext!.repository.requestTreeItemsOf(this.unique); + this.#isLoading.next(false); + return response; + } + + public toggleContextMenu() { + this.#sectionSidebarContext?.toggleContextMenu(this.type, this.unique, this.treeItem.name || ''); + } + + public select() { + this.treeContext?.select(this.unique); + } + + public deselect() { + this.treeContext?.deselect(this.unique); + } + + #observeIsSelectable() { + if (!this.treeContext) return; + new UmbObserverController(this.host, this.treeContext.selectable, (value) => this.#isSelectable.next(value)); + } + + #observeIsSelected() { + if (!this.treeContext) return; + + new UmbObserverController( + this.host, + this.treeContext.selection.pipe(map((selection) => selection.includes(this.unique))), + (isSelected) => { + this.#isSelected.next(isSelected); + } + ); + } + + #observeSectionPath() { + if (!this.#sectionContext) return; + + new UmbObserverController(this.host, this.#sectionContext.pathname, (pathname) => { + if (!pathname) return; + const path = this.#constructPath(pathname, this.type, this.unique); + this.#path.next(path); + }); + } + + #observeTreeItemActions() { + new UmbObserverController( + this.host, + umbExtensionsRegistry + .extensionsOfType('entityAction') + .pipe(map((actions) => actions.filter((action) => action.conditions.entityType === this.type))), + (actions) => { + this.#hasActions.next(actions.length > 0); + } + ); + } + + #constructPath(pathname: string, entityType: string, key: string) { + return `section/${pathname}/${entityType}/edit/${key}`; + } +} + +export const UMB_TREE_ITEM_CONTEXT_TOKEN = new UmbContextToken('UmbTreeItemContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts index f6ae328ae6..0e86141d50 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts @@ -2,256 +2,122 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { map, Observable } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; -import { - UmbSectionSidebarContext, - UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, -} from '../../section/section-sidebar/section-sidebar.context'; -import type { UmbTreeContextBase } from '../tree.context'; -import type { Entity } from '@umbraco-cms/backoffice/models'; -import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; +import { UmbTreeItemContextBase, UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -// TODO: align menu items and tree items @customElement('umb-tree-item') export class UmbTreeItem extends UmbLitElement { static styles = [UUITextStyles, css``]; - @property({ type: String }) - key = ''; - - @property({ type: String }) - parentKey: string | null = null; - - @property({ type: String }) - label = ''; - - @property({ type: String }) - icon = ''; - - private _entityType = ''; - @property({ type: String }) - get entityType() { - return this._entityType; + private _item?: EntityTreeItemResponseModel; + @property({ type: Object, attribute: false }) + get item() { + return this._item; } - set entityType(newVal) { - const oldVal = this._entityType; - this._entityType = newVal; - this.requestUpdate('entityType', oldVal); - this._observeEntityActions(); + set item(newVal) { + const oldVal = this._item; + this._item = newVal; + this.requestUpdate('item', oldVal); } @property({ type: Boolean, attribute: 'has-children' }) hasChildren = false; @state() - private _childItems?: Entity[]; + private _childItems?: EntityTreeItemResponseModel[]; @state() private _href?: string; @state() - private _loading = false; + private _isLoading = false; @state() - private _selectable = false; + private _isSelectable = false; @state() - private _selected = false; - - @state() - private _isActive = false; + private _isSelected = false; @state() private _hasActions = false; - private _treeContext?: UmbTreeContextBase; - private _store?: UmbTreeStore; - private _sectionContext?: UmbSectionContext; - private _sectionSidebarContext?: UmbSectionSidebarContext; + #treeItemContext?: UmbTreeItemContextBase; constructor() { super(); - this.consumeContext('umbTreeContext', (treeContext: UmbTreeContextBase) => { - this._treeContext = treeContext; - this._observeSelectable(); - this._observeIsSelected(); - }); - - this.consumeContext('umbStore', (store: UmbTreeStore) => { - this._store = store; - }); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { - this._sectionContext = sectionContext; - this._observeSection(); - this._observeActiveTreeItem(); - }); - - this.consumeContext(UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, (instance) => { - this._sectionSidebarContext = instance; + this.consumeContext(UMB_TREE_ITEM_CONTEXT_TOKEN, (instance) => { + this.#treeItemContext = instance; + if (!this.#treeItemContext) return; + // TODO: investigate if we can make an observe decorator + this.observe(this.#treeItemContext.isLoading, (value) => (this._isLoading = value)); + this.observe(this.#treeItemContext.isSelectable, (value) => (this._isSelectable = value)); + this.observe(this.#treeItemContext.isSelected, (value) => (this._isSelected = value)); + this.observe(this.#treeItemContext.hasActions, (value) => (this._hasActions = value)); + this.observe(this.#treeItemContext.path, (value) => (this._href = value)); }); } connectedCallback(): void { super.connectedCallback(); - this.addEventListener('selected', this._handleSelectedItem); this.addEventListener('unselected', this._handleDeselectedItem); } private _handleSelectedItem(event: Event) { event.stopPropagation(); - this._treeContext?.select(this.key); + this.#treeItemContext?.select(); } private _handleDeselectedItem(event: Event) { event.stopPropagation(); - this._treeContext?.deselect(this.key); - } - - private _observeSection() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext?.pathname, (pathname) => { - this._href = this._constructPath(pathname || '', this.entityType, this.key); - }); - } - - private _observeSelectable() { - if (!this._treeContext) return; - - this.observe(this._treeContext.selectable, (value) => { - this._selectable = value || false; - }); - } - - private _observeIsSelected() { - if (!this._treeContext) return; - - this.observe(this._treeContext.selection.pipe(map((keys) => keys?.includes(this.key))), (isSelected) => { - this._selected = isSelected || false; - }); - } - - private _observeActiveTreeItem() { - if (!this._sectionContext) return; - - this.observe(this._sectionContext?.activeTreeItem, (treeItem) => { - this._isActive = this.key === treeItem?.key; - }); - } - - private _observeEntityActions() { - // TODO: Stop previous observation, currently we can do this from the UmbElementMixin as its a new subscription when Actions or entityType has changed. - // Solution: store the current observation controller and if it existing then destroy it. - // TODO: as long as a tree consist of one entity type we don't have to observe this every time a new tree item is created. - // Solution: move this to the tree context and observe it once. - this.observe( - umbExtensionsRegistry - .extensionsOfType('entityAction') - .pipe(map((actions) => actions.filter((action) => action.conditions.entityType === this._entityType))), - (actions) => { - this._hasActions = actions.length > 0; - } - ); - } - - // TODO: how do we handle this? - private _constructPath(sectionPathname: string, type: string, key: string) { - return type ? `section/${sectionPathname}/workspace/${type}/edit/${key}` : undefined; + this.#treeItemContext?.deselect(); } // TODO: do we want to catch and emit a backoffice event here? private _onShowChildren() { if (this._childItems && this._childItems.length > 0) return; - this._observeChildren(); - this._observeRepositoryChildren(); + this.#observeChildren(); } - private async _observeRepositoryChildren() { - if (!this._treeContext?.requestChildrenOf) return; + async #observeChildren() { + if (!this.#treeItemContext?.requestChildren) return; - // TODO: add loading state - this._treeContext.requestChildrenOf(this.key); + const { asObservable } = await this.#treeItemContext.requestChildren(); + if (!asObservable) return; - this.observe(await this._treeContext.childrenOf(this.key), (childItems) => { - this._childItems = childItems as Entity[]; - }); - } - - // TODO: remove when repositories are in place - private _observeChildren() { - if (!this._store?.getTreeItemChildren) return; - - this._loading = true; - - // TODO: we should do something about these types, stop having our own version of Entity. - this.observe(this._store.getTreeItemChildren(this.key) as Observable, (childItems) => { + this.observe(asObservable(), (childItems) => { this._childItems = childItems; - this._loading = false; }); } private _openActions() { - if (!this._treeContext || !this._sectionContext) return; - - // This is out-commented as it was not used. only kept if someone need this later: - //this._sectionContext?.setActiveTree(this._treeContext?.tree); - - this._sectionContext?.setActiveTreeItem({ - key: this.key, - name: this.label, - icon: this.icon, - type: this.entityType, - hasChildren: this.hasChildren, - parentKey: this.parentKey, - }); - this._sectionSidebarContext?.toggleContextMenu(this.entityType, this.key, this.label); + this.#treeItemContext?.toggleContextMenu(); } render() { return html` - ${this._renderChildItems()} - - ${this._renderActions()} + label="${ifDefined(this.item?.name)}" + href="${ifDefined(this._href)}"> + ${this.#renderIcon()} ${this.#renderActions()} ${this.#renderChildItems()} `; } - private _renderChildItems() { - return html` - ${this._childItems - ? repeat( - this._childItems, - (item) => item.key, - (item) => - html`` - ) - : ''} - `; + #renderIcon() { + return html` ${this.item?.icon ? html` ` : nothing} `; } - private _renderActions() { + #renderActions() { return html` ${this._hasActions ? html` @@ -264,6 +130,18 @@ export class UmbTreeItem extends UmbLitElement { : nothing} `; } + + #renderChildItems() { + return html` + ${this._childItems + ? repeat( + this._childItems, + (item) => item.key, + (item) => html`` + ) + : ''} + `; + } } declare global { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 9d0629c8db..5514f84ce6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -3,10 +3,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeContextBase } from './tree.context'; -import type { Entity } from '@umbraco-cms/backoffice/models'; import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import './tree-item/tree-item.element'; import './context-menu/tree-context-menu-page.service'; @@ -54,10 +54,7 @@ export class UmbTreeElement extends UmbLitElement { private _tree?: ManifestTree; @state() - private _items: Entity[] = []; - - @state() - private _loading = true; + private _items: EntityTreeItemResponseModel[] = []; private _treeContext?: UmbTreeContextBase; @@ -101,7 +98,7 @@ export class UmbTreeElement extends UmbLitElement { this._treeContext.requestRootItems(); this.observe(await this._treeContext.rootItems(), (rootItems) => { - this._items = rootItems as Entity[]; + this._items = rootItems; }); } @@ -119,15 +116,9 @@ export class UmbTreeElement extends UmbLitElement { return html` ${repeat( this._items, - (item) => item.key, - (item) => - html`` + // TODO: add getUnique to a repository interface + (item, index) => index, + (item) => html`` )} `; } From fff8b2a9ebc648e4e6a945ae42227a2969853d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 09:29:36 +0100 Subject: [PATCH 297/550] implemented --- .../modal/modal-registration.controller.ts | 33 +++--- .../libs/modal/modal-route-registration.ts | 2 +- .../input-multi-url-picker.element.ts | 109 ++++++++++-------- .../workspace-property.element.ts | 30 +++-- ...erty-editor-ui-multi-url-picker.element.ts | 26 ++++- 5 files changed, 121 insertions(+), 79 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts index beaaeba8ba..b5b1bb25fd 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts @@ -1,7 +1,7 @@ import type { UmbRouteContext } from '../../src/core/router/route.context'; // TODO: Be aware here we import a class from src! import { UMB_ROUTE_CONTEXT_TOKEN } from '../../src/core/router/route.context'; -import { UmbModalRouteBuilder, UmbModalRouteOptions, UmbModalRouteRegistration } from './modal-route-registration'; +import { UmbModalRouteOptions, UmbModalRouteRegistration } from './modal-route-registration'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; @@ -14,24 +14,18 @@ export class UmbModalRegistrationController #modalOptions: UmbModalRouteOptions; #routeContext?: UmbRouteContext; #modalRegistration?: UmbModalRegistrationToken; - #uniqueParts; - //#urlBuilder?: UmbModalRouteBuilder; // TODO: not going to work, as this will not trigger a re-render of the host element. + #uniqueParts: Map; constructor( host: UmbControllerHostInterface, alias: UmbModalToken | string, - options: UmbModalRouteOptions, - unique: Map = new Map() + unique: Map | null, + options: UmbModalRouteOptions ) { super(host); this.#modalToken = alias; - this.#modalOptions = { - ...options, - /*getUrlBuilder: (urlBuilder) => { - this.#urlBuilder = urlBuilder; - },*/ - }; - this.#uniqueParts = unique; + this.#modalOptions = options; + this.#uniqueParts = unique || new Map(); new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { this.#routeContext = _routeContext; @@ -39,20 +33,21 @@ export class UmbModalRegistrationController }); } - /* - public getUrl(params: { [key: string]: string | number }) { - return this.#urlBuilder?.(params) || null; - } - */ - - setUniqueIdentifier(identifier: string, value: string) { + setUniqueIdentifier(identifier: string, value: string | undefined) { + if (!this.#uniqueParts.has(identifier)) { + throw new Error( + `Identifier ${identifier} was not registered at the construction of the modal registration controller, it has to be.` + ); + } this.#uniqueParts.set(identifier, value); + this._registererModal(); } private _registererModal() { if (!this.#routeContext) return; if (this.#modalRegistration) { this.#routeContext.unregisterModal(this.#modalRegistration); + this.#modalRegistration = undefined; } const pathParts = Array.from(this.#uniqueParts.values()); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 87b2804aaa..9ffffd95be 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -16,7 +16,7 @@ export type UmbModalRouteOptions { - #key; + #key: string; #modalAlias: UmbModalToken | string; #options: UmbModalRouteOptions; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 4073831db0..c52aaf8e07 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -7,6 +7,7 @@ import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/lin import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalRegistrationController } from 'libs/modal/modal-registration.controller'; import type { UmbModalRouteBuilder } from 'libs/modal/modal-route-registration'; +import { UmbVariantId } from '../../variants/variant-id.class'; /** * @element umb-input-multi-url-picker @@ -30,7 +31,16 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen } @property() - alias?: string; + public set alias(value: string | undefined) { + console.log('alias', value); + this.myModalRegistration.setUniqueIdentifier('propertyAlias', value); + } + + @property() + public set variantId(value: string | UmbVariantId | undefined) { + console.log('variantId', value); + this.myModalRegistration.setUniqueIdentifier('variantId', value?.toString()); + } /** * This is a minimum amount of selected items in this input. @@ -120,53 +130,60 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen () => !!this.max && this.urls.length > this.max ); - // TODO: Need concept for contextual being aware about the context, as this might not work if input is used outside a property editor. - this.myModalRegistration = new UmbModalRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN, { - path: `:index`, - onSetup: (params) => { - // Get index: - const indexParam = params.index; - if (!indexParam) return false; - let index: number | null = parseInt(params.index); - if (Number.isNaN(index)) return false; + this.myModalRegistration = new UmbModalRegistrationController( + this, + UMB_LINK_PICKER_MODAL_TOKEN, + new Map([ + ['propertyAlias', undefined], + ['variantId', undefined], + ]), + { + path: `:index`, + onSetup: (params) => { + // Get index: + const indexParam = params.index; + if (!indexParam) return false; + let index: number | null = parseInt(params.index); + if (Number.isNaN(index)) return false; - // Use the index to find data: - let data: UmbLinkPickerLink | null = null; - if (index >= 0 && index < this.urls.length) { - data = this._getItemByIndex(index); - } else { - // If not then make a new pick: - index = null; - } + // Use the index to find data: + let data: UmbLinkPickerLink | null = null; + if (index >= 0 && index < this.urls.length) { + data = this._getItemByIndex(index); + } else { + // If not then make a new pick: + index = null; + } - return { - index: index, - lol: false, - link: { - name: data?.name, - published: data?.published, - queryString: data?.queryString, - target: data?.target, - trashed: data?.trashed, - udi: data?.udi, - url: data?.url, - }, - config: { - hideAnchor: this.hideAnchor, - ignoreUserStartNodes: this.ignoreUserStartNodes, - overlaySize: this.overlaySize || 'small', - }, - }; - }, - onSubmit: (submitData) => { - if (!submitData) return; - this._setSelection(submitData.link, submitData.index); - }, - getUrlBuilder: (urlBuilder) => { - console.log('got link builder', urlBuilder); - this._linkPickerURL = urlBuilder; - }, - }); + return { + index: index, + lol: false, + link: { + name: data?.name, + published: data?.published, + queryString: data?.queryString, + target: data?.target, + trashed: data?.trashed, + udi: data?.udi, + url: data?.url, + }, + config: { + hideAnchor: this.hideAnchor, + ignoreUserStartNodes: this.ignoreUserStartNodes, + overlaySize: this.overlaySize || 'small', + }, + }; + }, + onSubmit: (submitData) => { + if (!submitData) return; + this._setSelection(submitData.link, submitData.index); + }, + getUrlBuilder: (urlBuilder) => { + console.log('got link builder', urlBuilder); + this._linkPickerURL = urlBuilder; + }, + } + ); } private _removeItem(index: number) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts index 2f270c7fef..b7965d8fe5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.element.ts @@ -211,17 +211,25 @@ export class UmbWorkspacePropertyElement extends UmbLitElement { if (this._element) { this._element.addEventListener('property-value-change', this._onPropertyEditorChange as any as EventListener); - this._valueObserver = this.observe(this._propertyContext.value, (value) => { - this._value = value; - if (this._element) { - this._element.value = value; - } - }); - this._configObserver = this.observe(this._propertyContext.config, (config) => { - if (this._element && config) { - this._element.config = config; - } - }); + this._valueObserver = this.observe( + this._propertyContext.value, + (value) => { + this._value = value; + if (this._element) { + this._element.value = value; + } + }, + '_observePropertyValue' + ); + this._configObserver = this.observe( + this._propertyContext.config, + (config) => { + if (this._element && config) { + this._element.config = config; + } + }, + '_observePropertyConfig' + ); } this.requestUpdate('element', oldValue); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index fc439097b9..fb7aa67389 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -2,11 +2,12 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; +import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; -import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; +import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from 'src/backoffice/shared/components/workspace-property/workspace-property.context'; /** * @element umb-property-editor-ui-multi-url-picker @@ -50,6 +51,25 @@ export class UmbPropertyEditorUIMultiUrlPickerElement extends UmbLitElement impl @state() private _minNumber?: number; + @state() + private _alias?: string; + + @state() + private _propertyVariantId?: string; + + constructor() { + super(); + + this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (context) => { + this.observe(context.alias, (alias) => { + this._alias = alias; + }); + this.observe(context.variantId, (variantId) => { + this._propertyVariantId = variantId?.toString() || 'invariant'; + }); + }); + } + private _onChange(event: CustomEvent) { this.value = (event.target as UmbInputMultiUrlPickerElement).urls; this.dispatchEvent(new CustomEvent('property-value-change')); @@ -57,6 +77,8 @@ export class UmbPropertyEditorUIMultiUrlPickerElement extends UmbLitElement impl render() { return html` Date: Thu, 23 Mar 2023 09:30:58 +0100 Subject: [PATCH 298/550] fix import order remove comment --- .../documents/repository/document.repository.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index dd7fc1789c..a3490cf3c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -1,3 +1,7 @@ +import { UmbDocumentServerDataSource } from './sources/document.server.data'; +import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; +import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; +import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; import type { RepositoryTreeDataSource, UmbTreeRepository, @@ -7,17 +11,9 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; -import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; -import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; -import { UmbDocumentServerDataSource } from './sources/document.server.data'; type ItemType = DocumentResponseModel; -// Move to documentation / JSdoc -/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ -// element -> context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; From 6c01edafe8abf4a6c3843b3ff8da348c6f89a675 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 10:05:04 +0100 Subject: [PATCH 299/550] rename to tree-item-base --- .../documents/documents/tree/manifests.ts | 14 ++++- .../tree-item/document-tree-item.element.ts | 51 +++++++++++++++++++ .../tree-item-base.context.ts} | 0 .../tree-item-base.element.ts} | 10 ++-- .../tree-item-base.stories.ts} | 8 +-- .../shared/components/tree/tree.element.ts | 4 +- 6 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/{tree-item/tree-item.context.ts => tree-item-base/tree-item-base.context.ts} (100%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/{tree-item/tree-item.element.ts => tree-item-base/tree-item-base.element.ts} (93%) rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/{tree-item/tree-item.stories.ts => tree-item-base/tree-item-base.stories.ts} (66%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts index c1e6a79314..ee92e43e8d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDocumentRepository } from '../repository/document.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Documents'; @@ -12,4 +12,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + alias: 'Umb.TreeItem.Document', + name: 'Document Tree Item', + loader: () => import('./tree-item/document-tree-item.element'), + conditions: { + entityType: 'document', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts new file mode 100644 index 0000000000..d488839fde --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -0,0 +1,51 @@ +import { css, html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +@customElement('umb-document-tree-item') +export class UmbDocumentTreeItemElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #label { + display: flex; + align-items: center; + } + + #status-symbol { + width: 6px; + height: 6px; + background-color: blue; + display: block; + border-radius: 3px; + margin-right: 10px; + } + `, + ]; + + @property({ type: Object, attribute: false }) + public item?: DocumentTreeItemResponseModel; + + render() { + if (!this.item) return nothing; + return html` + + +
    + + ${this.item?.name} +
    +
    + `; + } +} + +export default UmbDocumentTreeItemElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-tree-item': UmbDocumentTreeItemElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.context.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 0e86141d50..601bb816a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -3,12 +3,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbTreeItemContextBase, UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item.context'; +import { UmbTreeItemContextBase, UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item-base.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -@customElement('umb-tree-item') -export class UmbTreeItem extends UmbLitElement { +@customElement('umb-tree-item-base') +export class UmbTreeItemBaseElement extends UmbLitElement { static styles = [UUITextStyles, css``]; private _item?: EntityTreeItemResponseModel; @@ -137,7 +137,7 @@ export class UmbTreeItem extends UmbLitElement { ? repeat( this._childItems, (item) => item.key, - (item) => html`` + (item) => html`` ) : ''} `; @@ -146,6 +146,6 @@ export class UmbTreeItem extends UmbLitElement { declare global { interface HTMLElementTagNameMap { - 'umb-tree-item': UmbTreeItem; + 'umb-tree-item-base': UmbTreeItemBaseElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts index 90962da327..1f76f40872 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts @@ -1,14 +1,14 @@ import { Meta, StoryObj } from '@storybook/web-components'; -import './tree-item.element'; -import type { UmbTreeItem } from './tree-item.element'; +import './tree-item-base.element'; +import type { UmbTreeItemBaseElement } from './tree-item-base.element'; -const meta: Meta = { +const meta: Meta = { title: 'Components/Tree/Tree Item', component: 'umb-tree-item', }; export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Overview: Story = { args: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 5514f84ce6..25e34c849d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -8,7 +8,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import './tree-item/tree-item.element'; +import './tree-item-base/tree-item-base.element'; import './context-menu/tree-context-menu-page.service'; import './context-menu/tree-context-menu.service'; @@ -118,7 +118,7 @@ export class UmbTreeElement extends UmbLitElement { this._items, // TODO: add getUnique to a repository interface (item, index) => index, - (item) => html`` + (item) => html`` )} `; } From f8e1b074ddd8635f2a5ca1950661b4ad7d22178f Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Thu, 23 Mar 2023 09:19:56 +0000 Subject: [PATCH 300/550] Update libs/README.md --- src/Umbraco.Web.UI.Client/libs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/README.md b/src/Umbraco.Web.UI.Client/libs/README.md index 00f200c8d7..300e31540f 100644 --- a/src/Umbraco.Web.UI.Client/libs/README.md +++ b/src/Umbraco.Web.UI.Client/libs/README.md @@ -100,7 +100,7 @@ cd my-package npm install -D @umbraco-cms/backoffice ``` -Then go to the element located in `src/my-element.ts` and add the following code. +Then go to the element located in `src/my-element.ts` and replace it with the following code. ```typescript // src/my-element.ts From 6a3a452239b7eacab03e40cbb931db72ded8e446 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Mar 2023 10:32:41 +0100 Subject: [PATCH 301/550] Update libs/README.md Co-authored-by: Warren Buckley --- src/Umbraco.Web.UI.Client/libs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/README.md b/src/Umbraco.Web.UI.Client/libs/README.md index 300e31540f..4fb24534bc 100644 --- a/src/Umbraco.Web.UI.Client/libs/README.md +++ b/src/Umbraco.Web.UI.Client/libs/README.md @@ -90,7 +90,7 @@ customElements.define('my-custom-dashboard', MyDashboardElement); First install Lit and Vite. This command will create a new folder called "my-package". Choose "lit" and "typescript" when prompted. ```bash -npm create vite@latest my-package +npm create vite@latest -- --template lit-ts my-package ``` Go to the new folder and install the backoffice package. From 7624c6227536188f40f36595b070006b582611d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 10:36:52 +0100 Subject: [PATCH 302/550] refactor registration and controller --- src/Umbraco.Web.UI.Client/libs/modal/index.ts | 2 +- ...=> modal-route-registration.controller.ts} | 49 +++++---- .../libs/modal/modal-route-registration.ts | 92 ++++++++++------ .../libs/modal/modal.context.ts | 2 +- .../input-multi-url-picker.element.ts | 102 +++++++++--------- .../src/core/router/route.context.ts | 40 ++----- 6 files changed, 153 insertions(+), 134 deletions(-) rename src/Umbraco.Web.UI.Client/libs/modal/{modal-registration.controller.ts => modal-route-registration.controller.ts} (66%) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/index.ts index be736301da..f7eb94b760 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/index.ts @@ -1,5 +1,5 @@ export * from './modal.context'; export * from './modal-handler'; -export * from './modal-registration.controller'; +export * from './modal-route-registration.controller'; export * from './token/modal-token'; export * from './modal.interfaces'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts similarity index 66% rename from src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts rename to src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index b5b1bb25fd..bfe6c6bf63 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -1,31 +1,41 @@ import type { UmbRouteContext } from '../../src/core/router/route.context'; // TODO: Be aware here we import a class from src! import { UMB_ROUTE_CONTEXT_TOKEN } from '../../src/core/router/route.context'; -import { UmbModalRouteOptions, UmbModalRouteRegistration } from './modal-route-registration'; +import type { UmbControllerInterface } from '../controller'; +import { UmbModalRouteRegistration } from './modal-route-registration'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import { UmbModalConfig, UmbModalToken } from '@umbraco-cms/backoffice/modal'; import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; -import { UmbController } from 'libs/controller/controller.class'; export type UmbModalRegistrationToken = UmbModalRouteRegistration; -export class UmbModalRegistrationController extends UmbController { - #modalToken: UmbModalToken | string; - #modalOptions: UmbModalRouteOptions; +export class UmbModalRouteRegistrationController + extends UmbModalRouteRegistration + implements UmbControllerInterface +{ + //#host: UmbControllerHostInterface; + + #configuredPath: string; + #uniqueParts: Map; + #routeContext?: UmbRouteContext; #modalRegistration?: UmbModalRegistrationToken; - #uniqueParts: Map; + + public get unique() { + return undefined; + } constructor( host: UmbControllerHostInterface, alias: UmbModalToken | string, - unique: Map | null, - options: UmbModalRouteOptions + path: string, + uniqueParts: Map | null, + modalConfig?: UmbModalConfig ) { - super(host); - this.#modalToken = alias; - this.#modalOptions = options; - this.#uniqueParts = unique || new Map(); + super(alias, path, modalConfig); + //this.#host = host; + this.#configuredPath = path; + this.#uniqueParts = uniqueParts || new Map(); new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (_routeContext) => { this.#routeContext = _routeContext; @@ -56,14 +66,11 @@ export class UmbModalRegistrationController if (pathParts.some((value) => value === undefined)) return; // Add the configured part of the path: - pathParts.push(this.#modalOptions.path); + pathParts.push(this.#configuredPath); - const modifiedModalOptions = { - ...this.#modalOptions, - path: pathParts.join('/'), - }; + this._setPath(pathParts.join('/')); - this.#modalRegistration = this.#routeContext?.registerModal(this.#modalToken, modifiedModalOptions); + this.#modalRegistration = this.#routeContext.registerModal(this); } hostConnected() { @@ -77,4 +84,8 @@ export class UmbModalRegistrationController this.#modalRegistration = undefined; } } + + public destroy(): void { + this.hostDisconnected(); + } } diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 9ffffd95be..9ba22c4d70 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -6,27 +6,29 @@ import { UmbModalToken } from './token/modal-token'; export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; -export type UmbModalRouteOptions = { - path: string; - config?: UmbModalConfig; - onSetup?: (routingInfo: Params) => UmbModalTokenData | false; - onSubmit?: (data: UmbModalTokenResult) => void | PromiseLike; - onReject?: () => void; - getUrlBuilder?: (urlBuilder: UmbModalRouteBuilder) => void; -}; - -export class UmbModalRouteRegistration { +export class UmbModalRouteRegistration { #key: string; - #modalAlias: UmbModalToken | string; - #options: UmbModalRouteOptions; + #path: string; + #modalAlias: UmbModalToken | string; + #modalConfig?: UmbModalConfig; - #modalHandler: UmbModalHandler | undefined; + #onSetupCallback?: (routingInfo: Params) => UmbModalTokenData | false; + #onSubmitCallback?: (data: UmbModalTokenResult) => void; + #onRejectCallback?: () => void; + + #modalHandler: UmbModalHandler | undefined; + #urlBuilderCallback: ((urlBuilder: UmbModalRouteBuilder) => void) | undefined; // Notice i removed the key in the transferring to this class. - constructor(modalAlias: UmbModalToken | string, options: UmbModalRouteOptions) { - this.#key = options.config?.key || uuidv4(); + constructor( + modalAlias: UmbModalToken | string, + path: string, + modalConfig?: UmbModalConfig + ) { + this.#key = modalConfig?.key || uuidv4(); this.#modalAlias = modalAlias; - this.#options = options; + this.#path = path; + this.#modalConfig = { ...modalConfig, key: this.#key }; } public get key() { @@ -38,11 +40,15 @@ export class UmbModalRouteRegistration { } public get path() { - return this.#options.path; + return this.#path; } - public get options() { - return this.#options; + protected _setPath(path: string) { + this.#path = path; + } + + public get modalConfig() { + return this.#modalConfig; } /** @@ -59,20 +65,44 @@ export class UmbModalRouteRegistration { return this.#modalHandler; } + public usesRouteBuilder(): boolean { + return !!this.#urlBuilderCallback; + } + public observeRouteBuilder(callback: (urlBuilder: UmbModalRouteBuilder) => void) { + this.#urlBuilderCallback = callback; + return this; + } + public _internal_setRouteBuilder(urlBuilder: UmbModalRouteBuilder) { + this.#urlBuilderCallback?.(urlBuilder); + } + + public onSetup(callback: (routingInfo: Params) => UmbModalTokenData | false) { + this.#onSetupCallback = callback; + return this; + } + public onSubmit(callback: (data: UmbModalTokenResult) => void) { + this.#onSubmitCallback = callback; + return this; + } + public onReject(callback: () => void) { + this.#onRejectCallback = callback; + return this; + } + + #onSubmit = (data: UmbModalTokenResult) => { + this.#onSubmitCallback?.(data); + this.#modalHandler = undefined; + }; + #onReject = () => { + this.#onRejectCallback?.(); + this.#modalHandler = undefined; + }; + routeSetup(modalContext: UmbModalContext, params: Params) { - const modalData = this.#options.onSetup?.(params); + const modalData = this.#onSetupCallback ? this.#onSetupCallback(params) : true; if (modalData !== false) { - this.#modalHandler = modalContext.open(this.#modalAlias, modalData, { ...this.#options.config, key: this.#key }); - this.#modalHandler.onSubmit().then( - (data) => { - this.#options.onSubmit?.(data); - this.#modalHandler = undefined; - }, - () => { - this.#options.onReject?.(); - this.#modalHandler = undefined; - } - ); + this.#modalHandler = modalContext.open(this.#modalAlias, modalData, this.modalConfig); + this.#modalHandler.onSubmit().then(this.#onSubmit, this.#onReject); return this.#modalHandler; } return null; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts index b237b925b0..7fd5caf42c 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts @@ -78,7 +78,7 @@ export class UmbModalContext { */ public open( modalAlias: string | UmbModalToken, - data?: ModalData, + data?: ModalData | true, config?: UmbModalConfig ) { const modalHandler = new UmbModalHandlerClass(this.host, modalAlias, data, config) as unknown as UmbModalHandler< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index c52aaf8e07..074d77d9cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -4,10 +4,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; +import type { UmbVariantId } from '../../variants/variant-id.class'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalRegistrationController } from 'libs/modal/modal-registration.controller'; +import { UmbModalRouteRegistrationController } from 'libs/modal/modal-route-registration.controller'; import type { UmbModalRouteBuilder } from 'libs/modal/modal-route-registration'; -import { UmbVariantId } from '../../variants/variant-id.class'; /** * @element umb-input-multi-url-picker @@ -113,7 +113,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen private _urls: Array = []; @state() - private _linkPickerURL?: UmbModalRouteBuilder; + private _modalRoute?: UmbModalRouteBuilder; private myModalRegistration; @@ -130,60 +130,56 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen () => !!this.max && this.urls.length > this.max ); - this.myModalRegistration = new UmbModalRegistrationController( + this.myModalRegistration = new UmbModalRouteRegistrationController( this, UMB_LINK_PICKER_MODAL_TOKEN, + `:index`, new Map([ ['propertyAlias', undefined], ['variantId', undefined], - ]), - { - path: `:index`, - onSetup: (params) => { - // Get index: - const indexParam = params.index; - if (!indexParam) return false; - let index: number | null = parseInt(params.index); - if (Number.isNaN(index)) return false; + ]) + ) + .onSetup((params) => { + // Get index: + const indexParam = params.index; + if (!indexParam) return false; + let index: number | null = parseInt(params.index); + if (Number.isNaN(index)) return false; - // Use the index to find data: - let data: UmbLinkPickerLink | null = null; - if (index >= 0 && index < this.urls.length) { - data = this._getItemByIndex(index); - } else { - // If not then make a new pick: - index = null; - } + // Use the index to find data: + let data: UmbLinkPickerLink | null = null; + if (index >= 0 && index < this.urls.length) { + data = this._getItemByIndex(index); + } else { + // If not then make a new pick: + index = null; + } - return { - index: index, - lol: false, - link: { - name: data?.name, - published: data?.published, - queryString: data?.queryString, - target: data?.target, - trashed: data?.trashed, - udi: data?.udi, - url: data?.url, - }, - config: { - hideAnchor: this.hideAnchor, - ignoreUserStartNodes: this.ignoreUserStartNodes, - overlaySize: this.overlaySize || 'small', - }, - }; - }, - onSubmit: (submitData) => { - if (!submitData) return; - this._setSelection(submitData.link, submitData.index); - }, - getUrlBuilder: (urlBuilder) => { - console.log('got link builder', urlBuilder); - this._linkPickerURL = urlBuilder; - }, - } - ); + return { + index: index, + link: { + name: data?.name, + published: data?.published, + queryString: data?.queryString, + target: data?.target, + trashed: data?.trashed, + udi: data?.udi, + url: data?.url, + }, + config: { + hideAnchor: this.hideAnchor, + ignoreUserStartNodes: this.ignoreUserStartNodes, + overlaySize: this.overlaySize || 'small', + }, + }; + }) + .onSubmit((submitData) => { + if (!submitData) return; + this._setSelection(submitData.link, submitData.index); + }) + .observeRouteBuilder((routeBuilder) => { + this._modalRoute = routeBuilder; + }); } private _removeItem(index: number) { @@ -212,12 +208,12 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen // TODO: We should get a href property on uui-ref-node, and not use this method: private _temporary_onClick_editItem(index: number) { - window.history.pushState({}, '', this._linkPickerURL?.({ index: index || -1 })); + window.history.pushState({}, '', this._modalRoute?.({ index: index || -1 })); } render() { return html`${this.urls?.map((link, index) => this._renderItem(link, index))} - Add`; + Add`; } private _renderItem(link: UmbLinkPickerLink, index: number) { @@ -227,7 +223,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen @open="${() => this._temporary_onClick_editItem(index)}"> - Edit + Edit Remove `; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 4b5ce303eb..1468ec1d52 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -39,36 +39,21 @@ export class UmbRouteContext { } } + /* public registerModal( alias: UmbModalToken | string, options: UmbModalRouteOptions ) { - /* - const registration = { - key: options.config?.key || uuidv4(), - alias: alias, - options: options, - routeSetup: (component: HTMLElement, info: IRoutingInfo) => { - const modalData = options.onSetup?.(info.match.params); - if (modalData !== false && this.#modalContext) { - const modalHandler = this.#modalContext.open(alias, modalData, { ...options.config, key: registration.key }); - modalHandler.onSubmit().then( - (data) => { - this.#removeModalPath(info); - options.onSubmit?.(data); - }, - () => { - this.#removeModalPath(info); - options.onReject?.(); - } - ); - } - }, - }; - */ const registration = new UmbModalRouteRegistration(alias, options); - console.log('Route Context Modal Registration', registration); + this.#modalRegistrations.push(registration); + this.#generateNewUrlBuilder(registration); + this.#generateContextRoutes(); + return registration; + } + */ + + public registerModal(registration: UmbModalRouteRegistration) { this.#modalRegistrations.push(registration); this.#generateNewUrlBuilder(registration); this.#generateContextRoutes(); @@ -90,7 +75,6 @@ export class UmbRouteContext { return { path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, - //setup: modalRegistration.routeSetup, setup: (component: HTMLElement, info: IRoutingInfo) => { if (!this.#modalContext) return; const modalHandler = modalRegistration.routeSetup(this.#modalContext, info.match.params); @@ -150,7 +134,7 @@ export class UmbRouteContext { } #generateNewUrlBuilder = (modalRegistration: UmbModalRouteRegistration) => { - if (!modalRegistration.options.getUrlBuilder || !this.#routerBasePath) return; + if (!modalRegistration.usesRouteBuilder() || !this.#routerBasePath) return; const routeBasePath = this.#routerBasePath.endsWith('/') ? this.#routerBasePath : this.#routerBasePath + '/'; const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.path}`; @@ -161,12 +145,10 @@ export class UmbRouteContext { return params[args[0]].toString(); }) ); - console.log('urlBuilder', params, localRoutePath); return routeBasePath + localRoutePath; }; - console.log('Provide new url builder', urlBuilder, modalRegistration.options.getUrlBuilder); - modalRegistration.options.getUrlBuilder(urlBuilder); + modalRegistration._internal_setRouteBuilder(urlBuilder); }; } From 14d031ff018bf8af28d600eed23e423be3920781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 10:38:38 +0100 Subject: [PATCH 303/550] option argument --- .../libs/modal/modal-route-registration.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index bfe6c6bf63..46a4982046 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -29,7 +29,7 @@ export class UmbModalRouteRegistrationController | string, path: string, - uniqueParts: Map | null, + uniqueParts?: Map | null, modalConfig?: UmbModalConfig ) { super(alias, path, modalConfig); From 6cf65d8c4d28c0a77732218a062d3742a5a4764a Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Thu, 23 Mar 2023 09:41:22 +0000 Subject: [PATCH 304/550] Update libs/README.md --- src/Umbraco.Web.UI.Client/libs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/README.md b/src/Umbraco.Web.UI.Client/libs/README.md index 4fb24534bc..cb7494c968 100644 --- a/src/Umbraco.Web.UI.Client/libs/README.md +++ b/src/Umbraco.Web.UI.Client/libs/README.md @@ -87,7 +87,7 @@ customElements.define('my-custom-dashboard', MyDashboardElement); ### TypeScript with Lit -First install Lit and Vite. This command will create a new folder called "my-package". Choose "lit" and "typescript" when prompted. +First install Lit and Vite. This command will create a new folder called `my-package` which will have the Vite tooling and Lit for WebComponent development setup. ```bash npm create vite@latest -- --template lit-ts my-package From c6444f1a8b4cf6b2c1bf214f8ad900c0e447ae8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 10:41:39 +0100 Subject: [PATCH 305/550] comment --- .../libs/modal/modal-route-registration.controller.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index 46a4982046..9b0c01db4d 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -68,6 +68,7 @@ export class UmbModalRouteRegistrationController Date: Thu, 23 Mar 2023 09:45:16 +0000 Subject: [PATCH 306/550] Update libs/README.md --- src/Umbraco.Web.UI.Client/libs/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/README.md b/src/Umbraco.Web.UI.Client/libs/README.md index cb7494c968..2a6828f460 100644 --- a/src/Umbraco.Web.UI.Client/libs/README.md +++ b/src/Umbraco.Web.UI.Client/libs/README.md @@ -111,23 +111,24 @@ import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco @customElement('my-element') export default class MyElement extends UmbElementMixin(LitElement) { - #notificationContext?: UmbNotificationContext; + + private _notificationContext?: UmbNotificationContext; constructor() { super(); this.consumeContext(UMB_NOTIFICATION_CONTEXT_TOKEN, (_instance) => { - this.#notificationContext = _instance; + this._notificationContext = _instance; }); } onClick() { - this.#notificationContext?.peek('positive', { data: { message: '#h5yr' } }); + this._notificationContext?.peek('positive', { data: { message: '#h5yr' } }); } render() { return html` -

    TS dashboard

    +

    A TypeScript Lit Dashboard

    this.onClick()}>
    `; From c2f6e25d72c80bfccaf43bdfc9f883f75ce548bb Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Thu, 23 Mar 2023 09:46:23 +0000 Subject: [PATCH 307/550] Update libs/README.md --- src/Umbraco.Web.UI.Client/libs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/README.md b/src/Umbraco.Web.UI.Client/libs/README.md index 2a6828f460..8796b8f582 100644 --- a/src/Umbraco.Web.UI.Client/libs/README.md +++ b/src/Umbraco.Web.UI.Client/libs/README.md @@ -142,7 +142,7 @@ declare global { } ``` -Finally add an umbraco-package.json file in the root of your package. +Finally add an umbraco-package.json file in the root of your package folder `my-package`. ```json { From 4bc178020d7b61bee0af6ced60956a89b19f2b8a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 10:46:47 +0100 Subject: [PATCH 308/550] move context token into folder --- .../consume/context-consumer.controller.ts | 2 +- .../libs/context-api/consume/context-consumer.ts | 15 ++++++++------- .../context-api/consume/context-request.event.ts | 7 +++---- .../libs/context-api/index.ts | 2 +- .../context-api/provide/context-provide.event.ts | 2 +- .../provide/context-provider.controller.ts | 2 +- .../libs/context-api/provide/context-provider.ts | 12 ++++++++---- .../context-api/{ => token}/context-token.test.ts | 4 ++-- .../libs/context-api/{ => token}/context-token.ts | 0 9 files changed, 25 insertions(+), 21 deletions(-) rename src/Umbraco.Web.UI.Client/libs/context-api/{ => token}/context-token.test.ts (91%) rename src/Umbraco.Web.UI.Client/libs/context-api/{ => token}/context-token.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts index 2d30084d7f..f9b72588b2 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.controller.ts @@ -1,4 +1,4 @@ -import { UmbContextToken } from '../context-token'; +import { UmbContextToken } from '../token/context-token'; import { UmbContextConsumer } from './context-consumer'; import { UmbContextCallback } from './context-request.event'; import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts index 0fe4fc33d8..5432b1dc0d 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.ts @@ -1,4 +1,4 @@ -import { UmbContextToken } from '../context-token'; +import { UmbContextToken } from '../token/context-token'; import { isUmbContextProvideEventType, umbContextProvideEventType } from '../provide/context-provide.event'; import { UmbContextRequestEventImplementation, UmbContextCallback } from './context-request.event'; @@ -7,10 +7,8 @@ import { UmbContextRequestEventImplementation, UmbContextCallback } from './cont * @class UmbContextConsumer */ export class UmbContextConsumer { - - _promise?: Promise; - _promiseResolver?: (instance:T) => void; + _promiseResolver?: (instance: T) => void; private _instance?: T; get instance() { @@ -44,9 +42,12 @@ export class UmbContextConsumer((resolve) => { - this._instance ? resolve(this._instance) : (this._promiseResolver = resolve); - })); + return ( + this._promise || + (this._promise = new Promise((resolve) => { + this._instance ? resolve(this._instance) : (this._promiseResolver = resolve); + })) + ); } /** diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-request.event.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-request.event.ts index ab96c5bd51..d1b630be4b 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-request.event.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-request.event.ts @@ -1,4 +1,4 @@ -import { UmbContextToken } from '../context-token'; +import { UmbContextToken } from '../token/context-token'; export const umbContextRequestEventType = 'umb:context-request'; export const umbDebugContextEventType = 'umb:debug-contexts'; @@ -33,9 +33,8 @@ export const isUmbContextRequestEvent = (event: Event): event is UmbContextReque return event.type === umbContextRequestEventType; }; - export class UmbContextDebugRequest extends Event { - public constructor(public readonly callback:any) { + public constructor(public readonly callback: any) { super(umbDebugContextEventType, { bubbles: true, composed: true, cancelable: false }); } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/index.ts b/src/Umbraco.Web.UI.Client/libs/context-api/index.ts index 67aaa8edcf..39b438786a 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/index.ts @@ -4,4 +4,4 @@ export * from './consume/context-request.event'; export * from './provide/context-provider.controller'; export * from './provide/context-provider'; export * from './provide/context-provide.event'; -export * from './context-token'; +export * from './token/context-token'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provide.event.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provide.event.ts index 37b88cea24..9388743921 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provide.event.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provide.event.ts @@ -1,4 +1,4 @@ -import { UmbContextToken } from '../context-token'; +import { UmbContextToken } from '../token/context-token'; export const umbContextProvideEventType = 'umb:context-provide'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts index 54c9e2e167..7412ae6a0c 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.ts @@ -1,4 +1,4 @@ -import { UmbContextToken } from '../context-token'; +import { UmbContextToken } from '../token/context-token'; import { UmbContextProvider } from './context-provider'; import type { UmbControllerHostInterface, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.ts index c9ce3ab9c3..efed204d3a 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.ts @@ -1,5 +1,9 @@ -import { umbContextRequestEventType, isUmbContextRequestEvent, umbDebugContextEventType } from '../consume/context-request.event'; -import { UmbContextToken } from '../context-token'; +import { + umbContextRequestEventType, + isUmbContextRequestEvent, + umbDebugContextEventType, +} from '../consume/context-request.event'; +import { UmbContextToken } from '../token/context-token'; import { UmbContextProvideEventImplementation } from './context-provide.event'; /** @@ -68,14 +72,14 @@ export class UmbContextProvider { private _handleDebugContextRequest = (event: any) => { // If the event doesn't have an instances property, create it. - if(!event.instances){ + if (!event.instances) { event.instances = new Map(); } // If the event doesn't have an instance for this context, add it. // Nearest to the DOM element of will be added first // as contexts can change/override deeper in the DOM - if(!event.instances.has(this._contextAlias)){ + if (!event.instances.has(this._contextAlias)) { event.instances.set(this._contextAlias, this.#instance); } }; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/context-token.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/libs/context-api/context-token.test.ts rename to src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts index 66531d06f0..4493b739d6 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/context-token.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts @@ -1,7 +1,7 @@ import { expect } from '@open-wc/testing'; -import { UmbContextConsumer } from './consume/context-consumer'; +import { UmbContextConsumer } from '../consume/context-consumer'; import { UmbContextToken } from './context-token'; -import { UmbContextProvider } from './provide/context-provider'; +import { UmbContextProvider } from '../provide/context-provider'; const testContextAlias = 'my-test-context'; diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/context-token.ts b/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/context-api/context-token.ts rename to src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.ts From cfc6eed5c6a23e5e0fffb2b03cc618e16c2458d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 10:55:23 +0100 Subject: [PATCH 309/550] docs updates --- .../src/core/modal/stories/modal.mdx | 57 ++++++++++++++- .../src/stories/extending/modals/intro.mdx | 71 +------------------ 2 files changed, 56 insertions(+), 72 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx index 0d98e63508..dcf18f274d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx @@ -42,8 +42,61 @@ class MyElement extends UmbElementMixin(LitElement) { ### Open a modal -TODO: consider the level of documentation we like to provide. Do we want user to have deep link able modals, or just simple modals like theses? -TODO: referee to the doc on modal extension, and move the relevant into between these two. +A modal can be opned in two ways. Either you registrer the modal with a route or at runtime open the modal. Notice the first one will enable users to deep link to the modal, this might be preferable in some cases if not go for the last. + +#### Simple Modal Route Registration + +A modal can be registred via the UmbModalRouteRegistrationController. The registration will accept a modal token (or extension alias). + +Notice we are using a Controller here, this means your element has to be a Controller Host (TODO: Insert link to story about Controller Host also available through the UmbElementMixin) + +```ts +this.myModalRegistration = new UmbModalRouteRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN) + .onSubmit((submitData) => { + console.log('Modal submitted with data'.submitData); + }) + .observeRouteBuilder((routeBuilder) => { + this._modalRouteBuilder = routeBuilder; + }); +``` + +The registration holds an instance of its UmbModalHandler when the modal it active. +The modal registration accepts 4 different callbacks: + +- onSetup - called when the modal is opened +- onSubmit - called when the modal is submitted +- onReject - called when the modal is rejected +- observeRouteBuilder - called when the modal route changes, use the given route builder to build a route to open the modal. + +#### TODOS: + +descripe the addional features of the route Registration: + +##### Hints: + +- Add unique parts to the path. (How is this cone properly as part of a Property Editor) +- A modal registred in a dashboard can be relatively simple. +- A modal registred in a property editor, needs to become specific for the property and the variant of that property. + +- Build some data for the setup. +- Reject a modal by returning false in setup. +- Use a param as part of setup to determin the data going to the modal. + +#### Generate the URL to a Modal Route Registration + +The Modal registration has an option to retrive a URL Builder, this is a function that can be used to generate a URL to a modal. + +```ts +const modalLink = _myUrlBuilder?.({ alias: 'my-input-alias' }); +``` + +The modalLink from above could look like: /umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-input-alias + +Notice the Property Editor registration will add the property alias and variant id to the URL, so it becomes: + +/umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-property-alias/en-us/my-input-alias + +#### Open A Modal at own initiative A modal can be opened by calling the open method on the UmbModalContext. The methods will accept a modal token (or extension alias), an optional dataset, and optional modal options. It returns an instance of UmbModalHandler. diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx index 4be5f44de7..cde473b6b8 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/modals/intro.mdx @@ -54,73 +54,4 @@ export const MY_SOMETHING_PICKER_MODAL = new UmbModalToken { - const aliasParam = params.alias; - if (!aliasParam) return false; - // In this example alias is not being used, but we could use it to get the right data set for the modal. - - // Make a Data object to be used in the modal: - return { - key: this.myCurrentValue, - }; - }, - onSubmit: (submitData) => { - // Here we got the Result object from the modal, which we can use to get the new selected key. - this.myCurrentValue = submitData.key; - }, - getUrlBuilder: (urlBuilder) => { - // Here we got a urlBuilder, read further down this document for more into on this: - this._myUrlBuilder = urlBuilder; - }, -}); -``` - -#### Modal Registration in a Property Editor - -```ts -new UmbPropertyEditorModalRegistrationController(this, MY_SOMETHING_PICKER_MODAL, { - path: `:key`, - onSetup: (params) => { - const keyParam = params.key; - if (!keyParam) return false; - - // Make a Data object to be used in the modal: - return { - key: keyParam, - }; - }, - onSubmit: (submitData) => { - // Here we got the Result object from the modal: - this._mySetPickedKey(submitData.key); - }, - getUrlBuilder: (urlBuilder) => { - // Here we got a urlBuilder, read further down this document for more into on this: - this._myUrlBuilder = urlBuilder; - }, -}); -``` - -## Generate the URL to a Modal - -The Modal registration has an option to retrive a URL Builder, this is a function that can be used to generate a URL to a modal. - -```ts -const modalLink = _myUrlBuilder?.({ alias: 'my-input-alias' }); -``` - -The modalLink from above could look like: /umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-input-alias - -Notice the Property Editor registration will add the property alias and variant id to the URL, so it becomes: - -/umbraco/backoffice/my/location/modal/Our.Modal.SomethingPicker/my-property-alias/en-us/my-input-alias +# TODO Link to modal documentation here. From fb180fd400688e46d3dea9c8f4dc53cacb886851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:02:46 +0100 Subject: [PATCH 310/550] remove console.logs --- .../input-multi-url-picker/input-multi-url-picker.element.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 074d77d9cc..a36ddef713 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -32,13 +32,11 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen @property() public set alias(value: string | undefined) { - console.log('alias', value); this.myModalRegistration.setUniqueIdentifier('propertyAlias', value); } @property() public set variantId(value: string | UmbVariantId | undefined) { - console.log('variantId', value); this.myModalRegistration.setUniqueIdentifier('variantId', value?.toString()); } From 9c72235177f54f14e18aa02e71296f534961a08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:05:55 +0100 Subject: [PATCH 311/550] lint fixes --- .../provide/context-provider.controller.test.ts | 2 +- src/Umbraco.Web.UI.Client/src/app.ts | 2 +- .../repository/document-type.repository.ts | 8 ++++---- .../documents/repository/document.repository.ts | 8 ++++---- .../documents/documents/workspace/manifests.ts | 8 ++++---- .../views/info/document-info-workspace-view.element.ts | 2 +- .../media-grid-collection-view.element.ts | 2 +- .../media/media/repository/media.repository.ts | 10 +++++----- .../backoffice/media/media/repository/media.store.ts | 2 +- .../src/backoffice/media/media/workspace/manifests.ts | 2 +- .../media/workspace/media-workspace-edit.element.ts | 2 +- .../media/media/workspace/media-workspace.context.ts | 2 +- .../media/media/workspace/media-workspace.element.ts | 4 ++-- .../workspace/member-group-workspace-edit.element.ts | 4 ++-- .../views/health-check-overview.element.ts | 2 +- .../data-types/repository/data-type.repository.ts | 8 ++++---- .../backoffice-frame/backoffice-main.element.ts | 6 +++--- .../components/code-editor/code-editor.controller.ts | 2 +- .../shared/components/debug/debug.element.ts | 2 +- .../workspace-property/workspace-property.context.ts | 6 +++--- .../clear/property-action-clear.element.ts | 2 +- .../property-editor-ui-multi-url-picker.element.ts | 2 +- .../dictionary/repository/dictionary.repository.ts | 10 +++++----- .../dictionary/repository/dictionary.store.ts | 2 +- .../sources/dictionary.detail.server.data.ts | 4 ++-- .../workspace/dictionary-workspace.context.ts | 4 ++-- .../src/core/mocks/data/dictionary.data.ts | 2 +- .../src/core/mocks/data/media.data.ts | 2 +- .../src/core/mocks/domains/dictionary.handlers.ts | 2 +- .../src/core/mocks/domains/rte-embed.handlers.ts | 2 +- 30 files changed, 58 insertions(+), 58 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts index 481a916122..7946d8b30b 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts @@ -1,7 +1,7 @@ import { expect, fixture, defineCE } from '@open-wc/testing'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbContextConsumer } from '../consume/context-consumer'; import { UmbContextProviderController } from './context-provider.controller'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; class MyClass { prop = 'value from provider'; diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index c653dae2a4..d466b30bca 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -17,11 +17,11 @@ import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbIconStore } from './core/stores/icon/icon.store'; import type { Guard, IRoute } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; -import { UmbIconStore } from './core/stores/icon/icon.store'; import { umbDebugContextEventType } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-app') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 174b6d4f8f..7191342a68 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -1,3 +1,7 @@ +import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; +import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; +import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; +import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; import type { RepositoryTreeDataSource, UmbTreeRepository, @@ -7,10 +11,6 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; -import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; -import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; -import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; type ItemType = DocumentTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index dd7fc1789c..8bc17134bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -1,3 +1,7 @@ +import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; +import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; +import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; +import { UmbDocumentServerDataSource } from './sources/document.server.data'; import type { RepositoryTreeDataSource, UmbTreeRepository, @@ -7,10 +11,6 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; -import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; -import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; -import { UmbDocumentServerDataSource } from './sources/document.server.data'; type ItemType = DocumentResponseModel; 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 bc08b979de..d8ada1659b 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,13 +1,13 @@ +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/backoffice/workspace'; import type { ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView, ManifestWorkspaceViewCollection, } from '@umbraco-cms/backoffice/extensions-registry'; -import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; -import { UmbDocumentSaveAndPublishWorkspaceAction } from './actions/save-and-publish.action'; -import { UmbDocumentSaveAndPreviewWorkspaceAction } from './actions/save-and-preview.action'; -import { UmbSaveAndScheduleDocumentWorkspaceAction } from './actions/save-and-schedule.action'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.element.ts index 439a076c13..fbf7e3544b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/info/document-info-workspace-view.element.ts @@ -3,9 +3,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { repeat } from 'lit/directives/repeat.js'; import { customElement, state } from 'lit/decorators.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; +import { UmbEntityWorkspaceContextInterface } from '../../../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import type { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbEntityWorkspaceContextInterface } from '../../../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; interface HistoryNode { userId?: number; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts index 22ffd35e91..50fb77a885 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts @@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; +import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; // TODO: this should be a lib import -import { UmbCollectionContext, UMB_COLLECTION_CONTEXT_TOKEN } from '../../../shared/collection/collection.context'; @customElement('umb-media-grid-collection-view') export class UmbMediaGridCollectionViewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 24e5fd28aa..6b74f80cf9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -1,14 +1,14 @@ +import type { MediaDetails } from '../'; +import { MediaTreeServerDataSource } from './sources/media.tree.server.data'; +import { UmbMediaTreeStore, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store'; +import { UmbMediaStore, UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store'; +import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data'; import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import type { MediaDetails } from '../'; -import { MediaTreeServerDataSource } from './sources/media.tree.server.data'; -import { UmbMediaTreeStore, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store'; -import { UmbMediaStore, UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store'; -import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data'; import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; type ItemDetailType = MediaDetails; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts index a34e9e8da0..2d5dfc4c4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts @@ -1,8 +1,8 @@ +import type { MediaDetails } from '../'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import type { MediaDetails } from '../'; /** * @export 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 c58ae9fbf1..7dbf6b198f 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 { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspace, @@ -5,7 +6,6 @@ import type { ManifestWorkspaceView, ManifestWorkspaceViewCollection, } from '@umbraco-cms/backoffice/extensions-registry'; -import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; const workspace: ManifestWorkspace = { type: 'workspace', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts index 264902479b..5d59761c98 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace-edit') export class UmbMediaWorkspaceEditElement extends UmbLitElement { 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 7bffe8f9af..399b057a61 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 @@ -1,9 +1,9 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbMediaRepository } from '../repository/media.repository'; import type { UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import type { MediaDetails } from '../'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import type { MediaDetails } from '../'; type EntityType = MediaDetails; export class UmbMediaWorkspaceContext diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index a2595863bf..cc3e954a76 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; +import { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace') export class UmbMediaWorkspaceElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts index b4d65802a2..29149724d4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace-edit.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; /** * @element umb-member-group-edit-workspace diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts index 71114fb667..dddf878b38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-overview.element.ts @@ -3,11 +3,11 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbHealthCheckDashboardContext, UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from '../health-check-dashboard.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './health-check-group-box-overview.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index bcdd0b5099..7b15596132 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -1,3 +1,7 @@ +import { UmbDataTypeTreeStore, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './data-type.tree.store'; +import { UmbDataTypeServerDataSource } from './sources/data-type.server.data'; +import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type.store'; +import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; import type { RepositoryTreeDataSource, UmbTreeRepository, @@ -7,10 +11,6 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { UmbDataTypeTreeStore, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './data-type.tree.store'; -import { UmbDataTypeServerDataSource } from './sources/data-type.server.data'; -import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type.store'; -import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; type ItemType = DataTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index e4b2dde68b..405d17304d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -2,13 +2,13 @@ import { defineElement } from '@umbraco-ui/uui-base/lib/registration'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { state } from 'lit/decorators.js'; +import { UmbSectionElement } from '../section/section.element'; +import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; +import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; import type { UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { createExtensionElementOrFallback } from '@umbraco-cms/backoffice/extensions-api'; -import { UmbSectionElement } from '../section/section.element'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; -import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; @defineElement('umb-backoffice-main') export class UmbBackofficeMain extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts index f79acaeace..525e4442ef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.controller.ts @@ -1,4 +1,3 @@ -import { UmbChangeEvent, UmbInputEvent } from '@umbraco-cms/backoffice/events'; import * as monaco from 'monaco-editor'; import { CodeEditorConstructorOptions, @@ -12,6 +11,7 @@ import { UmbCodeEditorSelection, } from './code-editor.model'; import themes from './themes'; +import { UmbChangeEvent, UmbInputEvent } from '@umbraco-cms/backoffice/events'; //TODO - consider firing change event on blur diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts index 559f490972..128dbb33bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing, TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UMB_CONTEXT_DEBUGGER_MODAL_TOKEN } from './modals/debug'; import { UmbContextDebugRequest } from '@umbraco-cms/backoffice/context-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; -import { UMB_CONTEXT_DEBUGGER_MODAL_TOKEN } from './modals/debug'; @customElement('umb-debug') export class UmbDebug extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 453b373c79..655d0f11d3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -1,3 +1,6 @@ +import { UmbVariantId } from '../../variants/variant-id.class'; +import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspace-context/workspace-variable-entity-context.interface'; +import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { ClassState, ObjectState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @@ -6,9 +9,6 @@ import { UmbContextProviderController, UmbContextToken, } from '@umbraco-cms/backoffice/context-api'; -import { UmbVariantId } from '../../variants/variant-id.class'; -import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspace-context/workspace-variable-entity-context.interface'; -import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; // If we get this from the server then we can consider using TypeScripts Partial<> around the model from the Management-API. export type WorkspacePropertyData = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts index 9e34b3bedd..12357bb9e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/clear/property-action-clear.element.ts @@ -1,11 +1,11 @@ import { html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbPropertyAction } from '../shared/property-action/property-action.model'; import { UmbWorkspacePropertyContext, UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, } from '../../components/workspace-property/workspace-property.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-property-action-clear') export class UmbPropertyActionClearElement extends UmbLitElement implements UmbPropertyAction { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index fb7aa67389..e4691ec48e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -4,10 +4,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; +import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from 'src/backoffice/shared/components/workspace-property/workspace-property.context'; /** * @element umb-property-editor-ui-multi-url-picker diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index a57b2c645f..59075cfc5a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -1,13 +1,13 @@ -import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import type { DictionaryDetails } from '../'; import { UmbDictionaryStore, UMB_DICTIONARY_STORE_CONTEXT_TOKEN } from './dictionary.store'; import { UmbDictionaryDetailServerDataSource } from './sources/dictionary.detail.server.data'; import { UmbDictionaryTreeStore, UMB_DICTIONARY_TREE_STORE_CONTEXT_TOKEN } from './dictionary.tree.store'; import { DictionaryTreeServerDataSource } from './sources/dictionary.tree.server.data'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts index f549e112b4..210f98c8dc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts @@ -1,8 +1,8 @@ +import type { DictionaryDetails } from '../'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; -import type { DictionaryDetails } from '../'; /** * @export diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 1fb529a992..8a972cc326 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -1,3 +1,5 @@ +import type { DictionaryDetails } from '../../'; +import { DictionaryDetailDataSource } from './dictionary.details.server.data.interface'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { @@ -6,8 +8,6 @@ import { LanguageResource, ProblemDetailsModel, } from '@umbraco-cms/backoffice/backend-api'; -import type { DictionaryDetails } from '../../'; -import { DictionaryDetailDataSource } from './dictionary.details.server.data.interface'; /** * @description - A data source for the Dictionary detail that fetches data from the server 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 fceb0e11ba..0692a4ffe9 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 @@ -1,9 +1,9 @@ -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; -import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface'; import type { DictionaryDetails } from '../'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; type EntityType = DictionaryDetails; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index c3b27857dd..8a76f7c398 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -1,7 +1,7 @@ -import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { DictionaryDetails } from '../../../backoffice/translation/dictionary'; import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; +import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export const data: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index b7f70f41b9..82f1c4d25a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -1,7 +1,7 @@ -import { ContentTreeItemResponseModel, PagedContentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { MediaDetails } from '../../../backoffice/media/media'; import { UmbEntityData } from './entity.data'; import { createContentTreeItem } from './utils'; +import { ContentTreeItemResponseModel, PagedContentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export const data: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index e4b837534d..25df97d47a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -1,7 +1,7 @@ import { rest } from 'msw'; -import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { DictionaryDetails } from '../../../backoffice/translation/dictionary'; import { umbDictionaryData } from '../data/dictionary.data'; +import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; const uploadResponse: ImportDictionaryRequestModel = { fileName: 'c:/path/to/tempfilename.udt', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts index b99050a812..3a8b1247e1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts @@ -1,6 +1,6 @@ import { rest } from "msw"; -import { umbracoPath } from "@umbraco-cms/backoffice/utils"; import { OEmbedResult, OEmbedStatus } from "../../../backoffice/shared/modals/embedded-media"; +import { umbracoPath } from "@umbraco-cms/backoffice/utils"; export const handlers = [ rest.get(umbracoPath('/rteembed'), (req, res, ctx) => { From 739b3adfc06000a7e0fb90a952d55c24bb22fcba Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 11:07:32 +0100 Subject: [PATCH 312/550] remove sidebar from document menu item --- .../src/backoffice/documents/documents/manifests.ts | 2 +- .../document-menu-item.element.ts} | 8 ++++---- .../{sidebar-menu-item => menu-item}/manifests.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/{sidebar-menu-item/document-sidebar-menu-item.element.ts => menu-item/document-menu-item.element.ts} (54%) rename src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/{sidebar-menu-item => menu-item}/manifests.ts (85%) 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 db1abd9914..61718098ac 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 menuItemManifests } from './sidebar-menu-item/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as repositoryManifests } from './repository/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/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/menu-item/document-menu-item.element.ts similarity index 54% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/menu-item/document-menu-item.element.ts index 7102a30105..07d94f6a1f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/document-sidebar-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/menu-item/document-menu-item.element.ts @@ -2,17 +2,17 @@ import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -@customElement('umb-document-sidebar-menu-item') -export class UmbDocumentSidebarMenuItemElement extends UmbLitElement { +@customElement('umb-document-menu-item') +export class UmbDocumentMenuItemElement extends UmbLitElement { render() { return html``; } } -export default UmbDocumentSidebarMenuItemElement; +export default UmbDocumentMenuItemElement; declare global { interface HTMLElementTagNameMap { - 'umb-document-sidebar-menu-item': UmbDocumentSidebarMenuItemElement; + 'umb-document-menu-item': UmbDocumentMenuItemElement; } } 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/menu-item/manifests.ts similarity index 85% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/sidebar-menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/menu-item/manifests.ts index e06fc87a74..5c448b6d0b 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/menu-item/manifests.ts @@ -5,7 +5,7 @@ const menuItem: ManifestMenuItem = { alias: 'Umb.MenuItem.Documents', name: 'Documents Menu Item', weight: 100, - loader: () => import('./document-sidebar-menu-item.element'), + loader: () => import('./document-menu-item.element'), meta: { label: 'Documents', icon: 'umb:folder', From 79f6eea67f17c9c3ef769e75b2c7911574b7348c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:13:39 +0100 Subject: [PATCH 313/550] type corrections --- .../libs/modal/modal-route-registration.ts | 2 +- .../libs/modal/modal.context.ts | 2 +- .../src/core/router/route.context.ts | 17 +---------------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 9ba22c4d70..69ad304123 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -99,7 +99,7 @@ export class UmbModalRouteRegistration( modalAlias: string | UmbModalToken, - data?: ModalData | true, + data?: ModalData, config?: UmbModalConfig ) { const modalHandler = new UmbModalHandlerClass(this.host, modalAlias, data, config) as unknown as UmbModalHandler< diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 1468ec1d52..4550de7311 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -4,10 +4,9 @@ import { UmbContextProviderController, UmbContextToken, } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; import { UMB_MODAL_CONTEXT_TOKEN } from 'libs/modal/modal.context'; -import { UmbModalRouteOptions, UmbModalRouteRegistration } from 'libs/modal/modal-route-registration'; +import { UmbModalRouteRegistration } from 'libs/modal/modal-route-registration'; const EmptyDiv = document.createElement('div'); @@ -39,20 +38,6 @@ export class UmbRouteContext { } } - /* - public registerModal( - alias: UmbModalToken | string, - options: UmbModalRouteOptions - ) { - const registration = new UmbModalRouteRegistration(alias, options); - - this.#modalRegistrations.push(registration); - this.#generateNewUrlBuilder(registration); - this.#generateContextRoutes(); - return registration; - } - */ - public registerModal(registration: UmbModalRouteRegistration) { this.#modalRegistrations.push(registration); this.#generateNewUrlBuilder(registration); From 8c07b4184fa20182529b26308ab823872de55984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:13:56 +0100 Subject: [PATCH 314/550] wording --- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 4550de7311..c686688be7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -83,7 +83,7 @@ export class UmbRouteContext { }); // Add an empty route, so that we can always have a route to go to for closing the modals. - // TODO: Check if this is nesecary with the _internal_modalRouterChanged present. + // TODO: Check if this is necessary with the _internal_modalRouterChanged present. this.#contextRoutes.push({ path: '', component: EmptyDiv, From 605c6c47997625f2299b10195cf505476c03a817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:17:42 +0100 Subject: [PATCH 315/550] clean up --- src/Umbraco.Web.UI.Client/src/core/router/route.context.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index c686688be7..40eae2d516 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -82,8 +82,7 @@ export class UmbRouteContext { return this.#generateRoute(modalRegistration); }); - // Add an empty route, so that we can always have a route to go to for closing the modals. - // TODO: Check if this is necessary with the _internal_modalRouterChanged present. + // Add an empty route, so there is a route for the router to react on when no modals are open. this.#contextRoutes.push({ path: '', component: EmptyDiv, @@ -98,7 +97,7 @@ export class UmbRouteContext { this.#routerBasePath = routerBasePath; this.#generateNewUrlBuilders(); } - // TODO: what is going on here, We need to make sure if the modals are still relevant then not close them. + // Also notice each registration should now hold its handler when its active. public _internal_modalRouterChanged(activeModalPath: string | undefined) { if (this.#activeModalPath === activeModalPath) return; From 74f56186ca905c7a1d424a36a8494238f9b35fd4 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Thu, 23 Mar 2023 11:22:49 +0100 Subject: [PATCH 316/550] update --- ...space-view-document-type-design.element.ts | 5 +- ...ce-view-document-type-templates.element.ts | 31 ++-- .../input-template-picker.element.ts | 159 +++++++++--------- .../template-card/template-card.element.ts | 4 +- .../workspace-layout.element.ts | 6 +- .../src/backoffice/shared/modals/manifests.ts | 12 ++ .../shared/modals/template-picker/index.ts | 18 ++ .../template-picker-modal.element.ts | 104 ++++++++++++ .../shared/modals/template/index.ts | 18 ++ .../modals/template/template-modal.element.ts | 97 +++++++++++ .../src/core/mocks/data/document-type.data.ts | 8 +- 11 files changed, 356 insertions(+), 106 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts index 2b50b0310e..a27bfb57fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/workspace-view-document-type-design.element.ts @@ -123,8 +123,9 @@ export class UmbWorkspaceViewDocumentTypeDesignElement extends UmbLitElement {
    - - + + +
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts index 99fbdacaa7..cc89db1358 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/workspace-view-document-type-templates.element.ts @@ -1,10 +1,9 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property, state } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; - import '../../../../../shared/property-creator/property-creator.element.ts'; @customElement('umb-workspace-view-document-type-templates') @@ -37,24 +36,13 @@ export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement `, ]; - @property() - defaultTemplateKey?: string = '123'; - @state() _documentType?: DocumentTypeResponseModel; - @state() - _templates = [ - { key: '123', name: 'Blog Post Page' }, - { key: '456', name: 'Blog Entry Page' }, - ]; - private _workspaceContext?: UmbWorkspaceDocumentTypeContext; constructor() { super(); - - // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken this.consumeContext('umbWorkspaceContext', (documentTypeContext) => { this._workspaceContext = documentTypeContext; this._observeDocumentType(); @@ -69,13 +57,14 @@ export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement }); } - #changeDefaultTemplate(e: CustomEvent) { - //this.defaultTemplateKey = (e.target as UmbTemplateCardElement).value as string; - console.log('default template key', this.defaultTemplateKey); + async #changeDefaultKey(e: CustomEvent) { + // save new default key + console.log('workspace: default template key', e); } - #removeTemplate(key: string) { - console.log('remove template', key); + #changeAllowedKeys(e: CustomEvent) { + // save new allowed keys + console.log('workspace: allowed templates changed', e); } render() { @@ -83,7 +72,11 @@ export class UmbWorkspaceViewDocumentTypeTemplatesElement extends UmbLitElement
    Choose which templates editors are allowed to use on content of this type
    - +
    `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index 8311ae6099..828f13bfe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -1,15 +1,14 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property, queryAll, state } from 'lit/decorators.js'; -import { repeat } from 'lit/directives/repeat.js'; +import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; - -import { TemplateResource } from '@umbraco-cms/backoffice/backend-api'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { TemplateResource, TemplateResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbTemplateCardElement } from '../template-card/template-card.element'; +import { UMB_TEMPLATE_PICKER_MODAL_TOKEN } from '../../modals/template-picker'; +import { UMB_TEMPLATE_MODAL_TOKEN } from '../../modals/template'; @customElement('umb-input-template-picker') export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElement) { @@ -31,19 +30,6 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen min-width: 180px; min-height: 150px; } - - .fade-in { - animation: fadeIn 1s; - } - - @keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } - } `, ]; /** @@ -82,30 +68,43 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen @property({ type: String, attribute: 'min-message' }) maxMessage = 'This field exceeds the allowed amount of items'; - @state() - private _items: Array = [ - { key: '2bf464b6-3aca-4388-b043-4eb439cc2643', name: 'Doc 1', default: false }, - { key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', name: 'Test', default: true }, - ]; + _allowedKeys: Array = []; + @property({ type: Array }) + public get allowedKeys() { + return this._allowedKeys; + } + public set allowedKeys(newKeys: Array) { + //this.#observePickedTemplates(); + this._allowedKeys = newKeys; + } + + _defaultKey = ''; + @property({ type: String }) + public get defaultKey(): string { + return this._defaultKey; + } + public set defaultKey(newKey: string) { + this._defaultKey = newKey; + super.value = newKey; + } private _modalContext?: UmbModalContext; - //private _documentStore?: UmbDocumentTreeStore; - //private _pickedItemsObserver?: UmbObserverController; + //private _templateStore?: UmbTemplateTreeStore; + //private _pickedItemsObserver?: UmbObserverController; + + @state() + _templates: TemplateResponseModel[] = []; + + public get templates(): TemplateResponseModel[] { + return this._templates; + } + public set templates(newTemplates: TemplateResponseModel[]) { + this._templates = newTemplates; + this.allowedKeys = newTemplates.map((template) => template.key ?? ''); + } constructor() { super(); - - this.addValidator( - 'rangeUnderflow', - () => this.minMessage, - () => !!this.min && this._items.length < this.min - ); - this.addValidator( - 'rangeOverflow', - () => this.maxMessage, - () => !!this.max && this._items.length > this.max - ); - this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { this._modalContext = instance; }); @@ -113,79 +112,83 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen connectedCallback(): void { super.connectedCallback(); - this._items = this._items.sort((a, b) => b.default - a.default); - this.#setup(); + this.allowedKeys.forEach((key) => this.#setup(key)); } - async #setup() { - const templates = await tryExecuteAndNotify(this, TemplateResource.getTreeTemplateRoot({ skip: 0, take: 9999 })); - console.log(templates); + async #setup(templateKey: string) { + const { data } = await tryExecuteAndNotify(this, TemplateResource.getTemplateByKey({ key: templateKey })); + if (!data) return; + this.templates = [...this.templates, data]; } protected getFormElement() { return undefined; } - #openTemplatePickerModal() { - console.log('template picker modal'); - } - - #changeSelected() { - console.log('selected'); - } - - /** Clicking the template card buttons */ - #changeDefault(e: CustomEvent) { - const key = (e.target as UmbTemplateCardElement).value; + e.stopPropagation(); + const newKey = (e.target as UmbTemplateCardElement).value as string; + this.defaultKey = newKey; + this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); + } - const oldDefault = this._items.find((x) => x.default === true); - const newDefault = this._items.find((x) => x.key === key); - - const items = this._items.map((item) => { - if (item.default === true) return { ...newDefault, default: true }; - if (item.key === key) return { ...oldDefault, default: false }; - return item; + #openPicker() { + //TODO: Tree-picker modal? + const modalHandler = this._modalContext?.open(UMB_TEMPLATE_PICKER_MODAL_TOKEN, { + multiple: true, + selection: [...this.allowedKeys], }); - this._items = items; - } - - #openTemplate(e: CustomEvent) { - const key = (e.target as UmbTemplateCardElement).value; - console.log('open', key); + modalHandler?.onSubmit().then((data) => { + console.log(data.selection); + this.dispatchEvent(new CustomEvent('change-allowed', { bubbles: true, composed: true })); + }); } #removeTemplate(key: string) { - console.log('remove', key); + console.log('picker: remove', key); + const templateIndex = this.templates.findIndex((x) => x.key === key); + this.templates.splice(templateIndex, 1); + this.templates = [...this._templates]; } render() { return html` - ${repeat( - this._items, - (template) => template.default, - (template, index) => html`
    + ${this.templates.map( + (template) => html` + ?default="${template.key === this.defaultKey}"> -
    ` + ` )} - Add + Add `; } + + #openTemplate(e: CustomEvent) { + const key = (e.target as UmbTemplateCardElement).value; + + const modalHandler = this._modalContext?.open(UMB_TEMPLATE_MODAL_TOKEN, { + multiple: true, + selection: [...this.allowedKeys], + }); + + modalHandler?.onSubmit().then((res) => { + console.log('save template'); + }); + } } export default UmbInputTemplatePickerElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts index c971f22dbb..50f8cc5484 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts @@ -139,7 +139,7 @@ export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { e.preventDefault(); e.stopPropagation(); //this.selected = true; - this.dispatchEvent(new CustomEvent('default-change', { bubbles: true, composed: true })); + this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); } #openTemplate(e: KeyboardEvent) { e.preventDefault(); @@ -149,7 +149,6 @@ export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { render() { return html`
    -
    `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index bbe2cf2a8e..f1fe4b7ff2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -40,9 +40,9 @@ export class UmbWorkspaceLayout extends UmbLitElement { } #router-slot { - display:flex; - flex-direction:column; - height:100%; + display: flex; + flex-direction: column; + height: 100%; } uui-input { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts index ac7dfa75d5..78fa2bd2b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts @@ -31,6 +31,18 @@ const modals: Array = [ name: 'Section Picker Modal', loader: () => import('./section-picker/section-picker-modal.element'), }, + { + type: 'modal', + alias: 'Umb.Modal.TemplatePicker', + name: 'Template Picker Modal', + loader: () => import('./template-picker/template-picker-modal.element'), + }, + { + type: 'modal', + alias: 'Umb.Modal.Template', + name: 'Template Modal', + loader: () => import('./template/template-modal.element'), + }, ]; export const manifests = [...modals]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/index.ts new file mode 100644 index 0000000000..f8f2560e3e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/index.ts @@ -0,0 +1,18 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbTemplatePickerModalData { + multiple: boolean; + selection: string[]; +} + +export interface UmbTemplatePickerModalResult { + selection: string[] | undefined; +} + +export const UMB_TEMPLATE_PICKER_MODAL_TOKEN = new UmbModalToken< + UmbTemplatePickerModalData, + UmbTemplatePickerModalResult +>('Umb.Modal.TemplatePicker', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts new file mode 100644 index 0000000000..503b3113a8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts @@ -0,0 +1,104 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import { UmbTreeElement } from '../../components/tree/tree.element'; +import { UmbTemplatePickerModalData, UmbTemplatePickerModalResult } from '.'; + +//TODO: make a default tree-picker that can be used across multiple pickers +// TODO: make use of UmbPickerLayoutBase +@customElement('umb-template-picker-modal') +export class UmbTemplatePickerModalElement extends UmbModalBaseElement< + UmbTemplatePickerModalData, + UmbTemplatePickerModalResult +> { + static styles = [ + UUITextStyles, + css` + h3 { + margin-left: var(--uui-size-space-5); + margin-right: var(--uui-size-space-5); + } + + uui-input { + width: 100%; + } + + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + margin: 16px 0; + } + + #content-list { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-3); + } + + .content-item { + cursor: pointer; + } + + .content-item.selected { + background-color: var(--uui-color-selected); + color: var(--uui-color-selected-contrast); + } + `, + ]; + + @state() + _selection: Array = []; + + @state() + _multiple = true; + + connectedCallback() { + super.connectedCallback(); + this._selection = this.data?.selection ?? []; + this._multiple = this.data?.multiple ?? true; + } + + private _handleSelectionChange(e: CustomEvent) { + e.stopPropagation(); + const element = e.target as UmbTreeElement; + //TODO: Should multiple property be implemented here or be passed down into umb-tree? + this._selection = this._multiple ? element.selection : [element.selection[element.selection.length - 1]]; + } + + private _submit() { + this.modalHandler?.submit({ selection: this._selection }); + } + + private _close() { + this.modalHandler?.reject(); + } + + render() { + return html` + + + +
    + +
    +
    + + +
    +
    + `; + } +} + +export default UmbTemplatePickerModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-template-picker-modal': UmbTemplatePickerModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts new file mode 100644 index 0000000000..28f1568e30 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts @@ -0,0 +1,18 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbTemplateModalData { + multiple: boolean; + selection: string[]; +} + +export interface UmbTemplateModalResult { + selection: string[] | undefined; +} + +export const UMB_TEMPLATE_MODAL_TOKEN = new UmbModalToken( + 'Umb.Modal.Template', + { + type: 'sidebar', + size: 'large', + } +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts new file mode 100644 index 0000000000..89a6f66061 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -0,0 +1,97 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import { UmbTreeElement } from '../../components/tree/tree.element'; +import { UmbTemplateModalData, UmbTemplateModalResult } from '.'; + +//TODO: make a default tree-picker that can be used across multiple pickers +// TODO: make use of UmbPickerLayoutBase +@customElement('umb-template-modal') +export class UmbTemplateModalElement extends UmbModalBaseElement { + static styles = [ + UUITextStyles, + css` + h3 { + margin-left: var(--uui-size-space-5); + margin-right: var(--uui-size-space-5); + } + + uui-input { + width: 100%; + } + + hr { + border: none; + border-bottom: 1px solid var(--uui-color-divider); + margin: 16px 0; + } + + #content-list { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-3); + } + + .content-item { + cursor: pointer; + } + + .content-item.selected { + background-color: var(--uui-color-selected); + color: var(--uui-color-selected-contrast); + } + `, + ]; + + @state() + _selection: Array = []; + + @state() + _multiple = true; + + connectedCallback() { + super.connectedCallback(); + this._selection = this.data?.selection ?? []; + this._multiple = this.data?.multiple ?? true; + } + + private _handleSelectionChange(e: CustomEvent) { + e.stopPropagation(); + const element = e.target as UmbTreeElement; + //TODO: Should multiple property be implemented here or be passed down into umb-tree? + this._selection = this._multiple ? element.selection : [element.selection[element.selection.length - 1]]; + } + + private _submit() { + this.modalHandler?.submit({ selection: this._selection }); + } + + private _close() { + this.modalHandler?.reject(); + } + + render() { + return html` + + + +
    + Code editor? +
    +
    + + +
    +
    + `; + } +} + +export default UmbTemplateModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-template-modal': UmbTemplateModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index b02af718db..1f418b6b0c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -890,8 +890,12 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, + allowedTemplateKeys: [ + '2bf464b6-3aca-4388-b043-4eb439cc2643', + '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', + '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', + ], + defaultTemplateKey: '2bf464b6-3aca-4388-b043-4eb439cc2643', key: 'simple-document-type-key', alias: 'simpleDocumentType', name: 'Simple Document Type', From 9ed16e6eaed87ce26693f27abb2108ebb05b5f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 11:24:11 +0100 Subject: [PATCH 317/550] move method --- .../src/core/router/route.context.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index 40eae2d516..bd9233aab9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -32,12 +32,6 @@ export class UmbRouteContext { }); } - #removeModalPath(info: IRoutingInfo) { - if (window.location.href.includes(info.match.fragments.consumed)) { - window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); - } - } - public registerModal(registration: UmbModalRouteRegistration) { this.#modalRegistrations.push(registration); this.#generateNewUrlBuilder(registration); @@ -77,6 +71,12 @@ export class UmbRouteContext { }; } + #removeModalPath(info: IRoutingInfo) { + if (window.location.href.includes(info.match.fragments.consumed)) { + window.history.pushState({}, '', window.location.href.split(info.match.fragments.consumed)[0]); + } + } + #generateContextRoutes() { this.#contextRoutes = this.#modalRegistrations.map((modalRegistration) => { return this.#generateRoute(modalRegistration); From 6df715f4ac4f41cf6513859e9a792c06b5c05eae Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 12:32:51 +0100 Subject: [PATCH 318/550] add option to pass props to an extension slot element --- .../extension-slot/extension-slot.element.ts | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index ff7e0176de..4ef98f15eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -4,7 +4,11 @@ import type { TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import { createExtensionElement, isManifestElementableType, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { + createExtensionElement, + isManifestElementableType, + umbExtensionsRegistry, +} from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; export type InitializedExtension = { alias: string; weight: number; component: HTMLElement | null }; @@ -34,6 +38,16 @@ export class UmbExtensionSlotElement extends UmbLitElement { @property({ type: Object, attribute: false }) public filter: (manifest: any) => boolean = () => true; + private _props?: Record = {}; + @property({ type: Object, attribute: false }) + get props() { + return this._props; + } + set props(newVal) { + this._props = newVal; + this.#assignPropsToAllComponents(); + } + @property({ type: String, attribute: 'default-element' }) public defaultElement = ''; @@ -77,6 +91,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { // TODO: Lets make an console.error in this case? } if (component) { + this.#assignProps(component); (component as any).manifest = extension; extensionObject.component = component; @@ -95,6 +110,18 @@ export class UmbExtensionSlotElement extends UmbLitElement { ); } + #assignPropsToAllComponents() { + this._extensions.forEach((ext) => this.#assignProps(ext.component)); + } + + #assignProps = (component: HTMLElement | null) => { + if (!component || !this._props) return; + + Object.keys(this._props).forEach((key) => { + (component as any)[key] = this._props?.[key]; + }); + }; + render() { // TODO: check if we can use repeat directly. return repeat( From 0fc5a1d09997aa6d979f73ec47d4499666ea151e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 12:33:25 +0100 Subject: [PATCH 319/550] add tree item element to render tree item extensions --- .../tree/tree-item/tree-item.element.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts new file mode 100644 index 0000000000..462921d54d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts @@ -0,0 +1,29 @@ +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/internal/lit-element'; +import { EntityTreeItemResponseModel } from 'libs/backend-api/src'; +import { ManifestTreeItem } from 'libs/extensions-registry/tree-item.models'; + +@customElement('umb-tree-item') +export class UmbTreeItemElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @property({ type: Object, attribute: false }) + item?: EntityTreeItemResponseModel; + + render() { + return html` manifests.conditions.entityType === this.item?.type} + .props=${{ + item: this.item, + }}>`; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-tree-item': UmbTreeItemElement; + } +} From 95b2febcde96b18928a8ebaa17d8853b302e11e1 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 12:33:52 +0100 Subject: [PATCH 320/550] use tree item element in tree element --- .../src/backoffice/shared/components/tree/tree.element.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts index 25e34c849d..3466abc60b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.element.ts @@ -8,6 +8,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import './tree-item/tree-item.element'; import './tree-item-base/tree-item-base.element'; import './context-menu/tree-context-menu-page.service'; import './context-menu/tree-context-menu.service'; @@ -118,7 +119,7 @@ export class UmbTreeElement extends UmbLitElement { this._items, // TODO: add getUnique to a repository interface (item, index) => index, - (item) => html`` + (item) => html`` )} `; } From 89f5832d2c9c2fbf208a765d709d0620c01926e7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 12:36:32 +0100 Subject: [PATCH 321/550] Make tree item context self-providing --- .../tree/tree-item-base/tree-item-base.context.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index d7c6b91b7e..b3560cbbc7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -7,7 +7,11 @@ import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/sect import { UmbTreeContextBase } from '../tree.context'; import { BooleanState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbContextConsumerController, UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { + UmbContextConsumerController, + UmbContextProviderController, + UmbContextToken, +} from '@umbraco-cms/backoffice/context-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; @@ -66,6 +70,8 @@ export class UmbTreeItemContextBase Date: Thu, 23 Mar 2023 13:00:06 +0100 Subject: [PATCH 322/550] add entity tree item kind --- .../documents/documents/tree/manifests.ts | 2 +- .../backoffice/media/media/tree/manifests.ts | 14 +++++- .../src/backoffice/shared/components/index.ts | 1 + .../entity-tree-item.context.ts | 10 ++++ .../entity-tree-item.element.ts | 41 ++++++++++++++++ .../tree-item-base/tree-item-base.context.ts | 49 +++++++++++-------- .../tree-item-base/tree-item-base.element.ts | 4 +- 7 files changed, 95 insertions(+), 26 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts index ee92e43e8d..f3a852ed7d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts @@ -14,9 +14,9 @@ const tree: ManifestTree = { const treeItem: ManifestTreeItem = { type: 'treeItem', + kind: 'entity', alias: 'Umb.TreeItem.Document', name: 'Document Tree Item', - loader: () => import('./tree-item/document-tree-item.element'), conditions: { entityType: 'document', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts index 6f40b6d6ee..b3aa588fdf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMediaRepository } from '../repository/media.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Media'; @@ -12,4 +12,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.Media', + name: 'Media Tree Item', + conditions: { + entityType: 'media', + }, +}; + +export const manifests = [tree, treeItem]; 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 6bdba312a4..d3ce0e6ae5 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 @@ -34,6 +34,7 @@ import './section/section-sidebar/section-sidebar.element'; import './section/section.element'; import './table/table.element'; import './tree/tree.element'; +import './tree/entity-tree-item/entity-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; import './variantable-property/variantable-property.element'; import './workspace/workspace-action-menu/workspace-action-menu.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts new file mode 100644 index 0000000000..934cd4b874 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts @@ -0,0 +1,10 @@ +import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +// TODO get unique method from an entity repository static method +export class UmbEntityTreeItemContext extends UmbTreeItemContextBase { + constructor(host: UmbControllerHostInterface, treeItem: EntityTreeItemResponseModel) { + super(host, treeItem, (x: EntityTreeItemResponseModel) => x.key); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts new file mode 100644 index 0000000000..7540c8156c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts @@ -0,0 +1,41 @@ +import { css, html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { UmbEntityTreeItemContext } from './entity-tree-item.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { ManifestKind } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; + +// TODO: Move to separate file: +const manifest: ManifestKind = { + type: 'kind', + alias: 'Umb.Kind.EntityTreeItem', + matchKind: 'entity', + matchType: 'treeItem', + manifest: { + type: 'treeItem', + elementName: 'umb-entity-tree-item', + }, +}; +umbExtensionsRegistry.register(manifest); + +@customElement('umb-entity-tree-item') +export class UmbEntityTreeItemElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @property({ type: Object, attribute: false }) + item?: EntityTreeItemResponseModel; + + render() { + if (!this.item) return nothing; + new UmbEntityTreeItemContext(this, this.item); + return html``; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-entity-tree-item': UmbEntityTreeItemElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index b3560cbbc7..298fb67aa9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -15,12 +15,18 @@ import { import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +// add type for unique function +export type UmbTreeItemUniqueFunction = (x: T) => string | null | undefined; + export class UmbTreeItemContextBase { public host: UmbControllerHostInterface; public treeItem: T; public unique: string; public type: string; + #hasChildren = new BooleanState(false); + hasChildren = this.#hasChildren.asObservable(); + #isLoading = new BooleanState(false); isLoading = this.#isLoading.asObservable(); @@ -43,36 +49,22 @@ export class UmbTreeItemContextBase string | null | undefined) { + constructor(host: UmbControllerHostInterface, treeItem: T, getUniqueFunction: UmbTreeItemUniqueFunction) { this.host = host; this.treeItem = treeItem; - const unique = getUnique(this.treeItem); + const unique = getUniqueFunction(this.treeItem); if (!unique) throw new Error('Could not create tree item context, unique key is missing'); this.unique = unique; if (!this.treeItem.type) throw new Error('Could not create tree item context, tree item type is missing'); - this.type = this.treeItem.type; - new UmbContextConsumerController(host, UMB_SECTION_CONTEXT_TOKEN, (instance) => { - this.#sectionContext = instance; - this.#observeSectionPath(); - }); - - new UmbContextConsumerController(host, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, (instance) => { - this.#sectionSidebarContext = instance; - }); - - new UmbContextConsumerController(host, 'umbTreeContext', (treeContext: UmbTreeContextBase) => { - this.treeContext = treeContext; - this.#observeIsSelectable(); - this.#observeIsSelected(); - }); - - new UmbContextProviderController(host, UMB_TREE_ITEM_CONTEXT_TOKEN, this); - this.#observeTreeItemActions(); + this.#hasChildren.next(this.treeItem.hasChildren || false); + + this.#consumeContexts(); + new UmbContextProviderController(host, UMB_TREE_ITEM_CONTEXT_TOKEN, this); } public async requestChildren() { @@ -95,6 +87,23 @@ export class UmbTreeItemContextBase { + this.#sectionContext = instance; + this.#observeSectionPath(); + }); + + new UmbContextConsumerController(this.host, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, (instance) => { + this.#sectionSidebarContext = instance; + }); + + new UmbContextConsumerController(this.host, 'umbTreeContext', (treeContext: UmbTreeContextBase) => { + this.treeContext = treeContext; + this.#observeIsSelectable(); + this.#observeIsSelected(); + }); + } + #observeIsSelectable() { if (!this.treeContext) return; new UmbObserverController(this.host, this.treeContext.selectable, (value) => this.#isSelectable.next(value)); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 601bb816a4..54f8f9d397 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -22,9 +22,6 @@ export class UmbTreeItemBaseElement extends UmbLitElement { this.requestUpdate('item', oldVal); } - @property({ type: Boolean, attribute: 'has-children' }) - hasChildren = false; - @state() private _childItems?: EntityTreeItemResponseModel[]; @@ -52,6 +49,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { this.#treeItemContext = instance; if (!this.#treeItemContext) return; // TODO: investigate if we can make an observe decorator + this.observe(this.#treeItemContext.hasChildren, (value) => (this.hasChildren = value)); this.observe(this.#treeItemContext.isLoading, (value) => (this._isLoading = value)); this.observe(this.#treeItemContext.isSelectable, (value) => (this._isSelectable = value)); this.observe(this.#treeItemContext.isSelected, (value) => (this._isSelected = value)); From dacafd3746f044af9aadcc49771228dce290fa1c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 13:02:02 +0100 Subject: [PATCH 323/550] add state for has children --- .../tree/tree-item-base/tree-item-base.element.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 54f8f9d397..0513801269 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -40,6 +40,9 @@ export class UmbTreeItemBaseElement extends UmbLitElement { @state() private _hasActions = false; + @state() + private _hasChildren = false; + #treeItemContext?: UmbTreeItemContextBase; constructor() { @@ -49,7 +52,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { this.#treeItemContext = instance; if (!this.#treeItemContext) return; // TODO: investigate if we can make an observe decorator - this.observe(this.#treeItemContext.hasChildren, (value) => (this.hasChildren = value)); + this.observe(this.#treeItemContext.hasChildren, (value) => (this._hasChildren = value)); this.observe(this.#treeItemContext.isLoading, (value) => (this._isLoading = value)); this.observe(this.#treeItemContext.isSelectable, (value) => (this._isSelectable = value)); this.observe(this.#treeItemContext.isSelected, (value) => (this._isSelected = value)); @@ -102,7 +105,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { ?selectable=${this._isSelectable} ?selected=${this._isSelected} .loading=${this._isLoading} - .hasChildren=${this.hasChildren} + .hasChildren=${this._hasChildren} label="${ifDefined(this.item?.name)}" href="${ifDefined(this._href)}"> ${this.#renderIcon()} ${this.#renderActions()} ${this.#renderChildItems()} From 5c5078ce088f61a7afc045c7004e540a340727b2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 13:13:01 +0100 Subject: [PATCH 324/550] use tree-item for child items so they also get rendered with the correct extension --- .../components/tree/tree-item-base/tree-item-base.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 0513801269..8b78c6586f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -138,7 +138,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { ? repeat( this._childItems, (item) => item.key, - (item) => html`` + (item) => html`` ) : ''} `; From 525ad12bf036f2d93bd954ea5990b879bf60e68a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 13:29:49 +0100 Subject: [PATCH 325/550] add temp entity tree item manifest for all tree items --- .../documents/document-types/tree/manifests.ts | 14 ++++++++++++-- .../backoffice/media/media-types/tree/manifests.ts | 14 ++++++++++++-- .../members/member-groups/tree/manifests.ts | 14 ++++++++++++-- .../members/member-types/tree/manifests.ts | 14 ++++++++++++-- .../backoffice/members/members/tree/manifests.ts | 14 ++++++++++++-- .../settings/data-types/tree/manifests.ts | 14 ++++++++++++-- .../settings/relation-types/tree/manifests.ts | 14 ++++++++++++-- .../templating/templates/tree/manifests.ts | 14 ++++++++++++-- .../translation/dictionary/tree/manifests.ts | 14 ++++++++++++-- 9 files changed, 108 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts index fbe7421b2c..30b9f1493a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.DocumentType', + name: 'Document Type Tree Item', + conditions: { + entityType: 'document-type', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts index 526aff49b2..164fec3904 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMediaTypeRepository } from '../repository/media-type.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.MediaType', + name: 'Media Type Tree Item', + conditions: { + entityType: 'media-type', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts index ee8ef370fb..f4e3c2bb10 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberGroupRepository } from '../repository/member-group.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberGroups'; @@ -13,4 +13,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.MemberGroup', + name: 'Member Group Tree Item', + conditions: { + entityType: 'member-group', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts index 042a06d314..e15489ab38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberTypeRepository } from '../repository/member-type.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberTypes'; @@ -12,4 +12,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.MemberType', + name: 'Member Type Tree Item', + conditions: { + entityType: 'member-type', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts index 3be0767383..00ee74f8c0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbMemberRepository } from '../repository/member.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -11,4 +11,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.Member', + name: 'Member Tree Item', + conditions: { + entityType: 'member', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts index 6aef98a542..253a74a011 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDataTypeRepository } from '../repository/data-type.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.DataType', + name: 'Data Type Tree Item', + conditions: { + entityType: 'data-type', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts index 9b806c1dd6..c362124d31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.RelationType', + name: 'Relation Type Tree Item', + conditions: { + entityType: 'relation-type', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts index e1aff10e2f..0a9f6a445a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbTemplateRepository } from '../repository/template.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.Template', + name: 'Template Tree Item', + conditions: { + entityType: 'template', + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts index 50c7f506a6..db5158f921 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts @@ -1,5 +1,5 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; -import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { type: 'tree', @@ -10,4 +10,14 @@ const tree: ManifestTree = { }, }; -export const manifests = [tree]; +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'entity', + alias: 'Umb.TreeItem.DictionaryItem', + name: 'Dictionary Item Tree Item', + conditions: { + entityType: 'dictionary-item', + }, +}; + +export const manifests = [tree, treeItem]; From 4ab069a6146cca54f21abe66d044450e582a946c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 14:19:02 +0100 Subject: [PATCH 326/550] render temp status symbol on document tree items --- .../documents/documents/tree/manifests.ts | 2 +- .../tree-item/document-tree-item.context.ts | 10 +++++++ .../tree-item/document-tree-item.element.ts | 30 ++++++++++++------- .../tree-item-base/tree-item-base.element.ts | 25 ++++++++++++++-- 4 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts index f3a852ed7d..ee92e43e8d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts @@ -14,9 +14,9 @@ const tree: ManifestTree = { const treeItem: ManifestTreeItem = { type: 'treeItem', - kind: 'entity', alias: 'Umb.TreeItem.Document', name: 'Document Tree Item', + loader: () => import('./tree-item/document-tree-item.element'), conditions: { entityType: 'document', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts new file mode 100644 index 0000000000..49c2653424 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts @@ -0,0 +1,10 @@ +import { UmbTreeItemContextBase } from '../../../../shared/components/tree/tree-item-base/tree-item-base.context'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +// TODO get unique method from an document repository static method +export class UmbDocumentTreeItemContext extends UmbTreeItemContextBase { + constructor(host: UmbControllerHostInterface, treeItem: DocumentTreeItemResponseModel) { + super(host, treeItem, (x: DocumentTreeItemResponseModel) => x.key); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts index d488839fde..c24c2ddb03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -1,6 +1,7 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; +import { UmbDocumentTreeItemContext } from './document-tree-item.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -9,18 +10,23 @@ export class UmbDocumentTreeItemElement extends UmbLitElement { static styles = [ UUITextStyles, css` - #label { - display: flex; - align-items: center; + #icon-container { + position: relative; + } + + #icon { + vertical-align: middle; } #status-symbol { - width: 6px; - height: 6px; + width: 8px; + height: 8px; background-color: blue; display: block; - border-radius: 3px; - margin-right: 10px; + position: absolute; + bottom: 0; + right: 0; + border-radius: 100%; } `, ]; @@ -30,12 +36,16 @@ export class UmbDocumentTreeItemElement extends UmbLitElement { render() { if (!this.item) return nothing; + new UmbDocumentTreeItemContext(this, this.item); return html` -
    - - ${this.item?.name} +
    + ${this.item?.icon + ? html` + + ` + : nothing}
    `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 8b78c6586f..0bba8e6432 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -43,6 +43,9 @@ export class UmbTreeItemBaseElement extends UmbLitElement { @state() private _hasChildren = false; + @state() + private _iconSlotHasChildren = false; + #treeItemContext?: UmbTreeItemContextBase; constructor() { @@ -108,14 +111,32 @@ export class UmbTreeItemBaseElement extends UmbLitElement { .hasChildren=${this._hasChildren} label="${ifDefined(this.item?.name)}" href="${ifDefined(this._href)}"> - ${this.#renderIcon()} ${this.#renderActions()} ${this.#renderChildItems()} + ${this.#renderIcon()} ${this.#renderLabel()} ${this.#renderActions()} ${this.#renderChildItems()} `; } + #hasNodes = (e: Event) => { + return (e.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0; + }; + #renderIcon() { - return html` ${this.item?.icon ? html` ` : nothing} `; + return html` + { + this._iconSlotHasChildren = this.#hasNodes(e); + }}> + ${this.item?.icon && !this._iconSlotHasChildren + ? html` ` + : nothing} + `; + } + + #renderLabel() { + return html``; } #renderActions() { From dca92f46460c8812205ce6870ded74134a7fef01 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 14:24:50 +0100 Subject: [PATCH 327/550] temp document tree item label --- .../tree-item/document-tree-item.element.ts | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts index c24c2ddb03..68ab99af32 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -39,17 +39,28 @@ export class UmbDocumentTreeItemElement extends UmbLitElement { new UmbDocumentTreeItemContext(this, this.item); return html` - -
    - ${this.item?.icon - ? html` - - ` - : nothing} -
    + ${this.#renderIconWithStatusSymbol()} ${this.#renderLabel()}
    `; } + + // TODO: implement correct status symbol + #renderIconWithStatusSymbol() { + return html` + + ${this.item?.icon + ? html` + + ` + : nothing} + + `; + } + + // TODO: lower opacity if item is not published + #renderLabel() { + return html` ${this.item?.name} `; + } } export default UmbDocumentTreeItemElement; From 1aef861c91bdf0dfde5a3992971c083a6fa0c18a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 23 Mar 2023 14:39:33 +0100 Subject: [PATCH 328/550] set has children to false --- src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index a99805afe0..49e4d48e49 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -516,7 +516,7 @@ export const treeData: Array = [ name: 'All property editors', type: 'document', icon: 'document', - hasChildren: true, + hasChildren: false, }, { $type: 'DocumentTreeItemViewModel', From ed0187f888174ccb5b87670c33f79a33ce09b4e1 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Mar 2023 15:17:08 +0100 Subject: [PATCH 329/550] upgrade uui to 1.2.0-rc.1 --- src/Umbraco.Web.UI.Client/package-lock.json | 1934 +++++++++---------- src/Umbraco.Web.UI.Client/package.json | 8 +- 2 files changed, 908 insertions(+), 1034 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 524f3d9036..0123e24a79 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,12 +9,8 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.0", - "@umbraco-ui/uui-css": "^1.2.0-rc.0", - "@umbraco-ui/uui-modal": "file:umbraco-ui-uui-modal-0.0.0.tgz", - "@umbraco-ui/uui-modal-container": "file:umbraco-ui-uui-modal-container-0.0.0.tgz", - "@umbraco-ui/uui-modal-dialog": "file:umbraco-ui-uui-modal-dialog-0.0.0.tgz", - "@umbraco-ui/uui-modal-sidebar": "file:umbraco-ui-uui-modal-sidebar-0.0.0.tgz", + "@umbraco-ui/uui": "^1.2.0-rc.1", + "@umbraco-ui/uui-css": "^1.2.0-rc.1", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", @@ -5640,839 +5636,780 @@ } }, "node_modules/@umbraco-ui/uui": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.0.tgz", - "integrity": "sha512-t5NjWxXivl5Em2xusuudQ8asJtayrpw2Y6G5Ge4P2CdyFF4YD5C1hD54HzkisfuQJDTSogERVtcNMts9y7sHeQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.1.tgz", + "integrity": "sha512-6DexPMgFZ4qm6AwWyd7q6rdkIJCuqf8vVNlVZqGlbaE9OnrWclNBQ+ZGsJrXdY8Ugs1V3u1IjiHd8Gwp4UpBvw==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.0", - "@umbraco-ui/uui-badge": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0", - "@umbraco-ui/uui-box": "1.2.0-rc.0", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.0", - "@umbraco-ui/uui-card-media": "1.2.0-rc.0", - "@umbraco-ui/uui-card-user": "1.2.0-rc.0", - "@umbraco-ui/uui-caret": "1.2.0-rc.0", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.0", - "@umbraco-ui/uui-color-area": "1.2.0-rc.0", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.0", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0", - "@umbraco-ui/uui-dialog": "1.2.0-rc.0", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.0", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.0", - "@umbraco-ui/uui-form": "1.2.0-rc.0", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.0", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0", - "@umbraco-ui/uui-input-file": "1.2.0-rc.0", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.0", - "@umbraco-ui/uui-input-password": "1.2.0-rc.0", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.0", - "@umbraco-ui/uui-label": "1.2.0-rc.0", - "@umbraco-ui/uui-loader": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.0", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.0", - "@umbraco-ui/uui-pagination": "1.2.0-rc.0", - "@umbraco-ui/uui-popover": "1.2.0-rc.0", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-radio": "1.2.0-rc.0", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-ref": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.0", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.0", - "@umbraco-ui/uui-select": "1.2.0-rc.0", - "@umbraco-ui/uui-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.0", - "@umbraco-ui/uui-table": "1.2.0-rc.0", - "@umbraco-ui/uui-tabs": "1.2.0-rc.0", - "@umbraco-ui/uui-tag": "1.2.0-rc.0", - "@umbraco-ui/uui-textarea": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.0", - "@umbraco-ui/uui-toggle": "1.2.0-rc.0" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.1", + "@umbraco-ui/uui-badge": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", + "@umbraco-ui/uui-box": "1.2.0-rc.1", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.1", + "@umbraco-ui/uui-card-media": "1.2.0-rc.1", + "@umbraco-ui/uui-card-user": "1.2.0-rc.1", + "@umbraco-ui/uui-caret": "1.2.0-rc.1", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.1", + "@umbraco-ui/uui-color-area": "1.2.0-rc.1", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.1", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1", + "@umbraco-ui/uui-dialog": "1.2.0-rc.1", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.1", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.1", + "@umbraco-ui/uui-form": "1.2.0-rc.1", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.1", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1", + "@umbraco-ui/uui-input-file": "1.2.0-rc.1", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.1", + "@umbraco-ui/uui-input-password": "1.2.0-rc.1", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.1", + "@umbraco-ui/uui-label": "1.2.0-rc.1", + "@umbraco-ui/uui-loader": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.1", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.1", + "@umbraco-ui/uui-modal": "1.2.0-rc.1", + "@umbraco-ui/uui-pagination": "1.2.0-rc.1", + "@umbraco-ui/uui-popover": "1.2.0-rc.1", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-radio": "1.2.0-rc.1", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-ref": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.1", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1", + "@umbraco-ui/uui-select": "1.2.0-rc.1", + "@umbraco-ui/uui-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.1", + "@umbraco-ui/uui-table": "1.2.0-rc.1", + "@umbraco-ui/uui-tabs": "1.2.0-rc.1", + "@umbraco-ui/uui-tag": "1.2.0-rc.1", + "@umbraco-ui/uui-textarea": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.1", + "@umbraco-ui/uui-toggle": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-CV40V9kMo5+fmTybbKc/ZKn6I/7xPWlkvPHifdu6WhwRsFeC4P8nPV6CKgxnrTIdrNbUjwK9Kn0UCs/UiKQ6FA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-0RxQAxzcEWLk0LoeMk0K6svRjFGDhoEpndNtKe9uyfJCoYxEVeH0SVMhzlbCGia7kUejS7b/PzLJ69ZrKqSAlA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.0.tgz", - "integrity": "sha512-xlz49sZAr5nVb4eX/eCssox8Wn/Qm4slIIZTahu2jKo1tL9s75iEQFjGGjVbNJV3EfEn5fXreHez2ADwA19d5A==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.1.tgz", + "integrity": "sha512-RYmBQ+chBF1SrJwzc6Dpwq3kSRWF//GI0DBpGCXLz7URc04GrbH6E2zL2c6vGR/sYxIVDunVEZ17QODxzv+/Gg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.0.tgz", - "integrity": "sha512-XQjl2YFGtg6vFVrlUoF/Ulbc9tmbFAbIQxSJWP/CxvQgOqFRldoeNZ9puiTOFykvCaKDc2MBkTwC2vUI/F2DCA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.1.tgz", + "integrity": "sha512-Tlsg7jwKbQzwW+ORSM2T7HfsXsjd6WANa9iLhxNxaCp9K2i8JWtFc9B/2QYti5FShhPPmsz9NKa3IJlzR9g1BA==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.0.tgz", - "integrity": "sha512-QoW0puGm6yF7h77C9tq4zc8jZIDnmXsokthCVAcwks2i4BQV4SRfsEJZOQAphdNE+VOIPO5whZG5+D7smDHhCA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.1.tgz", + "integrity": "sha512-vBnPwAF2Q0brsoSKNXelFSp37iomqqdJkHnxOpv+ezC0XwG9EXsIVZYUGFLlHxJaoSnnXQzB7ITAHmK2wI2toQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-base": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.0.tgz", - "integrity": "sha512-q/QU6MRoU/d6pepobqNjEEUu8fcUfQ2RjT4wWQA/z1CFtXF1xIQGGHemdmkb/V+RqUma8CimDscklxxR7yARRg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.1.tgz", + "integrity": "sha512-KY1wU+IYa+Wqlpkk0ggqJefB1vv2kzLlX0CDBgixIIYcPEP/JZ6E54T34c2Dhbz8/66yzCsVYVDCQBtVcr22fw==", "dependencies": { "lit": "^2.3.1" } }, "node_modules/@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.0.tgz", - "integrity": "sha512-Jno5TPnwJbOi7yvSigCBmMEqK1fY2XdKUMFpB2ZXVi4T8o69cq5m+bcboARshf1NdPmkWqQMDNroMqG73gFhiA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.1.tgz", + "integrity": "sha512-TYj+IiektbvFc+XvRMHPaYw3ccDy0c2eVwYrU96ywgU04STOcEv/vb1NdUDQ8osQLeQgk7lWmXl8G1dK0ESKOw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-box": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.0.tgz", - "integrity": "sha512-+JYJ6lwoLq7MsD51acS7ZOFrVwUiWRWywL90rGtPYXHDTkw5D/MdeFgbQjBU+vcIEEZWR5iwNX0uTpA7hO3xKw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.1.tgz", + "integrity": "sha512-+8rYP6O9OaQY8oCrpYhO11kA/96Gq1F7FyOVbGgPXKDejElTvP4QifI1GLg1vJ8kmgX6AZu0ypHTRGhF5ohjtQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.0.tgz", - "integrity": "sha512-SyjimBB0E7fpIepBxcVOIJSYvg8Yjgtel8fA7VG/sPVmP4YSZeGoRB2G/eHAvH/VG9L7/ENOUIzEYCFYXbHJsw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.1.tgz", + "integrity": "sha512-e7o2re7Rn0Ipu3D2BennKbEM3HOIRFhaTy/0zIG14bp3ktg2vR84GtB8WujonFG9/Mrp22K7IZTfGR0+8n22oA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-button": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.0.tgz", - "integrity": "sha512-VnA+1FoUpg5tMrGfpLnFCMLtDPM+ACAu1+XQcuo6o99XUYdSf+Z5lf/P4NBCDfdqdKXBSDut/Npu7DYJsYIFHA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.1.tgz", + "integrity": "sha512-B9AkSPd/p6+mm7Qmk+wAPhI6XV+HZU1uWIPIfObPgEHorMVUwIEl2UUPgx6Qh0i79+o6QnrW9Ki9sTCfXUP6Dg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.0.tgz", - "integrity": "sha512-ROxoZPTVDkJKhX9wcmZGOqdtWiVs13QpL/2habQTzkS2JeaTTiLhIf/KPeZpZ0JPSbJnh0yj5nCL13Ov2rS96g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.1.tgz", + "integrity": "sha512-IkRtrP0hplhFjIwk6ikxrrWSGycFxEEYWjK0Uha7D666xWJQKj+WBIvHPvRBcAyZXRzjw8ZZpsKUObrHcpVthw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.0.tgz", - "integrity": "sha512-A/FO9mRXFku+Qjg2uDNbDNRamKpP99kckwRy3hH8hzl6MpynzD+Cr7VS/bL0lmBa/G55XVrNi0BeuGbunEGvpA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.1.tgz", + "integrity": "sha512-klqnbEpIUumSgfTaYobbHKuQESQD81QYllk+ScOoSMJlZQIy8laDRa6c7cYfGBJb+jQl5EvXnYU+B961pSDxLA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-card": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.0.tgz", - "integrity": "sha512-ZnQSb8k9N6wSeD++8pL2R7jo01FW3bKQ6SzAAlq4MFppYaylgW6BcnhIcSxiXciWRgNsb+4BJhc/0gxbJh25+g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.1.tgz", + "integrity": "sha512-GVmRf2lAayFhFVu7CtN+kwQFC7l3CP2ct+bpzuN8HXGc4BgyxGxnVpA2+H+7NrUzae5s2E8PNPSRICqDMJQ/ew==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.0.tgz", - "integrity": "sha512-xgS1hK8OYimUhKP//DpKt2W054ciW+1DiEV0Qr1zWRDgAN3F85IwNiLVs6JPeBjY1yM4mOvC29POG35jc/yBmg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.1.tgz", + "integrity": "sha512-gHBjmTwkvhblP5N4JucITA1JcC5hjl22G71bCAmXvcjT5KEF94t/gGEP0WYXIhrosT52IPd2S+9u1VcXW4NsBw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.0.tgz", - "integrity": "sha512-8fH3IrLtPV9rE/dkEID5rMoTIPEg4E/9VoYHms59zNTdtyQKG8dM0vLSKTbz72zaYH+Ox5VHp4X/CVIXFDH2rw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.1.tgz", + "integrity": "sha512-F9E+XU5y+a6zeS12dCmFT+UrygxY8NufaHU3uyqq/qbNFiKQfzXm+uuUoy1pWe0o4EP/uW14azSZpI70MwIVUw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.0.tgz", - "integrity": "sha512-B0QmgKXWt5yU0/misn3sY8PsAjOfNzOCJ/LkC9cI2zGX/tQNbfziOFwk6bAQluQP2zJnAoab1leSghP+1PcTEA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.1.tgz", + "integrity": "sha512-qxI5YUvwrmHaovQk1AtEYLe7TGaaX3pw9cNgI8joDNs/uvAhYuVXISEM03aooZQ3okveeJwgWeuiYJvXKhjptA==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0" + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.0.tgz", - "integrity": "sha512-V4nKfTYEqJvxG/jbwwPCzZuSK4qKra4aqWrtU6B6QMcYohYJVTaEvVE4No46AtbtrSfvKm050pMzb9sRxiMLcw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.1.tgz", + "integrity": "sha512-tf0mTznnLsE8HF7HsIrSa6TKowMsqcXMl5duG6xzt+kRnuXNFSHGdtks2S42etR4/d48tTSedXiqK6+8iWxzow==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.0.tgz", - "integrity": "sha512-7smHPIBmniccCuaA3JaFCLia5uyClFElv3WBngX2qbz6JwKXQ9nemYaFOuM4KjcukMH9iFMQQy7sbrmRar0reg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.1.tgz", + "integrity": "sha512-BZRRCyfUhg4VVL7wGx8tF9/HBZPIRfWRlxG8Uk58D9/X5qux13roIldTD+iJYqbhLvBqLcLNNh9K8Tw5W4J50w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.0.tgz", - "integrity": "sha512-cUJdrcNEkXNAwjeQEV0Vi/Hj4xaj7rFOMm/U9Q9JlRUX05xkBRl01AjS6Qi0QDKEPtLG9YC+AnNXpFFA1rjtaw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.1.tgz", + "integrity": "sha512-eoMSn0YI9smAU3m005ssw3kW95sr6QZJkVzsrq79jcjL6Cb44Gx+Qmo9fEY0MWAPfvazclPW1zBFGlRtdGC2CA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.0.tgz", - "integrity": "sha512-rpMBG+ZyrL10w7EX/UqtWZHhwZ3oe7MSf8cQqimK/Arn1kpBqZ4JJLpJPcZ1bwcYekHbT5LbHZBD/EuHMRP1bA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.1.tgz", + "integrity": "sha512-A0EooYaoi8Bef6Tm+082rzzVyMAHCK36KLHTn4R7d5vv47b0S0AfcZcIhM9EJtL+wvlF9jLD/ZxpRSrBCjXDAw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-04qZnUlVJmk7dN+r8BJNeZHvmu5/TqIq7WVlmHmfmbULW4hJkw18qBamfhOP7nFz06b21pfLFjBy61dqqH1tUg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-H+pyB70V9Wi7n8sqSxghPfeT73KMWh/jyQRlQj1x72AFvCFPBmJBB9biOQTzHujU8PdVzT9yPhPz/+lT3ZFPIg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.0.tgz", - "integrity": "sha512-acTb4xOwSMU3j1xa0IRpykdw7y9wQZoNWBPA/wWilCYJcxnJ9BeDU7QZaLrkGYOhq8vfBjtxO6+DZ4gBd5/4CA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.1.tgz", + "integrity": "sha512-a+gDiQA9Ffz9IskcUrpblbTOneUJeTomauM6SdUffWGmBZjWcA4tF7Wk1ipd8cfoRZ3X02P3E0uK17OACuxxqA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.0.tgz", - "integrity": "sha512-mJIi+PYeQP9naFZ9CBWyKIT5C10kzavQXkfA5dp1WBwyoTbmJzDaXXkz0vf1IcYSKBjJ3y67PmVRdaR30J8GZA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.1.tgz", + "integrity": "sha512-gLYCnsVswaT35jTQ4sZypNpcgWWJ5XThNdSE83/ivEyfwKNJwAPUKkbXVO2s2y818PtvJ2QyxX2G8sYzrGs7FQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.0.tgz", - "integrity": "sha512-TnijClKq4NK7tGY0VaG3bZaTz8FYoLFezl1eXKIHYpx/hiidbu+a22Kcyio5TAW7VNFGFjJ3h3JQt06pBRBphA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.1.tgz", + "integrity": "sha512-WhhDXnrz+CmO4V7wpJuRyBBpNbuT8tvYuVRop0v6Hmpcwve2YtaKEG2nnjGWWEW1tuyBWTvREeXAi1P3UX7/Rg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.0.tgz", - "integrity": "sha512-K3CcgBPXiUnV/1sZvwKtxdgmIjjYWBNDtJ8Bc2jpqcyN2C0rcFLBwJwTXzBtIxakPXj9G6vP/OyXRUnN4I+lsA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.1.tgz", + "integrity": "sha512-OeN1fnZPVq6gupyEMKiu4i1CPTeHcnICrE6I1K7mrrjqipXFrfIQMTWnCaj5VhTDnquhuDFL7AUnpmkd+WIKyQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-css": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.0.tgz", - "integrity": "sha512-eE093LnIKdr1RKggmcsVI2G7Tyr+I0lV7XH4Kuq3cPmDaOC1C1UBvRPVdVhdEtQ2LA67SAsTvXWpyEuYKZO6OQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.1.tgz", + "integrity": "sha512-37DRp4JjzwV/4lgL8z4zH+nhu1lNGzh9Z7DL/ForVgqNJGbtHejabw2Zn4WUb6TA0iXJ8x9mVytwM9cThIZlEg==", "dependencies": { "lit": "^2.2.2" } }, "node_modules/@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.0.tgz", - "integrity": "sha512-j/ZrWFJPXBXvt0IrxEB6DoUOejsDClJWlfpH8bft8bjF4bw0uDWDFXW+wlE9aSYagALYXJIJmKzyzfxPJsjyFA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.1.tgz", + "integrity": "sha512-8NJ5l6dMirRpIHIiC7C4y6CcRZw46KGUBO/F+/5Kjhn2sHUWIomCt589qv73K0uNNXOrgAC1DXUYXq7QzLHGjg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.0.tgz", - "integrity": "sha512-ZpLOucZTNEsm9cuLxWOzN437iI0zxVdArYBaPQ8G7Mkn3AxvOoqiETHq+rnNJRIsOIh0CfMuD5XWX6hPt2w+Ug==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.1.tgz", + "integrity": "sha512-gFpTDHItpmBw73bMVF2VWutdNmDB81wvovmIX8zP+vTu3UItlsrhFR4nOz+EHxu+feCHFZc+plA9Chpc7sD8mQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.0.tgz", - "integrity": "sha512-1dkcZ6AHsLABFDhCWwNdyu5oMrNnV25cmbUsesBSyM3zedDtYKD2MZLJ+QEBXaHBtiDxO+G8mAL6Jof952gheg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.1.tgz", + "integrity": "sha512-JsTSY/YZIjRThXFqP0AFgxGRugBsEI70xge914ZaK+bvbuHwy0UvonoE1KmLVNdbU60CXE+LNuA52FdtaToPeA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.0.tgz", - "integrity": "sha512-fqbMD+uwxvV+uFrj5akmIkq1ngASKkZunt7wgq4wFeFksAi9QCMdfvdAE0aqhy9RbzdQHfLmaxOOrL8aLh3zwA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.1.tgz", + "integrity": "sha512-raSosqY73tphVzi6LxmBkim81oVujKodUvr5ALaTwPDzR+zgCep6FumcFBugd9ZLOV+SlBb2cPwKvovqnIieGA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-form": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.0.tgz", - "integrity": "sha512-kAR51/hAxg8rbLgam9/te3kq7aa9+HTQ2YRRyrdy2pJVVHMDIl2lKvzVf05ya7nTapW5+SMoUqWV5WjZg3lhjA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.1.tgz", + "integrity": "sha512-sjOUxbgXOZFV6B2eLNw/6Y3ayewl2v24dK4yH4XuvYdPKWA6xAJALBnvUxp2JoskrWn18H+dw6F1UbYrk1AnxQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.0.tgz", - "integrity": "sha512-fbY2B2QJtmnd+GdLwEac9+egrIADeCJiGiYgl1ohcp0TYTuQakT6yhNSdkVsBpJ4dtH1+xFbsW2j8a5oRHozoQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.1.tgz", + "integrity": "sha512-am0bBYbGzQFbOYNFH/nHHDg6O5oegTApQ9se/UAtxsaTxLqIWOuyMjTyxykcQQkcH5VPqwEOSpPDeMbgT2JkaQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.0.tgz", - "integrity": "sha512-gSEqpaHVWYGs3SxpflRTxO328ITRxmRWsDj8nWXCFGKtUK7xNKdhr85P4DWxW76u4UdcCk+lReoUxmVRelMm1Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.1.tgz", + "integrity": "sha512-4d09jLFwsXYY8+LgL56R1+mTXzXTO5hIv4bILNaEsppze/KtJLmObmrWyilm1OyDqqhERKWJ1Dn3Zp7QfiySmQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.0.tgz", - "integrity": "sha512-U98JO00fXes3Ifjq144dDKKh9ASEJ8UkBgb9aDRlVEIuku6VfhUbENLH8r3zSpgFh3lV0ObXLJMnbIQrW+tRaA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.1.tgz", + "integrity": "sha512-jZjVhAG1YdzPUikBy39Z30iq4YXfJM/IqdoHD3YV7/YblIzlm0OcF+TnkjoLt1Y2ajY5iZTixBUti/NBpZ1xpQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.0.tgz", - "integrity": "sha512-CQTPh/2YE6Zxa4yJMNHPDBUOibmzkNKuyavwMwQ3oFB6pOJU5agBFasS3QOaw8p6Pv9i7wwKQC7keE14fJK26g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.1.tgz", + "integrity": "sha512-/GT/qLEbibP92LK229ZAuZoA/P79Mm1f7BbZ4DOc6BpeUkd6WfEaoqOoYUaKwcmb/0wU3l124Kr7bPhCar2Smg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.0.tgz", - "integrity": "sha512-zSILXAwVAvb52vlFgfIkqnaPm7So9s0MaPrjKjgluC2Ii7CZIyNwr9fjaboSrPngsjoGT2C4gUYYoJjp6vw5ew==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.1.tgz", + "integrity": "sha512-ikB7KbHrFRvtObm92LkEuxX9Ll43rnucw1IcRjnf98cZgcrrWJYKVXw7ggkFpnywYfSk0lT72Yr7NSQH8ErVJA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-input": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.0.tgz", - "integrity": "sha512-e8CabJJMrD+D8wBXKDgHQ8T7SQ7Rf7iLPzL55duLUrO80PATiMxqppyIh567bW9s5soDX7DhQNBX+UIa57chsQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.1.tgz", + "integrity": "sha512-EWRBV/sF6VQHTUZasgtl6mFuFIe4O5bViwDmUGE6WX8A2VYwDqid7PYdQKVrgUGyLKpWgXhq4VOil29L//uyvA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.0.tgz", - "integrity": "sha512-kkVSCqv61AZEHd0b4p0vmoEYosDjLl/YG3a2FEuXjBn+F6lETW+RriuhKY3a0pyRA+gTI9GRR86icpSC0KpHfQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.1.tgz", + "integrity": "sha512-jd52PgC64bLVlcc01DK4YJNALt6U6rucb/50J652mWu0eqw8ds6oSTqIz5TWSgCZcgPuEPF/6IY+KOoffa0Ixw==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.0.tgz", - "integrity": "sha512-k1azXchNXcFy0QgsIm5ecJWo5Yh95vPRfwTohiDUUg4kla+yHIVHcpkNosqhYD4FKm8cAv4cdQr7o2eI+ExL6A==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.1.tgz", + "integrity": "sha512-mWcQrWmMFBskChV1AtBPLalToiEIdfbIJ6DrXzaaT08H7oWEsV/ypl2XRI18RcnAvGRPnHABppZa6HvrL/oJnA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.0.tgz", - "integrity": "sha512-IWsAJCRUZFVdpUDnup60i7MS2A4DePU1YIp460veAbwIZZjZBG4x9mmD6EvjFkP5YDaqCwyg3k75p3hC9RiQzw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.1.tgz", + "integrity": "sha512-ErcjBAOLVXDuGJawuqN1WrkimzhgOpGB4EusF0SBfbeZzZv4q+cJZzKz/pNFajdf0NYo4iQZZ0NmKwZ1a+jtOA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.0.tgz", - "integrity": "sha512-y5uKat6H7G752q2svp6iFi0UlnlpZuj+qlUVp7GJjLJ2tYWS7M13KnNXrhOOZW5kusXJsXSw/+g3YE30f3rydg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.1.tgz", + "integrity": "sha512-udkhE2WqYovWvuBriFDgOyFFHt9TStsTZjQVMtnr0eyeqi0m0zP4zwjv2kx2ug6JX5pGOCjep6Fw0MH+2wujKw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-label": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.0.tgz", - "integrity": "sha512-aG/oSvVx4U36mW2XK/HF+sEj42WM/PTO4a/sDYA62gDhok1Ksl+Mk6tdTDzBh3sdGYoZDemtOcWvjd87pPgimA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.1.tgz", + "integrity": "sha512-Bzo0IIa5jz07/fcinzIEGS/Q+vT1U935othOoQVDGi5jVOAJV5c0ciWoWthmg2hxIMZ+XacxL0PwsrEEaC1imA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.0.tgz", - "integrity": "sha512-hfI3wZQxrAbsq+sNca6yfZ41vUOPIlg1clZNCSh76XD5YwTgFtHDse1HBrib7NY4kkOxHhRCFW4RO7BgWJcbtA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.1.tgz", + "integrity": "sha512-BNMZFrn5uwvQMYjArd8PU77TkwySy3m6dDzL2qwxp5dcbqOBA7Mi81qsAGqhyJNXqY1IAGQONZXRE6gvMewF4g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-DA1Tbvnri0HWbbzSe5v4wVezdHang8cmAfActLawF6LG9CV6LZLxSMMsSzbDBisGS8cscc0RgAeSLXnlNaLN8w==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-R1TYp04AmzXf2YzH0IY7T8FXGYgHdR6HoJcLbIFt+AkmWKgI5QZNtBPCsIVwK2FtJQLOoEzcxHgw5SEXpLfzKQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.0.tgz", - "integrity": "sha512-GrRVkZrLSk1Pjmo0JtbGNUfYCVZ4ZWIGo78GDPRPOdccuTVNLS1HwdKfNV+ZRJe0hJYt1ALglSprujuG67ORcA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.1.tgz", + "integrity": "sha512-4So5Wm7xkIspd67f2pNlWUdomqo1RjLvQWZ+3oa1bs0dCJli52HNzL15RSps4JDwyzi9gS64S2eg3mLZhp3SkQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.0.tgz", - "integrity": "sha512-XGytEGLb1tTnEP6eB6K/RJXYzGhhgfwrm7/OKuMvIANc2OI0toYpDSOeRclm7W4tQwZCM9OadnGXZYkzJGcj5Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.1.tgz", + "integrity": "sha512-xEEi631R32i47R69VDhEecYwNFxW9VhvKLpYsi0Ud1lsaTtxBa75BIXL0eYXfAOgBVq9LQoFrfbWizOakUBl5w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-modal": { - "version": "0.0.0", - "resolved": "file:umbraco-ui-uui-modal-0.0.0.tgz", - "integrity": "sha512-BYfbO5UocZrtj8t1Baox3ivldbNyoKugZGvwKXl0XZ7FZVGvAMrVmzZSI6KtEvYl9Jey/I8VqkZh30QBflEM0Q==", - "license": "MIT", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.1.tgz", + "integrity": "sha512-qQ02YRI8qvhA+Hdl0amRR9qY6nxJQfuXXRGnKpweGzwoY7l8vcuCFWjxNTBY++r6D2B1WD7elHvEgr8hM/QGPQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - } - }, - "node_modules/@umbraco-ui/uui-modal-container": { - "version": "0.0.0", - "resolved": "file:umbraco-ui-uui-modal-container-0.0.0.tgz", - "integrity": "sha512-nsw2fkpOnG7pU+TqDZqXF57eNw2a4zIyN1TllVNEU4tdPrF5c4vTyIzE5O6Flsu8euCVruDZepo9SyLTm6jnew==", - "license": "MIT", - "dependencies": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - } - }, - "node_modules/@umbraco-ui/uui-modal-container/node_modules/@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "dependencies": { - "lit": "^2.2.2" - } - }, - "node_modules/@umbraco-ui/uui-modal-dialog": { - "version": "0.0.0", - "resolved": "file:umbraco-ui-uui-modal-dialog-0.0.0.tgz", - "integrity": "sha512-hv3LQ/kzTZQMMXDt8NM5ZJTIsEYof5zKx9VFxbUGnhJhNRLeJ4bk9suWVl8h942VsOJwR+NbXzOs4XTIqXb9MA==", - "license": "MIT", - "dependencies": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - } - }, - "node_modules/@umbraco-ui/uui-modal-dialog/node_modules/@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "dependencies": { - "lit": "^2.2.2" - } - }, - "node_modules/@umbraco-ui/uui-modal-sidebar": { - "version": "0.0.0", - "resolved": "file:umbraco-ui-uui-modal-sidebar-0.0.0.tgz", - "integrity": "sha512-qQTO/YD3wzACmHf6QVW5c2smWMPougDwyKLV6Zku+QdgeZleS1ZiR/AvqHVHiRjuQ84ZhKyBl4H1IcYnAMntnw==", - "license": "MIT", - "dependencies": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - } - }, - "node_modules/@umbraco-ui/uui-modal-sidebar/node_modules/@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "dependencies": { - "lit": "^2.2.2" - } - }, - "node_modules/@umbraco-ui/uui-modal/node_modules/@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "dependencies": { - "lit": "^2.2.2" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.0.tgz", - "integrity": "sha512-ut26Z5NPaQVs4u45TcdgaCaj2Qt5jNtCgyHpgMhqfbs28lAwwuvodvLClQ1TiTv+TzE+Kzq6YyC57tQJVkRrDQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.1.tgz", + "integrity": "sha512-4VGt9KwMcnu4ypHAO3TSWuawiWpTf6Obp1JllrAOVFVPIi037poRlaRAOvMYdUXS/VGSKZwlcPgVS28U3hhfZw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.0.tgz", - "integrity": "sha512-AVkXJsP9IuL6rGXzTvUNqvDEA80vhMOGBGLVzwumfNzV0kIjyEWtAXQWIllssUUI5pDUY1FY7hk7RIiB5QmczA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.1.tgz", + "integrity": "sha512-0j/xDxCdDrIZDS2CBlEftQb1sJDuFh8Z6SIcgYV0Tf7Z06D/IEx3rdkQ1tduVSzntKWkpPJSXajbjX4+oEl3rw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-RjmEpCc3moZynCDOAM5eGKi/7y2pXPGB2ohvcjCSZVDFxX3QZAyRB5PIAAT/pNo0aPii8HxTTE3b4qJFurNxGA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-w8qMFuwXClXrlCRJozYMCJ5qwIUhdiVlx9OH2ctQopRCxBoy7MU+BIr2Uhe3IFvFVnYSTEQqjMfk6IgC0+zMcA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.0.tgz", - "integrity": "sha512-I2j/bOLSHSqXnJx/Fh9Jfabao+a5Xx6BYRgkJCxRCfHl0FTncufmSwDFs5WjrR45eKFUuU9gOWtbddFQjCdBMg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.1.tgz", + "integrity": "sha512-Nd53D3MF6DXVs9+7AUhh7Fj827/TOX3QpQRUIWn93/7qKfDrZ3pK2TMWDxy1NKdjoAHCgmQdGI5fwqTt3fNYCQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-EhdQAu6POZL5a8IOjBcMraCcufa1JYesVuZ2VZwGaOojfcVGjH0rIuqngpq/Oe5GAJUMOgzqCKmYyFhFCfmLpA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-qRKhBm3joFo171BV1ri94HVQpjQKXmejRiqr++4IzCZJO8zbtHV4YoHm2F26bbYKMzyzMW2sUnUrI/R6kbQECw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.0.tgz", - "integrity": "sha512-rrpWYRjjbx+ge7baO+tRcn+Qa1nwecQ/Sl4d/0rgo3xP+pKAnT0rozt6htfc60a/9Mnbz7mbj0NGSzMOJZRtJA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.1.tgz", + "integrity": "sha512-2vIIjvwibSa0nx/oQo898F7tl4hufseLHQjW3V2fW7ykP7YFTWeXI7JRB8TuSpzF85oEuH3SUIsvNXIzS43Cvg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.0.tgz", - "integrity": "sha512-8h+GG1kGc3LM5ojCZxsHRjHuvopuc5ZYXtg/Upgm7G5ct32JbVnUNM8b6hjH7NHSskDTLoslO1+wnalHcPc/Bw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.1.tgz", + "integrity": "sha512-/2xiKUtZ/b2KLrcVj+84M3YD6xOpCFmkC8i3fefwr19FvpqgD8Qw5Z4b5iOrcPfe6JCTSNiVrWzdqkDUNuloMQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.0.tgz", - "integrity": "sha512-v9UpY1ADCAGPaFzRBLU2OTmczBNYAUN9Y6OVG5QCHUfGIvo6lwbYWJITN1tVAiofJemaTftJI9j9wy77kDTvDw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.1.tgz", + "integrity": "sha512-Xem/rxuLnc/H228ojZ1hqNYq2HusDZDQ8LJZGr8WaOWxZxcWW9fOQ/kJdeUt4enZydF/wOnpJf7aexb4bkuTCg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-ref": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-ref": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.0.tgz", - "integrity": "sha512-TvKxerjA3vsyuLu9peVnhnOAPKzeQPsZupSKixMqm2x2oX6S1QoCPNpSbIYi6mEcDnjFMi62VFYojinbngQ3CA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.1.tgz", + "integrity": "sha512-dQlEjTazYjwavphj/B2lUN+Oo9ODHHY66PTBJPfzmRY92kWrxuzaRqBceXK5fUYyWo4K61haGYB/8Wt0kbmu8g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.0.tgz", - "integrity": "sha512-ALhCascGg+7Gl7IDih/K2ZirWhKG9pyfH3q/m4nfmNVjutLqTT1vOkvj/9DUjJw1hPdWFdn5jFYiPr1XpfUHHw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.1.tgz", + "integrity": "sha512-L2NCQjNAbgf60euruelI9vfun9dVoAoJecUCRSx8uf4uQTelv42P7rsrUZ6+Xve0DA11T6+7iswFVIZDmAeaqw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.0.tgz", - "integrity": "sha512-tls/sJMu1MXg9vS16fpAXSKuntqKO6vkiI4oQHH1w5OV+QaS8+8nAsiWD3ogDN2P7JyOlfCMnqhj31E2EFqGPg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.1.tgz", + "integrity": "sha512-8q5FvoNCG3dbTQbNjmR+INSbqT7wDXbTXA3u/Kt1UIySGgObZd7hOSGfb6UTzcVHTUVxzt29dhdFtiFSDoFu6Q==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.0.tgz", - "integrity": "sha512-Z+2/Q29kJbio7hSNntRTuiw7AXL7/6Y79rmEaDtQdz51f+hkaO35f/fQTLTf5VDuWTzgG1p6jcDpdlRMq1dQhw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.1.tgz", + "integrity": "sha512-dq14ePyHuBL5Jn3a4gbxklEstYGyC/+Y2g+BIiR51PUa9pE+plXaofLZwkx4gWm5oiVjTTBW2piJFWrlmeuxtQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.0.tgz", - "integrity": "sha512-SBQgrbvEP7dXkoZ1b1t3q0EmWmaOXtWNmd6oH8aMtA/SL43Uwjgmhv9gbxzeP8fMjK4zGCu9D0CLSmFO+1s5sg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.1.tgz", + "integrity": "sha512-gb2cb/0r7/OESnlJD9ClnO5ZdW67vkA4NoD1XwYl0BH+4edViitKhxlSwg199+MvGJzMjpDW3EUcQ2k+xisWdQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.0.tgz", - "integrity": "sha512-myEYc6NkT8y/L8n1ndeRLGN584A+r0PPxbQCaMWmVAbcAq+Eb58W3ExnZM5toHJNUWjq7o2bIeX40eckYjkE3g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.1.tgz", + "integrity": "sha512-HfMKWGTDd2tFWinzLsRbIX+fi3Y0o9NCPKjvw62Eo1Bl6y64zmRjl32jqCinmfXwbozSMZ/MZDnwyfWxH5QJAQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.0.tgz", - "integrity": "sha512-9XBHcDyact/5tdlrgCGwoEdmvcV14D5FrVS3jj/cOCqoBg0NaE1O9AS8OeLa1t4/HlOPijWYLj4oUs0aG3cyQg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.1.tgz", + "integrity": "sha512-stdCKydwBs41/uQrO6ndmp+fAQR9HFoWWa3zxofkd3TNhKUOt3TmKq2wzZ3B9UcZ0LOzmR2LTcryGpNuo6aofQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-select": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.0.tgz", - "integrity": "sha512-Kmg8pTm0Ll+t0lussikOCWpvBeVxYh0TEIlaTNyLQZNwT3jKVvdyKsY4yNU7YUBMRQaBRhl0glJOTPxUBURroA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.1.tgz", + "integrity": "sha512-D4i20OKXoqfxWIuXj19XKj6bJJ0UF4L8IWlXzDPdXEdkiDoFJLSpDfJ39bs5xfrzgbr4+5+Pw5ZXCZDEMBaCRw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-CqhSI2T7Rg3EAZemZvYaSaij9sLwS0Vk86g6QCzDVUoyF7q5QpUcd3+7vMD0rvbwBISarrPprooX+GGjTNLiAw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-ISV8nY0TumFiXRePOn6fW7qPOtOsdSZ1Ld9EltT6VhwxADSn06hTwRhiuhACpPriPOmBtFMTc9GH6DMhLsqrNg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.0.tgz", - "integrity": "sha512-87Jxw6bYls7qs/srRXvqnadak3UDsbmYYItsIm2RS1CPxWvrSS3uEdLeCDhvMEoDCm+6B581ntmfiZ/k9OBxWQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.1.tgz", + "integrity": "sha512-pvG5cJ8tTPN51Qc28udzqXDrtWdjfvVxR9qFqGsI7NsS7an3ylLjuzzhuYwuUozbTZU6Nd6NRy4SjELuYNMkbA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.0.tgz", - "integrity": "sha512-iTZPVNB8kqQsqS/Kx/prTY1Hl70bQ+ZZKGm0+d0GxsoEoHKYB9jyQpMx80BWIO0sz5MgqM/8GA+ezAQh1v7sLw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.1.tgz", + "integrity": "sha512-C33jH44RlAjZqSj4hmdy/vBjRBNU3cJbBu1U9YBg+KA7Mrmd/wYmyg89yBIJLfQFnUkWK6oN9jSki+8Y9RqJBg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.0.tgz", - "integrity": "sha512-59g/paTrCuUlZidjvQh87MSEqxcN/xJf33tEw2BhbXRFGCP/2zzqhIeZx/xh690e0/JKUxPTmhznqmdjOPt5Ig==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.1.tgz", + "integrity": "sha512-vvAgntDGtj7jQFT1i3vQ7EHtb0u6UUQJJd6LccIzpDAtqo8Xy4aSrqCIRnn3J+NeXMNTrEMPuIdZFLf0e6ZbsA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.0.tgz", - "integrity": "sha512-huuJrD1v8hxmR02+KCS4RXmvNzwdEXDEVgLReAnDzhEQBQ3nhulEAJnyexw5MZ18LkB1l5rhNeHiRbFxh9u6lw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.1.tgz", + "integrity": "sha512-g9d1ucYRMyf+mkm2uSjpEPbAdc/VCoOKM2C94ssD8tS+rilMc8Y1qikzLfpq4fZxUyFSToFaHEsfs8IgAPGgtg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.0.tgz", - "integrity": "sha512-jj5n22biZIcGqt3bpBluPxCmsBqAGf5FlzU/1rEZdt9HWsJ2Yo9led+Fm26SqPTlo2Wqixm+MQhmIWJjQZxbOQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.1.tgz", + "integrity": "sha512-z1TVu4brfNaZRz5zh1+y/M6/hokhDVm2gSF8iU29bkeN9l1YPrvqIojS+QS+Lr/afWbYi+EBUiS9Ud9bMA6JSg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.0.tgz", - "integrity": "sha512-YmbeEYeEHAEgZo46rdubsFNTCREqzr5eOGWv4t7QGOawroKGCrLJs+xpBPqGSQkWRENVpj2etWD6pa4s3LW2Dw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.1.tgz", + "integrity": "sha512-khuXk3lprOT0PAFUGIXOqD1d1y8D3Dqz4QVoENVCrlEiWB7ilhNAwjYH6hjENtdC4//PmpClgq2gQGGTSm5PXA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.0.tgz", - "integrity": "sha512-5YuXU3RsowBd6k7YbR39R4cP408apA9rVM2uYD0FhR5JE8XVJ1o/AlapEZB455zeQcYeaWNZKM3VhNY4hzpOMw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.1.tgz", + "integrity": "sha512-teb3To70jeLLIkmc1SWMi6sk86CPBzNMnUsmItK5hHfUXhJ8Nds5pdoIKDv4B8p2jvd2vAc+JgEWb+H0s7IkXw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.0.tgz", - "integrity": "sha512-gKqd1oMS/uZTcUUCZuqo1ZOMW13QvuVbbTL420RVzjTilC9IZ4SDZU3ZbqS/fsLYPReeKkm4U9NJZdm6a9OqpQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.1.tgz", + "integrity": "sha512-P2EjmY2+tNeOBuAbsLt+tN2eZ0dfg8/+CBS/XmPysmL1Btb+PYV8Lzi4He7lfx4EY8OtANEVH5r7dO1fu+Fimw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-table": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.0.tgz", - "integrity": "sha512-BoGN8edf4MWhh2jxLcKht843c99ePeSN3LO1f7ICUFHxLJ1l+eEZLieWFh8ZpeErfY2zXsylRALsSSdGagnwKA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.1.tgz", + "integrity": "sha512-hlhabdzcvNBLckYSx7cw5y7XqZ/LpZMmlprJ+3Qvrg2JrN7l2BWYQHe+iWoJeF6I9LHeLVwx2ba+lvTV8JX6RA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.0.tgz", - "integrity": "sha512-0vMtMCIAyQ6aPLQiTtM+K7O7qoNCtHEjcVU8LrqGJjdCERvsrktyP6hwDlcOW52MiYcb7H5p4wxXoxi8fKdi+g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.1.tgz", + "integrity": "sha512-MHzVa/nRtTxOwKggahY8INjVzX1+CM1Pm+T20riV15BefBlNgHNoLSjVOcDamLkn7ZNyZME5DTl0Tlv1wUV2jA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.0.tgz", - "integrity": "sha512-oZS5eaQUMo060Uh3z2yUp7ukb62j42MpE262fK7L0hmtk80Sqn9uff7RNWf3bgwIkyj+GuLm4coakSfbd56D7Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.1.tgz", + "integrity": "sha512-UtGOnGIW2mrQPmJqEyBwRdnHPYtO/qco23YGFS2tDCFGNmKpeLpakUnH7u7zp8cjXAyuUw2C/uwrvSypxb2LJQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.0.tgz", - "integrity": "sha512-aMtDe8C2ZuEr9NLV5onhiUx5Uw/09vnN2oXILoVKaPHhxtK/oqZS6MTnoGt3rlpfjZAjwfXY049MCn8pDPOJqA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.1.tgz", + "integrity": "sha512-t78/eFzDg+pYhLMsjJBjCqadYm2y2UVo3EYHfJQkxUNMljPRseOhBhVGcKMsl+ILBAwSwFs1ZEJLATWsL1LEVA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.0.tgz", - "integrity": "sha512-oaRqwcuPS9HazH+yTcaDnH3Wt7j04dE6JdWzL3Yj30NNo595ijnZbRlnShjILT2o8jh2DUhVI0JhnnogeMEssA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.1.tgz", + "integrity": "sha512-TqiSNcxrdv7PyJPy7hAuf33aa3HksiKzfYNJAmwLyD1PIDFB5Iy5Otme+q5evtHqZLetf2d/Pl/UUVkdg9ySzw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.0.tgz", - "integrity": "sha512-8+IPz99Py12fIuDAs89kXOdsfBszFS37XtgYpMFl9t+g4uyd7doV8jJFP8G3UnjjDuboQWhpKIJKiKCRoOmdGw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.1.tgz", + "integrity": "sha512-S4HiRfttbNl3Z98HNZjftTaINJLzRxmFRkSmvAIq+Aua4pvr3X6jwZmuHKnv+jxhVsddFzS0qcmxu+AUCZjE5Q==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.0.tgz", - "integrity": "sha512-mnq3a4Wu/Uor234we97mtvfeX8nl9w0fKsH2kBAgodkjXVMQssvCOdd7MKyh6G4mXUO4/WY0HbOYOCGv2I/feQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.1.tgz", + "integrity": "sha512-CdY1TZ2PpYTpbyzoOtRd4L3WJxkw5XKJ0PPyjIOiyBtVCxp3aKk1fDAhBsTqqzhPjADkTHGp4CAsLk/UgtODzw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "node_modules/@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.0.tgz", - "integrity": "sha512-UXdiT/ROf8sKQTYge2wS4znhL4+IdpxoF4TPZr+U0k/5UQ+iQTzs6hy/GJQs5FcPnEI7gftrIHctP5O9yKsJvw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.1.tgz", + "integrity": "sha512-c54NFUKYbGoW2aNXQC8ymT8h0wXDiHBqpJrY+V/x0gCa/kpKrVQ8VrjGAREmLbBZCUhkTjXyLtggNj0yG6fmCA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1" } }, "node_modules/@web/browser-logs": { @@ -22177,839 +22114,780 @@ } }, "@umbraco-ui/uui": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.0.tgz", - "integrity": "sha512-t5NjWxXivl5Em2xusuudQ8asJtayrpw2Y6G5Ge4P2CdyFF4YD5C1hD54HzkisfuQJDTSogERVtcNMts9y7sHeQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.1.tgz", + "integrity": "sha512-6DexPMgFZ4qm6AwWyd7q6rdkIJCuqf8vVNlVZqGlbaE9OnrWclNBQ+ZGsJrXdY8Ugs1V3u1IjiHd8Gwp4UpBvw==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.0", - "@umbraco-ui/uui-badge": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0", - "@umbraco-ui/uui-box": "1.2.0-rc.0", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.0", - "@umbraco-ui/uui-card-media": "1.2.0-rc.0", - "@umbraco-ui/uui-card-user": "1.2.0-rc.0", - "@umbraco-ui/uui-caret": "1.2.0-rc.0", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.0", - "@umbraco-ui/uui-color-area": "1.2.0-rc.0", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.0", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0", - "@umbraco-ui/uui-dialog": "1.2.0-rc.0", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.0", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.0", - "@umbraco-ui/uui-form": "1.2.0-rc.0", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.0", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0", - "@umbraco-ui/uui-input-file": "1.2.0-rc.0", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.0", - "@umbraco-ui/uui-input-password": "1.2.0-rc.0", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.0", - "@umbraco-ui/uui-label": "1.2.0-rc.0", - "@umbraco-ui/uui-loader": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.0", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.0", - "@umbraco-ui/uui-pagination": "1.2.0-rc.0", - "@umbraco-ui/uui-popover": "1.2.0-rc.0", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-radio": "1.2.0-rc.0", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-ref": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.0", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.0", - "@umbraco-ui/uui-select": "1.2.0-rc.0", - "@umbraco-ui/uui-slider": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.0", - "@umbraco-ui/uui-table": "1.2.0-rc.0", - "@umbraco-ui/uui-tabs": "1.2.0-rc.0", - "@umbraco-ui/uui-tag": "1.2.0-rc.0", - "@umbraco-ui/uui-textarea": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.0", - "@umbraco-ui/uui-toggle": "1.2.0-rc.0" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.1", + "@umbraco-ui/uui-badge": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", + "@umbraco-ui/uui-box": "1.2.0-rc.1", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.1", + "@umbraco-ui/uui-card-media": "1.2.0-rc.1", + "@umbraco-ui/uui-card-user": "1.2.0-rc.1", + "@umbraco-ui/uui-caret": "1.2.0-rc.1", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.1", + "@umbraco-ui/uui-color-area": "1.2.0-rc.1", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.1", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1", + "@umbraco-ui/uui-dialog": "1.2.0-rc.1", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.1", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.1", + "@umbraco-ui/uui-form": "1.2.0-rc.1", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.1", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1", + "@umbraco-ui/uui-input-file": "1.2.0-rc.1", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.1", + "@umbraco-ui/uui-input-password": "1.2.0-rc.1", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.1", + "@umbraco-ui/uui-label": "1.2.0-rc.1", + "@umbraco-ui/uui-loader": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.1", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.1", + "@umbraco-ui/uui-modal": "1.2.0-rc.1", + "@umbraco-ui/uui-pagination": "1.2.0-rc.1", + "@umbraco-ui/uui-popover": "1.2.0-rc.1", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-radio": "1.2.0-rc.1", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-ref": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.1", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1", + "@umbraco-ui/uui-select": "1.2.0-rc.1", + "@umbraco-ui/uui-slider": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.1", + "@umbraco-ui/uui-table": "1.2.0-rc.1", + "@umbraco-ui/uui-tabs": "1.2.0-rc.1", + "@umbraco-ui/uui-tag": "1.2.0-rc.1", + "@umbraco-ui/uui-textarea": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.1", + "@umbraco-ui/uui-toggle": "1.2.0-rc.1" } }, "@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-CV40V9kMo5+fmTybbKc/ZKn6I/7xPWlkvPHifdu6WhwRsFeC4P8nPV6CKgxnrTIdrNbUjwK9Kn0UCs/UiKQ6FA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-0RxQAxzcEWLk0LoeMk0K6svRjFGDhoEpndNtKe9uyfJCoYxEVeH0SVMhzlbCGia7kUejS7b/PzLJ69ZrKqSAlA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1" } }, "@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.0.tgz", - "integrity": "sha512-xlz49sZAr5nVb4eX/eCssox8Wn/Qm4slIIZTahu2jKo1tL9s75iEQFjGGjVbNJV3EfEn5fXreHez2ADwA19d5A==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.1.tgz", + "integrity": "sha512-RYmBQ+chBF1SrJwzc6Dpwq3kSRWF//GI0DBpGCXLz7URc04GrbH6E2zL2c6vGR/sYxIVDunVEZ17QODxzv+/Gg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.0.tgz", - "integrity": "sha512-XQjl2YFGtg6vFVrlUoF/Ulbc9tmbFAbIQxSJWP/CxvQgOqFRldoeNZ9puiTOFykvCaKDc2MBkTwC2vUI/F2DCA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.1.tgz", + "integrity": "sha512-Tlsg7jwKbQzwW+ORSM2T7HfsXsjd6WANa9iLhxNxaCp9K2i8JWtFc9B/2QYti5FShhPPmsz9NKa3IJlzR9g1BA==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.0.tgz", - "integrity": "sha512-QoW0puGm6yF7h77C9tq4zc8jZIDnmXsokthCVAcwks2i4BQV4SRfsEJZOQAphdNE+VOIPO5whZG5+D7smDHhCA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.1.tgz", + "integrity": "sha512-vBnPwAF2Q0brsoSKNXelFSp37iomqqdJkHnxOpv+ezC0XwG9EXsIVZYUGFLlHxJaoSnnXQzB7ITAHmK2wI2toQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-base": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.0.tgz", - "integrity": "sha512-q/QU6MRoU/d6pepobqNjEEUu8fcUfQ2RjT4wWQA/z1CFtXF1xIQGGHemdmkb/V+RqUma8CimDscklxxR7yARRg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.1.tgz", + "integrity": "sha512-KY1wU+IYa+Wqlpkk0ggqJefB1vv2kzLlX0CDBgixIIYcPEP/JZ6E54T34c2Dhbz8/66yzCsVYVDCQBtVcr22fw==", "requires": { "lit": "^2.3.1" } }, "@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.0.tgz", - "integrity": "sha512-Jno5TPnwJbOi7yvSigCBmMEqK1fY2XdKUMFpB2ZXVi4T8o69cq5m+bcboARshf1NdPmkWqQMDNroMqG73gFhiA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.1.tgz", + "integrity": "sha512-TYj+IiektbvFc+XvRMHPaYw3ccDy0c2eVwYrU96ywgU04STOcEv/vb1NdUDQ8osQLeQgk7lWmXl8G1dK0ESKOw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-box": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.0.tgz", - "integrity": "sha512-+JYJ6lwoLq7MsD51acS7ZOFrVwUiWRWywL90rGtPYXHDTkw5D/MdeFgbQjBU+vcIEEZWR5iwNX0uTpA7hO3xKw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.1.tgz", + "integrity": "sha512-+8rYP6O9OaQY8oCrpYhO11kA/96Gq1F7FyOVbGgPXKDejElTvP4QifI1GLg1vJ8kmgX6AZu0ypHTRGhF5ohjtQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.0.tgz", - "integrity": "sha512-SyjimBB0E7fpIepBxcVOIJSYvg8Yjgtel8fA7VG/sPVmP4YSZeGoRB2G/eHAvH/VG9L7/ENOUIzEYCFYXbHJsw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.1.tgz", + "integrity": "sha512-e7o2re7Rn0Ipu3D2BennKbEM3HOIRFhaTy/0zIG14bp3ktg2vR84GtB8WujonFG9/Mrp22K7IZTfGR0+8n22oA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-button": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.0.tgz", - "integrity": "sha512-VnA+1FoUpg5tMrGfpLnFCMLtDPM+ACAu1+XQcuo6o99XUYdSf+Z5lf/P4NBCDfdqdKXBSDut/Npu7DYJsYIFHA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.1.tgz", + "integrity": "sha512-B9AkSPd/p6+mm7Qmk+wAPhI6XV+HZU1uWIPIfObPgEHorMVUwIEl2UUPgx6Qh0i79+o6QnrW9Ki9sTCfXUP6Dg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.0.tgz", - "integrity": "sha512-ROxoZPTVDkJKhX9wcmZGOqdtWiVs13QpL/2habQTzkS2JeaTTiLhIf/KPeZpZ0JPSbJnh0yj5nCL13Ov2rS96g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.1.tgz", + "integrity": "sha512-IkRtrP0hplhFjIwk6ikxrrWSGycFxEEYWjK0Uha7D666xWJQKj+WBIvHPvRBcAyZXRzjw8ZZpsKUObrHcpVthw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.0.tgz", - "integrity": "sha512-A/FO9mRXFku+Qjg2uDNbDNRamKpP99kckwRy3hH8hzl6MpynzD+Cr7VS/bL0lmBa/G55XVrNi0BeuGbunEGvpA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.1.tgz", + "integrity": "sha512-klqnbEpIUumSgfTaYobbHKuQESQD81QYllk+ScOoSMJlZQIy8laDRa6c7cYfGBJb+jQl5EvXnYU+B961pSDxLA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-card": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.0.tgz", - "integrity": "sha512-ZnQSb8k9N6wSeD++8pL2R7jo01FW3bKQ6SzAAlq4MFppYaylgW6BcnhIcSxiXciWRgNsb+4BJhc/0gxbJh25+g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.1.tgz", + "integrity": "sha512-GVmRf2lAayFhFVu7CtN+kwQFC7l3CP2ct+bpzuN8HXGc4BgyxGxnVpA2+H+7NrUzae5s2E8PNPSRICqDMJQ/ew==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.0.tgz", - "integrity": "sha512-xgS1hK8OYimUhKP//DpKt2W054ciW+1DiEV0Qr1zWRDgAN3F85IwNiLVs6JPeBjY1yM4mOvC29POG35jc/yBmg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.1.tgz", + "integrity": "sha512-gHBjmTwkvhblP5N4JucITA1JcC5hjl22G71bCAmXvcjT5KEF94t/gGEP0WYXIhrosT52IPd2S+9u1VcXW4NsBw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1" } }, "@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.0.tgz", - "integrity": "sha512-8fH3IrLtPV9rE/dkEID5rMoTIPEg4E/9VoYHms59zNTdtyQKG8dM0vLSKTbz72zaYH+Ox5VHp4X/CVIXFDH2rw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.1.tgz", + "integrity": "sha512-F9E+XU5y+a6zeS12dCmFT+UrygxY8NufaHU3uyqq/qbNFiKQfzXm+uuUoy1pWe0o4EP/uW14azSZpI70MwIVUw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" } }, "@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.0.tgz", - "integrity": "sha512-B0QmgKXWt5yU0/misn3sY8PsAjOfNzOCJ/LkC9cI2zGX/tQNbfziOFwk6bAQluQP2zJnAoab1leSghP+1PcTEA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.1.tgz", + "integrity": "sha512-qxI5YUvwrmHaovQk1AtEYLe7TGaaX3pw9cNgI8joDNs/uvAhYuVXISEM03aooZQ3okveeJwgWeuiYJvXKhjptA==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-card": "1.2.0-rc.0" + "@umbraco-ui/uui-avatar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-card": "1.2.0-rc.1" } }, "@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.0.tgz", - "integrity": "sha512-V4nKfTYEqJvxG/jbwwPCzZuSK4qKra4aqWrtU6B6QMcYohYJVTaEvVE4No46AtbtrSfvKm050pMzb9sRxiMLcw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.1.tgz", + "integrity": "sha512-tf0mTznnLsE8HF7HsIrSa6TKowMsqcXMl5duG6xzt+kRnuXNFSHGdtks2S42etR4/d48tTSedXiqK6+8iWxzow==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.0.tgz", - "integrity": "sha512-7smHPIBmniccCuaA3JaFCLia5uyClFElv3WBngX2qbz6JwKXQ9nemYaFOuM4KjcukMH9iFMQQy7sbrmRar0reg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.1.tgz", + "integrity": "sha512-BZRRCyfUhg4VVL7wGx8tF9/HBZPIRfWRlxG8Uk58D9/X5qux13roIldTD+iJYqbhLvBqLcLNNh9K8Tw5W4J50w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.0.tgz", - "integrity": "sha512-cUJdrcNEkXNAwjeQEV0Vi/Hj4xaj7rFOMm/U9Q9JlRUX05xkBRl01AjS6Qi0QDKEPtLG9YC+AnNXpFFA1rjtaw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.1.tgz", + "integrity": "sha512-eoMSn0YI9smAU3m005ssw3kW95sr6QZJkVzsrq79jcjL6Cb44Gx+Qmo9fEY0MWAPfvazclPW1zBFGlRtdGC2CA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.0.tgz", - "integrity": "sha512-rpMBG+ZyrL10w7EX/UqtWZHhwZ3oe7MSf8cQqimK/Arn1kpBqZ4JJLpJPcZ1bwcYekHbT5LbHZBD/EuHMRP1bA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.1.tgz", + "integrity": "sha512-A0EooYaoi8Bef6Tm+082rzzVyMAHCK36KLHTn4R7d5vv47b0S0AfcZcIhM9EJtL+wvlF9jLD/ZxpRSrBCjXDAw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-04qZnUlVJmk7dN+r8BJNeZHvmu5/TqIq7WVlmHmfmbULW4hJkw18qBamfhOP7nFz06b21pfLFjBy61dqqH1tUg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-H+pyB70V9Wi7n8sqSxghPfeT73KMWh/jyQRlQj1x72AFvCFPBmJBB9biOQTzHujU8PdVzT9yPhPz/+lT3ZFPIg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.0.tgz", - "integrity": "sha512-acTb4xOwSMU3j1xa0IRpykdw7y9wQZoNWBPA/wWilCYJcxnJ9BeDU7QZaLrkGYOhq8vfBjtxO6+DZ4gBd5/4CA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.1.tgz", + "integrity": "sha512-a+gDiQA9Ffz9IskcUrpblbTOneUJeTomauM6SdUffWGmBZjWcA4tF7Wk1ipd8cfoRZ3X02P3E0uK17OACuxxqA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.0.tgz", - "integrity": "sha512-mJIi+PYeQP9naFZ9CBWyKIT5C10kzavQXkfA5dp1WBwyoTbmJzDaXXkz0vf1IcYSKBjJ3y67PmVRdaR30J8GZA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.1.tgz", + "integrity": "sha512-gLYCnsVswaT35jTQ4sZypNpcgWWJ5XThNdSE83/ivEyfwKNJwAPUKkbXVO2s2y818PtvJ2QyxX2G8sYzrGs7FQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1" } }, "@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.0.tgz", - "integrity": "sha512-TnijClKq4NK7tGY0VaG3bZaTz8FYoLFezl1eXKIHYpx/hiidbu+a22Kcyio5TAW7VNFGFjJ3h3JQt06pBRBphA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.1.tgz", + "integrity": "sha512-WhhDXnrz+CmO4V7wpJuRyBBpNbuT8tvYuVRop0v6Hmpcwve2YtaKEG2nnjGWWEW1tuyBWTvREeXAi1P3UX7/Rg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1" } }, "@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.0.tgz", - "integrity": "sha512-K3CcgBPXiUnV/1sZvwKtxdgmIjjYWBNDtJ8Bc2jpqcyN2C0rcFLBwJwTXzBtIxakPXj9G6vP/OyXRUnN4I+lsA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.1.tgz", + "integrity": "sha512-OeN1fnZPVq6gupyEMKiu4i1CPTeHcnICrE6I1K7mrrjqipXFrfIQMTWnCaj5VhTDnquhuDFL7AUnpmkd+WIKyQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-css": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.0.tgz", - "integrity": "sha512-eE093LnIKdr1RKggmcsVI2G7Tyr+I0lV7XH4Kuq3cPmDaOC1C1UBvRPVdVhdEtQ2LA67SAsTvXWpyEuYKZO6OQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.1.tgz", + "integrity": "sha512-37DRp4JjzwV/4lgL8z4zH+nhu1lNGzh9Z7DL/ForVgqNJGbtHejabw2Zn4WUb6TA0iXJ8x9mVytwM9cThIZlEg==", "requires": { "lit": "^2.2.2" } }, "@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.0.tgz", - "integrity": "sha512-j/ZrWFJPXBXvt0IrxEB6DoUOejsDClJWlfpH8bft8bjF4bw0uDWDFXW+wlE9aSYagALYXJIJmKzyzfxPJsjyFA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.1.tgz", + "integrity": "sha512-8NJ5l6dMirRpIHIiC7C4y6CcRZw46KGUBO/F+/5Kjhn2sHUWIomCt589qv73K0uNNXOrgAC1DXUYXq7QzLHGjg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.0.tgz", - "integrity": "sha512-ZpLOucZTNEsm9cuLxWOzN437iI0zxVdArYBaPQ8G7Mkn3AxvOoqiETHq+rnNJRIsOIh0CfMuD5XWX6hPt2w+Ug==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.1.tgz", + "integrity": "sha512-gFpTDHItpmBw73bMVF2VWutdNmDB81wvovmIX8zP+vTu3UItlsrhFR4nOz+EHxu+feCHFZc+plA9Chpc7sD8mQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.0.tgz", - "integrity": "sha512-1dkcZ6AHsLABFDhCWwNdyu5oMrNnV25cmbUsesBSyM3zedDtYKD2MZLJ+QEBXaHBtiDxO+G8mAL6Jof952gheg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.1.tgz", + "integrity": "sha512-JsTSY/YZIjRThXFqP0AFgxGRugBsEI70xge914ZaK+bvbuHwy0UvonoE1KmLVNdbU60CXE+LNuA52FdtaToPeA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1" } }, "@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.0.tgz", - "integrity": "sha512-fqbMD+uwxvV+uFrj5akmIkq1ngASKkZunt7wgq4wFeFksAi9QCMdfvdAE0aqhy9RbzdQHfLmaxOOrL8aLh3zwA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.1.tgz", + "integrity": "sha512-raSosqY73tphVzi6LxmBkim81oVujKodUvr5ALaTwPDzR+zgCep6FumcFBugd9ZLOV+SlBb2cPwKvovqnIieGA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" } }, "@umbraco-ui/uui-form": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.0.tgz", - "integrity": "sha512-kAR51/hAxg8rbLgam9/te3kq7aa9+HTQ2YRRyrdy2pJVVHMDIl2lKvzVf05ya7nTapW5+SMoUqWV5WjZg3lhjA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.1.tgz", + "integrity": "sha512-sjOUxbgXOZFV6B2eLNw/6Y3ayewl2v24dK4yH4XuvYdPKWA6xAJALBnvUxp2JoskrWn18H+dw6F1UbYrk1AnxQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.0.tgz", - "integrity": "sha512-fbY2B2QJtmnd+GdLwEac9+egrIADeCJiGiYgl1ohcp0TYTuQakT6yhNSdkVsBpJ4dtH1+xFbsW2j8a5oRHozoQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.1.tgz", + "integrity": "sha512-am0bBYbGzQFbOYNFH/nHHDg6O5oegTApQ9se/UAtxsaTxLqIWOuyMjTyxykcQQkcH5VPqwEOSpPDeMbgT2JkaQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1" } }, "@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.0.tgz", - "integrity": "sha512-gSEqpaHVWYGs3SxpflRTxO328ITRxmRWsDj8nWXCFGKtUK7xNKdhr85P4DWxW76u4UdcCk+lReoUxmVRelMm1Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.1.tgz", + "integrity": "sha512-4d09jLFwsXYY8+LgL56R1+mTXzXTO5hIv4bILNaEsppze/KtJLmObmrWyilm1OyDqqhERKWJ1Dn3Zp7QfiySmQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.0.tgz", - "integrity": "sha512-U98JO00fXes3Ifjq144dDKKh9ASEJ8UkBgb9aDRlVEIuku6VfhUbENLH8r3zSpgFh3lV0ObXLJMnbIQrW+tRaA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.1.tgz", + "integrity": "sha512-jZjVhAG1YdzPUikBy39Z30iq4YXfJM/IqdoHD3YV7/YblIzlm0OcF+TnkjoLt1Y2ajY5iZTixBUti/NBpZ1xpQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.0.tgz", - "integrity": "sha512-CQTPh/2YE6Zxa4yJMNHPDBUOibmzkNKuyavwMwQ3oFB6pOJU5agBFasS3QOaw8p6Pv9i7wwKQC7keE14fJK26g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.1.tgz", + "integrity": "sha512-/GT/qLEbibP92LK229ZAuZoA/P79Mm1f7BbZ4DOc6BpeUkd6WfEaoqOoYUaKwcmb/0wU3l124Kr7bPhCar2Smg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1" } }, "@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.0.tgz", - "integrity": "sha512-zSILXAwVAvb52vlFgfIkqnaPm7So9s0MaPrjKjgluC2Ii7CZIyNwr9fjaboSrPngsjoGT2C4gUYYoJjp6vw5ew==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.1.tgz", + "integrity": "sha512-ikB7KbHrFRvtObm92LkEuxX9Ll43rnucw1IcRjnf98cZgcrrWJYKVXw7ggkFpnywYfSk0lT72Yr7NSQH8ErVJA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1" } }, "@umbraco-ui/uui-input": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.0.tgz", - "integrity": "sha512-e8CabJJMrD+D8wBXKDgHQ8T7SQ7Rf7iLPzL55duLUrO80PATiMxqppyIh567bW9s5soDX7DhQNBX+UIa57chsQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.1.tgz", + "integrity": "sha512-EWRBV/sF6VQHTUZasgtl6mFuFIe4O5bViwDmUGE6WX8A2VYwDqid7PYdQKVrgUGyLKpWgXhq4VOil29L//uyvA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.0.tgz", - "integrity": "sha512-kkVSCqv61AZEHd0b4p0vmoEYosDjLl/YG3a2FEuXjBn+F6lETW+RriuhKY3a0pyRA+gTI9GRR86icpSC0KpHfQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.1.tgz", + "integrity": "sha512-jd52PgC64bLVlcc01DK4YJNALt6U6rucb/50J652mWu0eqw8ds6oSTqIz5TWSgCZcgPuEPF/6IY+KOoffa0Ixw==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.0.tgz", - "integrity": "sha512-k1azXchNXcFy0QgsIm5ecJWo5Yh95vPRfwTohiDUUg4kla+yHIVHcpkNosqhYD4FKm8cAv4cdQr7o2eI+ExL6A==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.1.tgz", + "integrity": "sha512-mWcQrWmMFBskChV1AtBPLalToiEIdfbIJ6DrXzaaT08H7oWEsV/ypl2XRI18RcnAvGRPnHABppZa6HvrL/oJnA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1" } }, "@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.0.tgz", - "integrity": "sha512-IWsAJCRUZFVdpUDnup60i7MS2A4DePU1YIp460veAbwIZZjZBG4x9mmD6EvjFkP5YDaqCwyg3k75p3hC9RiQzw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.1.tgz", + "integrity": "sha512-ErcjBAOLVXDuGJawuqN1WrkimzhgOpGB4EusF0SBfbeZzZv4q+cJZzKz/pNFajdf0NYo4iQZZ0NmKwZ1a+jtOA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0", - "@umbraco-ui/uui-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-input": "1.2.0-rc.1" } }, "@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.0.tgz", - "integrity": "sha512-y5uKat6H7G752q2svp6iFi0UlnlpZuj+qlUVp7GJjLJ2tYWS7M13KnNXrhOOZW5kusXJsXSw/+g3YE30f3rydg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.1.tgz", + "integrity": "sha512-udkhE2WqYovWvuBriFDgOyFFHt9TStsTZjQVMtnr0eyeqi0m0zP4zwjv2kx2ug6JX5pGOCjep6Fw0MH+2wujKw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-label": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.0.tgz", - "integrity": "sha512-aG/oSvVx4U36mW2XK/HF+sEj42WM/PTO4a/sDYA62gDhok1Ksl+Mk6tdTDzBh3sdGYoZDemtOcWvjd87pPgimA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.1.tgz", + "integrity": "sha512-Bzo0IIa5jz07/fcinzIEGS/Q+vT1U935othOoQVDGi5jVOAJV5c0ciWoWthmg2hxIMZ+XacxL0PwsrEEaC1imA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.0.tgz", - "integrity": "sha512-hfI3wZQxrAbsq+sNca6yfZ41vUOPIlg1clZNCSh76XD5YwTgFtHDse1HBrib7NY4kkOxHhRCFW4RO7BgWJcbtA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.1.tgz", + "integrity": "sha512-BNMZFrn5uwvQMYjArd8PU77TkwySy3m6dDzL2qwxp5dcbqOBA7Mi81qsAGqhyJNXqY1IAGQONZXRE6gvMewF4g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-DA1Tbvnri0HWbbzSe5v4wVezdHang8cmAfActLawF6LG9CV6LZLxSMMsSzbDBisGS8cscc0RgAeSLXnlNaLN8w==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-R1TYp04AmzXf2YzH0IY7T8FXGYgHdR6HoJcLbIFt+AkmWKgI5QZNtBPCsIVwK2FtJQLOoEzcxHgw5SEXpLfzKQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.0.tgz", - "integrity": "sha512-GrRVkZrLSk1Pjmo0JtbGNUfYCVZ4ZWIGo78GDPRPOdccuTVNLS1HwdKfNV+ZRJe0hJYt1ALglSprujuG67ORcA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.1.tgz", + "integrity": "sha512-4So5Wm7xkIspd67f2pNlWUdomqo1RjLvQWZ+3oa1bs0dCJli52HNzL15RSps4JDwyzi9gS64S2eg3mLZhp3SkQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.0.tgz", - "integrity": "sha512-XGytEGLb1tTnEP6eB6K/RJXYzGhhgfwrm7/OKuMvIANc2OI0toYpDSOeRclm7W4tQwZCM9OadnGXZYkzJGcj5Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.1.tgz", + "integrity": "sha512-xEEi631R32i47R69VDhEecYwNFxW9VhvKLpYsi0Ud1lsaTtxBa75BIXL0eYXfAOgBVq9LQoFrfbWizOakUBl5w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.0", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1" } }, "@umbraco-ui/uui-modal": { - "version": "file:umbraco-ui-uui-modal-0.0.0.tgz", - "integrity": "sha512-BYfbO5UocZrtj8t1Baox3ivldbNyoKugZGvwKXl0XZ7FZVGvAMrVmzZSI6KtEvYl9Jey/I8VqkZh30QBflEM0Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.1.tgz", + "integrity": "sha512-qQ02YRI8qvhA+Hdl0amRR9qY6nxJQfuXXRGnKpweGzwoY7l8vcuCFWjxNTBY++r6D2B1WD7elHvEgr8hM/QGPQ==", "requires": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - }, - "dependencies": { - "@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "requires": { - "lit": "^2.2.2" - } - } - } - }, - "@umbraco-ui/uui-modal-container": { - "version": "file:umbraco-ui-uui-modal-container-0.0.0.tgz", - "integrity": "sha512-nsw2fkpOnG7pU+TqDZqXF57eNw2a4zIyN1TllVNEU4tdPrF5c4vTyIzE5O6Flsu8euCVruDZepo9SyLTm6jnew==", - "requires": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - }, - "dependencies": { - "@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "requires": { - "lit": "^2.2.2" - } - } - } - }, - "@umbraco-ui/uui-modal-dialog": { - "version": "file:umbraco-ui-uui-modal-dialog-0.0.0.tgz", - "integrity": "sha512-hv3LQ/kzTZQMMXDt8NM5ZJTIsEYof5zKx9VFxbUGnhJhNRLeJ4bk9suWVl8h942VsOJwR+NbXzOs4XTIqXb9MA==", - "requires": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - }, - "dependencies": { - "@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "requires": { - "lit": "^2.2.2" - } - } - } - }, - "@umbraco-ui/uui-modal-sidebar": { - "version": "file:umbraco-ui-uui-modal-sidebar-0.0.0.tgz", - "integrity": "sha512-qQTO/YD3wzACmHf6QVW5c2smWMPougDwyKLV6Zku+QdgeZleS1ZiR/AvqHVHiRjuQ84ZhKyBl4H1IcYnAMntnw==", - "requires": { - "@umbraco-ui/uui-base": "1.0.0-rc.0" - }, - "dependencies": { - "@umbraco-ui/uui-base": { - "version": "1.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.0.0-rc.0.tgz", - "integrity": "sha512-MgWuWCPKMyn4a4MzrgxCCKGb7w5tXcEnG5y6IyYKV2BNfcnSqyRwfwE3bueDRyDfeC2eclGM5AStONBsfw63eA==", - "requires": { - "lit": "^2.2.2" - } - } + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.0.tgz", - "integrity": "sha512-ut26Z5NPaQVs4u45TcdgaCaj2Qt5jNtCgyHpgMhqfbs28lAwwuvodvLClQ1TiTv+TzE+Kzq6YyC57tQJVkRrDQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.1.tgz", + "integrity": "sha512-4VGt9KwMcnu4ypHAO3TSWuawiWpTf6Obp1JllrAOVFVPIi037poRlaRAOvMYdUXS/VGSKZwlcPgVS28U3hhfZw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-button-group": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-button-group": "1.2.0-rc.1" } }, "@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.0.tgz", - "integrity": "sha512-AVkXJsP9IuL6rGXzTvUNqvDEA80vhMOGBGLVzwumfNzV0kIjyEWtAXQWIllssUUI5pDUY1FY7hk7RIiB5QmczA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.1.tgz", + "integrity": "sha512-0j/xDxCdDrIZDS2CBlEftQb1sJDuFh8Z6SIcgYV0Tf7Z06D/IEx3rdkQ1tduVSzntKWkpPJSXajbjX4+oEl3rw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.0.tgz", - "integrity": "sha512-RjmEpCc3moZynCDOAM5eGKi/7y2pXPGB2ohvcjCSZVDFxX3QZAyRB5PIAAT/pNo0aPii8HxTTE3b4qJFurNxGA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.1.tgz", + "integrity": "sha512-w8qMFuwXClXrlCRJozYMCJ5qwIUhdiVlx9OH2ctQopRCxBoy7MU+BIr2Uhe3IFvFVnYSTEQqjMfk6IgC0+zMcA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.0.tgz", - "integrity": "sha512-I2j/bOLSHSqXnJx/Fh9Jfabao+a5Xx6BYRgkJCxRCfHl0FTncufmSwDFs5WjrR45eKFUuU9gOWtbddFQjCdBMg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.1.tgz", + "integrity": "sha512-Nd53D3MF6DXVs9+7AUhh7Fj827/TOX3QpQRUIWn93/7qKfDrZ3pK2TMWDxy1NKdjoAHCgmQdGI5fwqTt3fNYCQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-EhdQAu6POZL5a8IOjBcMraCcufa1JYesVuZ2VZwGaOojfcVGjH0rIuqngpq/Oe5GAJUMOgzqCKmYyFhFCfmLpA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-qRKhBm3joFo171BV1ri94HVQpjQKXmejRiqr++4IzCZJO8zbtHV4YoHm2F26bbYKMzyzMW2sUnUrI/R6kbQECw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.0.tgz", - "integrity": "sha512-rrpWYRjjbx+ge7baO+tRcn+Qa1nwecQ/Sl4d/0rgo3xP+pKAnT0rozt6htfc60a/9Mnbz7mbj0NGSzMOJZRtJA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.1.tgz", + "integrity": "sha512-2vIIjvwibSa0nx/oQo898F7tl4hufseLHQjW3V2fW7ykP7YFTWeXI7JRB8TuSpzF85oEuH3SUIsvNXIzS43Cvg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.0.tgz", - "integrity": "sha512-8h+GG1kGc3LM5ojCZxsHRjHuvopuc5ZYXtg/Upgm7G5ct32JbVnUNM8b6hjH7NHSskDTLoslO1+wnalHcPc/Bw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.1.tgz", + "integrity": "sha512-/2xiKUtZ/b2KLrcVj+84M3YD6xOpCFmkC8i3fefwr19FvpqgD8Qw5Z4b5iOrcPfe6JCTSNiVrWzdqkDUNuloMQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.0.tgz", - "integrity": "sha512-v9UpY1ADCAGPaFzRBLU2OTmczBNYAUN9Y6OVG5QCHUfGIvo6lwbYWJITN1tVAiofJemaTftJI9j9wy77kDTvDw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.1.tgz", + "integrity": "sha512-Xem/rxuLnc/H228ojZ1hqNYq2HusDZDQ8LJZGr8WaOWxZxcWW9fOQ/kJdeUt4enZydF/wOnpJf7aexb4bkuTCg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-ref": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-ref": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.0.tgz", - "integrity": "sha512-TvKxerjA3vsyuLu9peVnhnOAPKzeQPsZupSKixMqm2x2oX6S1QoCPNpSbIYi6mEcDnjFMi62VFYojinbngQ3CA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.1.tgz", + "integrity": "sha512-dQlEjTazYjwavphj/B2lUN+Oo9ODHHY66PTBJPfzmRY92kWrxuzaRqBceXK5fUYyWo4K61haGYB/8Wt0kbmu8g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.0.tgz", - "integrity": "sha512-ALhCascGg+7Gl7IDih/K2ZirWhKG9pyfH3q/m4nfmNVjutLqTT1vOkvj/9DUjJw1hPdWFdn5jFYiPr1XpfUHHw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.1.tgz", + "integrity": "sha512-L2NCQjNAbgf60euruelI9vfun9dVoAoJecUCRSx8uf4uQTelv42P7rsrUZ6+Xve0DA11T6+7iswFVIZDmAeaqw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.0.tgz", - "integrity": "sha512-tls/sJMu1MXg9vS16fpAXSKuntqKO6vkiI4oQHH1w5OV+QaS8+8nAsiWD3ogDN2P7JyOlfCMnqhj31E2EFqGPg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.1.tgz", + "integrity": "sha512-8q5FvoNCG3dbTQbNjmR+INSbqT7wDXbTXA3u/Kt1UIySGgObZd7hOSGfb6UTzcVHTUVxzt29dhdFtiFSDoFu6Q==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.0.tgz", - "integrity": "sha512-Z+2/Q29kJbio7hSNntRTuiw7AXL7/6Y79rmEaDtQdz51f+hkaO35f/fQTLTf5VDuWTzgG1p6jcDpdlRMq1dQhw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.1.tgz", + "integrity": "sha512-dq14ePyHuBL5Jn3a4gbxklEstYGyC/+Y2g+BIiR51PUa9pE+plXaofLZwkx4gWm5oiVjTTBW2piJFWrlmeuxtQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.0.tgz", - "integrity": "sha512-SBQgrbvEP7dXkoZ1b1t3q0EmWmaOXtWNmd6oH8aMtA/SL43Uwjgmhv9gbxzeP8fMjK4zGCu9D0CLSmFO+1s5sg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.1.tgz", + "integrity": "sha512-gb2cb/0r7/OESnlJD9ClnO5ZdW67vkA4NoD1XwYl0BH+4edViitKhxlSwg199+MvGJzMjpDW3EUcQ2k+xisWdQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.0.tgz", - "integrity": "sha512-myEYc6NkT8y/L8n1ndeRLGN584A+r0PPxbQCaMWmVAbcAq+Eb58W3ExnZM5toHJNUWjq7o2bIeX40eckYjkE3g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.1.tgz", + "integrity": "sha512-HfMKWGTDd2tFWinzLsRbIX+fi3Y0o9NCPKjvw62Eo1Bl6y64zmRjl32jqCinmfXwbozSMZ/MZDnwyfWxH5QJAQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" } }, "@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.0.tgz", - "integrity": "sha512-9XBHcDyact/5tdlrgCGwoEdmvcV14D5FrVS3jj/cOCqoBg0NaE1O9AS8OeLa1t4/HlOPijWYLj4oUs0aG3cyQg==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.1.tgz", + "integrity": "sha512-stdCKydwBs41/uQrO6ndmp+fAQR9HFoWWa3zxofkd3TNhKUOt3TmKq2wzZ3B9UcZ0LOzmR2LTcryGpNuo6aofQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-select": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.0.tgz", - "integrity": "sha512-Kmg8pTm0Ll+t0lussikOCWpvBeVxYh0TEIlaTNyLQZNwT3jKVvdyKsY4yNU7YUBMRQaBRhl0glJOTPxUBURroA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.1.tgz", + "integrity": "sha512-D4i20OKXoqfxWIuXj19XKj6bJJ0UF4L8IWlXzDPdXEdkiDoFJLSpDfJ39bs5xfrzgbr4+5+Pw5ZXCZDEMBaCRw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.0.tgz", - "integrity": "sha512-CqhSI2T7Rg3EAZemZvYaSaij9sLwS0Vk86g6QCzDVUoyF7q5QpUcd3+7vMD0rvbwBISarrPprooX+GGjTNLiAw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.1.tgz", + "integrity": "sha512-ISV8nY0TumFiXRePOn6fW7qPOtOsdSZ1Ld9EltT6VhwxADSn06hTwRhiuhACpPriPOmBtFMTc9GH6DMhLsqrNg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.0.tgz", - "integrity": "sha512-87Jxw6bYls7qs/srRXvqnadak3UDsbmYYItsIm2RS1CPxWvrSS3uEdLeCDhvMEoDCm+6B581ntmfiZ/k9OBxWQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.1.tgz", + "integrity": "sha512-pvG5cJ8tTPN51Qc28udzqXDrtWdjfvVxR9qFqGsI7NsS7an3ylLjuzzhuYwuUozbTZU6Nd6NRy4SjELuYNMkbA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.0.tgz", - "integrity": "sha512-iTZPVNB8kqQsqS/Kx/prTY1Hl70bQ+ZZKGm0+d0GxsoEoHKYB9jyQpMx80BWIO0sz5MgqM/8GA+ezAQh1v7sLw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.1.tgz", + "integrity": "sha512-C33jH44RlAjZqSj4hmdy/vBjRBNU3cJbBu1U9YBg+KA7Mrmd/wYmyg89yBIJLfQFnUkWK6oN9jSki+8Y9RqJBg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.0.tgz", - "integrity": "sha512-59g/paTrCuUlZidjvQh87MSEqxcN/xJf33tEw2BhbXRFGCP/2zzqhIeZx/xh690e0/JKUxPTmhznqmdjOPt5Ig==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.1.tgz", + "integrity": "sha512-vvAgntDGtj7jQFT1i3vQ7EHtb0u6UUQJJd6LccIzpDAtqo8Xy4aSrqCIRnn3J+NeXMNTrEMPuIdZFLf0e6ZbsA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.0.tgz", - "integrity": "sha512-huuJrD1v8hxmR02+KCS4RXmvNzwdEXDEVgLReAnDzhEQBQ3nhulEAJnyexw5MZ18LkB1l5rhNeHiRbFxh9u6lw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.1.tgz", + "integrity": "sha512-g9d1ucYRMyf+mkm2uSjpEPbAdc/VCoOKM2C94ssD8tS+rilMc8Y1qikzLfpq4fZxUyFSToFaHEsfs8IgAPGgtg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.0.tgz", - "integrity": "sha512-jj5n22biZIcGqt3bpBluPxCmsBqAGf5FlzU/1rEZdt9HWsJ2Yo9led+Fm26SqPTlo2Wqixm+MQhmIWJjQZxbOQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.1.tgz", + "integrity": "sha512-z1TVu4brfNaZRz5zh1+y/M6/hokhDVm2gSF8iU29bkeN9l1YPrvqIojS+QS+Lr/afWbYi+EBUiS9Ud9bMA6JSg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.0.tgz", - "integrity": "sha512-YmbeEYeEHAEgZo46rdubsFNTCREqzr5eOGWv4t7QGOawroKGCrLJs+xpBPqGSQkWRENVpj2etWD6pa4s3LW2Dw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.1.tgz", + "integrity": "sha512-khuXk3lprOT0PAFUGIXOqD1d1y8D3Dqz4QVoENVCrlEiWB7ilhNAwjYH6hjENtdC4//PmpClgq2gQGGTSm5PXA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.0.tgz", - "integrity": "sha512-5YuXU3RsowBd6k7YbR39R4cP408apA9rVM2uYD0FhR5JE8XVJ1o/AlapEZB455zeQcYeaWNZKM3VhNY4hzpOMw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.1.tgz", + "integrity": "sha512-teb3To70jeLLIkmc1SWMi6sk86CPBzNMnUsmItK5hHfUXhJ8Nds5pdoIKDv4B8p2jvd2vAc+JgEWb+H0s7IkXw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.0.tgz", - "integrity": "sha512-gKqd1oMS/uZTcUUCZuqo1ZOMW13QvuVbbTL420RVzjTilC9IZ4SDZU3ZbqS/fsLYPReeKkm4U9NJZdm6a9OqpQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.1.tgz", + "integrity": "sha512-P2EjmY2+tNeOBuAbsLt+tN2eZ0dfg8/+CBS/XmPysmL1Btb+PYV8Lzi4He7lfx4EY8OtANEVH5r7dO1fu+Fimw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-table": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.0.tgz", - "integrity": "sha512-BoGN8edf4MWhh2jxLcKht843c99ePeSN3LO1f7ICUFHxLJ1l+eEZLieWFh8ZpeErfY2zXsylRALsSSdGagnwKA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.1.tgz", + "integrity": "sha512-hlhabdzcvNBLckYSx7cw5y7XqZ/LpZMmlprJ+3Qvrg2JrN7l2BWYQHe+iWoJeF6I9LHeLVwx2ba+lvTV8JX6RA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.0.tgz", - "integrity": "sha512-0vMtMCIAyQ6aPLQiTtM+K7O7qoNCtHEjcVU8LrqGJjdCERvsrktyP6hwDlcOW52MiYcb7H5p4wxXoxi8fKdi+g==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.1.tgz", + "integrity": "sha512-MHzVa/nRtTxOwKggahY8INjVzX1+CM1Pm+T20riV15BefBlNgHNoLSjVOcDamLkn7ZNyZME5DTl0Tlv1wUV2jA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.0.tgz", - "integrity": "sha512-oZS5eaQUMo060Uh3z2yUp7ukb62j42MpE262fK7L0hmtk80Sqn9uff7RNWf3bgwIkyj+GuLm4coakSfbd56D7Q==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.1.tgz", + "integrity": "sha512-UtGOnGIW2mrQPmJqEyBwRdnHPYtO/qco23YGFS2tDCFGNmKpeLpakUnH7u7zp8cjXAyuUw2C/uwrvSypxb2LJQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.0.tgz", - "integrity": "sha512-aMtDe8C2ZuEr9NLV5onhiUx5Uw/09vnN2oXILoVKaPHhxtK/oqZS6MTnoGt3rlpfjZAjwfXY049MCn8pDPOJqA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.1.tgz", + "integrity": "sha512-t78/eFzDg+pYhLMsjJBjCqadYm2y2UVo3EYHfJQkxUNMljPRseOhBhVGcKMsl+ILBAwSwFs1ZEJLATWsL1LEVA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1" } }, "@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.0.tgz", - "integrity": "sha512-oaRqwcuPS9HazH+yTcaDnH3Wt7j04dE6JdWzL3Yj30NNo595ijnZbRlnShjILT2o8jh2DUhVI0JhnnogeMEssA==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.1.tgz", + "integrity": "sha512-TqiSNcxrdv7PyJPy7hAuf33aa3HksiKzfYNJAmwLyD1PIDFB5Iy5Otme+q5evtHqZLetf2d/Pl/UUVkdg9ySzw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-button": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0", - "@umbraco-ui/uui-icon": "1.2.0-rc.0", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-button": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1", + "@umbraco-ui/uui-icon": "1.2.0-rc.1", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" } }, "@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.0.tgz", - "integrity": "sha512-8+IPz99Py12fIuDAs89kXOdsfBszFS37XtgYpMFl9t+g4uyd7doV8jJFP8G3UnjjDuboQWhpKIJKiKCRoOmdGw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.1.tgz", + "integrity": "sha512-S4HiRfttbNl3Z98HNZjftTaINJLzRxmFRkSmvAIq+Aua4pvr3X6jwZmuHKnv+jxhVsddFzS0qcmxu+AUCZjE5Q==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1" } }, "@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.0.tgz", - "integrity": "sha512-mnq3a4Wu/Uor234we97mtvfeX8nl9w0fKsH2kBAgodkjXVMQssvCOdd7MKyh6G4mXUO4/WY0HbOYOCGv2I/feQ==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.1.tgz", + "integrity": "sha512-CdY1TZ2PpYTpbyzoOtRd4L3WJxkw5XKJ0PPyjIOiyBtVCxp3aKk1fDAhBsTqqzhPjADkTHGp4CAsLk/UgtODzw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-css": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-css": "1.2.0-rc.1" } }, "@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.0.tgz", - "integrity": "sha512-UXdiT/ROf8sKQTYge2wS4znhL4+IdpxoF4TPZr+U0k/5UQ+iQTzs6hy/GJQs5FcPnEI7gftrIHctP5O9yKsJvw==", + "version": "1.2.0-rc.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.1.tgz", + "integrity": "sha512-c54NFUKYbGoW2aNXQC8ymT8h0wXDiHBqpJrY+V/x0gCa/kpKrVQ8VrjGAREmLbBZCUhkTjXyLtggNj0yG6fmCA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.0", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.0" + "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1" } }, "@web/browser-logs": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 833bb4bde1..69b2f70cad 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -59,12 +59,8 @@ "npm": ">=9.5 < 10" }, "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.0", - "@umbraco-ui/uui-css": "^1.2.0-rc.0", - "@umbraco-ui/uui-modal": "file:umbraco-ui-uui-modal-0.0.0.tgz", - "@umbraco-ui/uui-modal-container": "file:umbraco-ui-uui-modal-container-0.0.0.tgz", - "@umbraco-ui/uui-modal-dialog": "file:umbraco-ui-uui-modal-dialog-0.0.0.tgz", - "@umbraco-ui/uui-modal-sidebar": "file:umbraco-ui-uui-modal-sidebar-0.0.0.tgz", + "@umbraco-ui/uui": "^1.2.0-rc.1", + "@umbraco-ui/uui-css": "^1.2.0-rc.1", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", From f9cd211eb8e2a363390c5543da3fcad1ebca808a Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Mar 2023 15:17:22 +0100 Subject: [PATCH 330/550] remove old uui-modal-* imports --- src/Umbraco.Web.UI.Client/.storybook/preview.js | 5 +---- src/Umbraco.Web.UI.Client/src/app.ts | 8 ++------ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.storybook/preview.js b/src/Umbraco.Web.UI.Client/.storybook/preview.js index 63cdf70dc3..822d951f3a 100644 --- a/src/Umbraco.Web.UI.Client/.storybook/preview.js +++ b/src/Umbraco.Web.UI.Client/.storybook/preview.js @@ -1,11 +1,8 @@ import '@umbraco-ui/uui-css/dist/uui-css.css'; import '../src/core/css/custom-properties.css'; +import 'element-internals-polyfill'; import '@umbraco-ui/uui'; -import '@umbraco-ui/uui-modal'; -import '@umbraco-ui/uui-modal-container'; -import '@umbraco-ui/uui-modal-dialog'; -import '@umbraco-ui/uui-modal-sidebar'; import { html } from 'lit'; import { initialize, mswDecorator } from 'msw-storybook-addon'; diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 5f71faa122..c6176bd363 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -1,11 +1,6 @@ import '@umbraco-ui/uui-css/dist/uui-css.css'; import './core/css/custom-properties.css'; -// TODO: remove these imports when they are part of UUI -import '@umbraco-ui/uui-modal'; -import '@umbraco-ui/uui-modal-container'; -import '@umbraco-ui/uui-modal-dialog'; -import '@umbraco-ui/uui-modal-sidebar'; import 'element-internals-polyfill'; import './core/router/router-slot.element'; @@ -16,11 +11,12 @@ import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbIconStore } from './core/stores/icon/icon.store'; + import type { Guard, IRoute } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; -import { UmbIconStore } from './core/stores/icon/icon.store'; import { umbDebugContextEventType } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-app') From dd8c5c390ad22069978c148d3a829b989ad6fd7b Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 23 Mar 2023 15:17:38 +0100 Subject: [PATCH 331/550] converge all uui-modal-* imports to uui --- src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts | 9 ++++++--- src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts | 3 +-- .../shared/components/input-list-base/input-list-base.ts | 2 +- .../input-multi-url-picker.element.ts | 2 +- .../src/backoffice/shared/modals/link-picker/index.ts | 2 +- .../property-editor-ui-multi-url-picker.element.ts | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts index ec77d83c3e..9d70723a1d 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-handler.ts @@ -1,6 +1,9 @@ -import type { UUIDialogElement } from '@umbraco-ui/uui'; -import type { UUIModalDialogElement } from '@umbraco-ui/uui-modal-dialog'; -import { UUIModalSidebarElement, UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { + UUIDialogElement, + UUIModalDialogElement, + UUIModalSidebarElement, + UUIModalSidebarSize, +} from '@umbraco-ui/uui'; import { v4 as uuidv4 } from 'uuid'; import { BehaviorSubject } from 'rxjs'; import { UmbModalConfig, UmbModalType } from './modal.context'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts index 0b54fbf806..3bce518c35 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal.context.ts @@ -1,9 +1,8 @@ // TODO: remove this import when the search hack is removed import '../../src/backoffice/search/modals/search/search-modal.element'; -import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { UUIModalDialogElement, UUIModalSidebarSize } from '@umbraco-ui/uui'; import { BehaviorSubject } from 'rxjs'; -import type { UUIModalDialogElement } from '@umbraco-ui/uui-modal-dialog'; import { UmbModalHandler, UmbModalHandlerClass } from './modal-handler'; import type { UmbModalToken } from './token/modal-token'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts index a750f92d04..f6a2e05cb1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { property } from 'lit/decorators.js'; -import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { UUIModalSidebarSize } from '@umbraco-ui/uui'; import { UmbModalContext, UmbModalToken, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index bf514d7bed..83882a79e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; -import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { UUIModalSidebarSize } from '@umbraco-ui/uui'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts index b660aa42b4..f83d03dc4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts @@ -1,4 +1,4 @@ -import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { UUIModalSidebarSize } from '@umbraco-ui/uui'; import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbLinkPickerModalData { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index a27502b44b..60ae567bad 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; -import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; +import type { UUIModalSidebarSize } from '@umbraco-ui/uui'; import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; From 323ef15e19d72636fd36778d2883d6244c2b63e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 15:53:12 +0100 Subject: [PATCH 332/550] open method and docs --- src/Umbraco.Web.UI.Client/libs/modal/index.ts | 1 + .../modal-route-registration.controller.ts | 7 +- .../libs/modal/modal-route-registration.ts | 11 ++- .../libs/router/index.ts | 0 .../input-multi-url-picker.element.ts | 4 +- .../src/core/modal/stories/modal.mdx | 77 ++++++++++++++++++- .../src/core/router/route.context.ts | 7 +- 7 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/router/index.ts diff --git a/src/Umbraco.Web.UI.Client/libs/modal/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/index.ts index f7eb94b760..eeb1d6be59 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/index.ts @@ -1,5 +1,6 @@ export * from './modal.context'; export * from './modal-handler'; +export * from './modal-route-registration'; export * from './modal-route-registration.controller'; export * from './token/modal-token'; export * from './modal.interfaces'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index 9b0c01db4d..8c13c00e5d 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -1,4 +1,3 @@ -import type { UmbRouteContext } from '../../src/core/router/route.context'; // TODO: Be aware here we import a class from src! import { UMB_ROUTE_CONTEXT_TOKEN } from '../../src/core/router/route.context'; import type { UmbControllerInterface } from '../controller'; @@ -7,8 +6,6 @@ import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-ap import { UmbModalConfig, UmbModalToken } from '@umbraco-cms/backoffice/modal'; import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; -export type UmbModalRegistrationToken = UmbModalRouteRegistration; - export class UmbModalRouteRegistrationController extends UmbModalRouteRegistration implements UmbControllerInterface @@ -18,8 +15,8 @@ export class UmbModalRouteRegistrationController; - #routeContext?: UmbRouteContext; - #modalRegistration?: UmbModalRegistrationToken; + #routeContext?: typeof UMB_ROUTE_CONTEXT_TOKEN.TYPE; + #modalRegistration?: UmbModalRouteRegistration; public get unique() { return undefined; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 69ad304123..095da5f546 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -17,6 +17,7 @@ export class UmbModalRouteRegistration void; #modalHandler: UmbModalHandler | undefined; + #routeBuilder?: UmbModalRouteBuilder; #urlBuilderCallback: ((urlBuilder: UmbModalRouteBuilder) => void) | undefined; // Notice i removed the key in the transferring to this class. @@ -58,6 +59,12 @@ export class UmbModalRouteRegistration void) { this.#urlBuilderCallback = callback; return this; } public _internal_setRouteBuilder(urlBuilder: UmbModalRouteBuilder) { + this.#routeBuilder = urlBuilder; this.#urlBuilderCallback?.(urlBuilder); } diff --git a/src/Umbraco.Web.UI.Client/libs/router/index.ts b/src/Umbraco.Web.UI.Client/libs/router/index.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index a36ddef713..cfef87d2ed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -5,9 +5,9 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; import type { UmbVariantId } from '../../variants/variant-id.class'; +import type { UmbModalRouteBuilder } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalRouteRegistrationController } from 'libs/modal/modal-route-registration.controller'; -import type { UmbModalRouteBuilder } from 'libs/modal/modal-route-registration'; /** * @element umb-input-multi-url-picker @@ -206,7 +206,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen // TODO: We should get a href property on uui-ref-node, and not use this method: private _temporary_onClick_editItem(index: number) { - window.history.pushState({}, '', this._modalRoute?.({ index: index || -1 })); + this.myModalRegistration.open({ index }); } render() { diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx index dcf18f274d..bff928ca0b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx @@ -82,6 +82,81 @@ descripe the addional features of the route Registration: - Reject a modal by returning false in setup. - Use a param as part of setup to determin the data going to the modal. +#### Modal registration for UI as part of a Property Editor + +```ts + + + @property() + public set alias(value: string | undefined) { + this.myModalRegistration.setUniqueIdentifier('propertyAlias', value); + } + + @property() + public set variantId(value: string | UmbVariantId | undefined) { + this.myModalRegistration.setUniqueIdentifier('variantId', value?.toString()); + } + + private _items = [ + { name: 'Item 1' }, + { name: 'Item 2' }, + { name: 'Item 3' }, + ] + + + constructor() { + super(); + + this.myModalRegistration = new UmbModalRouteRegistrationController( + this, + MY_MODAL_TOKEN, + `:index`, + new Map([ + ['propertyAlias', undefined], + ['variantId', undefined], + ]) + ) + .onSetup((params) => { + // Get item index: + const indexParam = params.index; + if (!indexParam) return false; + let index: number | null = parseInt(params.index); + if (Number.isNaN(index)) return false; + + // Use the index to find data: + let data = null; + if (index >= 0 && index < this._items.length) { + data = this._items[index]; + } else { + // If not then make a new pick: + index = null; + } + + return { + index: index, + itemData: { + name: data?.name + }, + }; + }) + .onSubmit((submitData) => { + if (!submitData) return; + this._items[submitData.index] = submitData.itemData; + }) + .observeRouteBuilder((routeBuilder) => { + this._modalRouteBuilder = routeBuilder; + }); + } + + render() { + return html` + ${this._items?.map((item, index) => + html`Add` + )} + `; + } +``` + #### Generate the URL to a Modal Route Registration The Modal registration has an option to retrive a URL Builder, this is a function that can be used to generate a URL to a modal. @@ -109,7 +184,7 @@ class MyElement extends UmbElementMixin(LitElement) { constructor() { super(); - this.consumeContext(UMB_MODAL_CONTEXT_ALIAS, (instance) => { + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { this.#modalContext = instance; // modalContext is now ready to be used }); diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts index bd9233aab9..20999b8554 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts @@ -4,9 +4,8 @@ import { UmbContextProviderController, UmbContextToken, } from '@umbraco-cms/backoffice/context-api'; -import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; -import { UMB_MODAL_CONTEXT_TOKEN } from 'libs/modal/modal.context'; -import { UmbModalRouteRegistration } from 'libs/modal/modal-route-registration'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UMB_MODAL_CONTEXT_TOKEN, UmbModalRouteRegistration } from '@umbraco-cms/backoffice/modal'; const EmptyDiv = document.createElement('div'); @@ -118,7 +117,7 @@ export class UmbRouteContext { } #generateNewUrlBuilder = (modalRegistration: UmbModalRouteRegistration) => { - if (!modalRegistration.usesRouteBuilder() || !this.#routerBasePath) return; + if (!this.#routerBasePath) return; const routeBasePath = this.#routerBasePath.endsWith('/') ? this.#routerBasePath : this.#routerBasePath + '/'; const localPath = `modal/${modalRegistration.alias.toString()}/${modalRegistration.path}`; From 13d4bb587338e7cdd9bcfc0fcfadf5d579d95f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:20:39 +0100 Subject: [PATCH 333/550] move router to libs --- .../libs/modal/modal-route-registration.controller.ts | 2 +- src/Umbraco.Web.UI.Client/libs/router/index.ts | 3 +++ .../{src/core => libs}/router/route-location.interface.ts | 0 .../{src/core => libs}/router/route.context.ts | 7 ++++--- .../{src/core => libs}/router/route.interface.ts | 0 src/Umbraco.Web.UI.Client/src/core/router/index.ts | 3 --- .../src/core/router/router-slot.element.ts | 3 +-- src/Umbraco.Web.UI.Client/tsconfig.json | 1 + 8 files changed, 10 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/{src/core => libs}/router/route-location.interface.ts (100%) rename src/Umbraco.Web.UI.Client/{src/core => libs}/router/route.context.ts (95%) rename src/Umbraco.Web.UI.Client/{src/core => libs}/router/route.interface.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index 8c13c00e5d..f1ef34e69c 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -1,5 +1,5 @@ // TODO: Be aware here we import a class from src! -import { UMB_ROUTE_CONTEXT_TOKEN } from '../../src/core/router/route.context'; +import { UMB_ROUTE_CONTEXT_TOKEN } from '../router/route.context'; import type { UmbControllerInterface } from '../controller'; import { UmbModalRouteRegistration } from './modal-route-registration'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; diff --git a/src/Umbraco.Web.UI.Client/libs/router/index.ts b/src/Umbraco.Web.UI.Client/libs/router/index.ts index e69de29bb2..5a49b1769d 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/index.ts @@ -0,0 +1,3 @@ +export * from './route-location.interface'; +export * from './route.context'; +export * from './route.interface'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts b/src/Umbraco.Web.UI.Client/libs/router/route-location.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/core/router/route-location.interface.ts rename to src/Umbraco.Web.UI.Client/libs/router/route-location.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts similarity index 95% rename from src/Umbraco.Web.UI.Client/src/core/router/route.context.ts rename to src/Umbraco.Web.UI.Client/libs/router/route.context.ts index 20999b8554..93cc0f64b8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -1,4 +1,5 @@ -import { IRoute, IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import { IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import { UmbRoute } from './route.interface'; import { UmbContextConsumerController, UmbContextProviderController, @@ -13,7 +14,7 @@ export class UmbRouteContext { //#host: UmbControllerHostInterface; #modalRegistrations: UmbModalRouteRegistration[] = []; #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; - #contextRoutes: IRoute[] = []; + #contextRoutes: UmbRoute[] = []; #routerBasePath?: string; #activeModalPath?: string; @@ -49,7 +50,7 @@ export class UmbRouteContext { return `/modal/${modalRegistration.alias.toString()}/${modalRegistration.path}`; } - #generateRoute(modalRegistration: UmbModalRouteRegistration): IRoute { + #generateRoute(modalRegistration: UmbModalRouteRegistration): UmbRoute { return { path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, diff --git a/src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/core/router/route.interface.ts rename to src/Umbraco.Web.UI.Client/libs/router/route.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index 8977c05ae9..d3c5361842 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,8 +1,5 @@ export * from 'router-slot'; -export * from './route.interface'; -export * from './route.context'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; export * from './variant-router-slot.element'; -export * from './route-location.interface'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 6ceb4aedb5..0881affd54 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -2,11 +2,10 @@ import type { IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; +import { UmbRouteContext, UmbRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '../lit-element'; import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; -import { UmbRouteContext } from './route.context'; -import { UmbRoute } from './route.interface'; /** * @element umb-router-slot diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 40bbd59d48..147a4a8288 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -35,6 +35,7 @@ "@umbraco-cms/backoffice/property-editor": ["libs/property-editor"], "@umbraco-cms/backoffice/repository": ["libs/repository"], "@umbraco-cms/backoffice/resources": ["libs/resources"], + "@umbraco-cms/backoffice/router": ["libs/router"], "@umbraco-cms/backoffice/store": ["libs/store"], "@umbraco-cms/backoffice/utils": ["libs/utils"], "@umbraco-cms/backoffice/workspace": ["libs/workspace"], From 24f30dd023481be67bcf85ffa02076ad5bef8c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:24:38 +0100 Subject: [PATCH 334/550] Move UMB_CHANGE_PASSWORD_MODAL --- src/Umbraco.Web.UI.Client/libs/modal/token/index.ts | 9 +++++++++ .../change-password/change-password-modal.element.ts | 2 +- .../current-user/modals/change-password/index.ts | 12 ------------ .../current-user/current-user-modal.element.ts | 4 ++-- .../users/workspace/user-workspace-edit.element.ts | 4 ++-- 5 files changed, 14 insertions(+), 17 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/token/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/index.ts diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts new file mode 100644 index 0000000000..b2db240cd6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -0,0 +1,9 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbChangePasswordModalData { + requireOldPassword: boolean; +} + +export const UMB_CHANGE_PASSWORD_MODAL = new UmbModalToken('Umb.Modal.ChangePassword', { + type: 'dialog', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts index eb8830b5a0..f79414cb2d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbChangePasswordModalData } from '.'; +import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/index.ts deleted file mode 100644 index 686021241b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; - -export interface UmbChangePasswordModalData { - requireOldPassword: boolean; -} - -export const UMB_CHANGE_PASSWORD_MODAL_TOKEN = new UmbModalToken( - 'Umb.Modal.ChangePassword', - { - type: 'dialog', - } -); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index 959687fd9c..b987dae615 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -7,7 +7,7 @@ import { UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, } from '../../current-user-history.store'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../change-password'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token'; import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -139,7 +139,7 @@ export class UmbCurrentUserModalElement extends UmbLitElement { private _changePassword() { if (!this._modalContext) return; - this._modalContext.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { + this._modalContext.open(UMB_CHANGE_PASSWORD_MODAL, { requireOldPassword: this._currentUserStore?.isAdmin || false, }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index 67f89f7402..944a54f750 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -6,7 +6,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL_TOKEN } from '../../current-user/modals/change-password'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token'; import { UmbUserWorkspaceContext } from './user-workspace.context'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { getLookAndColorFromUserStatus } from '@umbraco-cms/backoffice/utils'; @@ -181,7 +181,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { } private _changePassword() { - this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL_TOKEN, { + this._modalContext?.open(UMB_CHANGE_PASSWORD_MODAL, { requireOldPassword: this._currentUserStore?.isAdmin === false, }); } From 90db955f8774ffeef02d3c5400d8e974c81403e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:26:18 +0100 Subject: [PATCH 335/550] rename file of UMB_CHANGE_PASSWORD_MODAL --- src/Umbraco.Web.UI.Client/libs/modal/index.ts | 2 +- .../libs/modal/token/change-password-modal.ts | 9 +++++++++ src/Umbraco.Web.UI.Client/libs/modal/token/index.ts | 11 ++--------- .../change-password/change-password-modal.element.ts | 2 +- .../modals/current-user/current-user-modal.element.ts | 2 +- .../users/workspace/user-workspace-edit.element.ts | 2 +- 6 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts diff --git a/src/Umbraco.Web.UI.Client/libs/modal/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/index.ts index eeb1d6be59..3e2caa5f16 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/index.ts @@ -2,5 +2,5 @@ export * from './modal.context'; export * from './modal-handler'; export * from './modal-route-registration'; export * from './modal-route-registration.controller'; -export * from './token/modal-token'; +export * from './token'; export * from './modal.interfaces'; diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts new file mode 100644 index 0000000000..b2db240cd6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts @@ -0,0 +1,9 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export interface UmbChangePasswordModalData { + requireOldPassword: boolean; +} + +export const UMB_CHANGE_PASSWORD_MODAL = new UmbModalToken('Umb.Modal.ChangePassword', { + type: 'dialog', +}); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts index b2db240cd6..856be1a277 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -1,9 +1,2 @@ -import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; - -export interface UmbChangePasswordModalData { - requireOldPassword: boolean; -} - -export const UMB_CHANGE_PASSWORD_MODAL = new UmbModalToken('Umb.Modal.ChangePassword', { - type: 'dialog', -}); +export * from './modal-token'; +export * from './change-password-modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts index f79414cb2d..0da190f340 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token'; +import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token/change-password-modal'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index b987dae615..a54a7ede81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -7,7 +7,7 @@ import { UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, } from '../../current-user-history.store'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token/change-password-modal'; import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index 944a54f750..0bf4c53f72 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -6,7 +6,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token/change-password-modal'; import { UmbUserWorkspaceContext } from './user-workspace.context'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { getLookAndColorFromUserStatus } from '@umbraco-cms/backoffice/utils'; From c7a77c23e2f4cf2c8edcb55f3efbe8d31f0f899b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:27:28 +0100 Subject: [PATCH 336/550] confirm modal --- .../actions/delete/delete.action.ts | 4 ++-- .../entity-action/actions/trash/trash.action.ts | 4 ++-- ...d-modal.ts => change-password-modal.token.ts} | 0 .../modal/token/confirm-modal.token.ts} | 9 +++------ .../libs/modal/token/index.ts | 2 +- .../dashboard-redirect-management.element.ts | 8 ++++---- .../entity-bulk-actions/trash/trash.action.ts | 4 ++-- .../created/packages-created-overview.element.ts | 4 ++-- ...stalled-packages-section-view-item.element.ts | 4 ++-- .../views/section-view-examine-indexers.ts | 4 ++-- .../dashboard-published-status.element.ts | 12 ++++++------ .../extension-root-workspace.element.ts | 16 +++++++++------- .../input-document-picker.element.ts | 4 ++-- .../input-language-picker.element.ts | 4 ++-- .../input-media-picker.element.ts | 4 ++-- .../modals/confirm/confirm-modal.element.ts | 2 +- .../modals/confirm/confirm-modal.stories.ts | 2 +- .../input-multiple-text-string-item.element.ts | 4 ++-- .../change-password-modal.element.ts | 2 +- .../current-user/current-user-modal.element.ts | 2 +- .../workspace/user-workspace-edit.element.ts | 2 +- 21 files changed, 48 insertions(+), 49 deletions(-) rename src/Umbraco.Web.UI.Client/libs/modal/token/{change-password-modal.ts => change-password-modal.token.ts} (100%) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/confirm/index.ts => libs/modal/token/confirm-modal.token.ts} (67%) diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts index 91b855ca74..8d49922ce6 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts @@ -1,4 +1,4 @@ -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../src/backoffice/shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../modal/token/confirm-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; @@ -25,7 +25,7 @@ export class UmbDeleteEntityAction< if (data) { const item = data[0]; - const modalHandler = this.#modalContext.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this.#modalContext.open(UMB_CONFIRM_MODAL, { headline: `Delete ${item.name}`, content: 'Are you sure you want to delete this item?', color: 'danger', diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts index 95888d0ec9..0e001c305e 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts @@ -1,4 +1,4 @@ -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../src/backoffice/shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../modal/token/confirm-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; @@ -25,7 +25,7 @@ export class UmbTrashEntityAction< if (data) { const item = data[0]; - const modalHandler = this.#modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this.#modalContext?.open(UMB_CONFIRM_MODAL, { headline: `Trash ${item.name}`, content: 'Are you sure you want to move this item to the recycle bin?', color: 'danger', diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/change-password-modal.token.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/confirm-modal.token.ts similarity index 67% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/confirm-modal.token.ts index 17a03869d0..612881bc26 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/confirm-modal.token.ts @@ -10,9 +10,6 @@ export interface UmbConfirmModalData { export type UmbConfirmModalResult = undefined; -export const UMB_CONFIRM_MODAL_TOKEN = new UmbModalToken( - 'Umb.Modal.Confirm', - { - type: 'dialog', - } -); +export const UMB_CONFIRM_MODAL = new UmbModalToken('Umb.Modal.Confirm', { + type: 'dialog', +}); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts index 856be1a277..16add9a4ab 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -1,2 +1,2 @@ export * from './modal-token'; -export * from './change-password-modal'; +export * from './change-password-modal.token'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 174905edee..d0c8dbd954 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; import { UUIButtonState, UUIPaginationElement, UUIPaginationEvent } from '@umbraco-ui/uui'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { @@ -21,7 +21,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { display: block; margin: var(--uui-size-layout-1); } - + .actions { display: flex; gap: var(--uui-size-space-1); @@ -136,7 +136,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private _removeRedirectHandler(data: RedirectUrlResponseModel) { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: 'Delete', content: html`
    @@ -167,7 +167,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private _disableRedirectHandler() { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: 'Disable URL tracker', content: html`Are you sure you want to disable the URL tracker?`, color: 'danger', 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 0b14d85089..d3f611a4e0 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 type { UmbMediaRepository } from '../../repository/media.repository'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../../libs/modal/token/confirm-modal.token'; import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -26,7 +26,7 @@ export class UmbMediaTrashEntityBulkAction extends UmbEntityBulkActionBase diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts index 650a285706..615b95128d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -2,7 +2,7 @@ import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { PublishedCacheResource } from '@umbraco-cms/backoffice/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -14,10 +14,10 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { UUITextStyles, css` :host { - display:block; - margin:var(--uui-size-layout-1); + display: block; + margin: var(--uui-size-layout-1); } - + uui-box + uui-box { margin-top: var(--uui-size-space-5); } @@ -86,7 +86,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { } } private async _onReloadCacheHandler() { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: 'Reload', content: html` Trigger a in-memory and local file cache reload on all servers. `, color: 'danger', @@ -109,7 +109,7 @@ export class UmbDashboardPublishedStatusElement extends UmbLitElement { } private async _onRebuildCacheHandler() { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: 'Rebuild', content: html` Rebuild content in cmsContentNu database table. Expensive.`, color: 'danger', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index 0d9292a280..070fe402f5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../shared/modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -9,11 +9,13 @@ import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffic @customElement('umb-extension-root-workspace') export class UmbExtensionRootWorkspaceElement extends UmbLitElement { - static styles = [css` - uui-box { - margin: var(--uui-size-layout-1); - } - `] + static styles = [ + css` + uui-box { + margin: var(--uui-size-layout-1); + } + `, + ]; @state() private _extensions?: Array = undefined; @@ -50,7 +52,7 @@ export class UmbExtensionRootWorkspaceElement extends UmbLitElement { } async #removeExtension(extension: ManifestTypes) { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: 'Unload extension', confirmLabel: 'Unload', content: html`

    Are you sure you want to unload the extension ${extension.alias}?

    `, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index 7b3d2bdea9..4a4fd09ebf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -5,7 +5,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/documents/repository/document.tree.store'; import type { UmbDocumentTreeStore } from '../../../documents/documents/repository/document.tree.store'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -134,7 +134,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen } private async _removeItem(item: EntityTreeItemResponseModel) { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { color: 'danger', headline: `Remove ${item.name}?`, content: 'Are you sure you want to remove this item', 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 cd21264afa..0a123c8cf9 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 @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from '../../../settings/languages/modals/language-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; @@ -133,7 +133,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen } private _removeItem(item: LanguageResponseModel) { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { color: 'danger', headline: `Remove ${item.name}?`, content: 'Are you sure you want to remove this item', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index d497dda6df..ed4e6f2134 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -4,7 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbMediaRepository } from '../../../media/media/repository/media.repository'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../../media/media/modals/media-picker'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -148,7 +148,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } private _removeItem(item: EntityTreeItemResponseModel) { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { color: 'danger', headline: `Remove ${item.name}?`, content: 'Are you sure you want to remove this item', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts index 6f1735ad30..9e25f29734 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; -import { UmbConfirmModalData, UmbConfirmModalResult } from '.'; +import { UmbConfirmModalData, UmbConfirmModalResult } from '../../../../../libs/modal/token/confirm-modal.token'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts index 8a33def986..382d9f9ff0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts @@ -4,7 +4,7 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; import type { UmbConfirmModalElement } from './confirm-modal.element'; -import type { UmbConfirmModalData } from './'; +import type { UmbConfirmModalData } from '../../../../../libs/modal/token/confirm-modal.token'; export default { title: 'API/Modals/Layouts/Confirm', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts index 825c8dd11c..0fcb4875a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts @@ -4,7 +4,7 @@ import { customElement, property, query } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIInputEvent } from '@umbraco-ui/uui-input'; import { UUIInputElement } from '@umbraco-ui/uui'; -import { UMB_CONFIRM_MODAL_TOKEN } from '../../../../modals/confirm'; +import { UMB_CONFIRM_MODAL } from '../../../../../../../libs/modal/token/confirm-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbChangeEvent, UmbInputEvent, UmbDeleteEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -66,7 +66,7 @@ export class UmbInputMultipleTextStringItemElement extends FormControlMixin(UmbL } #onDelete() { - const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { headline: `Delete ${this.value || 'item'}`, content: 'Are you sure you want to delete this item?', color: 'danger', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts index 0da190f340..a777278239 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token/change-password-modal'; +import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token/change-password-modal.token'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index a54a7ede81..6a9b3d1ab7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -7,7 +7,7 @@ import { UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, } from '../../current-user-history.store'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token/change-password-modal'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token/change-password-modal.token'; import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index 0bf4c53f72..b9b8ebad54 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -6,7 +6,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token/change-password-modal'; +import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token/change-password-modal.token'; import { UmbUserWorkspaceContext } from './user-workspace.context'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { getLookAndColorFromUserStatus } from '@umbraco-cms/backoffice/utils'; From ac88e200d980bc6d819c437780ab03520d9fece1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:28:22 +0100 Subject: [PATCH 337/550] UMB_ALLOWED_DOCUMENT_TYPES_MODAL --- .../modal/token/allowed-document-types-modal.token.ts} | 2 +- .../allowed-document-types-modal.element.ts | 5 ++++- .../documents/entity-actions/create/create.action.ts | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/documents/document-types/modals/allowed-document-types/index.ts => libs/modal/token/allowed-document-types-modal.token.ts} (83%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts index f4c5820dd4..74e37ca564 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts @@ -8,7 +8,7 @@ export interface UmbAllowedDocumentTypesModalResult { documentTypeKey: string; } -export const UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN = new UmbModalToken< +export const UMB_ALLOWED_DOCUMENT_TYPES_MODAL = new UmbModalToken< UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult >('Umb.Modal.AllowedDocumentTypes', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index 85a14bb33c..b133a5d74c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -3,7 +3,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; -import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '.'; +import { + UmbAllowedDocumentTypesModalData, + UmbAllowedDocumentTypesModalResult, +} from '../../../../../../libs/modal/token/allowed-document-types-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 2c0bdfbcc1..e2d4f6b5dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,4 +1,4 @@ -import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL_TOKEN } from '../../../document-types/modals/allowed-document-types'; +import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL } from '../../../../../../libs/modal/token/allowed-document-types-modal.token'; import type { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; @@ -24,7 +24,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Thu, 23 Mar 2023 21:29:09 +0100 Subject: [PATCH 338/550] UMB_ICON_PICKER_MODAL --- .../index.ts => libs/modal/token/icon-picker-modal.token.ts} | 2 +- .../workspace/document-type-workspace-edit.element.ts | 4 ++-- .../shared/modals/icon-picker/icon-picker-modal.element.ts | 5 ++++- .../shared/modals/icon-picker/icon-picker-modal.stories.ts | 2 +- .../icon-picker/property-editor-ui-icon-picker.element.ts | 4 ++-- 5 files changed, 10 insertions(+), 7 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/icon-picker/index.ts => libs/modal/token/icon-picker-modal.token.ts} (74%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/icon-picker-modal.token.ts similarity index 74% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/icon-picker-modal.token.ts index 50badac9ec..0ae41a9fbb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/icon-picker-modal.token.ts @@ -10,7 +10,7 @@ export interface UmbIconPickerModalResult { icon: string | undefined; } -export const UMB_ICON_PICKER_MODAL_TOKEN = new UmbModalToken( +export const UMB_ICON_PICKER_MODAL = new UmbModalToken( 'Umb.Modal.IconPicker', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts index 57d9095924..179b8c2631 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -2,7 +2,7 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../shared/modals/icon-picker'; +import { UMB_ICON_PICKER_MODAL } from '../../../../../libs/modal/token/icon-picker-modal.token'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -83,7 +83,7 @@ export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { } private async _handleIconClick() { - const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); + const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL); modalHandler?.onSubmit().then((saved) => { if (saved.icon) this.#workspaceContext?.setIcon(saved.icon); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts index 758696c00d..c74cb4893d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts @@ -6,7 +6,10 @@ import { customElement, property, state } from 'lit/decorators.js'; import { styleMap } from 'lit/directives/style-map.js'; import icons from '../../../../../public-assets/icons/icons.json'; -import { UmbIconPickerModalData, UmbIconPickerModalResult } from '.'; +import { + UmbIconPickerModalData, + UmbIconPickerModalResult, +} from '../../../../../libs/modal/token/icon-picker-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; // TODO: Make use of UmbPickerLayoutBase diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts index 2facbfb42a..6298779683 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts @@ -5,7 +5,7 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; import type { UmbIconPickerModalElement } from './icon-picker-modal.element'; -import { UmbIconPickerModalData } from '.'; +import { UmbIconPickerModalData } from '../../../../../libs/modal/token/icon-picker-modal.token'; export default { title: 'API/Modals/Layouts/Icon Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts index 6448b70d4b..e2f8a94f37 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts @@ -1,7 +1,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; -import { UMB_ICON_PICKER_MODAL_TOKEN } from '../../../modals/icon-picker'; +import { UMB_ICON_PICKER_MODAL } from '../../../../../../libs/modal/token/icon-picker-modal.token'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -29,7 +29,7 @@ export class UmbPropertyEditorUIIconPickerElement extends UmbLitElement implemen } private _openModal() { - this._modalContext?.open(UMB_ICON_PICKER_MODAL_TOKEN); + this._modalContext?.open(UMB_ICON_PICKER_MODAL); } render() { From 88fd5e246707bb2ca23064c6ba51e6bc4a4d9f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:29:53 +0100 Subject: [PATCH 339/550] document picker --- .../modal/token/document-picker-modal.token.ts} | 14 +++++++------- .../document-picker-modal.element.ts | 5 ++++- .../document-picker-modal.stories.ts | 2 +- .../input-document-picker.element.ts | 4 ++-- 4 files changed, 14 insertions(+), 11 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/documents/documents/modals/document-picker/index.ts => libs/modal/token/document-picker-modal.token.ts} (55%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/document-picker-modal.token.ts similarity index 55% rename from src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/document-picker-modal.token.ts index 4452cf228d..133318c692 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/document-picker-modal.token.ts @@ -9,10 +9,10 @@ export interface UmbDocumentPickerModalResult { selection: Array; } -export const UMB_DOCUMENT_PICKER_MODAL_TOKEN = new UmbModalToken< - UmbDocumentPickerModalData, - UmbDocumentPickerModalResult ->('Umb.Modal.DocumentPicker', { - type: 'sidebar', - size: 'small', -}); +export const UMB_DOCUMENT_PICKER_MODAL = new UmbModalToken( + 'Umb.Modal.DocumentPicker', + { + type: 'sidebar', + size: 'small', + } +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts index 1fc81dbb4a..858ba72458 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts @@ -2,7 +2,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import type { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; -import { UmbDocumentPickerModalData, UmbDocumentPickerModalResult } from '.'; +import { + UmbDocumentPickerModalData, + UmbDocumentPickerModalResult, +} from '../../../../../../libs/modal/token/document-picker-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; // TODO: make use of UmbPickerLayoutBase diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts index 8c61ae22cf..38d722cca2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts @@ -5,7 +5,7 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; import type { UmbDocumentPickerModalElement } from './document-picker-modal.element'; -import type { UmbDocumentPickerModalData } from './index'; +import type { UmbDocumentPickerModalData } from '../../../../../../libs/modal/token/document-picker-modal.token'; export default { title: 'API/Modals/Layouts/Content Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index 4a4fd09ebf..fbfa1475c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -6,7 +6,7 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/documents/repository/document.tree.store'; import type { UmbDocumentTreeStore } from '../../../documents/documents/repository/document.tree.store'; import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UMB_DOCUMENT_PICKER_MODAL_TOKEN } from '../../../documents/documents/modals/document-picker'; +import { UMB_DOCUMENT_PICKER_MODAL } from '../../../../../libs/modal/token/document-picker-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -123,7 +123,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen private _openPicker() { // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: - const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL, { multiple: this.max === 1 ? false : true, selection: [...this._selectedKeys], }); From 868d14920d5800300fef113372d0e489ad49c6e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:30:56 +0100 Subject: [PATCH 340/550] imports --- .../data-types/workspace/data-type-workspace-edit.element.ts | 2 +- .../src/core/router/variant-router-slot.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts index 26dfe86ba8..0c14a68c68 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -2,8 +2,8 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbRouteLocation } from '@umbraco-cms/backoffice/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; -import { UmbRouteLocation } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts index 748644267d..1b1b513308 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts @@ -1,6 +1,6 @@ import { customElement, property } from 'lit/decorators.js'; +import { UmbRoute } from '@umbraco-cms/backoffice/router'; import { UmbVariantId } from '../../backoffice/shared/variants/variant-id.class'; -import { UmbRoute } from './route.interface'; import { UmbRouterSlotElement } from './router-slot.element'; function variantIdsToString(variantIds: UmbVariantId[]): string { From 77c4fa74ae2a05431901c1078780229f40c3ab2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:34:05 +0100 Subject: [PATCH 341/550] more tokens --- .../modal/token/media-picker-modal.token.ts} | 2 +- .../libs/modal/token/search-modal.token.ts | 3 +++ .../media/media/entity-bulk-actions/move/move.action.ts | 4 ++-- .../media/modals/media-picker/media-picker-modal.element.ts | 5 ++++- .../src/backoffice/search/modals/search/index.ts | 3 --- .../input-media-picker/input-media-picker.element.ts | 4 ++-- 6 files changed, 12 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/media/media/modals/media-picker/index.ts => libs/modal/token/media-picker-modal.token.ts} (72%) create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/token/search-modal.token.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/search/modals/search/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/media-picker-modal.token.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/media-picker-modal.token.ts index 4cb0657504..94607575c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/media-picker-modal.token.ts @@ -9,7 +9,7 @@ export interface UmbMediaPickerModalResult { selection: Array; } -export const UMB_MEDIA_PICKER_MODAL_TOKEN = new UmbModalToken( +export const UMB_MEDIA_PICKER_MODAL = new UmbModalToken( 'Umb.Modal.MediaPicker', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/search-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/search-modal.token.ts new file mode 100644 index 0000000000..e3a99aab38 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/search-modal.token.ts @@ -0,0 +1,3 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export const UMB_SEARCH_MODAL = new UmbModalToken('Umb.Modal.Search'); 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 2e2496632c..0836900bed 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 type { UmbMediaRepository } from '../../repository/media.repository'; -import { UMB_MEDIA_PICKER_MODAL_TOKEN } from '../../modals/media-picker'; +import { UMB_MEDIA_PICKER_MODAL } from '../../../../../../libs/modal/token/media-picker-modal.token'; import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -18,7 +18,7 @@ export class UmbMediaMoveEntityBulkAction extends UmbEntityBulkActionBase Date: Thu, 23 Mar 2023 21:35:02 +0100 Subject: [PATCH 342/550] UMB_EXAMINE_FIELDS_SETTINGS_MODAL --- .../token/examine-fields-settings-modal.token.ts} | 2 +- .../views/modal-views/fields-settings.element.ts | 5 ++++- .../views/section-view-examine-searchers.ts | 10 +++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts => libs/modal/token/examine-fields-settings-modal.token.ts} (84%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/examine-fields-settings-modal.token.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/examine-fields-settings-modal.token.ts index 1e1e727379..d6f6aec2d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/examine-fields-settings-modal.token.ts @@ -9,7 +9,7 @@ export interface UmbCreateDocumentModalResultData { fields?: UmbExamineFieldsSettingsModalData; } -export const UMB_EXAMINE_FIELDS_SETTINGS_MODAL_TOKEN = new UmbModalToken< +export const UMB_EXAMINE_FIELDS_SETTINGS_MODAL = new UmbModalToken< UmbExamineFieldsSettingsModalData, UmbCreateDocumentModalResultData >('Umb.Modal.ExamineFieldsSettings', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts index 60a1acfb8e..0844ab9751 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts @@ -1,7 +1,10 @@ import { html, css } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { UmbCreateDocumentModalResultData, UmbExamineFieldsSettingsModalData } from '.'; +import { + UmbCreateDocumentModalResultData, + UmbExamineFieldsSettingsModalData, +} from '../../../../../../../libs/modal/token/examine-fields-settings-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-examine-fields-settings-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts index 10439bad30..8aa1f5aea0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts @@ -1,14 +1,18 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; +import { UMB_EXAMINE_FIELDS_SETTINGS_MODAL } from '../../../../../../libs/modal/token/examine-fields-settings-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; -import { SearchResultResponseModel, SearcherResource, FieldPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { + SearchResultResponseModel, + SearcherResource, + FieldPresentationModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import './modal-views/fields-viewer.element'; import './modal-views/fields-settings.element'; -import { UMB_EXAMINE_FIELDS_SETTINGS_MODAL_TOKEN } from './modal-views'; interface ExposedSearchResultField { name?: string | null; @@ -174,7 +178,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { } private _onFieldFilterClick() { - const modalHandler = this._modalContext?.open(UMB_EXAMINE_FIELDS_SETTINGS_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_EXAMINE_FIELDS_SETTINGS_MODAL, { ...this._exposedFields, }); modalHandler?.onSubmit().then(({ fields } = {}) => { From 08a33fc16ced08a65d097e99ab0391e5935e24cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:36:04 +0100 Subject: [PATCH 343/550] property-editor-ui-picker-modal.token --- .../modal/token/property-editor-ui-picker-modal.token.ts} | 2 +- .../details/data-type-details-workspace-view.element.ts | 4 ++-- .../property-settings/property-settings-modal.element.ts | 4 ++-- .../property-editor-ui-picker-modal.element.ts | 5 ++++- .../property-editor-ui-picker-modal.stories.ts | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/property-editors/modals/property-editor-ui-picker/index.ts => libs/modal/token/property-editor-ui-picker-modal.token.ts} (84%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/property-editor-ui-picker-modal.token.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/property-editor-ui-picker-modal.token.ts index 4c3f86509f..9bff24f2fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/property-editor-ui-picker-modal.token.ts @@ -9,7 +9,7 @@ export type UmbPropertyEditorUIPickerModalResult = { selection: Array; }; -export const UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN = new UmbModalToken< +export const UMB_PROPERTY_EDITOR_UI_PICKER_MODAL = new UmbModalToken< UmbPropertyEditorUIPickerModalData, UmbPropertyEditorUIPickerModalResult >('Umb.Modal.PropertyEditorUIPicker', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts index b5c5da1ce6..e300052f4a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; -import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN } from '../../../../../shared/property-editors/modals/property-editor-ui-picker'; +import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL } from '../../../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -101,7 +101,7 @@ export class UmbDataTypeDetailsWorkspaceViewEditElement extends UmbLitElement { private _openPropertyEditorUIPicker() { if (!this._dataType) return; - const modalHandler = this._modalContext?.open(UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_PROPERTY_EDITOR_UI_PICKER_MODAL, { selection: this._propertyEditorUiAlias ? [this._propertyEditorUiAlias] : [], }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts index 83c189408c..37e3d4cc3a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts @@ -2,7 +2,7 @@ import { UUIBooleanInputEvent, UUIInputEvent, UUISelectEvent } from '@umbraco-ui import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL_TOKEN } from '../../property-editors/modals/property-editor-ui-picker'; +import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL } from '../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; import { UmbPropertySettingsModalResult } from '.'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { ManifestPropertyEditorUI } from '@umbraco-cms/backoffice/extensions-registry'; @@ -261,7 +261,7 @@ export class UmbPropertySettingsModalElement extends UmbModalBaseElement Date: Thu, 23 Mar 2023 21:36:48 +0100 Subject: [PATCH 344/550] language-picker-modal --- .../modal/token/language-picker-modal.token.ts} | 14 +++++++------- .../input-language-picker.element.ts | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/settings/languages/modals/language-picker/index.ts => libs/modal/token/language-picker-modal.token.ts} (65%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/language-picker-modal.token.ts similarity index 65% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/language-picker-modal.token.ts index 477754bc5d..fb47287bd9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/modals/language-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/language-picker-modal.token.ts @@ -11,10 +11,10 @@ export interface UmbLanguagePickerModalResult { selection: Array; } -export const UMB_LANGUAGE_PICKER_MODAL_TOKEN = new UmbModalToken< - UmbLanguagePickerModalData, - UmbLanguagePickerModalResult ->('Umb.Modal.LanguagePicker', { - type: 'sidebar', - size: 'small', -}); +export const UMB_LANGUAGE_PICKER_MODAL = new UmbModalToken( + 'Umb.Modal.LanguagePicker', + { + type: 'sidebar', + size: 'small', + } +); 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 0a123c8cf9..b34f197fc2 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 @@ -5,7 +5,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UMB_LANGUAGE_PICKER_MODAL_TOKEN } from '../../../settings/languages/modals/language-picker'; +import { UMB_LANGUAGE_PICKER_MODAL } from '../../../../../libs/modal/token/language-picker-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -121,7 +121,7 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen } private _openPicker() { - const modalHandler = this._modalContext?.open(UMB_LANGUAGE_PICKER_MODAL_TOKEN, { + const modalHandler = this._modalContext?.open(UMB_LANGUAGE_PICKER_MODAL, { multiple: this.max === 1 ? false : true, selection: [...this._selectedIsoCodes], filter: this.filter, From a1cebcb5e0af00cce5920818134cade6c066d4be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:37:28 +0100 Subject: [PATCH 345/550] debug-modal --- .../modal/token/debug-modal.token.ts} | 11 ++++------- .../shared/components/debug/debug.element.ts | 4 ++-- .../debug/modals/debug/debug-modal.element.ts | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/components/debug/modals/debug/index.ts => libs/modal/token/debug-modal.token.ts} (52%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/debug-modal.token.ts similarity index 52% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/debug-modal.token.ts index 760efebb80..7e3f797a38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/debug-modal.token.ts @@ -5,10 +5,7 @@ export interface UmbContextDebuggerModalData { content: TemplateResult | string; } -export const UMB_CONTEXT_DEBUGGER_MODAL_TOKEN = new UmbModalToken( - 'Umb.Modal.ContextDebugger', - { - type: 'sidebar', - size: 'small', - } -); +export const UMB_CONTEXT_DEBUGGER_MODAL = new UmbModalToken('Umb.Modal.ContextDebugger', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts index 128dbb33bb..6f26c559c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing, TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UMB_CONTEXT_DEBUGGER_MODAL_TOKEN } from './modals/debug'; +import { UMB_CONTEXT_DEBUGGER_MODAL } from '../../../../../libs/modal/token/debug-modal.token'; import { UmbContextDebugRequest } from '@umbraco-cms/backoffice/context-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @@ -107,7 +107,7 @@ export class UmbDebug extends UmbLitElement { } private _openDialog() { - this._modalContext?.open(UMB_CONTEXT_DEBUGGER_MODAL_TOKEN, { + this._modalContext?.open(UMB_CONTEXT_DEBUGGER_MODAL, { content: html`${this._renderContextAliases()}`, }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts index ba14f65b7a..a68255a98b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbContextDebuggerModalData } from '.'; +import { UmbContextDebuggerModalData } from '../../../../../../../libs/modal/token/debug-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-context-debugger-modal') From 88c9467bb772a4a1b154677e59ff3daf5bd3ebc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:38:49 +0100 Subject: [PATCH 346/550] link-picker-modal --- .../modal/token/link-picker-modal.token.ts} | 2 +- .../input-multi-url-picker.element.ts | 4 ++-- .../shared/modals/link-picker/link-picker-modal.element.ts | 7 ++++++- .../property-editor-ui-multi-url-picker.element.ts | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/link-picker/index.ts => libs/modal/token/link-picker-modal.token.ts} (88%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/link-picker-modal.token.ts similarity index 88% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/link-picker-modal.token.ts index 566a7f1177..fca977b35b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/link-picker-modal.token.ts @@ -27,7 +27,7 @@ export interface UmbLinkPickerConfig { overlaySize?: UUIModalSidebarSize; } -export const UMB_LINK_PICKER_MODAL_TOKEN = new UmbModalToken( +export const UMB_LINK_PICKER_MODAL = new UmbModalToken( 'Umb.Modal.LinkPicker', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index cfef87d2ed..81dcc552d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; -import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL_TOKEN } from '../../modals/link-picker'; +import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL } from '../../../../../libs/modal/token/link-picker-modal.token'; import type { UmbVariantId } from '../../variants/variant-id.class'; import type { UmbModalRouteBuilder } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -130,7 +130,7 @@ export class UmbInputMultiUrlPickerElement extends FormControlMixin(UmbLitElemen this.myModalRegistration = new UmbModalRouteRegistrationController( this, - UMB_LINK_PICKER_MODAL_TOKEN, + UMB_LINK_PICKER_MODAL, `:index`, new Map([ ['propertyAlias', undefined], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts index a471aed7e8..eda086a941 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts @@ -3,7 +3,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query, state } from 'lit/decorators.js'; import { UUIBooleanInputEvent, UUIInputElement } from '@umbraco-ui/uui'; import { UmbTreeElement } from '../../components/tree/tree.element'; -import { UmbLinkPickerConfig, UmbLinkPickerLink, UmbLinkPickerModalData, UmbLinkPickerModalResult } from '.'; +import { + UmbLinkPickerConfig, + UmbLinkPickerLink, + UmbLinkPickerModalData, + UmbLinkPickerModalResult, +} from '../../../../../libs/modal/token/link-picker-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; import { buildUdi, getKeyFromUdi } from '@umbraco-cms/backoffice/utils'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index e4691ec48e..fc9dfb512a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -3,7 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; -import { UmbLinkPickerLink } from '../../../../shared/modals/link-picker'; +import { UmbLinkPickerLink } from '../../../../../../libs/modal/token/link-picker-modal.token'; import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; From 093c7873b912879b71ab5f1478b4ca74477e12a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:40:49 +0100 Subject: [PATCH 347/550] UMB_SECTION_PICKER_MODAL --- .../modal/token/section-picker-modal.token.ts} | 2 +- .../shared/components/input-section/input-section.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/section-picker/index.ts => libs/modal/token/section-picker-modal.token.ts} (61%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/section-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/section-picker-modal.token.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/section-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/section-picker-modal.token.ts index 95edf154c6..c74346cc70 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/section-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/section-picker-modal.token.ts @@ -5,7 +5,7 @@ export interface UmbSectionPickerModalData { selection: string[]; } -export const UMB_SECTION_PICKER_MODAL_TOKEN = new UmbModalToken('Umb.Modal.SectionPicker', { +export const UMB_SECTION_PICKER_MODAL = new UmbModalToken('Umb.Modal.SectionPicker', { type: 'sidebar', size: 'small', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts index 34799eeeff..30913d3b16 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; -import { UMB_SECTION_PICKER_MODAL_TOKEN } from '../../modals/section-picker'; +import { UMB_SECTION_PICKER_MODAL } from '../../../../../libs/modal/token/section-picker-modal.token'; import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; @@ -42,7 +42,7 @@ export class UmbInputPickerSectionElement extends UmbInputListBase { connectedCallback(): void { super.connectedCallback(); - this.pickerToken = UMB_SECTION_PICKER_MODAL_TOKEN; + this.pickerToken = UMB_SECTION_PICKER_MODAL; this._observeSections(); } From 8f9c2cf42207f6e7336c57847f6e6677677bb991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:42:10 +0100 Subject: [PATCH 348/550] UMB_USER_PICKER_MODAL --- .../index.ts => libs/modal/token/user-picker-modal.token.ts} | 2 +- .../shared/components/input-user/input-user.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/users/users/modals/user-picker/index.ts => libs/modal/token/user-picker-modal.token.ts} (61%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/user-picker-modal.token.ts similarity index 61% rename from src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/user-picker-modal.token.ts index 4e247bef86..c1bf2c975a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/user-picker-modal.token.ts @@ -1,7 +1,7 @@ import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbModalToken, UmbPickerModalData } from '@umbraco-cms/backoffice/modal'; -export const UMB_USER_PICKER_MODAL_TOKEN = new UmbModalToken>('Umb.Modal.UserPicker', { +export const UMB_USER_PICKER_MODAL = new UmbModalToken>('Umb.Modal.UserPicker', { type: 'sidebar', size: 'small', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts index 87fd8c3b19..fca0035d35 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts @@ -3,7 +3,7 @@ import { css, html, nothing, PropertyValueMap } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/users/repository/user.store'; -import { UMB_USER_PICKER_MODAL_TOKEN } from '../../../users/users/modals/user-picker'; +import { UMB_USER_PICKER_MODAL } from '../../../../../libs/modal/token/user-picker-modal.token'; import type { UserEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user') @@ -39,7 +39,7 @@ export class UmbPickerUserElement extends UmbInputListBase { connectedCallback(): void { super.connectedCallback(); - this.pickerToken = UMB_USER_PICKER_MODAL_TOKEN; + this.pickerToken = UMB_USER_PICKER_MODAL; this.consumeContext(UMB_USER_STORE_CONTEXT_TOKEN, (userStore) => { this._userStore = userStore; this._observeUser(); From 99d430b65067daa1470e6031bc2b1fe3f69976ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:43:33 +0100 Subject: [PATCH 349/550] user-group-picker-modal --- .../modal/token/user-group-picker-modal.token.ts} | 2 +- .../components/input-user-group/input-user-group.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/users/user-groups/modals/user-group-picker/index.ts => libs/modal/token/user-group-picker-modal.token.ts} (69%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/user-group-picker-modal.token.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/user-group-picker-modal.token.ts index 5c67576638..4264345e24 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/user-group-picker-modal.token.ts @@ -1,7 +1,7 @@ import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbModalToken, UmbPickerModalData } from '@umbraco-cms/backoffice/modal'; -export const UMB_USER_GROUP_PICKER_MODAL_TOKEN = new UmbModalToken>( +export const UMB_USER_GROUP_PICKER_MODAL = new UmbModalToken>( 'Umb.Modal.UserGroupPicker', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index d27245d136..143aa867c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -7,7 +7,7 @@ import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN, } from '../../../users/user-groups/repository/user-group.store'; -import { UMB_USER_GROUP_PICKER_MODAL_TOKEN } from '../../../users/user-groups/modals/user-group-picker'; +import { UMB_USER_GROUP_PICKER_MODAL } from '../../../../../libs/modal/token/user-group-picker-modal.token'; import type { UserGroupEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user-group') @@ -48,7 +48,7 @@ export class UmbInputPickerUserGroupElement extends UmbInputListBase { connectedCallback(): void { super.connectedCallback(); - this.pickerToken = UMB_USER_GROUP_PICKER_MODAL_TOKEN; + this.pickerToken = UMB_USER_GROUP_PICKER_MODAL; this.consumeContext(UMB_USER_GROUP_STORE_CONTEXT_TOKEN, (usersContext) => { this._userGroupStore = usersContext; this._observeUserGroups(); From 96e7c8f1fc4b32cb367bccffa85ceb4ced52940e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:44:27 +0100 Subject: [PATCH 350/550] UMB_EMBEDDED_MEDIA_MODAL --- .../modal/token/embedded-media-modal.token.ts} | 2 +- .../embedded-media/embedded-media-modal.element.ts | 7 ++++++- .../embedded-media/embedded-media-modal.stories.ts | 2 +- .../src/core/mocks/domains/rte-embed.handlers.ts | 12 ++++++------ 4 files changed, 14 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/embedded-media/index.ts => libs/modal/token/embedded-media-modal.token.ts} (83%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/embedded-media-modal.token.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/embedded-media-modal.token.ts index 94cde2a310..610b935d80 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/embedded-media-modal.token.ts @@ -26,7 +26,7 @@ export type UmbEmbeddedMediaModalResult = { selection: OEmbedResult; }; -export const UMB_EMBEDDED_MEDIA_MODAL_TOKEN = new UmbModalToken( +export const UMB_EMBEDDED_MEDIA_MODAL = new UmbModalToken( 'Umb.Modal.EmbeddedMedia', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts index 6df72714a6..1cbcbcf091 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts @@ -3,7 +3,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { when } from 'lit-html/directives/when.js'; import { unsafeHTML } from 'lit-html/directives/unsafe-html.js'; -import { OEmbedResult, OEmbedStatus, UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalResult } from '.'; +import { + OEmbedResult, + OEmbedStatus, + UmbEmbeddedMediaModalData, + UmbEmbeddedMediaModalResult, +} from '../../../../../libs/modal/token/embedded-media-modal.token'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts index 5eb102c153..068a9c5af0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts @@ -3,7 +3,7 @@ import './embedded-media-modal.element'; import { Meta } from '@storybook/web-components'; import { html } from 'lit'; -import { UmbEmbeddedMediaModalData } from '.'; +import { UmbEmbeddedMediaModalData } from '../../../../../libs/modal/token/embedded-media-modal.token'; export default { title: 'API/Modals/Layouts/Embedded Media', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts index 3a8b1247e1..9d2adb5296 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts @@ -1,17 +1,17 @@ -import { rest } from "msw"; -import { OEmbedResult, OEmbedStatus } from "../../../backoffice/shared/modals/embedded-media"; -import { umbracoPath } from "@umbraco-cms/backoffice/utils"; +import { rest } from 'msw'; +import { OEmbedResult, OEmbedStatus } from '../../../../libs/modal/token/embedded-media-modal.token'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const handlers = [ rest.get(umbracoPath('/rteembed'), (req, res, ctx) => { const width = req.url.searchParams.get('width') ?? 360; const height = req.url.searchParams.get('height') ?? 240; const response: OEmbedResult = { - supportsDimensions: true, + supportsDimensions: true, markup: ``, - oEmbedStatus: OEmbedStatus.Success, + oEmbedStatus: OEmbedStatus.Success, }; return res(ctx.status(200), ctx.json(response)); }), -]; \ No newline at end of file +]; From 22386935c1e1be43e45d2fb70bb5a372a324fdd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:44:51 +0100 Subject: [PATCH 351/550] UMB_PROPERTY_SETTINGS_MODAL --- .../modal/token/property-settings-modal.token.ts} | 2 +- .../property-settings/property-settings-modal.element.ts | 2 +- .../shared/property-creator/property-creator.element.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/modals/property-settings/index.ts => libs/modal/token/property-settings-modal.token.ts} (81%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/property-settings-modal.token.ts similarity index 81% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/property-settings-modal.token.ts index 8d4060d0b2..80d28d4578 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/property-settings-modal.token.ts @@ -17,7 +17,7 @@ export interface UmbPropertySettingsModalResult { }; } -export const UMB_PROPERTY_SETTINGS_MODAL_TOKEN = new UmbModalToken( +export const UMB_PROPERTY_SETTINGS_MODAL = new UmbModalToken( 'Umb.Modal.PropertySettings', { type: 'sidebar', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts index 37e3d4cc3a..bfd59f6178 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.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 { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL } from '../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; -import { UmbPropertySettingsModalResult } from '.'; +import { UmbPropertySettingsModalResult } from '../../../../../libs/modal/token/property-settings-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { ManifestPropertyEditorUI } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts index 9959e13c7d..00c62eef10 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UMB_PROPERTY_SETTINGS_MODAL_TOKEN } from '../modals/property-settings'; +import { UMB_PROPERTY_SETTINGS_MODAL } from '../../../../libs/modal/token/property-settings-modal.token'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -18,7 +18,7 @@ export class UmbPropertyCreatorElement extends UmbLitElement { } #onAddProperty() { - const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL_TOKEN); + const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL); modalHandler?.onSubmit().then((result) => { console.log('result', result); From 1cee94db6dd7debc4b45105656d06dd554935904 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:45:30 +0100 Subject: [PATCH 352/550] create-dictionary-modal.token.ts --- .../modal/token/create-dictionary-modal.token.ts} | 2 +- .../dictionary/dashboard-translation-dictionary.element.ts | 4 ++-- .../create/create-dictionary-modal-layout.element.ts | 5 ++++- .../dictionary/entity-actions/create/create.action.ts | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/translation/dictionary/entity-actions/create/index.ts => libs/modal/token/create-dictionary-modal.token.ts} (87%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/create-dictionary-modal.token.ts similarity index 87% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/create-dictionary-modal.token.ts index 16ab4fd003..3e635f2cc4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/create-dictionary-modal.token.ts @@ -12,7 +12,7 @@ export interface UmbCreateDictionaryModalResult { name?: string; } -export const UMB_CREATE_DICTIONARY_MODAL_TOKEN = new UmbModalToken< +export const UMB_CREATE_DICTIONARY_MODAL = new UmbModalToken< UmbCreateDictionaryModalData, UmbCreateDictionaryModalResult >('Umb.Modal.CreateDictionary', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 8107a3c8f4..82c6e54a68 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; import { UmbTableConfig, UmbTableColumn, UmbTableItem } from '../../../../backoffice/shared/components/table'; import { UmbDictionaryRepository } from '../../dictionary/repository/dictionary.repository'; -import { UMB_CREATE_DICTIONARY_MODAL_TOKEN } from '../../dictionary/entity-actions/create/'; +import { UMB_CREATE_DICTIONARY_MODAL } from '../../../../../libs/modal/token/create-dictionary-modal.token'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { DictionaryOverviewResponseModel, LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @@ -157,7 +157,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { // TODO: what to do if modal service is not available? if (!this.#modalContext) return; - const modalHandler = this.#modalContext?.open(UMB_CREATE_DICTIONARY_MODAL_TOKEN, { unique: null }); + const modalHandler = this.#modalContext?.open(UMB_CREATE_DICTIONARY_MODAL, { unique: null }); // TODO: get type from modal result const { name } = await modalHandler.onSubmit(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts index 984a59dacf..a41b18efc3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts @@ -2,7 +2,10 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; -import { UmbCreateDictionaryModalData, UmbCreateDictionaryModalResult } from '.'; +import { + UmbCreateDictionaryModalData, + UmbCreateDictionaryModalResult, +} from '../../../../../../libs/modal/token/create-dictionary-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-create-dictionary-modal') 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 0f9020988f..db492774a7 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 @@ -4,7 +4,7 @@ import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, } from '../../../../../backoffice/shared/components/section/section-sidebar/section-sidebar.context'; -import { UMB_CREATE_DICTIONARY_MODAL_TOKEN } from '.'; +import { UMB_CREATE_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/create-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -38,7 +38,7 @@ export default class UmbCreateDictionaryEntityAction extends UmbEntityActionBase // TODO: how can we get the current entity detail in the modal? Passing the observable // feels a bit hacky. Works, but hacky. - const modalHandler = this.#modalContext?.open(UMB_CREATE_DICTIONARY_MODAL_TOKEN, { + const modalHandler = this.#modalContext?.open(UMB_CREATE_DICTIONARY_MODAL, { unique: this.unique, parentName: this.#sectionSidebarContext.headline, }); From ce404dcf6a5be9785d733742fc9c4933e641ec8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:49:20 +0100 Subject: [PATCH 353/550] import-dictionary-modal.token --- .../modal/token/export-dictionary-modal.token.ts} | 2 +- .../modal/token/import-dictionary-modal.token.ts} | 2 +- .../create-dictionary-modal-layout.element.ts | 6 +++--- ...lement.ts => export-dictionary-modal.element.ts} | 13 ++++++++----- .../entity-actions/export/export.action.ts | 6 +++--- ...lement.ts => import-dictionary-modal.element.ts} | 13 ++++++++----- .../entity-actions/import/import.action.ts | 6 +++--- .../dictionary/entity-actions/manifests.ts | 4 ++-- 8 files changed, 29 insertions(+), 23 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/translation/dictionary/entity-actions/export/index.ts => libs/modal/token/export-dictionary-modal.token.ts} (83%) rename src/Umbraco.Web.UI.Client/{src/backoffice/translation/dictionary/entity-actions/import/index.ts => libs/modal/token/import-dictionary-modal.token.ts} (86%) rename src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/{export-dictionary-modal-layout.element.ts => export-dictionary-modal.element.ts} (79%) rename src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/{import-dictionary-modal-layout.element.ts => import-dictionary-modal.element.ts} (91%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/export-dictionary-modal.token.ts similarity index 83% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/export-dictionary-modal.token.ts index 003aae1dfc..4ae285e25f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/export-dictionary-modal.token.ts @@ -8,7 +8,7 @@ export interface UmbExportDictionaryModalResult { includeChildren?: boolean; } -export const UMB_EXPORT_DICTIONARY_MODAL_TOKEN = new UmbModalToken< +export const UMB_EXPORT_DICTIONARY_MODAL = new UmbModalToken< UmbExportDictionaryModalData, UmbExportDictionaryModalResult >('Umb.Modal.ExportDictionary', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts similarity index 86% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts index 6172aaf811..745279c619 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts @@ -11,7 +11,7 @@ export interface UmbImportDictionaryModalResult { parentKey?: string; } -export const UMB_IMPORT_DICTIONARY_MODAL_TOKEN = new UmbModalToken< +export const UMB_IMPORT_DICTIONARY_MODAL = new UmbModalToken< UmbImportDictionaryModalData, UmbImportDictionaryModalResult >('Umb.Modal.ImportDictionary', { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts index a41b18efc3..f0eaecdf60 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts @@ -9,7 +9,7 @@ import { import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-create-dictionary-modal') -export class UmbCreateDictionaryModalLayoutElement extends UmbModalBaseElement< +export class UmbCreateDictionaryModalElement extends UmbModalBaseElement< UmbCreateDictionaryModalData, UmbCreateDictionaryModalResult > { @@ -74,10 +74,10 @@ export class UmbCreateDictionaryModalLayoutElement extends UmbModalBaseElement< } } -export default UmbCreateDictionaryModalLayoutElement; +export default UmbCreateDictionaryModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-create-dictionary-modal': UmbCreateDictionaryModalLayoutElement; + 'umb-create-dictionary-modal': UmbCreateDictionaryModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts index 75355409cb..1cb2faa92a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts @@ -1,11 +1,14 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query } from 'lit/decorators.js'; -import { UmbExportDictionaryModalData, UmbExportDictionaryModalResult } from '.'; +import { + UmbExportDictionaryModalData, + UmbExportDictionaryModalResult, +} from '../../../../../../libs/modal/token/export-dictionary-modal.token'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; -@customElement('umb-export-dictionary-modal-layout') -export class UmbExportDictionaryModalLayoutElement extends UmbModalBaseElement< +@customElement('umb-export-dictionary-modal') +export class UmbExportDictionaryModalElement extends UmbModalBaseElement< UmbExportDictionaryModalData, UmbExportDictionaryModalResult > { @@ -49,10 +52,10 @@ export class UmbExportDictionaryModalLayoutElement extends UmbModalBaseElement< } } -export default UmbExportDictionaryModalLayoutElement; +export default UmbExportDictionaryModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-export-dictionary-modal-layout': UmbExportDictionaryModalLayoutElement; + 'umb-export-dictionary-modal': UmbExportDictionaryModalElement; } } 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 4ed076c561..10798aa321 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,12 +1,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { UMB_EXPORT_DICTIONARY_MODAL_TOKEN } from '.'; +import { UMB_EXPORT_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/export-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; -import './export-dictionary-modal-layout.element'; +import './export-dictionary-modal.element'; export default class UmbExportDictionaryEntityAction extends UmbEntityActionBase { static styles = [UUITextStyles]; @@ -25,7 +25,7 @@ export default class UmbExportDictionaryEntityAction extends UmbEntityActionBase // TODO: what to do if modal service is not available? if (!this.#modalContext) return; - const modalHandler = this.#modalContext?.open(UMB_EXPORT_DICTIONARY_MODAL_TOKEN, { unique: this.unique }); + const modalHandler = this.#modalContext?.open(UMB_EXPORT_DICTIONARY_MODAL, { unique: this.unique }); // TODO: get type from modal result const { includeChildren } = await modalHandler.onSubmit(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts similarity index 91% rename from src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts index 3dc06e07e5..f5e180997b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts @@ -5,12 +5,15 @@ import { when } from 'lit/directives/when.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '.'; +import { + UmbImportDictionaryModalData, + UmbImportDictionaryModalResult, +} from '../../../../../../libs/modal/token/import-dictionary-modal.token'; import { UploadDictionaryResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; -@customElement('umb-import-dictionary-modal-layout') -export class UmbImportDictionaryModalLayoutElement extends UmbModalBaseElement< +@customElement('umb-import-dictionary-modal') +export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< UmbImportDictionaryModalData, UmbImportDictionaryModalResult > { @@ -156,10 +159,10 @@ export class UmbImportDictionaryModalLayoutElement extends UmbModalBaseElement< } } -export default UmbImportDictionaryModalLayoutElement; +export default UmbImportDictionaryModalLayout; declare global { interface HTMLElementTagNameMap { - 'umb-import-dictionary-modal-layout': UmbImportDictionaryModalLayoutElement; + 'umb-import-dictionary-modal': UmbImportDictionaryModalLayout; } } 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 562d8618dd..24230ff92e 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,12 +1,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { UMB_IMPORT_DICTIONARY_MODAL_TOKEN } from '.'; +import { UMB_IMPORT_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/import-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; -import './import-dictionary-modal-layout.element'; +import './import-dictionary-modal.element'; export default class UmbImportDictionaryEntityAction extends UmbEntityActionBase { static styles = [UUITextStyles]; @@ -25,7 +25,7 @@ export default class UmbImportDictionaryEntityAction extends UmbEntityActionBase // TODO: what to do if modal service is not available? if (!this.#modalContext) return; - const modalHandler = this.#modalContext?.open(UMB_IMPORT_DICTIONARY_MODAL_TOKEN, { unique: this.unique }); + const modalHandler = this.#modalContext?.open(UMB_IMPORT_DICTIONARY_MODAL, { unique: this.unique }); // TODO: get type from modal result const { fileName, parentKey } = await modalHandler.onSubmit(); 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 181aedb3fc..fc79433c06 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 @@ -113,13 +113,13 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.ExportDictionary', name: 'Export Dictionary Modal', - loader: () => import('./export/export-dictionary-modal-layout.element'), + loader: () => import('./export/export-dictionary-modal.element'), }, { type: 'modal', alias: 'Umb.Modal.ImportDictionary', name: 'Import Dictionary Modal', - loader: () => import('./import/import-dictionary-modal-layout.element'), + loader: () => import('./import/import-dictionary-modal.element'), }, ]; From 88977a9d708b234c07644746b8b47ce97833e317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:50:08 +0100 Subject: [PATCH 354/550] current-user-modal.token --- .../index.ts => libs/modal/token/current-user-modal.token.ts} | 2 +- .../users/current-user/current-user-header-app.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/users/current-user/modals/current-user/index.ts => libs/modal/token/current-user-modal.token.ts} (53%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/current-user-modal.token.ts similarity index 53% rename from src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/current-user-modal.token.ts index 382b450ae7..5a78080a7a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/current-user-modal.token.ts @@ -1,6 +1,6 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export const UMB_CURRENT_USER_MODAL_TOKEN = new UmbModalToken('Umb.Modal.CurrentUser', { +export const UMB_CURRENT_USER_MODAL = new UmbModalToken('Umb.Modal.CurrentUser', { type: 'sidebar', size: 'small', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts index 209cf80101..456e407085 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from './current-user.store'; -import { UMB_CURRENT_USER_MODAL_TOKEN } from './modals/current-user'; +import { UMB_CURRENT_USER_MODAL } from '../../../../libs/modal/token/current-user-modal.token'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -47,7 +47,7 @@ export class UmbCurrentUserHeaderApp extends UmbLitElement { } private _handleUserClick() { - this._modalContext?.open(UMB_CURRENT_USER_MODAL_TOKEN); + this._modalContext?.open(UMB_CURRENT_USER_MODAL); } render() { From b785524faeeaee5e0513f140ac76195a5ba59977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 21:51:44 +0100 Subject: [PATCH 355/550] last one --- .../modal/token/create-user-modal.token.ts} | 2 +- .../modal/token/invite-user-modal.token.ts} | 2 +- .../views/users/workspace-view-users-overview.element.ts | 8 ++++---- .../src/core/modal/stories/modal.mdx | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) rename src/Umbraco.Web.UI.Client/{src/backoffice/users/users/modals/create-user/index.ts => libs/modal/token/create-user-modal.token.ts} (53%) rename src/Umbraco.Web.UI.Client/{src/backoffice/users/users/modals/invite-user/index.ts => libs/modal/token/invite-user-modal.token.ts} (53%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/create-user-modal.token.ts similarity index 53% rename from src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/create-user-modal.token.ts index 8a5868f272..5ac7a0a780 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/create-user-modal.token.ts @@ -1,6 +1,6 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export const UMB_CREATE_USER_MODAL_TOKEN = new UmbModalToken('Umb.Modal.CreateUser', { +export const UMB_CREATE_USER_MODAL = new UmbModalToken('Umb.Modal.CreateUser', { type: 'dialog', size: 'small', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/invite-user-modal.token.ts similarity index 53% rename from src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/index.ts rename to src/Umbraco.Web.UI.Client/libs/modal/token/invite-user-modal.token.ts index 713bb7ae62..20bb006c54 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/invite-user-modal.token.ts @@ -1,6 +1,6 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export const UMB_INVITE_USER_MODAL_TOKEN = new UmbModalToken('Umb.Modal.InviteUser', { +export const UMB_INVITE_USER_MODAL = new UmbModalToken('Umb.Modal.InviteUser', { type: 'dialog', size: 'small', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts index b0e9bb188b..5121930b61 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts @@ -2,8 +2,8 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UUIPopoverElement } from '@umbraco-ui/uui'; -import { UMB_INVITE_USER_MODAL_TOKEN } from '../../../../users/users/modals/invite-user'; -import { UMB_CREATE_USER_MODAL_TOKEN } from '../../../../users/users/modals/create-user'; +import { UMB_INVITE_USER_MODAL } from '../../../../../../libs/modal/token/invite-user-modal.token'; +import { UMB_CREATE_USER_MODAL } from '../../../../../../libs/modal/token/create-user-modal.token'; import type { UmbSectionViewUsersElement } from './section-view-users.element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import type { IRoute } from '@umbraco-cms/internal/router'; @@ -160,9 +160,9 @@ export class UmbWorkspaceViewUsersOverviewElement extends UmbLitElement { let token = undefined; // TODO: we need to find a better way to determine if we should create or invite if (this.isCloud) { - token = UMB_INVITE_USER_MODAL_TOKEN; + token = UMB_INVITE_USER_MODAL; } else { - token = UMB_CREATE_USER_MODAL_TOKEN; + token = UMB_CREATE_USER_MODAL; } this._modalContext?.open(token); diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx index bff928ca0b..197252a30e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx @@ -51,7 +51,7 @@ A modal can be registred via the UmbModalRouteRegistrationController. The regist Notice we are using a Controller here, this means your element has to be a Controller Host (TODO: Insert link to story about Controller Host also available through the UmbElementMixin) ```ts -this.myModalRegistration = new UmbModalRouteRegistrationController(this, UMB_LINK_PICKER_MODAL_TOKEN) +this.myModalRegistration = new UmbModalRouteRegistrationController(this, UMB_LINK_PICKER_MODAL) .onSubmit((submitData) => { console.log('Modal submitted with data'.submitData); }) @@ -193,7 +193,7 @@ class MyElement extends UmbElementMixin(LitElement) { #onClick() { const data = {'data goes here'}; const options {'options go here'}; - const modalHandler = this.#modalContext?.open(SOME_MODAL_TOKEN), data, options); + const modalHandler = this.#modalContext?.open(MY_MODAL_TOKEN), data, options); modalHandler?.onSubmit().then((data) => { // if modal submitted, then data is supplied here. From 3a8b8089bf8ad795cfac0fe5e60423c6a041d816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 22:04:49 +0100 Subject: [PATCH 356/550] correct imports --- .../actions/delete/delete.action.ts | 3 +-- .../actions/trash/trash.action.ts | 3 +-- .../libs/modal/token/index.ts | 21 +++++++++++++++++++ .../dashboard-redirect-management.element.ts | 3 +-- .../document-type-workspace-edit.element.ts | 3 +-- .../entity-actions/create/create.action.ts | 7 +++++-- .../document-picker-modal.stories.ts | 2 +- .../entity-bulk-actions/move/move.action.ts | 3 +-- .../entity-bulk-actions/trash/trash.action.ts | 3 +-- .../packages-created-overview.element.ts | 3 +-- ...lled-packages-section-view-item.element.ts | 4 +--- .../views/section-view-examine-indexers.ts | 3 +-- .../views/section-view-examine-searchers.ts | 7 +++++-- .../dashboard-published-status.element.ts | 3 +-- .../data-type-workspace-edit.element.ts | 2 +- ...ata-type-details-workspace-view.element.ts | 7 +++++-- .../extension-root-workspace.element.ts | 3 +-- .../shared/components/debug/debug.element.ts | 3 +-- .../input-document-picker.element.ts | 9 +++++--- .../input-language-picker.element.ts | 9 +++++--- .../input-media-picker.element.ts | 9 +++++--- .../modals/confirm/confirm-modal.stories.ts | 2 +- .../icon-picker/icon-picker-modal.stories.ts | 2 +- ...property-editor-ui-picker-modal.stories.ts | 2 +- .../current-user-header-app.element.ts | 2 +- .../src/core/router/router-slot.element.ts | 2 +- .../router/variant-router-slot.element.ts | 2 +- 27 files changed, 74 insertions(+), 48 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts index 8d49922ce6..d45acc3534 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts @@ -1,8 +1,7 @@ -import { UMB_CONFIRM_MODAL } from '../../../modal/token/confirm-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; export class UmbDeleteEntityAction< T extends { delete(unique: string): Promise; requestItems(uniques: Array): any } diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts index 0e001c305e..6a3eb3b745 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/trash/trash.action.ts @@ -1,8 +1,7 @@ -import { UMB_CONFIRM_MODAL } from '../../../modal/token/confirm-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; export class UmbTrashEntityAction< T extends { trash(unique: Array): Promise; requestTreeItems(uniques: Array): any } diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts index 16add9a4ab..8110b172c2 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -1,2 +1,23 @@ export * from './modal-token'; +export * from './allowed-document-types-modal.token'; export * from './change-password-modal.token'; +export * from './confirm-modal.token'; +export * from './create-dictionary-modal.token'; +export * from './create-user-modal.token'; +export * from './debug-modal.token'; +export * from './document-picker-modal.token'; +export * from './embedded-media-modal.token'; +export * from './examine-fields-settings-modal.token'; +export * from './export-dictionary-modal.token'; +export * from './icon-picker-modal.token'; +export * from './import-dictionary-modal.token'; +export * from './invite-user-modal.token'; +export * from './language-picker-modal.token'; +export * from './link-picker-modal.token'; +export * from './media-picker-modal.token'; +export * from './property-editor-ui-picker-modal.token'; +export * from './property-settings-modal.token'; +export * from './search-modal.token'; +export * from './section-picker-modal.token'; +export * from './user-group-picker-modal.token'; +export * from './user-picker-modal.token'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index d0c8dbd954..42fa9ae950 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -2,8 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; import { UUIButtonState, UUIPaginationElement, UUIPaginationEvent } from '@umbraco-ui/uui'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { RedirectManagementResource, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts index 179b8c2631..205a57e93d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-edit.element.ts @@ -2,11 +2,10 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_ICON_PICKER_MODAL } from '../../../../../libs/modal/token/icon-picker-modal.token'; import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_ICON_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; @customElement('umb-document-type-workspace-edit') export class UmbDocumentTypeWorkspaceEditElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index e2d4f6b5dd..de691cf39c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -1,8 +1,11 @@ -import { UMB_ALLOWED_DOCUMENT_TYPES_MODAL } from '../../../../../../libs/modal/token/allowed-document-types-modal.token'; import type { UmbDocumentRepository } from '../../repository/document.repository'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_ALLOWED_DOCUMENT_TYPES_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; export class UmbCreateDocumentEntityAction extends UmbEntityActionBase { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts index 38d722cca2..0e599203f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts @@ -4,8 +4,8 @@ import './document-picker-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbDocumentPickerModalElement } from './document-picker-modal.element'; import type { UmbDocumentPickerModalData } from '../../../../../../libs/modal/token/document-picker-modal.token'; +import type { UmbDocumentPickerModalElement } from './document-picker-modal.element'; export default { title: 'API/Modals/Layouts/Content Picker', 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 0836900bed..9903168c0d 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,9 +1,8 @@ import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UMB_MEDIA_PICKER_MODAL } from '../../../../../../libs/modal/token/media-picker-modal.token'; import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_MEDIA_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; export class UmbMediaMoveEntityBulkAction extends UmbEntityBulkActionBase { #modalContext?: UmbModalContext; 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 d3f611a4e0..86ee61ce1d 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,10 +1,9 @@ import { html } from 'lit'; import type { UmbMediaRepository } from '../../repository/media.repository'; -import { UMB_CONFIRM_MODAL } from '../../../../../../libs/modal/token/confirm-modal.token'; import { UmbEntityBulkActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; export class UmbMediaTrashEntityBulkAction extends UmbEntityBulkActionBase { #modalContext?: UmbModalContext; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index f74e1134fe..11cd97a2fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -3,11 +3,10 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UUIPaginationEvent } from '@umbraco-ui/uui'; -import { UMB_CONFIRM_MODAL } from '../../../../../../libs/modal/token/confirm-modal.token'; import { PackageDefinitionResponseModel, PackageResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; @customElement('umb-packages-created-overview') export class UmbPackagesCreatedOverviewElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts index c414f278ea..e4f9cd4b4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/installed/installed-packages-section-view-item.element.ts @@ -3,9 +3,7 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { customElement, property, state } from 'lit/decorators.js'; import { firstValueFrom, map } from 'rxjs'; import { UUIButtonState } from '@umbraco-ui/uui'; - -import { UMB_CONFIRM_MODAL } from '../../../../../../libs/modal/token/confirm-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { ManifestPackageView } from '@umbraco-cms/backoffice/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts index 88ae36623a..9dcfc67150 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-indexers.ts @@ -2,8 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIButtonState } from '@umbraco-ui/uui-button'; -import { UMB_CONFIRM_MODAL } from '../../../../../../libs/modal/token/confirm-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; import { HealthStatusModel, IndexResponseModel, IndexerResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts index 8aa1f5aea0..18cad41a37 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/section-view-examine-searchers.ts @@ -1,8 +1,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state, query, property } from 'lit/decorators.js'; -import { UMB_EXAMINE_FIELDS_SETTINGS_MODAL } from '../../../../../../libs/modal/token/examine-fields-settings-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_EXAMINE_FIELDS_SETTINGS_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { SearchResultResponseModel, SearcherResource, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts index 615b95128d..1601dfd6b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/published-status/dashboard-published-status.element.ts @@ -2,8 +2,7 @@ import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; import { PublishedCacheResource } from '@umbraco-cms/backoffice/backend-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts index 0c14a68c68..0edb193b9f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace-edit.element.ts @@ -2,8 +2,8 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UmbRouteLocation } from '@umbraco-cms/backoffice/router'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; +import { UmbRouteLocation } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts index e300052f4a..11a5ef4aa4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/details/data-type-details-workspace-view.element.ts @@ -2,8 +2,11 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from '../../data-type-workspace.context'; -import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL } from '../../../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_PROPERTY_EDITOR_UI_PICKER_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts index 070fe402f5..5831501295 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/extensions/workspace/extension-root-workspace.element.ts @@ -1,11 +1,10 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { map } from 'rxjs'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; import { isManifestElementNameType, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; @customElement('umb-extension-root-workspace') export class UmbExtensionRootWorkspaceElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts index 6f26c559c2..7045ed5d56 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts @@ -1,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, nothing, TemplateResult } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; -import { UMB_CONTEXT_DEBUGGER_MODAL } from '../../../../../libs/modal/token/debug-modal.token'; import { UmbContextDebugRequest } from '@umbraco-cms/backoffice/context-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONTEXT_DEBUGGER_MODAL } from '@umbraco-cms/backoffice/modal'; @customElement('umb-debug') export class UmbDebug extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index fbfa1475c2..cf5bd39230 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -5,9 +5,12 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from '../../../documents/documents/repository/document.tree.store'; import type { UmbDocumentTreeStore } from '../../../documents/documents/repository/document.tree.store'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UMB_DOCUMENT_PICKER_MODAL } from '../../../../../libs/modal/token/document-picker-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_CONFIRM_MODAL, + UMB_DOCUMENT_PICKER_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DocumentTreeItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-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 b34f197fc2..263d9c76f0 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 @@ -4,9 +4,12 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLanguageRepository } from '../../../settings/languages/repository/language.repository'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UMB_LANGUAGE_PICKER_MODAL } from '../../../../../libs/modal/token/language-picker-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_CONFIRM_MODAL, + UMB_LANGUAGE_PICKER_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 85f73e3c28..626bfd9def 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -4,9 +4,12 @@ import { customElement, property, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbMediaRepository } from '../../../media/media/repository/media.repository'; -import { UMB_CONFIRM_MODAL } from '../../../../../libs/modal/token/confirm-modal.token'; -import { UMB_MEDIA_PICKER_MODAL } from '../../../../../libs/modal/token/media-picker-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_CONFIRM_MODAL, + UMB_MEDIA_PICKER_MODAL, +} from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts index 382d9f9ff0..c9b1eb8b65 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts @@ -3,8 +3,8 @@ import './confirm-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbConfirmModalElement } from './confirm-modal.element'; import type { UmbConfirmModalData } from '../../../../../libs/modal/token/confirm-modal.token'; +import type { UmbConfirmModalElement } from './confirm-modal.element'; export default { title: 'API/Modals/Layouts/Confirm', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts index 6298779683..5e65653ef8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts @@ -4,8 +4,8 @@ import './icon-picker-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbIconPickerModalElement } from './icon-picker-modal.element'; import { UmbIconPickerModalData } from '../../../../../libs/modal/token/icon-picker-modal.token'; +import type { UmbIconPickerModalElement } from './icon-picker-modal.element'; export default { title: 'API/Modals/Layouts/Icon Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts index 77ad621ccf..beba15f095 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts @@ -1,7 +1,7 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbPropertyEditorUIPickerModalElement } from './property-editor-ui-picker-modal.element'; import type { UmbPropertyEditorUIPickerModalData } from '../../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; +import type { UmbPropertyEditorUIPickerModalElement } from './property-editor-ui-picker-modal.element'; import './property-editor-ui-picker-modal.element'; import '../../../components/body-layout/body-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts index 456e407085..1d40add964 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from './current-user.store'; import { UMB_CURRENT_USER_MODAL } from '../../../../libs/modal/token/current-user-modal.token'; +import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from './current-user.store'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index 0881affd54..1dc354dc29 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -2,10 +2,10 @@ import type { IRoute } from 'router-slot/model'; import { RouterSlot } from 'router-slot'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbRouteContext, UmbRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '../lit-element'; import { UmbRouterSlotInitEvent } from './router-slot-init.event'; import { UmbRouterSlotChangeEvent } from './router-slot-change.event'; +import { UmbRouteContext, UmbRoute } from '@umbraco-cms/backoffice/router'; /** * @element umb-router-slot diff --git a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts index 1b1b513308..c5e125fee7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/variant-router-slot.element.ts @@ -1,7 +1,7 @@ import { customElement, property } from 'lit/decorators.js'; -import { UmbRoute } from '@umbraco-cms/backoffice/router'; import { UmbVariantId } from '../../backoffice/shared/variants/variant-id.class'; import { UmbRouterSlotElement } from './router-slot.element'; +import { UmbRoute } from '@umbraco-cms/backoffice/router'; function variantIdsToString(variantIds: UmbVariantId[]): string { return variantIds.map((id) => id.toString()).join('_&_'); From df11d77fdbe43811d1ab084e6cf41cae4b618172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 22:08:24 +0100 Subject: [PATCH 357/550] import --- .../input-multi-url-picker/input-multi-url-picker.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index 81dcc552d2..fa471d1be1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; -import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL } from '../../../../../libs/modal/token/link-picker-modal.token'; import type { UmbVariantId } from '../../variants/variant-id.class'; +import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import type { UmbModalRouteBuilder } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalRouteRegistrationController } from 'libs/modal/modal-route-registration.controller'; From 91841d3db82a28abb56283933e32fddac7235332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 22:15:44 +0100 Subject: [PATCH 358/550] correct token imports --- src/Umbraco.Web.UI.Client/libs/modal/token/index.ts | 1 + .../components/input-section/input-section.element.ts | 2 +- .../input-user-group/input-user-group.element.ts | 2 +- .../shared/components/input-user/input-user.element.ts | 2 +- .../property-settings/property-settings-modal.element.ts | 9 ++++++--- .../shared/property-creator/property-creator.element.ts | 3 +-- .../property-editor-ui-icon-picker.element.ts | 3 +-- .../input-multiple-text-string-item.element.ts | 3 +-- .../dashboard-translation-dictionary.element.ts | 3 +-- .../dictionary/entity-actions/create/create.action.ts | 3 +-- .../dictionary/entity-actions/export/export.action.ts | 3 +-- .../dictionary/entity-actions/import/import.action.ts | 3 +-- .../current-user/current-user-header-app.element.ts | 3 +-- .../modals/current-user/current-user-modal.element.ts | 8 ++++++-- .../views/users/workspace-view-users-overview.element.ts | 9 ++++++--- 15 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts index 8110b172c2..5840ca1bee 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -4,6 +4,7 @@ export * from './change-password-modal.token'; export * from './confirm-modal.token'; export * from './create-dictionary-modal.token'; export * from './create-user-modal.token'; +export * from './current-user-modal.token'; export * from './debug-modal.token'; export * from './document-picker-modal.token'; export * from './embedded-media-modal.token'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts index 30913d3b16..3f560bd6f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-section/input-section.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; -import { UMB_SECTION_PICKER_MODAL } from '../../../../../libs/modal/token/section-picker-modal.token'; +import { UMB_SECTION_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index 143aa867c6..7315cd5a81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -7,7 +7,7 @@ import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN, } from '../../../users/user-groups/repository/user-group.store'; -import { UMB_USER_GROUP_PICKER_MODAL } from '../../../../../libs/modal/token/user-group-picker-modal.token'; +import { UMB_USER_GROUP_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import type { UserGroupEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user-group') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts index fca0035d35..bd72e5713b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts @@ -3,7 +3,7 @@ import { css, html, nothing, PropertyValueMap } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbInputListBase } from '../input-list-base/input-list-base'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/users/repository/user.store'; -import { UMB_USER_PICKER_MODAL } from '../../../../../libs/modal/token/user-picker-modal.token'; +import { UMB_USER_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import type { UserEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts index bfd59f6178..c57165fe42 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/property-settings/property-settings-modal.element.ts @@ -2,9 +2,12 @@ import { UUIBooleanInputEvent, UUIInputEvent, UUISelectEvent } from '@umbraco-ui import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_PROPERTY_EDITOR_UI_PICKER_MODAL } from '../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; -import { UmbPropertySettingsModalResult } from '../../../../../libs/modal/token/property-settings-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_PROPERTY_EDITOR_UI_PICKER_MODAL, + UmbPropertySettingsModalResult, +} from '@umbraco-cms/backoffice/modal'; import { ManifestPropertyEditorUI } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts index 00c62eef10..a925a8299a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-creator/property-creator.element.ts @@ -1,8 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; -import { UMB_PROPERTY_SETTINGS_MODAL } from '../../../../libs/modal/token/property-settings-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_PROPERTY_SETTINGS_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-property-creator') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts index e2f8a94f37..aebdeeb989 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/icon-picker/property-editor-ui-icon-picker.element.ts @@ -1,9 +1,8 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; -import { UMB_ICON_PICKER_MODAL } from '../../../../../../libs/modal/token/icon-picker-modal.token'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_ICON_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts index 0fcb4875a6..cbc21787b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multiple-text-string/input-multiple-text-string-item/input-multiple-text-string-item.element.ts @@ -4,8 +4,7 @@ import { customElement, property, query } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIInputEvent } from '@umbraco-ui/uui-input'; import { UUIInputElement } from '@umbraco-ui/uui'; -import { UMB_CONFIRM_MODAL } from '../../../../../../../libs/modal/token/confirm-modal.token'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbChangeEvent, UmbInputEvent, UmbDeleteEvent } from '@umbraco-cms/backoffice/events'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 82c6e54a68..d324fb3b32 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -4,10 +4,9 @@ import { customElement, state } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; import { UmbTableConfig, UmbTableColumn, UmbTableItem } from '../../../../backoffice/shared/components/table'; import { UmbDictionaryRepository } from '../../dictionary/repository/dictionary.repository'; -import { UMB_CREATE_DICTIONARY_MODAL } from '../../../../../libs/modal/token/create-dictionary-modal.token'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { DictionaryOverviewResponseModel, LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CREATE_DICTIONARY_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-dashboard-translation-dictionary') 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 db492774a7..7e0686e77a 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 @@ -4,11 +4,10 @@ import { UmbSectionSidebarContext, UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, } from '../../../../../backoffice/shared/components/section/section-sidebar/section-sidebar.context'; -import { UMB_CREATE_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/create-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CREATE_DICTIONARY_MODAL } from '@umbraco-cms/backoffice/modal'; // TODO: temp import import './create-dictionary-modal-layout.element'; 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 10798aa321..d3351707bc 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,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { UMB_EXPORT_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/export-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_EXPORT_DICTIONARY_MODAL } from '@umbraco-cms/backoffice/modal'; import './export-dictionary-modal.element'; 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 24230ff92e..83c4f68cee 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,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { UMB_IMPORT_DICTIONARY_MODAL } from '../../../../../../libs/modal/token/import-dictionary-modal.token'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_IMPORT_DICTIONARY_MODAL } from '@umbraco-cms/backoffice/modal'; import './import-dictionary-modal.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts index 1d40add964..baca5d0566 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-header-app.element.ts @@ -1,10 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UMB_CURRENT_USER_MODAL } from '../../../../libs/modal/token/current-user-modal.token'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from './current-user.store'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CURRENT_USER_MODAL } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-current-user-header-app') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index 6a9b3d1ab7..3b60bc0f36 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -7,8 +7,12 @@ import { UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, } from '../../current-user-history.store'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../../libs/modal/token/change-password-modal.token'; -import { UmbModalHandler, UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalHandler, + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_CHANGE_PASSWORD_MODAL, +} from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts index 5121930b61..5aa001acf5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts @@ -2,10 +2,13 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UUIPopoverElement } from '@umbraco-ui/uui'; -import { UMB_INVITE_USER_MODAL } from '../../../../../../libs/modal/token/invite-user-modal.token'; -import { UMB_CREATE_USER_MODAL } from '../../../../../../libs/modal/token/create-user-modal.token'; import type { UmbSectionViewUsersElement } from './section-view-users.element'; -import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { + UmbModalContext, + UMB_MODAL_CONTEXT_TOKEN, + UMB_INVITE_USER_MODAL, + UMB_CREATE_USER_MODAL, +} from '@umbraco-cms/backoffice/modal'; import type { IRoute } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; From 27795f46c17c907025db1f14464fa9b8559f019d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 22:48:57 +0100 Subject: [PATCH 359/550] fix lib imports --- .../libs/modal/modal-route-registration.controller.ts | 3 +-- src/Umbraco.Web.UI.Client/libs/observable-api/index.ts | 1 + .../documents/documents/repository/manifests.ts | 3 +-- .../media/media-types/repository/manifests.ts | 3 +-- .../backoffice/media/media/entity-actions/manifests.ts | 2 +- .../src/backoffice/media/media/repository/manifests.ts | 3 +-- .../media/media/repository/media.repository.ts | 3 +-- .../members/member-groups/entity-actions/manifests.ts | 2 +- .../members/member-groups/repository/manifests.ts | 3 +-- .../members/members/entity-actions/manifests.ts | 2 +- .../backoffice/members/members/repository/manifests.ts | 3 +-- .../src/backoffice/packages/repository/manifests.ts | 3 +-- .../settings/cultures/repository/manifests.ts | 2 +- .../settings/data-types/repository/manifests.ts | 3 +-- .../settings/languages/repository/manifests.ts | 3 +-- .../settings/logviewer/workspace/logviewer.context.ts | 10 ++++++++-- .../settings/relation-types/repository/manifests.ts | 3 +-- .../repository/relation-type.repository.ts | 3 +-- .../backoffice/shared/collection/collection.context.ts | 3 +-- .../entity-action/entity-action-list.element.ts | 2 +- .../input-multi-url-picker.element.ts | 7 +++++-- .../section/section-sidebar/section-sidebar.context.ts | 5 ++--- .../templating/templates/entity-actions/manifests.ts | 2 +- .../templating/templates/repository/manifests.ts | 3 +-- .../templates/repository/template.repository.ts | 3 +-- .../translation/dictionary/repository/manifests.ts | 3 +-- 26 files changed, 38 insertions(+), 45 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts index f1ef34e69c..8d3ffae513 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.controller.ts @@ -1,10 +1,9 @@ // TODO: Be aware here we import a class from src! import { UMB_ROUTE_CONTEXT_TOKEN } from '../router/route.context'; -import type { UmbControllerInterface } from '../controller'; +import type { UmbControllerHostInterface, UmbControllerInterface } from '../controller'; import { UmbModalRouteRegistration } from './modal-route-registration'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbModalConfig, UmbModalToken } from '@umbraco-cms/backoffice/modal'; -import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; export class UmbModalRouteRegistrationController extends UmbModalRouteRegistration diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/index.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/index.ts index dbfa7cf4b5..424099e1ec 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/index.ts @@ -1,5 +1,6 @@ export * from './observer.controller'; export * from './observer'; +export * from './basic-state'; export * from './boolean-state'; export * from './number-state'; export * from './string-state'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts index 6276b2c00b..b53c170e43 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbDocumentRepository } from '../repository/document.repository'; import { UmbDocumentStore } from './document.store'; import { UmbDocumentTreeStore } from './document.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestRepository, ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; export const DOCUMENT_REPOSITORY_ALIAS = 'Umb.Repository.Document'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts index 23906ac74e..57dd021694 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbMediaTypeRepository } from './media-type.repository'; import { UmbMediaTypeStore } from './media-type.detail.store'; import { UmbMediaTypeTreeStore } from './media-type.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const MEDIA_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.MediaType'; 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 eb7b4c6ce0..c8b4e44629 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,6 +1,6 @@ import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbTrashEntityAction } from '@umbraco-cms/backoffice/entity-action'; -import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; const entityActions: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts index 30c09e5a8b..7ccfb8b76a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbMediaRepository } from './media.repository'; import { UmbMediaStore } from './media.store'; import { UmbMediaTreeStore } from './media.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const MEDIA_REPOSITORY_ALIAS = 'Umb.Repository.Media'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 6b74f80cf9..97f159183e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -7,9 +7,8 @@ import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repositor import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; type ItemDetailType = MediaDetails; 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 174945b696..90bd62d4f2 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,6 +1,6 @@ import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/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/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts index c9efa0f4be..038a11fe8e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbMemberGroupRepository } from './member-group.repository'; import { UmbMemberGroupStore } from './member-group.store'; import { UmbMemberGroupTreeStore } from './member-group.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const MEMBER_GROUP_REPOSITORY_ALIAS = 'Umb.Repository.MemberGroup'; 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 b9a055bbd6..9f2f9a28b2 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,6 +1,6 @@ import { MEMBER_REPOSITORY_ALIAS } from '../repository/manifests'; +import type { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/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/members/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts index e5cd53441d..15c055c885 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbMemberRepository } from './member.repository'; import { UmbMemberStore } from './member.store'; import { UmbMemberTreeStore } from './member.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const MEMBER_REPOSITORY_ALIAS = 'Umb.Repository.Member'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts index f59cbfc4c5..b2a0069d5b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/manifests.ts @@ -1,7 +1,6 @@ import { UmbPackageRepository } from './package.repository'; import { UmbPackageStore } from './package.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const PACKAGE_REPOSITORY_ALIAS = 'Umb.Repository.Package'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/manifests.ts index 7502a562d3..0496f4acff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/cultures/repository/manifests.ts @@ -1,5 +1,5 @@ import { UmbCultureRepository } from '../repository/culture.repository'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; +import { ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const CULTURE_REPOSITORY_ALIAS = 'Umb.Repository.Culture'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts index 8e68419718..0217359bf7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbDataTypeRepository } from '../repository/data-type.repository'; import { UmbDataTypeStore } from './data-type.store'; import { UmbDataTypeTreeStore } from './data-type.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const DATA_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.DataType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts index a068bc239f..75dcb127c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/manifests.ts @@ -1,7 +1,6 @@ import { UmbLanguageRepository } from '../repository/language.repository'; import { UmbLanguageStore } from './language.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore } from '@umbraco-cms/backoffice/extensions-registry'; +import type { ManifestStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const LANGUAGE_REPOSITORY_ALIAS = 'Umb.Repository.Language'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index c03196a421..272cccd715 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -1,5 +1,12 @@ import { UmbLogViewerRepository } from '../repository/log-viewer.repository'; -import { ArrayState, createObservablePart, DeepState, ObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; +import { + BasicState, + ArrayState, + createObservablePart, + DeepState, + ObjectState, + StringState, +} from '@umbraco-cms/backoffice/observable-api'; import { DirectionModel, LogLevelCountsReponseModel, @@ -11,7 +18,6 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { BasicState } from 'libs/observable-api/basic-state'; export type PoolingInterval = 0 | 2000 | 5000 | 10000 | 20000 | 30000; export interface PoolingCOnfig { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts index fbbf4e87bb..7859009b6f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; import { UmbRelationTypeStore } from './relation-type.store'; import { UmbRelationTypeTreeStore } from './relation-type.tree.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const RELATION_TYPE_REPOSITORY_ALIAS = 'Umb.Repository.RelationType'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 5ba5077140..4c068d3a48 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -6,8 +6,7 @@ import { RelationTypeTreeDataSource } from './sources'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import type { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = RelationTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 4347266039..d520450aa7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -4,8 +4,7 @@ import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; -import { createExtensionClass } from 'libs/extensions-api/create-extension-class.function'; +import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/backoffice/extensions-api'; import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts index a3edc8b9f8..3ea2640821 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/entity-action/entity-action-list.element.ts @@ -1,9 +1,9 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; -import { ManifestEntityAction } from 'libs/extensions-registry/entity-action.models'; @customElement('umb-entity-action-list') class UmbEntityActionListElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts index fa471d1be1..9f9d6ba441 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-multi-url-picker/input-multi-url-picker.element.ts @@ -4,10 +4,13 @@ import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import type { UmbVariantId } from '../../variants/variant-id.class'; -import { UmbLinkPickerLink, UMB_LINK_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; +import { + UmbLinkPickerLink, + UMB_LINK_PICKER_MODAL, + UmbModalRouteRegistrationController, +} from '@umbraco-cms/backoffice/modal'; import type { UmbModalRouteBuilder } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalRouteRegistrationController } from 'libs/modal/modal-route-registration.controller'; /** * @element umb-input-multi-url-picker diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts index 4ef7539100..ef32bc34fb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts @@ -1,11 +1,10 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { StringState } from '@umbraco-cms/backoffice/observable-api'; -import { BasicState } from 'libs/observable-api/basic-state'; +import { StringState, BooleanState } from '@umbraco-cms/backoffice/observable-api'; export class UmbSectionSidebarContext { #host: UmbControllerHostInterface; - #contextMenuIsOpen = new BasicState(false); + #contextMenuIsOpen = new BooleanState(false); contextMenuIsOpen = this.#contextMenuIsOpen.asObservable(); #entityType = new StringState(undefined); 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 81e96d6281..a85363c686 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,7 +1,7 @@ import { TEMPLATE_REPOSITORY_ALIAS } from '../repository/manifests'; import { UmbCreateEntityAction } from './create/create.action'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/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/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/manifests.ts index 031c27f56a..2ff152e430 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbTemplateRepository } from '../repository/template.repository'; import { UmbTemplateTreeStore } from './template.tree.store'; import { UmbTemplateStore } from './template.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const TEMPLATE_REPOSITORY_ALIAS = 'Umb.Repository.Template'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index ef0bb4852e..f7bdb4dd69 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -2,12 +2,11 @@ import { UmbTemplateDetailServerDataSource } from './sources/template.detail.ser import { TemplateTreeServerDataSource } from './sources/template.tree.server.data'; import { UmbTemplateStore, UMB_TEMPLATE_STORE_CONTEXT_TOKEN } from './template.store'; import { UmbTemplateTreeStore, UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN } from './template.tree.store'; +import type { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, TemplateResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbDetailRepository } from 'libs/repository/detail-repository.interface'; -import { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { #init; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/manifests.ts index 688a4769a7..012668b989 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/manifests.ts @@ -1,8 +1,7 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbDictionaryTreeStore } from './dictionary.tree.store'; import { UmbDictionaryStore } from './dictionary.store'; -import { ManifestRepository } from 'libs/extensions-registry/repository.models'; -import { ManifestStore, ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; +import { ManifestStore, ManifestTreeStore, ManifestRepository } from '@umbraco-cms/backoffice/extensions-registry'; export const DICTIONARY_REPOSITORY_ALIAS = 'Umb.Repository.Dictionary'; From 85fcfda1f53d690761e301d32b1eec3f603227a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:04:34 +0100 Subject: [PATCH 360/550] commit for test --- .../components/input-user-group/input-user-group.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index 7315cd5a81..143aa867c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -7,7 +7,7 @@ import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN, } from '../../../users/user-groups/repository/user-group.store'; -import { UMB_USER_GROUP_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; +import { UMB_USER_GROUP_PICKER_MODAL } from '../../../../../libs/modal/token/user-group-picker-modal.token'; import type { UserGroupEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user-group') From bc1119b0c688d12c0708869a4dedc97d93f6d3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:05:58 +0100 Subject: [PATCH 361/550] Revert "commit for test" This reverts commit 85fcfda1f53d690761e301d32b1eec3f603227a9. --- .../components/input-user-group/input-user-group.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index 143aa867c6..7315cd5a81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -7,7 +7,7 @@ import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN, } from '../../../users/user-groups/repository/user-group.store'; -import { UMB_USER_GROUP_PICKER_MODAL } from '../../../../../libs/modal/token/user-group-picker-modal.token'; +import { UMB_USER_GROUP_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; import type { UserGroupEntity } from '@umbraco-cms/backoffice/models'; @customElement('umb-input-user-group') From fadc5580d05fc15c2350bfde5cf457f872cafa9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:06:29 +0100 Subject: [PATCH 362/550] rule to ensure libs imports --- src/Umbraco.Web.UI.Client/.eslintrc.json | 1 + .../eslint-local-rules.cjs | 77 +++++++++++++++---- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 7725f81d2c..5fd970bda6 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -35,6 +35,7 @@ "local-rules/bad-type-import": "error", "local-rules/no-direct-api-import": "warn", "local-rules/prefer-import-aliases": "error", + "local-rules/prefer-umbraco-cms-imports": "error", "@typescript-eslint/no-non-null-assertion": "off" }, "settings": { diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index 1ec3bed82c..ae3a715e1a 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -20,18 +20,21 @@ module.exports = { create: function (context) { return { ImportDeclaration: function (node) { - if (node.source.parent.importKind !== 'type' && (node.source.value.endsWith('/models') || node.source.value === 'router-slot/model')) { + if ( + node.source.parent.importKind !== 'type' && + (node.source.value.endsWith('/models') || node.source.value === 'router-slot/model') + ) { const sourceCode = context.getSourceCode(); const nodeSource = sourceCode.getText(node); context.report({ node, message: 'Use `import type` instead of `import`.', - fix: fixer => fixer.replaceText(node, nodeSource.replace('import', 'import type')), + fix: (fixer) => fixer.replaceText(node, nodeSource.replace('import', 'import type')), }); } }, }; - } + }, }, /** @type {import('eslint').Rule.RuleModule} */ @@ -39,9 +42,10 @@ module.exports = { meta: { type: 'suggestion', docs: { - description: 'Ensures that any API resources from the `@umbraco-cms/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', + description: + 'Ensures that any API resources from the `@umbraco-cms/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', category: 'Best Practices', - recommended: true + recommended: true, }, fixable: 'code', schema: [], @@ -50,19 +54,30 @@ module.exports = { return { // If methods called on *Resource classes are not already wrapped with `await tryExecuteAndNotify()`, then we should suggest to wrap them. CallExpression: function (node) { - if (node.callee.type === 'MemberExpression' && node.callee.object.type === 'Identifier' && node.callee.object.name.endsWith('Resource') && node.callee.property.type === 'Identifier' && node.callee.property.name !== 'constructor') { - const hasTryExecuteAndNotify = node.parent && node.parent.callee && (node.parent.callee.name === 'tryExecute' || node.parent.callee.name === 'tryExecuteAndNotify'); + if ( + node.callee.type === 'MemberExpression' && + node.callee.object.type === 'Identifier' && + node.callee.object.name.endsWith('Resource') && + node.callee.property.type === 'Identifier' && + node.callee.property.name !== 'constructor' + ) { + const hasTryExecuteAndNotify = + node.parent && + node.parent.callee && + (node.parent.callee.name === 'tryExecute' || node.parent.callee.name === 'tryExecuteAndNotify'); if (!hasTryExecuteAndNotify) { context.report({ node, message: 'Wrap this call with `tryExecuteAndNotify()`. Make sure to `await` the result.', - fix: fixer => [fixer.insertTextBefore(node, 'tryExecuteAndNotify(this, '), fixer.insertTextAfter(node, ')')], + fix: (fixer) => [ + fixer.insertTextBefore(node, 'tryExecuteAndNotify(this, '), + fixer.insertTextAfter(node, ')'), + ], }); } } - } + }, }; - }, }, @@ -71,9 +86,10 @@ module.exports = { meta: { type: 'suggestion', docs: { - description: 'Ensures that the application does not rely on file system paths for imports. Instead, use import aliases or relative imports. This also solves a problem where GitHub fails on the test runner step.', + description: + 'Ensures that the application does not rely on file system paths for imports. Instead, use import aliases or relative imports. This also solves a problem where GitHub fails on the test runner step.', category: 'Best Practices', - recommended: true + recommended: true, }, schema: [], }, @@ -83,11 +99,44 @@ module.exports = { if (node.source.value.startsWith('src/')) { context.report({ node, - message: 'Prefer using import aliases or relative imports instead of absolute imports. Example: `import { MyComponent } from "src/components/MyComponent";` should be `import { MyComponent } from "@components/MyComponent";`' + message: + 'Prefer using import aliases or relative imports instead of absolute imports. Example: `import { MyComponent } from "src/components/MyComponent";` should be `import { MyComponent } from "@components/MyComponent";`', }); } }, }; - } + }, + }, + + /** @type {import('eslint').Rule.RuleModule} */ + 'prefer-umbraco-cms-imports': { + meta: { + type: 'suggestion', + docs: { + description: 'Ensure that imports from "libs" namespace are replaced with "@umbraco-cms/backoffice" namespace', + category: 'Best Practices', + recommended: true, + }, + fixable: 'code', + schema: [], + }, + create: function (context) { + return { + ImportDeclaration: function (node) { + if (node.source.value.startsWith('libs/')) { + const newImportPath = node.source.value.replace(/^libs\//, '@umbraco-cms/backoffice/'); + const specifiers = node.specifiers.map((specifier) => specifier.local.name).join(', '); + const newImportStatement = `import { ${specifiers} } from '${newImportPath}';`; + context.report({ + node, + message: `Use '${newImportPath}' instead of '${node.source.value}' for imports from 'libs' namespace.`, + fix: function (fixer) { + return fixer.replaceText(node, newImportStatement); + }, + }); + } + }, + }; + }, }, }; From 4a4a3965dc3bc7143fcb57989b072c0c461673a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:10:13 +0100 Subject: [PATCH 363/550] import fix --- .../allowed-document-types-modal.element.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index b133a5d74c..ff55e6dfc3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -3,10 +3,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { UmbDocumentTypeRepository } from '../../repository/document-type.repository'; -import { - UmbAllowedDocumentTypesModalData, - UmbAllowedDocumentTypesModalResult, -} from '../../../../../../libs/modal/token/allowed-document-types-modal.token'; +import { UmbAllowedDocumentTypesModalData, UmbAllowedDocumentTypesModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; import { DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; From c4b12554ce1a54f2fe5a3ab0e214c0437859773b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:28:29 +0100 Subject: [PATCH 364/550] corrected imports --- .../eslint-local-rules.cjs | 18 +++++++++++------- .../document-picker-modal.element.ts | 5 +---- .../document-picker-modal.stories.ts | 2 +- .../media-picker/media-picker-modal.element.ts | 5 +---- .../modal-views/fields-settings.element.ts | 5 +---- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index ae3a715e1a..0bd5d759ae 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -108,12 +108,13 @@ module.exports = { }, }, + // TODO: Its not bullet proof, but it will catch most/some cases. /** @type {import('eslint').Rule.RuleModule} */ 'prefer-umbraco-cms-imports': { meta: { type: 'suggestion', docs: { - description: 'Ensure that imports from "libs" namespace are replaced with "@umbraco-cms/backoffice" namespace', + description: 'Replace relative imports to libs/... with @umbraco-cms/backoffice/...', category: 'Best Practices', recommended: true, }, @@ -121,17 +122,20 @@ module.exports = { schema: [], }, create: function (context) { + const libsRegex = /(\.\.\/)*libs\/(.*)/; return { ImportDeclaration: function (node) { - if (node.source.value.startsWith('libs/')) { - const newImportPath = node.source.value.replace(/^libs\//, '@umbraco-cms/backoffice/'); - const specifiers = node.specifiers.map((specifier) => specifier.local.name).join(', '); - const newImportStatement = `import { ${specifiers} } from '${newImportPath}';`; + const sourceValue = node.source.value; + if (sourceValue.startsWith('libs/') || libsRegex.test(sourceValue)) { + const importPath = sourceValue.replace(libsRegex, (match, p1, p2) => { + const levels = p1.match(/\.\.\//g) || []; + return `@umbraco-cms/backoffice/${p2}`; + }); context.report({ node, - message: `Use '${newImportPath}' instead of '${node.source.value}' for imports from 'libs' namespace.`, + message: `Use import alias @umbraco-cms/backoffice instead of relative path "${sourceValue}".`, fix: function (fixer) { - return fixer.replaceText(node, newImportStatement); + return fixer.replaceTextRange(node.source.range, `'${importPath}'`); }, }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts index 858ba72458..88429ab1a7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.element.ts @@ -2,10 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import type { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; -import { - UmbDocumentPickerModalData, - UmbDocumentPickerModalResult, -} from '../../../../../../libs/modal/token/document-picker-modal.token'; +import { UmbDocumentPickerModalData, UmbDocumentPickerModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; // TODO: make use of UmbPickerLayoutBase diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts index 0e599203f7..ec43ba460e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-picker/document-picker-modal.stories.ts @@ -4,8 +4,8 @@ import './document-picker-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbDocumentPickerModalData } from '../../../../../../libs/modal/token/document-picker-modal.token'; import type { UmbDocumentPickerModalElement } from './document-picker-modal.element'; +import type { UmbDocumentPickerModalData } from '@umbraco-cms/backoffice/modal'; export default { title: 'API/Modals/Layouts/Content Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts index 1c49ee55a5..e141291a0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/modals/media-picker/media-picker-modal.element.ts @@ -2,10 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; -import { - UmbMediaPickerModalData, - UmbMediaPickerModalResult, -} from '../../../../../../libs/modal/token/media-picker-modal.token'; +import { UmbMediaPickerModalData, UmbMediaPickerModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-media-picker-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts index 0844ab9751..337623cfcc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/views/modal-views/fields-settings.element.ts @@ -1,10 +1,7 @@ import { html, css } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { - UmbCreateDocumentModalResultData, - UmbExamineFieldsSettingsModalData, -} from '../../../../../../../libs/modal/token/examine-fields-settings-modal.token'; +import { UmbCreateDocumentModalResultData, UmbExamineFieldsSettingsModalData } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-examine-fields-settings-modal') From e9e88b49071f1bd0becbf83febacf54c4134b279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:34:51 +0100 Subject: [PATCH 365/550] correct imports to use index --- .../components/debug/modals/debug/debug-modal.element.ts | 2 +- .../shared/modals/confirm/confirm-modal.element.ts | 3 +-- .../shared/modals/confirm/confirm-modal.stories.ts | 2 +- .../modals/embedded-media/embedded-media-modal.element.ts | 4 ++-- .../modals/embedded-media/embedded-media-modal.stories.ts | 2 +- .../shared/modals/icon-picker/icon-picker-modal.element.ts | 5 +---- .../shared/modals/icon-picker/icon-picker-modal.stories.ts | 2 +- .../shared/modals/link-picker/link-picker-modal.element.ts | 2 +- .../property-editor-ui-picker-modal.element.ts | 2 +- .../property-editor-ui-picker-modal.stories.ts | 2 +- .../property-editor-ui-multi-url-picker.element.ts | 2 +- .../create/create-dictionary-modal-layout.element.ts | 5 +---- .../entity-actions/export/export-dictionary-modal.element.ts | 5 +---- .../entity-actions/import/import-dictionary-modal.element.ts | 5 +---- .../modals/change-password/change-password-modal.element.ts | 3 +-- .../users/users/workspace/user-workspace-edit.element.ts | 2 +- .../src/core/mocks/domains/rte-embed.handlers.ts | 2 +- 17 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts index a68255a98b..74e5ade59c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/modals/debug/debug-modal.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { UmbContextDebuggerModalData } from '../../../../../../../libs/modal/token/debug-modal.token'; +import { UmbContextDebuggerModalData } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-context-debugger-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts index 9e25f29734..f710783f81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.element.ts @@ -1,9 +1,8 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; -import { UmbConfirmModalData, UmbConfirmModalResult } from '../../../../../libs/modal/token/confirm-modal.token'; +import { UmbConfirmModalData, UmbConfirmModalResult, UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; @customElement('umb-confirm-modal') export class UmbConfirmModalElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts index c9b1eb8b65..790bc96c46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/confirm/confirm-modal.stories.ts @@ -3,8 +3,8 @@ import './confirm-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbConfirmModalData } from '../../../../../libs/modal/token/confirm-modal.token'; import type { UmbConfirmModalElement } from './confirm-modal.element'; +import type { UmbConfirmModalData } from '@umbraco-cms/backoffice/modal'; export default { title: 'API/Modals/Layouts/Confirm', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts index 1cbcbcf091..6f38cc48dc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.element.ts @@ -8,10 +8,10 @@ import { OEmbedStatus, UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalResult, -} from '../../../../../libs/modal/token/embedded-media-modal.token'; + UmbModalHandler, +} from '@umbraco-cms/backoffice/modal'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; interface UmbEmbeddedMediaModalModel { url?: string; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts index 068a9c5af0..2638f0142c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/embedded-media/embedded-media-modal.stories.ts @@ -3,7 +3,7 @@ import './embedded-media-modal.element'; import { Meta } from '@storybook/web-components'; import { html } from 'lit'; -import { UmbEmbeddedMediaModalData } from '../../../../../libs/modal/token/embedded-media-modal.token'; +import { UmbEmbeddedMediaModalData } from '@umbraco-cms/backoffice/modal'; export default { title: 'API/Modals/Layouts/Embedded Media', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts index c74cb4893d..ff0cab31b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.element.ts @@ -6,10 +6,7 @@ import { customElement, property, state } from 'lit/decorators.js'; import { styleMap } from 'lit/directives/style-map.js'; import icons from '../../../../../public-assets/icons/icons.json'; -import { - UmbIconPickerModalData, - UmbIconPickerModalResult, -} from '../../../../../libs/modal/token/icon-picker-modal.token'; +import { UmbIconPickerModalData, UmbIconPickerModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; // TODO: Make use of UmbPickerLayoutBase diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts index 5e65653ef8..53ee8a5bdb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/icon-picker/icon-picker-modal.stories.ts @@ -4,8 +4,8 @@ import './icon-picker-modal.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { UmbIconPickerModalData } from '../../../../../libs/modal/token/icon-picker-modal.token'; import type { UmbIconPickerModalElement } from './icon-picker-modal.element'; +import { UmbIconPickerModalData } from '@umbraco-cms/backoffice/modal'; export default { title: 'API/Modals/Layouts/Icon Picker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts index eda086a941..7325caf339 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/link-picker/link-picker-modal.element.ts @@ -8,7 +8,7 @@ import { UmbLinkPickerLink, UmbLinkPickerModalData, UmbLinkPickerModalResult, -} from '../../../../../libs/modal/token/link-picker-modal.token'; +} from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; import { buildUdi, getKeyFromUdi } from '@umbraco-cms/backoffice/utils'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts index 8369f59e4b..62dfc7906e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts @@ -7,7 +7,7 @@ import type { UUIInputEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorUIPickerModalData, UmbPropertyEditorUIPickerModalResult, -} from '../../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; +} from '@umbraco-cms/backoffice/modal'; import type { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import type { ManifestPropertyEditorUI } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts index beba15f095..fd6291ef18 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/modals/property-editor-ui-picker/property-editor-ui-picker-modal.stories.ts @@ -1,7 +1,7 @@ import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import type { UmbPropertyEditorUIPickerModalData } from '../../../../../../libs/modal/token/property-editor-ui-picker-modal.token'; import type { UmbPropertyEditorUIPickerModalElement } from './property-editor-ui-picker-modal.element'; +import type { UmbPropertyEditorUIPickerModalData } from '@umbraco-cms/backoffice/modal'; import './property-editor-ui-picker-modal.element'; import '../../../components/body-layout/body-layout.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index fc9dfb512a..e292357618 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -3,8 +3,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { UUIModalSidebarSize } from '@umbraco-ui/uui-modal-sidebar'; import { UmbInputMultiUrlPickerElement } from '../../../../shared/components/input-multi-url-picker/input-multi-url-picker.element'; -import { UmbLinkPickerLink } from '../../../../../../libs/modal/token/link-picker-modal.token'; import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; +import { UmbLinkPickerLink } from '@umbraco-cms/backoffice/modal'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts index f0eaecdf60..6756740c65 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/create/create-dictionary-modal-layout.element.ts @@ -2,10 +2,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; -import { - UmbCreateDictionaryModalData, - UmbCreateDictionaryModalResult, -} from '../../../../../../libs/modal/token/create-dictionary-modal.token'; +import { UmbCreateDictionaryModalData, UmbCreateDictionaryModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-create-dictionary-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts index 1cb2faa92a..9f746ae2e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts @@ -1,10 +1,7 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, query } from 'lit/decorators.js'; -import { - UmbExportDictionaryModalData, - UmbExportDictionaryModalResult, -} from '../../../../../../libs/modal/token/export-dictionary-modal.token'; +import { UmbExportDictionaryModalData, UmbExportDictionaryModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-export-dictionary-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts index f5e180997b..92e2e6f507 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts @@ -5,10 +5,7 @@ import { when } from 'lit/directives/when.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; -import { - UmbImportDictionaryModalData, - UmbImportDictionaryModalResult, -} from '../../../../../../libs/modal/token/import-dictionary-modal.token'; +import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '@umbraco-cms/backoffice/modal'; import { UploadDictionaryResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts index a777278239..f5fc28ad43 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/change-password/change-password-modal.element.ts @@ -1,8 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; -import { UmbChangePasswordModalData } from '../../../../../../libs/modal/token/change-password-modal.token'; -import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; +import { UmbModalHandler, UmbChangePasswordModalData } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-change-password-modal') diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index b9b8ebad54..06e603d4d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -6,8 +6,8 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user/current-user.store'; -import { UMB_CHANGE_PASSWORD_MODAL } from '../../../../../libs/modal/token/change-password-modal.token'; import { UmbUserWorkspaceContext } from './user-workspace.context'; +import { UMB_CHANGE_PASSWORD_MODAL } from '@umbraco-cms/backoffice/modal'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { getLookAndColorFromUserStatus } from '@umbraco-cms/backoffice/utils'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts index 9d2adb5296..dd811943f0 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/rte-embed.handlers.ts @@ -1,5 +1,5 @@ import { rest } from 'msw'; -import { OEmbedResult, OEmbedStatus } from '../../../../libs/modal/token/embedded-media-modal.token'; +import { OEmbedResult, OEmbedStatus } from '@umbraco-cms/backoffice/modal'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const handlers = [ From d5e767230b2b67578c112023323b7e985f9a8a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Thu, 23 Mar 2023 23:36:56 +0100 Subject: [PATCH 366/550] correct story --- src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx index 197252a30e..e04cdacc9e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.mdx @@ -151,7 +151,7 @@ descripe the addional features of the route Registration: render() { return html` ${this._items?.map((item, index) => - html`Add` + html`Add` )} `; } From b3c2bace803a172488289eed407ceca60dfc6ff0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:36:23 +0100 Subject: [PATCH 367/550] make tree store a generic --- .../libs/store/tree-store-base.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts index 7b2f35893e..8a7647d015 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts @@ -9,25 +9,27 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? -export class UmbTreeStoreBase extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); +export class UmbTreeStoreBase< + T extends EntityTreeItemResponseModel = EntityTreeItemResponseModel +> extends UmbStoreBase { + #data = new ArrayState([], (x) => x.key); /** * Appends items to the store - * @param {Array} items + * @param {Array} items * @memberof UmbTreeStoreBase */ - appendItems(items: Array) { + appendItems(items: Array) { this.#data.append(items); } /** * Updates an item in the store * @param {string} key - * @param {Partial} data + * @param {Partial} data * @memberof UmbTreeStoreBase */ - updateItem(key: string, data: Partial) { + updateItem(key: string, data: Partial) { this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); } From 0dcbd7b5e72d7d79fdbfdec4e5afd337dcbf9e53 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:37:11 +0100 Subject: [PATCH 368/550] make tree data source a generic --- .../repository/repository-tree-data-source.interface.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index c131d41fff..5c8290dd11 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,8 +1,8 @@ import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface RepositoryTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; +export interface RepositoryTreeDataSource { + getRootItems(): Promise>; + getChildrenOf(parentKey: string): Promise>; getItems(key: Array): Promise>; } From bc350d07af7c13e89755788c7c6b83d255d40dc6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:38:02 +0100 Subject: [PATCH 369/550] add stylesheet request interceptors --- .../core/mocks/domains/stylesheet.handlers.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts new file mode 100644 index 0000000000..b7ddf60b0c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts @@ -0,0 +1,34 @@ +import { rest } from 'msw'; +import { umbStylesheetData } from '../data/stylesheet.data'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath('/tree/stylesheet/root'), (req, res, ctx) => { + const response = umbStylesheetData.getTreeRoot(); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath('/tree/stylesheet/children'), (req, res, ctx) => { + const path = req.url.searchParams.get('path'); + if (!path) return; + + const response = umbStylesheetData.getTreeItemChildren(path); + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath('/tree/stylesheet/item'), (req, res, ctx) => { + const paths = req.url.searchParams.getAll('paths'); + if (!paths) return; + + const items = umbStylesheetData.getTreeItem(paths); + return res(ctx.status(200), ctx.json(items)); + }), + + rest.get(umbracoPath('/stylesheet/:path'), (req, res, ctx) => { + const path = req.params.path as string; + if (!path) return; + + const response = umbStylesheetData.getByPath(path); + return res(ctx.status(200), ctx.json(response)); + }), +]; From 4c40a661e5ec063416787e0bd1ce3caac3c5e566 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:57:05 +0100 Subject: [PATCH 370/550] remove unused handler --- .../src/core/mocks/domains/stylesheet.handlers.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts index b7ddf60b0c..ef252a199e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/stylesheet.handlers.ts @@ -23,12 +23,4 @@ export const handlers = [ const items = umbStylesheetData.getTreeItem(paths); return res(ctx.status(200), ctx.json(items)); }), - - rest.get(umbracoPath('/stylesheet/:path'), (req, res, ctx) => { - const path = req.params.path as string; - if (!path) return; - - const response = umbStylesheetData.getByPath(path); - return res(ctx.status(200), ctx.json(response)); - }), ]; From e1e4df2c4516724c76876b568f653a2f4ceda844 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:57:18 +0100 Subject: [PATCH 371/550] import stylesheet handlers --- src/Umbraco.Web.UI.Client/src/core/mocks/browser-handlers.ts | 2 ++ 1 file changed, 2 insertions(+) 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 1219928040..a756d4c727 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 @@ -28,6 +28,7 @@ import { handlers as redirectManagementHandlers } from './domains/redirect-manag import { handlers as logViewerHandlers } from './domains/log-viewer.handlers'; import { handlers as packageHandlers } from './domains/package.handlers'; import { handlers as rteEmbedHandlers } from './domains/rte-embed.handlers'; +import { handlers as stylesheetHandlers } from './domains/stylesheet.handlers'; const handlers = [ serverHandlers.serverVersionHandler, @@ -59,6 +60,7 @@ const handlers = [ ...logViewerHandlers, ...packageHandlers, ...rteEmbedHandlers, + ...stylesheetHandlers, ]; switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { From 4cfcd21364c23888a660fcf80333766b03ef9c71 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 09:57:41 +0100 Subject: [PATCH 372/550] add mocked stylesheet data + mocked db --- .../src/core/mocks/data/stylesheet.data.ts | 80 +++++++++++++++++++ .../src/core/mocks/data/utils.ts | 12 ++- 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts new file mode 100644 index 0000000000..96da26036b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts @@ -0,0 +1,80 @@ +import { UmbEntityData } from './entity.data'; +import { createFileSystemTreeItem } from './utils'; +import { + FileSystemTreeItemPresentationModel, + PagedFileSystemTreeItemPresentationModel, +} from '@umbraco-cms/backoffice/backend-api'; + +type StylesheetDBItem = FileSystemTreeItemPresentationModel & { + content: string; +}; + +export const data: Array = [ + { + path: 'Stylesheet File 1.css', + isFolder: false, + name: 'Stylesheet File 1.css', + type: 'stylesheet', + icon: 'icon-brackets', + hasChildren: false, + content: `Stylesheet content 1`, + }, + { + path: 'Stylesheet File 2.css', + isFolder: false, + name: 'Stylesheet File 2.css', + type: 'stylesheet', + icon: 'icon-brackets', + hasChildren: false, + content: `Stylesheet content 2`, + }, + { + path: 'Folder 1', + isFolder: true, + name: 'Folder 1', + type: 'stylesheet', + icon: 'icon-folder', + hasChildren: false, + content: `Stylesheet content 3`, + }, + { + path: 'Folder 1/Stylesheet File 3.css', + isFolder: false, + name: 'Stylesheet File 3.css', + type: 'stylesheet', + icon: 'icon-brackets', + hasChildren: false, + content: `Stylesheet content 3`, + }, +]; + +// Temp mocked database +// TODO: all properties are optional in the server schema. I don't think this is correct. +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +class UmbStylesheetData extends UmbEntityData { + constructor() { + super(data); + } + + getTreeRoot(): PagedFileSystemTreeItemPresentationModel { + const items = this.data.filter((item) => item.path === item.name); + const treeItems = items.map((item) => createFileSystemTreeItem(item)); + const total = items.length; + return { items: treeItems, total }; + } + + getTreeItemChildren(parentPath: string): PagedFileSystemTreeItemPresentationModel { + const items = this.data.filter((item) => item.path?.startsWith(parentPath)); + const treeItems = items.map((item) => createFileSystemTreeItem(item)); + const total = items.length; + return { items: treeItems, total }; + } + + getTreeItem(paths: Array): Array { + const items = this.data.filter((item) => paths.includes(item.path ?? '')); + return items.map((item) => createFileSystemTreeItem(item)); + } +} + +export const umbStylesheetData = new UmbStylesheetData(); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 257b43976e..325e8e46b0 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -6,6 +6,7 @@ import type { FolderTreeItemResponseModel, DocumentTypeResponseModel, DocumentResponseModel, + FileSystemTreeItemPresentationModel, } from '@umbraco-cms/backoffice/backend-api'; export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => { @@ -38,7 +39,9 @@ export const createContentTreeItem = (item: any): ContentTreeItemResponseModel & }; // TODO: remove isTrashed type extension when we have found a solution to trashed items -export const createDocumentTreeItem = (item: DocumentResponseModel): DocumentTreeItemResponseModel & { isTrashed: boolean } => { +export const createDocumentTreeItem = ( + item: DocumentResponseModel +): DocumentTreeItemResponseModel & { isTrashed: boolean } => { return { ...createContentTreeItem(item), /* @@ -57,3 +60,10 @@ export const createDocumentTypeTreeItem = (item: DocumentTypeResponseModel): Doc isElement: item.isElement, }; }; + +export const createFileSystemTreeItem = (item: any): FileSystemTreeItemPresentationModel => { + return { + ...createFolderTreeItem(item), + path: item.path, + }; +}; From 6ee46fcc6f093ce80f2dd51b24e4f89b9e55b79e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:10:55 +0100 Subject: [PATCH 373/550] update types in tree repository interface --- .../repository/tree-repository.interface.ts | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index a1de9f88ba..6d57205da4 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -1,24 +1,31 @@ import type { Observable } from 'rxjs'; -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { + EntityTreeItemResponseModel, + PagedEntityTreeItemResponseModel, + ProblemDetailsModel, +} from '@umbraco-cms/backoffice/backend-api'; -export interface UmbTreeRepository { +export interface UmbTreeRepository< + PagedItemsType = PagedEntityTreeItemResponseModel, + ItemsType = EntityTreeItemResponseModel +> { requestRootTreeItems: () => Promise<{ - data: PagedEntityTreeItemResponseModel | undefined; + data: PagedItemsType | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - requestTreeItemsOf: (parentKey: string | null) => Promise<{ - data: PagedEntityTreeItemResponseModel | undefined; + requestTreeItemsOf: (parentUnique: string | null) => Promise<{ + data: PagedItemsType | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - requestTreeItems: (keys: string[]) => Promise<{ - data: Array | undefined; + requestTreeItems: (uniques: string[]) => Promise<{ + data: Array | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - rootTreeItems: () => Promise>; - treeItemsOf: (parentKey: string | null) => Promise>; - treeItems: (keys: string[]) => Promise>; + rootTreeItems: () => Promise>; + treeItemsOf: (parentUnique: string | null) => Promise>; + treeItems: (uniques: string[]) => Promise>; } From 328693b0836a5a2a747ad2021b2174b051aba091 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:19:30 +0100 Subject: [PATCH 374/550] rename TreeStoreBase to EntityTreeStore --- .../libs/extensions-registry/store.models.ts | 4 ++-- .../libs/store/tree-store-base.ts | 16 ++++++++-------- .../document-blueprint.tree.store.ts | 4 ++-- .../repository/document-type.tree.store.ts | 4 ++-- .../documents/repository/document.tree.store.ts | 10 ++++------ .../repository/media-type.tree.store.ts | 6 +++--- .../media/media/repository/media.tree.store.ts | 6 +++--- .../repository/member-group.tree.store.ts | 6 +++--- .../repository/member-type.tree.store.ts | 4 ++-- .../members/repository/member.tree.store.ts | 6 +++--- .../repository/data-type.tree.store.ts | 8 +++----- .../repository/relation-type.tree.store.ts | 4 ++-- .../templates/repository/template.tree.store.ts | 8 +++----- .../repository/dictionary.tree.store.ts | 6 +++--- 14 files changed, 43 insertions(+), 49 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts index abeb6b9fda..496251134f 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts @@ -1,10 +1,10 @@ import type { ManifestClass } from './models'; -import { UmbStoreBase, UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbStoreBase, UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; export interface ManifestStore extends ManifestClass { type: 'store'; } -export interface ManifestTreeStore extends ManifestClass { +export interface ManifestTreeStore extends ManifestClass { type: 'treeStore'; } diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts index 8a7647d015..303c13718f 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts @@ -4,12 +4,12 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; /** * @export - * @class UmbTreeStoreBase + * @class UmbEntityTreeStore * @extends {UmbStoreBase} * @description - General Tree Data Store */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? -export class UmbTreeStoreBase< +export class UmbEntityTreeStore< T extends EntityTreeItemResponseModel = EntityTreeItemResponseModel > extends UmbStoreBase { #data = new ArrayState([], (x) => x.key); @@ -17,7 +17,7 @@ export class UmbTreeStoreBase< /** * Appends items to the store * @param {Array} items - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ appendItems(items: Array) { this.#data.append(items); @@ -27,7 +27,7 @@ export class UmbTreeStoreBase< * Updates an item in the store * @param {string} key * @param {Partial} data - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ updateItem(key: string, data: Partial) { this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); @@ -36,7 +36,7 @@ export class UmbTreeStoreBase< /** * Removes an item from the store * @param {string} key - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ removeItem(key: string) { this.#data.removeOne(key); @@ -44,7 +44,7 @@ export class UmbTreeStoreBase< /** * An observable to observe the root items - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); @@ -52,7 +52,7 @@ export class UmbTreeStoreBase< * Returns an observable to observe the children of a given parent * @param {(string | null)} parentKey * @return {*} - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ childrenOf(parentKey: string | null) { return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === parentKey)); @@ -62,7 +62,7 @@ export class UmbTreeStoreBase< * Returns an observable to observe the items with the given keys * @param {Array} keys * @return {*} - * @memberof UmbTreeStoreBase + * @memberof UmbEntityTreeStore */ items(keys: Array) { return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts index fb1968d7a2..cbb0c01bbb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.tree.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( @@ -12,7 +12,7 @@ export const UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT_TOKEN = new UmbContextTok * @extends {UmbStoreBase} * @description - Tree Data Store for Document Blueprints */ -export class UmbDocumentBlueprintTreeStore extends UmbTreeStoreBase { +export class UmbDocumentBlueprintTreeStore extends UmbEntityTreeStore { constructor(host: UmbControllerHostInterface) { super(host, UMB_DOCUMENT_BLUEPRINT_TREE_STORE_CONTEXT_TOKEN.toString()); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts index 7cfdee24df..4052a3ff76 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.tree.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** @@ -9,7 +9,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; * @description - Tree Data Store for Document-Types */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? -export class UmbDocumentTypeTreeStore extends UmbTreeStoreBase { +export class UmbDocumentTypeTreeStore extends UmbEntityTreeStore { /** * Creates an instance of UmbDocumentTypeTreeStore. * @param {UmbControllerHostInterface} host diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts index 4b3bbaa7f8..4cab5a9ac3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.tree.store.ts @@ -1,14 +1,14 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export * @class UmbDocumentTreeStore - * @extends {UmbTreeStoreBase} + * @extends {UmbEntityTreeStore} * @description - Tree Data Store for Templates */ -export class UmbDocumentTreeStore extends UmbTreeStoreBase { +export class UmbDocumentTreeStore extends UmbEntityTreeStore { /** * Creates an instance of UmbDocumentTreeStore. * @param {UmbControllerHostInterface} host @@ -19,6 +19,4 @@ export class UmbDocumentTreeStore extends UmbTreeStoreBase { } } -export const UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( - 'UmbDocumentTreeStore' -); +export const UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbDocumentTreeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts index 6e6f69ed7d..3392acb8d1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.tree.store.ts @@ -1,14 +1,14 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export * @class UmbMediaTypeTreeStore - * @extends {UmbTreeStoreBase} + * @extends {UmbEntityTreeStore} * @description - Tree Data Store for Media Types */ -export class UmbMediaTypeTreeStore extends UmbTreeStoreBase { +export class UmbMediaTypeTreeStore extends UmbEntityTreeStore { /** * Creates an instance of UmbMediaTypeTreeStore. * @param {UmbControllerHostInterface} host diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index 88903b1cb1..4214a9d7f2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -1,7 +1,7 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMediaTreeStore'); @@ -9,10 +9,10 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts index 1a67085088..6e20bb0447 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.tree.store.ts @@ -1,14 +1,14 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** * @export * @class UmbMemberGroupTreeStore - * @extends {UmbTreeStoreBase} + * @extends {UmbEntityTreeStore} * @description - Tree Data Store for Member Groups */ -export class UmbMemberGroupTreeStore extends UmbTreeStoreBase { +export class UmbMemberGroupTreeStore extends UmbEntityTreeStore { /** * Creates an instance of UmbMemberGroupTreeStore. * @param {UmbControllerHostInterface} host diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts index f008de15aa..8fb32d6bea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.tree.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** @@ -8,7 +8,7 @@ import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/control * @extends {UmbStoreBase} * @description - Tree Data Store for Member Types */ -export class UmbMemberTypeTreeStore extends UmbTreeStoreBase { +export class UmbMemberTypeTreeStore extends UmbEntityTreeStore { constructor(host: UmbControllerHostInterface) { super(host, UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN.toString()); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts index b315e84c5a..a5c832358e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.tree.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; export const UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMemberTreeStore'); @@ -7,10 +7,10 @@ export const UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( - 'UmbDataTypeTreeStore' -); +export const UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbDataTypeTreeStore'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts index 0220ccaa87..b66af29604 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.tree.store.ts @@ -1,6 +1,6 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; /** * @export @@ -9,7 +9,7 @@ import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; * @description - Tree Data Store for relation-types */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? -export class UmbRelationTypeTreeStore extends UmbTreeStoreBase { +export class UmbRelationTypeTreeStore extends UmbEntityTreeStore { /** * Creates an instance of UmbRelationTypeTreeStore. * @param {UmbControllerHostInterface} host diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.tree.store.ts index ecbe8c9031..b606566c98 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.tree.store.ts @@ -1,10 +1,8 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbTreeStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -export const UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( - 'UmbTemplateTreeStore' -); +export const UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbTemplateTreeStore'); /** * @export @@ -12,7 +10,7 @@ export const UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken Date: Fri, 24 Mar 2023 10:23:03 +0100 Subject: [PATCH 375/550] align file name with new class name --- .../libs/store/{tree-store-base.ts => entity-tree-store.ts} | 0 src/Umbraco.Web.UI.Client/libs/store/index.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/Umbraco.Web.UI.Client/libs/store/{tree-store-base.ts => entity-tree-store.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/store/tree-store-base.ts rename to src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts diff --git a/src/Umbraco.Web.UI.Client/libs/store/index.ts b/src/Umbraco.Web.UI.Client/libs/store/index.ts index 865fdf2b5a..54a2a8d327 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/index.ts @@ -1,3 +1,3 @@ export * from './store'; export * from './store-base'; -export * from './tree-store-base'; +export * from './entity-tree-store'; From baebfb55defb7f254b9e263a62d39e2b64d1082d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:44:04 +0100 Subject: [PATCH 376/550] remove current tree store interface --- src/Umbraco.Web.UI.Client/libs/store/store.ts | 29 ------------------- .../shared/collection/collection.context.ts | 12 +++----- .../dashboard-collection.element.ts | 2 +- .../workspace-view-collection.element.ts | 2 +- 4 files changed, 6 insertions(+), 39 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/store.ts b/src/Umbraco.Web.UI.Client/libs/store/store.ts index 083cc9fc2f..d4af9c2275 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store.ts @@ -9,33 +9,7 @@ export interface UmbDataStore { readonly storeAlias: string; } -export interface UmbTreeStore extends UmbDataStore { - - getTreeRoot(): Observable>; - - getTreeItemChildren(key: string): Observable>; - - // Notice: this might not be right to put here as only some content items has ability to be trashed. - /** - * @description - Trash data. - * @param {string[]} keys - * @return {*} {(Promise)} - * @memberof UmbTreeStore - */ - trash(keys: string[]): Promise; - - // Notice: this might not be right to put here as only some content items has ability to be moved. - /** - * @description - Move data. - * @param {string[]} keys - * @return {*} {(Promise)} - * @memberof UmbTreeStore - */ - move(keys: string[], destination: string): Promise; -} - export interface UmbEntityDetailStore extends UmbDataStore { - /** * @description - Request scaffold data by entityType and . The data is added to the store and is returned as an Observable. * @param {string} key @@ -61,10 +35,7 @@ export interface UmbEntityDetailStore extends UmbDataStore { save(data: T[]): Promise; } - export interface UmbContentStore extends UmbEntityDetailStore { - // TODO: make something that is specific for UmbContentStore, or then we should get rid of it. But for now i kept it as we might want this for rollback or other things specific to Content types. save(data: T[]): Promise; - } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 4347266039..d698ed1f71 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -1,6 +1,5 @@ import { Observable } from 'rxjs'; import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import type { UmbTreeStore } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; @@ -9,17 +8,14 @@ import { createExtensionClass } from 'libs/extensions-api/create-extension-class import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; // TODO: Clean up the need for store as Media has switched to use Repositories(repository). -export class UmbCollectionContext< - DataType extends EntityTreeItemResponseModel = EntityTreeItemResponseModel, - StoreType extends UmbTreeStore = UmbTreeStore -> { +export class UmbCollectionContext { private _host: UmbControllerHostInterface; private _entityType: string | null; private _entityKey: string | null; #repository?: UmbTreeRepository; - private _store?: StoreType; + private _store?: any; protected _dataObserver?: UmbObserverController; #data = new ArrayState(>[]); @@ -46,7 +42,7 @@ export class UmbCollectionContext< this._entityKey = entityKey; if (storeAlias) { - new UmbContextConsumerController(this._host, storeAlias, (_instance: StoreType) => { + new UmbContextConsumerController(this._host, storeAlias, (_instance) => { this._store = _instance; if (!this._store) { // TODO: if we keep the type assumption of _store existing, then we should here make sure to break the application in a good way. @@ -175,4 +171,4 @@ export class UmbCollectionContext< } } -export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>('UmbCollectionContext'); +export const UMB_COLLECTION_CONTEXT_TOKEN = new UmbContextToken>('UmbCollectionContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts index 5c21bbee38..2c96968191 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/dashboards/dashboard-collection.element.ts @@ -25,7 +25,7 @@ export class UmbDashboardCollectionElement extends UmbLitElement { ]; // TODO: Use the right type here: - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; public manifest!: ManifestDashboardCollection; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index a5a5be1fec..b6c42e1de1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -30,7 +30,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { private _workspaceContext?: UmbEntityWorkspaceContextInterface; // TODO: add type for the collection context. - private _collectionContext?: UmbCollectionContext; + private _collectionContext?: UmbCollectionContext; constructor() { super(); From eaa27d8257f5fcce445a4542b7ad6eac526cbcd7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:44:19 +0100 Subject: [PATCH 377/550] add new tree store interface --- .../libs/store/tree-store.interface.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts new file mode 100644 index 0000000000..3dcf6529c5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -0,0 +1,11 @@ +import type { Observable } from 'rxjs'; + +export interface UmbTreeStore { + appendItems: (items: Array) => void; + updateItem: (unique: string, item: Partial) => void; + removeItem: (unique: string) => void; + + rootItems: () => Observable>; + childrenOf: (parentUnique: string | null) => Observable>; + treeItems: (uniques: Array) => Observable>; +} From 72221bf8986e37355c18413af020008e2a95da16 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:44:50 +0100 Subject: [PATCH 378/550] export tree store interface from module --- src/Umbraco.Web.UI.Client/libs/store/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/libs/store/index.ts b/src/Umbraco.Web.UI.Client/libs/store/index.ts index 54a2a8d327..cdb08c0d7c 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/index.ts @@ -1,3 +1,4 @@ export * from './store'; export * from './store-base'; export * from './entity-tree-store'; +export * from './tree-store.interface'; From c008d71bb3bfd54611d2c53369fd41c6a2d99e50 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:46:31 +0100 Subject: [PATCH 379/550] use tree store interface in manifest --- .../libs/extensions-registry/store.models.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts index 496251134f..18e8c10c17 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/store.models.ts @@ -1,10 +1,10 @@ import type { ManifestClass } from './models'; -import { UmbStoreBase, UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; +import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; export interface ManifestStore extends ManifestClass { type: 'store'; } -export interface ManifestTreeStore extends ManifestClass { +export interface ManifestTreeStore extends ManifestClass { type: 'treeStore'; } From 1ab817ab94cad3d94eb37524858284d781eb506a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:47:11 +0100 Subject: [PATCH 380/550] require tree items to extend TreeItemPresentationModel --- src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts index 3dcf6529c5..aaee70915e 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -1,6 +1,7 @@ import type { Observable } from 'rxjs'; +import { TreeItemPresentationModel } from '../backend-api'; -export interface UmbTreeStore { +export interface UmbTreeStore { appendItems: (items: Array) => void; updateItem: (unique: string, item: Partial) => void; removeItem: (unique: string) => void; From 749af924c2c19519fb0feaaf2d486c234b96cc2e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:50:00 +0100 Subject: [PATCH 381/550] root items doesn't have to be a method --- src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts index aaee70915e..a219fe0bf6 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -6,7 +6,7 @@ export interface UmbTreeStore) => void; removeItem: (unique: string) => void; - rootItems: () => Observable>; + rootItems: Observable>; childrenOf: (parentUnique: string | null) => Observable>; treeItems: (uniques: Array) => Observable>; } From b5f4e9c98acf5594f66a79de623a23d3b4dc1d75 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:50:47 +0100 Subject: [PATCH 382/550] rename tree items to items --- src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts index a219fe0bf6..fab7dacd17 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -8,5 +8,5 @@ export interface UmbTreeStore>; childrenOf: (parentUnique: string | null) => Observable>; - treeItems: (uniques: Array) => Observable>; + items: (uniques: Array) => Observable>; } From 88be27b387904936db5b3e92ae517c0c9ad3e561 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:51:22 +0100 Subject: [PATCH 383/550] add interface to entity tree store --- .../libs/store/entity-tree-store.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts index 303c13718f..6fb7ca7e3c 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts @@ -1,6 +1,6 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; -import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; +import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; /** * @export @@ -9,17 +9,15 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ // TODO: consider if tree store could be turned into a general EntityTreeStore class? -export class UmbEntityTreeStore< - T extends EntityTreeItemResponseModel = EntityTreeItemResponseModel -> extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); +export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore { + #data = new ArrayState([], (x) => x.key); /** * Appends items to the store * @param {Array} items * @memberof UmbEntityTreeStore */ - appendItems(items: Array) { + appendItems(items: Array) { this.#data.append(items); } @@ -29,7 +27,7 @@ export class UmbEntityTreeStore< * @param {Partial} data * @memberof UmbEntityTreeStore */ - updateItem(key: string, data: Partial) { + updateItem(key: string, data: Partial) { this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); } From c3c3cfcf004d6a84fe47e0b02979908d08e207dc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 10:59:31 +0100 Subject: [PATCH 384/550] remove todo --- src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts index 6fb7ca7e3c..1e82f6acaa 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts @@ -8,7 +8,6 @@ import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; * @extends {UmbStoreBase} * @description - General Tree Data Store */ -// TODO: consider if tree store could be turned into a general EntityTreeStore class? export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore { #data = new ArrayState([], (x) => x.key); From 8a675adfb228948f98ee779ccbc23ca514bc7691 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:09:15 +0100 Subject: [PATCH 385/550] add file system tree store class --- .../templating/file-system-tree.store.ts | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts new file mode 100644 index 0000000000..eba5aee290 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts @@ -0,0 +1,67 @@ +import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; + +/** + * @export + * @class UmbFileSystemTreeStore + * @extends {UmbStoreBase} + * @description - General Tree Data Store + */ +export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore { + #data = new ArrayState([], (x) => x.path); + + /** + * Appends items to the store + * @param {Array} items + * @memberof UmbFileSystemTreeStore + */ + appendItems(items: Array) { + this.#data.append(items); + } + + /** + * Updates an item in the store + * @param {string} path + * @param {Partial} data + * @memberof UmbFileSystemTreeStore + */ + updateItem(path: string, data: Partial) { + this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.path === path)); + } + + /** + * Removes an item from the store + * @param {string} path + * @memberof UmbFileSystemTreeStore + */ + removeItem(path: string) { + this.#data.removeOne(path); + } + + /** + * An observable to observe the root items + * @memberof UmbFileSystemTreeStore + */ + rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.path === item.name)); + + /** + * Returns an observable to observe the children of a given parent + * @param {(string | null)} parentPath + * @return {*} + * @memberof UmbFileSystemTreeStore + */ + childrenOf(parentPath: string | null) { + return this.#data.getObservablePart((items) => items.filter((item) => item.path?.startsWith(parentPath ?? ''))); + } + + /** + * Returns an observable to observe the items with the given keys + * @param {Array} paths + * @return {*} + * @memberof UmbFileSystemTreeStore + */ + items(paths: Array) { + return this.#data.getObservablePart((items) => items.filter((item) => paths.includes(item.path ?? ''))); + } +} From a1ee08c08b706e1472ccb2faf5501052b3b5239b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:10:47 +0100 Subject: [PATCH 386/550] import file system tree store from libs --- .../templating => libs/store}/file-system-tree.store.ts | 0 src/Umbraco.Web.UI.Client/libs/store/index.ts | 1 + 2 files changed, 1 insertion(+) rename src/Umbraco.Web.UI.Client/{src/backoffice/templating => libs/store}/file-system-tree.store.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/templating/file-system-tree.store.ts rename to src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts diff --git a/src/Umbraco.Web.UI.Client/libs/store/index.ts b/src/Umbraco.Web.UI.Client/libs/store/index.ts index cdb08c0d7c..f9152d3ebd 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/index.ts @@ -1,4 +1,5 @@ export * from './store'; export * from './store-base'; export * from './entity-tree-store'; +export * from './file-system-tree.store'; export * from './tree-store.interface'; From 4ee545ef904b0b6d4ee307f185e06dff0cddf1ff Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:25:25 +0100 Subject: [PATCH 387/550] use TreeItem presentation model en tree item element --- .../shared/components/tree/tree-item/tree-item.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts index 462921d54d..d91f31c020 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts @@ -2,7 +2,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/internal/lit-element'; -import { EntityTreeItemResponseModel } from 'libs/backend-api/src'; +import { TreeItemPresentationModel } from 'libs/backend-api/src'; import { ManifestTreeItem } from 'libs/extensions-registry/tree-item.models'; @customElement('umb-tree-item') @@ -10,7 +10,7 @@ export class UmbTreeItemElement extends UmbLitElement { static styles = [UUITextStyles, css``]; @property({ type: Object, attribute: false }) - item?: EntityTreeItemResponseModel; + item?: TreeItemPresentationModel; render() { return html` Date: Fri, 24 Mar 2023 11:25:46 +0100 Subject: [PATCH 388/550] use TreeItemPresentationModel in tree item base element --- .../tree/tree-item-base/tree-item-base.element.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index 0bba8e6432..c74b4d9b8a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -5,13 +5,13 @@ import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeItemContextBase, UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item-base.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-tree-item-base') export class UmbTreeItemBaseElement extends UmbLitElement { static styles = [UUITextStyles, css``]; - private _item?: EntityTreeItemResponseModel; + private _item?: TreeItemPresentationModel; @property({ type: Object, attribute: false }) get item() { return this._item; @@ -23,7 +23,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { } @state() - private _childItems?: EntityTreeItemResponseModel[]; + private _childItems?: TreeItemPresentationModel[]; @state() private _href?: string; @@ -158,7 +158,8 @@ export class UmbTreeItemBaseElement extends UmbLitElement { ${this._childItems ? repeat( this._childItems, - (item) => item.key, + // TODO: get unique here instead of name. we might be able to get it from the context + (item) => item.name, (item) => html`` ) : ''} From 8b982f97cbeda974022fa17184351598c108f687 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:26:04 +0100 Subject: [PATCH 389/550] add file system tree item --- .../file-system-tree-item.context.ts | 10 +++++ .../file-system-tree-item.element.ts | 41 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts new file mode 100644 index 0000000000..2426614064 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts @@ -0,0 +1,10 @@ +import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; + +// TODO get unique method from an entity repository static method +export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { + constructor(host: UmbControllerHostInterface, treeItem: FileSystemTreeItemPresentationModel) { + super(host, treeItem, (x: FileSystemTreeItemPresentationModel) => x.path); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.element.ts new file mode 100644 index 0000000000..3572e6dccc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.element.ts @@ -0,0 +1,41 @@ +import { css, html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { UmbFileSystemTreeItemContext } from './file-system-tree-item.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { ManifestKind } from '@umbraco-cms/backoffice/extensions-registry'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; + +// TODO: Move to separate file: +const manifest: ManifestKind = { + type: 'kind', + alias: 'Umb.Kind.FileSystemTreeItem', + matchKind: 'fileSystem', + matchType: 'treeItem', + manifest: { + type: 'treeItem', + elementName: 'umb-file-system-tree-item', + }, +}; +umbExtensionsRegistry.register(manifest); + +@customElement('umb-file-system-tree-item') +export class UmbFileSystemTreeItemElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + @property({ type: Object, attribute: false }) + item?: FileSystemTreeItemPresentationModel; + + render() { + if (!this.item) return nothing; + new UmbFileSystemTreeItemContext(this, this.item); + return html``; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-file-system-tree-item': UmbFileSystemTreeItemElement; + } +} From adf87cf7359563cd569245c486fddd6309d5f977 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:46:40 +0100 Subject: [PATCH 390/550] import file-system-tree-item --- .../src/backoffice/shared/components/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 d3ce0e6ae5..c4e61d4c70 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 @@ -32,10 +32,14 @@ import './ref-property-editor-ui/ref-property-editor-ui.element'; import './section/section-main/section-main.element'; import './section/section-sidebar/section-sidebar.element'; import './section/section.element'; + import './table/table.element'; + import './tree/tree.element'; import './tree/entity-tree-item/entity-tree-item.element'; +import './tree/file-system-tree-item/file-system-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; + import './variantable-property/variantable-property.element'; import './workspace/workspace-action-menu/workspace-action-menu.element'; @@ -46,8 +50,8 @@ import './history/history-item.element'; import './workspace/workspace-action/workspace-action.element'; import './workspace/workspace-layout/workspace-layout.element'; -import './code-editor'; - import './workspace/workspace-footer-layout/workspace-footer-layout.element'; +import './code-editor'; + export const manifests = [...debugManifests]; From 57b1eb85b466896dbe1e048f58179419726c592f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:46:49 +0100 Subject: [PATCH 391/550] fix interface --- src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts index fab7dacd17..3f7440385b 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -1,7 +1,7 @@ import type { Observable } from 'rxjs'; import { TreeItemPresentationModel } from '../backend-api'; -export interface UmbTreeStore { +export interface UmbTreeStore { appendItems: (items: Array) => void; updateItem: (unique: string, item: Partial) => void; removeItem: (unique: string) => void; From ec55a8a3be1aa0976c90ea75f95d4a535e034721 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:50:50 +0100 Subject: [PATCH 392/550] update icons in mock data --- .../src/core/mocks/data/stylesheet.data.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts index 96da26036b..f5e303b893 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts @@ -15,7 +15,7 @@ export const data: Array = [ isFolder: false, name: 'Stylesheet File 1.css', type: 'stylesheet', - icon: 'icon-brackets', + icon: 'umb:brackets', hasChildren: false, content: `Stylesheet content 1`, }, @@ -24,7 +24,7 @@ export const data: Array = [ isFolder: false, name: 'Stylesheet File 2.css', type: 'stylesheet', - icon: 'icon-brackets', + icon: 'umb:brackets', hasChildren: false, content: `Stylesheet content 2`, }, @@ -33,8 +33,8 @@ export const data: Array = [ isFolder: true, name: 'Folder 1', type: 'stylesheet', - icon: 'icon-folder', - hasChildren: false, + icon: 'umb:folder', + hasChildren: true, content: `Stylesheet content 3`, }, { @@ -42,7 +42,7 @@ export const data: Array = [ isFolder: false, name: 'Stylesheet File 3.css', type: 'stylesheet', - icon: 'icon-brackets', + icon: 'umb:brackets', hasChildren: false, content: `Stylesheet content 3`, }, From 5fd2e93bebc7b423c017ed379b9337d215dc1ac6 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 11:52:16 +0100 Subject: [PATCH 393/550] wip files for stylesheet editing --- .../src/backoffice/templating/index.ts | 3 +- .../templating/stylesheets/index.ts | 8 ++ .../templating/stylesheets/manifests.ts | 6 ++ .../stylesheets/menu-item/manifests.ts | 20 ++++ .../stylesheets/repository/manifests.ts | 25 +++++ .../sources/stylesheet.tree.server.data.ts | 53 +++++++++++ .../repository/stylesheet.repository.ts | 91 +++++++++++++++++++ .../repository/stylesheet.tree.store.ts | 24 +++++ .../templating/stylesheets/tree/manifests.ts | 27 ++++++ .../stylesheets/workspace/manifests.ts | 20 ++++ .../stylesheet-workspace-edit.element.ts | 29 ++++++ .../workspace/stylesheet-workspace.context.ts | 38 ++++++++ .../workspace/stylesheet-workspace.element.ts | 48 ++++++++++ .../workspace/stylesheet-workspace.stories.ts | 18 ++++ 14 files changed, 409 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/menu-item/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.tree.store.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.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 a1d157077e..02854c3770 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts @@ -1,9 +1,10 @@ import { manifests as menuManifests } from './menu.manifests'; import { manifests as templateManifests } from './templates/manifests'; +import { manifests as stylesheetManifests } from './stylesheets/manifests'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; -export const manifests = [...menuManifests, ...templateManifests]; +export const manifests = [...menuManifests, ...templateManifests, ...stylesheetManifests]; const registerExtensions = (manifests: Array) => { manifests.forEach((manifest) => umbExtensionsRegistry.register(manifest)); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/index.ts new file mode 100644 index 0000000000..7d6c362f01 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/index.ts @@ -0,0 +1,8 @@ +import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; + +// TODO: temp until we have a proper stylesheet model +export interface StylesheetDetails extends FileSystemTreeItemPresentationModel { + content: string; +} + +export const STYLESHEET_ENTITY_TYPE = 'stylesheet'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/manifests.ts new file mode 100644 index 0000000000..ddaa4babdc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/manifests.ts @@ -0,0 +1,6 @@ +import { manifests as repositoryManifests } from './repository/manifests'; +import { manifests as menuItemManifests } from './menu-item/manifests'; +import { manifests as treeManifests } from './tree/manifests'; +import { manifests as workspaceManifests } from './workspace/manifests'; + +export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/menu-item/manifests.ts new file mode 100644 index 0000000000..c6ee826fc0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/menu-item/manifests.ts @@ -0,0 +1,20 @@ +import { STYLESHEET_TREE_ALIAS } from '../tree/manifests'; +import type { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; + +const menuItem: ManifestTypes = { + type: 'menuItem', + kind: 'tree', + alias: 'Umb.MenuItem.Stylesheets', + name: 'Stylesheets Menu Item', + weight: 400, + meta: { + label: 'Stylesheets', + icon: 'umb:folder', + treeAlias: STYLESHEET_TREE_ALIAS, + }, + conditions: { + menus: ['Umb.Menu.Templating'], + }, +}; + +export const manifests = [menuItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/manifests.ts new file mode 100644 index 0000000000..34225d54b8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/manifests.ts @@ -0,0 +1,25 @@ +import { UmbStylesheetRepository } from './stylesheet.repository'; +import { UmbStylesheetTreeStore } from './stylesheet.tree.store'; +import { ManifestRepository } from 'libs/extensions-registry/repository.models'; +import { ManifestTreeStore } from '@umbraco-cms/backoffice/extensions-registry'; + +export const STYLESHEET_REPOSITORY_ALIAS = 'Umb.Repository.Stylesheet'; + +const repository: ManifestRepository = { + type: 'repository', + alias: STYLESHEET_REPOSITORY_ALIAS, + name: 'Stylesheet Repository', + class: UmbStylesheetRepository, +}; + +export const STYLESHEET_STORE_ALIAS = 'Umb.Store.Stylesheet'; +export const STYLESHEET_TREE_STORE_ALIAS = 'Umb.Store.StylesheetTree'; + +const treeStore: ManifestTreeStore = { + type: 'treeStore', + alias: STYLESHEET_TREE_STORE_ALIAS, + name: 'Stylesheet Tree Store', + class: UmbStylesheetTreeStore, +}; + +export const manifests = [treeStore, repository]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts new file mode 100644 index 0000000000..38a0e10e09 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -0,0 +1,53 @@ +import { + FileSystemTreeItemPresentationModel, + PagedFileSystemTreeItemPresentationModel, + StylesheetResource, +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { RepositoryTreeDataSource } from 'libs/repository/repository-tree-data-source.interface'; + +/** + * A data source for the Stylesheet tree that fetches data from the server + * @export + * @class UmbStylesheetTreeServerDataSource + * @implements {RepositoryTreeDataSource} + */ +export class UmbStylesheetTreeServerDataSource + implements RepositoryTreeDataSource +{ + #host: UmbControllerHostInterface; + + /** + * Creates an instance of UmbStylesheetTreeServerDataSource. + * @param {UmbControllerHostInterface} host + * @memberof UmbStylesheetTreeServerDataSource + */ + constructor(host: UmbControllerHostInterface) { + this.#host = host; + } + + /** + * Fetches the stylesheet tree root items from the server + * @return {*} + * @memberof UmbStylesheetTreeServerDataSource + */ + async getRootItems() { + return tryExecuteAndNotify(this.#host, StylesheetResource.getTreeStylesheetRoot({})); + } + + /** + * Fetches the children of a given stylesheet path from the server + * @param {(string | undefined)} path + * @return {*} + * @memberof UmbStylesheetTreeServerDataSource + */ + async getChildrenOf(path: string | undefined) { + return tryExecuteAndNotify( + this.#host, + StylesheetResource.getTreeStylesheetChildren({ + path, + }) + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts new file mode 100644 index 0000000000..9259bd7e35 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts @@ -0,0 +1,91 @@ +import { UmbStylesheetTreeStore, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN } from './stylesheet.tree.store'; +import { UmbStylesheetTreeServerDataSource } from './sources/stylesheet.tree.server.data'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { + FileSystemTreeItemPresentationModel, + PagedFileSystemTreeItemPresentationModel, + ProblemDetailsModel, +} from '@umbraco-cms/backoffice/backend-api'; + +export class UmbStylesheetRepository + implements UmbTreeRepository +{ + #host: UmbControllerHostInterface; + #treeDataSource: UmbStylesheetTreeServerDataSource; + #treeStore?: UmbStylesheetTreeStore; + #notificationContext?: UmbNotificationContext; + #initResolver?: () => void; + #initialized = false; + + constructor(host: UmbControllerHostInterface) { + this.#host = host; + // TODO: figure out how spin up get the correct data source + this.#treeDataSource = new UmbStylesheetTreeServerDataSource(this.#host); + + new UmbContextConsumerController(this.#host, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN, (instance) => { + this.#treeStore = instance; + this.#checkIfInitialized(); + }); + + new UmbContextConsumerController(this.#host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this.#notificationContext = instance; + this.#checkIfInitialized(); + }); + } + + #init = new Promise((resolve) => { + this.#initialized ? resolve() : (this.#initResolver = resolve); + }); + + #checkIfInitialized() { + if (this.#treeStore && this.#notificationContext) { + this.#initialized = true; + this.#initResolver?.(); + } + } + + async requestRootTreeItems() { + await this.#init; + + const { data, error } = await this.#treeDataSource.getRootItems(); + + if (data) { + this.#treeStore?.appendItems(data.items); + } + + return { data, error }; + } + + async requestTreeItemsOf(path: string | null) {} + + async requestTreeItems(keys: Array) { + await this.#init; + + if (!keys) { + const error: ProblemDetailsModel = { title: 'Keys are missing' }; + return { data: undefined, error }; + } + + const { data, error } = await this.#treeDataSource.getItems(keys); + + return { data, error }; + } + + async rootTreeItems() { + await this.#init; + return this.#treeStore!.rootItems; + } + + async treeItemsOf(parentKey: string | null) { + await this.#init; + return this.#treeStore!.childrenOf(parentKey); + } + + async treeItems(keys: Array) { + await this.#init; + return this.#treeStore!.items(keys); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.tree.store.ts new file mode 100644 index 0000000000..bf7a427c5c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.tree.store.ts @@ -0,0 +1,24 @@ +import { UmbFileSystemTreeStore } from '@umbraco-cms/backoffice/store'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; + +/** + * @export + * @class UmbStylesheetTreeStore + * @extends {UmbEntityTreeStore} + * @description - Tree Data Store for Stylesheets + */ +export class UmbStylesheetTreeStore extends UmbFileSystemTreeStore { + /** + * Creates an instance of UmbStylesheetTreeStore. + * @param {UmbControllerHostInterface} host + * @memberof UmbStylesheetTreeStore + */ + constructor(host: UmbControllerHostInterface) { + super(host, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN.toString()); + } +} + +export const UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken( + 'UmbStylesheetTreeStore' +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts new file mode 100644 index 0000000000..f3430be1ec --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts @@ -0,0 +1,27 @@ +import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; +import { STYLESHEET_ENTITY_TYPE } from '..'; +import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; + +export const STYLESHEET_TREE_ALIAS = 'Umb.Tree.Stylesheet'; + +const tree: ManifestTree = { + type: 'tree', + alias: STYLESHEET_TREE_ALIAS, + name: 'Stylesheet Tree', + weight: 10, + meta: { + repository: UmbStylesheetRepository, + }, +}; + +const treeItem: ManifestTreeItem = { + type: 'treeItem', + kind: 'fileSystem', + alias: 'Umb.TreeItem.Stylesheet', + name: 'Stylesheet Tree Item', + conditions: { + entityType: STYLESHEET_ENTITY_TYPE, + }, +}; + +export const manifests = [tree, treeItem]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/manifests.ts new file mode 100644 index 0000000000..ad0675cf06 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/manifests.ts @@ -0,0 +1,20 @@ +import type { + ManifestWorkspace, + ManifestWorkspaceAction, + ManifestWorkspaceView, +} from '@umbraco-cms/backoffice/extensions-registry'; + +const workspace: ManifestWorkspace = { + type: 'workspace', + alias: 'Umb.Workspace.StyleSheet', + name: 'Stylesheet Workspace', + loader: () => import('./stylesheet-workspace.element'), + meta: { + entityType: 'stylesheet', + }, +}; + +const workspaceViews: Array = []; +const workspaceActions: Array = []; + +export const manifests = [workspace, ...workspaceViews, ...workspaceActions]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts new file mode 100644 index 0000000000..a01b9dc02e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts @@ -0,0 +1,29 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html, LitElement } from 'lit'; +import { customElement } from 'lit/decorators.js'; + +@customElement('umb-stylesheet-workspace-edit') +export class UmbStylesheetWorkspaceEditElement extends LitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + render() { + return html` Member Workspace `; + } +} + +export default UmbStylesheetWorkspaceEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-stylesheet-workspace-edit': UmbStylesheetWorkspaceEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts new file mode 100644 index 0000000000..1ef0802cff --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -0,0 +1,38 @@ +import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; +import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; +import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; +import type { MemberDetails } from '@umbraco-cms/backoffice/models'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; + +export class UmbStylesheetWorkspaceContext + extends UmbWorkspaceContext + implements UmbEntityWorkspaceContextInterface +{ + constructor(host: UmbControllerHostInterface) { + super(host, new UmbStylesheetRepository(host)); + } + + getEntityType(): string { + return 'stylesheet'; + } + + getEntityKey() { + return '1234'; + } + + getData() { + return 'fake' as unknown as MemberDetails; + } + + async save() { + console.log('save'); + } + + async load(key: string) { + console.log('load', key); + } + + public destroy(): void { + console.log('destroy'); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts new file mode 100644 index 0000000000..651dd61020 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -0,0 +1,48 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { css, html } from 'lit'; +import { customElement, state } from 'lit/decorators.js'; +import { IRoutingInfo } from 'router-slot'; +import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; +import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; + +@customElement('umb-stylesheet-workspace') +export class UmbStylesheetWorkspaceElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + width: 100%; + height: 100%; + } + `, + ]; + + #workspaceContext = new UmbStylesheetWorkspaceContext(this); + #element = new UmbStylesheetWorkspaceEditElement(); + + @state() + _routes: any[] = [ + { + path: 'edit/:path', + component: () => this.#element, + setup: (component: HTMLElement, info: IRoutingInfo) => { + const path = info.match.params.path; + this.#workspaceContext.load(path); + }, + }, + ]; + + render() { + return html` `; + } +} + +export default UmbStylesheetWorkspaceElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-stylesheet-workspace': UmbStylesheetWorkspaceElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts new file mode 100644 index 0000000000..09b9cdb96d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts @@ -0,0 +1,18 @@ +import './stylesheet-workspace.element'; + +import { Meta, Story } from '@storybook/web-components'; +import { html } from 'lit'; + +import { data } from '../../../../core/mocks/data/member.data'; + +import type { UmbStylesheetWorkspaceElement } from './stylesheet-workspace.element'; + +export default { + title: 'Workspaces/Member', + component: 'umb-member-workspace', + id: 'umb-member-workspace', +} as Meta; + +export const AAAOverview: Story = () => + html` `; +AAAOverview.storyName = 'Overview'; From 0660e4031d1b5ebf32c482e00e133440d942e2bc Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Fri, 24 Mar 2023 11:43:52 +0000 Subject: [PATCH 394/550] Use wca to generate the JSON format for VSCode for HTMLCustomData (#619) * Use web-component-analyzer to generate the JSON format for VSCode for HTMLCustomData https://github.com/microsoft/vscode-custom-data https://github.com/runem/web-component-analyzer#vscode * Adds in the suggested path 'src/**/*.element.ts' * Runs npm run script for webcomponent analayzer tool Note its before npm run build:libs as this run runs the script move-libs.js ready for packaging * move-libs util script updated to copy over the two JSON files from wca cli tool * Copied file from wrong location as they are being generated and put at the root of the main project * Adds customElements prop to package.json from this spec https://github.com/webcomponents/custom-elements-manifest#referencing-manifests-from-npm-packages --- .../.github/workflows/npm-publish-github-packages.yml | 4 ++++ src/Umbraco.Web.UI.Client/.gitignore | 5 +++++ src/Umbraco.Web.UI.Client/libs/package.json | 3 ++- src/Umbraco.Web.UI.Client/package.json | 1 + src/Umbraco.Web.UI.Client/utils/move-libs.js | 6 ++++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index 7a99f6fd45..b322c4aeb5 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -13,6 +13,7 @@ on: - 'package-lock.json' - '.github/workflows/npm-publish-github-packages.yml' - './rollup-libs.config.js' + - 'src/**/*.element.ts' pull_request: branches: [ main ] paths: @@ -21,6 +22,7 @@ on: - 'package-lock.json' - '.github/workflows/npm-publish-github-packages.yml' - './rollup-libs.config.js' + - 'src/**/*.element.ts' workflow_dispatch: env: @@ -36,6 +38,8 @@ jobs: node-version: 18 cache: 'npm' - run: npm ci + - run: npm run wc-analyze + - run: npm run wc-analyze:vscode - run: npm run build:libs - uses: actions/upload-artifact@v3 with: diff --git a/src/Umbraco.Web.UI.Client/.gitignore b/src/Umbraco.Web.UI.Client/.gitignore index 48fcabe2ce..d2ebc9b225 100644 --- a/src/Umbraco.Web.UI.Client/.gitignore +++ b/src/Umbraco.Web.UI.Client/.gitignore @@ -41,3 +41,8 @@ playwright/.cache/ storybook-static/ custom-elements.json + +# JSON for HTML Custom Data +# https://github.com/runem/web-component-analyzer#vscode +# https://github.com/microsoft/vscode-custom-data +vscode-html-custom-data.json \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/libs/package.json b/src/Umbraco.Web.UI.Client/libs/package.json index cc2b8932a7..199d2a6914 100644 --- a/src/Umbraco.Web.UI.Client/libs/package.json +++ b/src/Umbraco.Web.UI.Client/libs/package.json @@ -26,5 +26,6 @@ "@types/uuid": "^9.0.1", "@umbraco-ui/uui": "^1.2.0-rc.0", "rxjs": "^7.8.0" - } + }, + "customElements": "custom-elements.json" } diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 833bb4bde1..4553da30f2 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -50,6 +50,7 @@ "build-storybook": "npm run wc-analyze && storybook build", "generate:icons": "node ./devops/icons/index.js", "wc-analyze": "wca **/*.element.ts --outFile custom-elements.json", + "wc-analyze:vscode": "wca **/*.element.ts --format vscode --outFile vscode-html-custom-data.json", "new-extension": "plop --plopfile ./devops/plop/plop.js", "compile": "tsc", "check": "npm run lint && npm run compile && npm run build-storybook" diff --git a/src/Umbraco.Web.UI.Client/utils/move-libs.js b/src/Umbraco.Web.UI.Client/utils/move-libs.js index 95c64e855d..59c3f7d044 100644 --- a/src/Umbraco.Web.UI.Client/utils/move-libs.js +++ b/src/Umbraco.Web.UI.Client/utils/move-libs.js @@ -10,8 +10,12 @@ // Note: This script is not used in the build process, it is only used to transform the d.ts files // when the d.ts files are copied to the dist folder +// Note: Updated to help copy the two JSON files generated from webcomponant analyzer tool +// One is specific to VSCode HTMLCutomData for intellisense and the other is a more broad format used in storybook etc + import { readdirSync, readFileSync, writeFileSync, cpSync, mkdirSync } from 'fs'; +const rootDir = './'; const srcDir = './libs'; const inputDir = './dist/libs'; const outputDir = '../Umbraco.Cms.StaticAssets/wwwroot/umbraco/backoffice/libs'; @@ -19,6 +23,8 @@ const outputDir = '../Umbraco.Cms.StaticAssets/wwwroot/umbraco/backoffice/libs'; // Copy package files cpSync(`${srcDir}/package.json`, `${inputDir}/package.json`, { recursive: true }); cpSync(`${srcDir}/README.md`, `${inputDir}/README.md`, { recursive: true }); +cpSync(`${rootDir}/custom-elements.json`, `${inputDir}/custom-elements.json`, { recursive: true }); +cpSync(`${rootDir}/vscode-html-custom-data.json`, `${inputDir}/vscode-html-custom-data.json`, { recursive: true }); const libs = readdirSync(inputDir); From 38e64ad91effa7879ed80089b05b03abab4e99bd Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Mar 2023 12:48:19 +0100 Subject: [PATCH 395/550] always run wca for backoffice build --- .../.github/workflows/npm-publish-github-packages.yml | 2 -- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml index b322c4aeb5..62c7b01446 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/npm-publish-github-packages.yml @@ -38,8 +38,6 @@ jobs: node-version: 18 cache: 'npm' - run: npm ci - - run: npm run wc-analyze - - run: npm run wc-analyze:vscode - run: npm run build:libs - uses: actions/upload-artifact@v3 with: diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 4553da30f2..81af3da3d2 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -28,7 +28,7 @@ "scripts": { "dev": "vite", "build": "tsc && vite build --mode staging", - "build:libs": "rollup -c rollup-libs.config.js && node utils/move-libs.js", + "build:libs": "npm run wc-analyze && npm run wc-analyze:vscode && rollup -c rollup-libs.config.js && node utils/move-libs.js", "build:for:static": "tsc && vite build", "build:for:cms": "tsc && vite build -c vite.cms.config.ts && npm run build:libs", "build:for:cms:watch": "vite build -c vite.cms.config.ts --watch", From a57cad4ad3076debbf806c6ca6c037433f67082e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 24 Mar 2023 12:52:27 +0100 Subject: [PATCH 396/550] include any .md and .json files in backoffice package --- src/Umbraco.Web.UI.Client/libs/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/package.json b/src/Umbraco.Web.UI.Client/libs/package.json index 199d2a6914..e5f1036d7d 100644 --- a/src/Umbraco.Web.UI.Client/libs/package.json +++ b/src/Umbraco.Web.UI.Client/libs/package.json @@ -20,7 +20,9 @@ }, "type": "module", "files": [ - "*.d.ts" + "*.d.ts", + "*.json", + "*.md" ], "peerDependencies": { "@types/uuid": "^9.0.1", From 9e624f3d4944df2c3d33873263749b4877b891cb Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:12:28 +0100 Subject: [PATCH 397/550] add wip stylesheet path utils --- src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts new file mode 100644 index 0000000000..76636de368 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts @@ -0,0 +1,5 @@ +// TODO: we can try and make pretty urls if we want to +export const urlFriendlyPathFromServerPath = (path: string) => encodeURIComponent(path).replace('.', '-'); + +// TODO: we can try and make pretty urls if we want to +export const serverPathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); From 5b7e85423cb18a5677b4fb926e5c7c360faf5e5f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:12:48 +0100 Subject: [PATCH 398/550] make url friendly unique for file system tree items --- .../file-system-tree-item/file-system-tree-item.context.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts index 2426614064..a51b41b87a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts @@ -1,10 +1,15 @@ import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; // TODO get unique method from an entity repository static method export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { constructor(host: UmbControllerHostInterface, treeItem: FileSystemTreeItemPresentationModel) { super(host, treeItem, (x: FileSystemTreeItemPresentationModel) => x.path); } + + constructPath(pathname: string, entityType: string, path: string) { + return `section/${pathname}/workspace/${entityType}/edit/${urlFriendlyPathFromServerPath(path)}`; + } } From 10df05e0474c97ce39d06102152c5d482d07ceec Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:14:08 +0100 Subject: [PATCH 399/550] make construct path method public --- .../tree/tree-item-base/tree-item-base.context.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index 298fb67aa9..d0e94a4863 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -14,6 +14,7 @@ import { } from '@umbraco-cms/backoffice/context-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; // add type for unique function export type UmbTreeItemUniqueFunction = (x: T) => string | null | undefined; @@ -126,7 +127,7 @@ export class UmbTreeItemContextBase { if (!pathname) return; - const path = this.#constructPath(pathname, this.type, this.unique); + const path = this.constructPath(pathname, this.type, this.unique); this.#path.next(path); }); } @@ -143,8 +144,8 @@ export class UmbTreeItemContextBase Date: Fri, 24 Mar 2023 13:14:22 +0100 Subject: [PATCH 400/550] add todo --- .../workspace/workspace-context/workspace-context.interface.ts | 1 + 1 file changed, 1 insertion(+) 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 c518155e53..d5ef7d313b 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 @@ -7,6 +7,7 @@ export interface UmbWorkspaceContextInterface { isNew: Observable; getIsNew(): boolean; setIsNew(value: boolean): void; + // TODO: should we consider another name than entity type. File system files are not entities but still have this type. getEntityType(): string; getData(): T; destroy(): void; From 3f27659cd2ff25b6a151c84930a622fb4e96b846 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:14:42 +0100 Subject: [PATCH 401/550] update temp text in workspace --- .../stylesheets/workspace/stylesheet-workspace-edit.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts index a01b9dc02e..69c89804e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace-edit.element.ts @@ -16,7 +16,7 @@ export class UmbStylesheetWorkspaceEditElement extends LitElement { ]; render() { - return html` Member Workspace `; + return html` Stylesheet workspace `; } } From 50af17385c0be34fce801158972d5a7f8d7d20b3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:15:41 +0100 Subject: [PATCH 402/550] create serverPath from the url path when loading a stylesheet workspace --- .../workspace/stylesheet-workspace.context.ts | 11 ++++++----- .../workspace/stylesheet-workspace.element.ts | 4 +++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index 1ef0802cff..e426843b5c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -1,17 +1,17 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { UmbEntityWorkspaceContextInterface as UmbEntityWorkspaceContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-entity-context.interface'; import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; -import type { MemberDetails } from '@umbraco-cms/backoffice/models'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; +import { UmbWorkspaceContextInterface } from 'src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext - implements UmbEntityWorkspaceContextInterface + implements UmbWorkspaceContextInterface { constructor(host: UmbControllerHostInterface) { super(host, new UmbStylesheetRepository(host)); } + /* getEntityType(): string { return 'stylesheet'; } @@ -28,11 +28,12 @@ export class UmbStylesheetWorkspaceContext console.log('save'); } - async load(key: string) { - console.log('load', key); + async load(path: string) { + console.log('load', path); } public destroy(): void { console.log('destroy'); } + */ } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index 651dd61020..3479aff92c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -5,6 +5,7 @@ import { IRoutingInfo } from 'router-slot'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { serverPathFromUrlFriendlyPath } from '../../utils'; @customElement('umb-stylesheet-workspace') export class UmbStylesheetWorkspaceElement extends UmbLitElement { @@ -29,7 +30,8 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { const path = info.match.params.path; - this.#workspaceContext.load(path); + const serverPath = serverPathFromUrlFriendlyPath(path); + this.#workspaceContext.load(serverPath); }, }, ]; From fd05ff7637d9f968819517a2bf5694d6dae0768f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 13:23:46 +0100 Subject: [PATCH 403/550] move workspace context interface to workspace lib --- .../libs/workspace/actions/save/save.action.ts | 2 +- src/Umbraco.Web.UI.Client/libs/workspace/context/index.ts | 1 + .../workspace/context}/workspace-context.interface.ts | 0 src/Umbraco.Web.UI.Client/libs/workspace/index.ts | 1 + .../workspace-context/workspace-entity-context.interface.ts | 2 +- .../stylesheets/workspace/stylesheet-workspace.context.ts | 2 +- 6 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/workspace/context/index.ts rename src/Umbraco.Web.UI.Client/{src/backoffice/shared/components/workspace/workspace-context => libs/workspace/context}/workspace-context.interface.ts (100%) 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 38dd1744eb..dde528e171 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,4 +1,4 @@ -import { UmbWorkspaceContextInterface } from '../../../../src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; +import { UmbWorkspaceContextInterface } from '../../context/workspace-context.interface'; import { UmbWorkspaceActionBase } from '../workspace-action-base'; import type { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/context/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/context/index.ts new file mode 100644 index 0000000000..c4aea806a5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/workspace/context/index.ts @@ -0,0 +1 @@ +export * from './workspace-context.interface'; 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/libs/workspace/context/workspace-context.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface.ts rename to src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-context.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts index 485f1b10af..de14fcfee4 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/index.ts @@ -1 +1,2 @@ export * from './actions'; +export * from './context'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts index e066a7ec1a..a06b85f015 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-entity-context.interface.ts @@ -1,4 +1,4 @@ -import type { UmbWorkspaceContextInterface } from './workspace-context.interface'; +import type { UmbWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index e426843b5c..324422e1eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -1,7 +1,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { UmbWorkspaceContextInterface } from 'src/backoffice/shared/components/workspace/workspace-context/workspace-context.interface'; +import { UmbWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext From 1eb15880d0ecc41cbcced2e781870eb0e1cf6297 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:04:20 +0100 Subject: [PATCH 404/550] make tree data source interface generic --- .../repository/repository-tree-data-source.interface.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index 5c8290dd11..5a62dff639 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,8 +1,7 @@ -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface RepositoryTreeDataSource { - getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; - getItems(key: Array): Promise>; +export interface RepositoryTreeDataSource { + getRootItems(): Promise>; + getChildrenOf(parentUnique: string): Promise>; + getItems(unique: Array): Promise>>; } From f2c453178f88b7cd12296b5a59f2981c3d1fbc50 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:12:46 +0100 Subject: [PATCH 405/550] add missing tree method to data source --- .../sources/stylesheet.tree.server.data.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts index 38a0e10e09..664eeceb64 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -14,7 +14,7 @@ import { RepositoryTreeDataSource } from 'libs/repository/repository-tree-data-s * @implements {RepositoryTreeDataSource} */ export class UmbStylesheetTreeServerDataSource - implements RepositoryTreeDataSource + implements RepositoryTreeDataSource { #host: UmbControllerHostInterface; @@ -50,4 +50,19 @@ export class UmbStylesheetTreeServerDataSource }) ); } + + /** + * Fetches stylesheet items from the server + * @param {(string | undefined)} path + * @return {*} + * @memberof UmbStylesheetTreeServerDataSource + */ + async getItems(path: Array) { + return tryExecuteAndNotify( + this.#host, + StylesheetResource.getTreeStylesheetItem({ + path, + }) + ); + } } From 30b796e179c5be4682c2232f9e3f5b159d3d9a7f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:13:07 +0100 Subject: [PATCH 406/550] clean up stylesheet repository --- .../repository/stylesheet.repository.ts | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts index 9259bd7e35..f21b6e2067 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts @@ -7,7 +7,6 @@ import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { FileSystemTreeItemPresentationModel, PagedFileSystemTreeItemPresentationModel, - ProblemDetailsModel, } from '@umbraco-cms/backoffice/backend-api'; export class UmbStylesheetRepository @@ -59,18 +58,24 @@ export class UmbStylesheetRepository return { data, error }; } - async requestTreeItemsOf(path: string | null) {} + async requestTreeItemsOf(path: string | null) { + if (!path) throw new Error('Cannot request tree item with missing path'); - async requestTreeItems(keys: Array) { await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; - return { data: undefined, error }; + const { data, error } = await this.#treeDataSource.getChildrenOf(path); + + if (data) { + this.#treeStore!.appendItems(data.items); } - const { data, error } = await this.#treeDataSource.getItems(keys); + return { data, error, asObservable: () => this.#treeStore!.childrenOf(path) }; + } + async requestTreeItems(paths: Array) { + if (!paths) throw new Error('Paths are missing'); + await this.#init; + const { data, error } = await this.#treeDataSource.getItems(paths); return { data, error }; } @@ -79,13 +84,15 @@ export class UmbStylesheetRepository return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentPath: string | null) { + if (!parentPath) throw new Error('Parent Path is missing'); await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentPath); } - async treeItems(keys: Array) { + async treeItems(paths: Array) { + if (!paths) throw new Error('Paths are missing'); await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(paths); } } From b7fb9511f10ee36fdccd852e1503a5d5b037dbda Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:15:51 +0100 Subject: [PATCH 407/550] remove repository from data source name + prefix with Umb --- .../repository-tree-data-source.interface.ts | 2 +- .../repository/document-type.repository.ts | 8 +- .../sources/document-type.tree.server.data.ts | 4 +- .../repository/document.repository.ts | 8 +- .../sources/document.tree.server.data.ts | 4 +- .../repository/media-type.repository.ts | 4 +- .../sources/media-type.tree.server.data.ts | 4 +- .../media/repository/media.repository.ts | 4 +- .../sources/media.tree.server.data.ts | 4 +- .../repository/member-group.repository.ts | 8 +- .../sources/member-group.tree.server.data.ts | 74 +++++++++---------- .../repository/member-type.repository.ts | 4 +- .../sources/member-type.tree.server.data.ts | 4 +- .../repository/data-type.repository.ts | 8 +- .../sources/data-type.tree.server.data.ts | 4 +- .../sources/stylesheet.tree.server.data.ts | 6 +- .../repository/dictionary.repository.ts | 4 +- .../sources/dictionary.tree.server.data.ts | 4 +- 18 files changed, 71 insertions(+), 87 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts index 5a62dff639..2a8999a88c 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts @@ -1,6 +1,6 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface RepositoryTreeDataSource { +export interface UmbTreeDataSource { getRootItems(): Promise>; getChildrenOf(parentUnique: string): Promise>; getItems(unique: Array): Promise>>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 174b6d4f8f..c44c9d0601 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -1,8 +1,4 @@ -import type { - RepositoryTreeDataSource, - UmbTreeRepository, - UmbDetailRepository, -} from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -19,7 +15,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRe #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbDocumentTypeTreeStore; #detailDataSource: UmbDocumentTypeServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 1d7deb1778..6d5f8877f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -1,4 +1,4 @@ -import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, DocumentTypeResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class DocumentTreeServerDataSource * @implements {DocumentTreeDataSource} */ -export class DocumentTypeTreeServerDataSource implements RepositoryTreeDataSource { +export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; // TODO: how do we handle trashed items? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index a3490cf3c5..a0f9397790 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -2,11 +2,7 @@ import { UmbDocumentServerDataSource } from './sources/document.server.data'; import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; -import type { - RepositoryTreeDataSource, - UmbTreeRepository, - UmbDetailRepository, -} from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -19,7 +15,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailReposi #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbDocumentTreeStore; #detailDataSource: UmbDocumentServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 17ab86a2fb..3dd6b3d6ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -1,4 +1,4 @@ -import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, DocumentResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class DocumentTreeServerDataSource * @implements {DocumentTreeDataSource} */ -export class DocumentTreeServerDataSource implements RepositoryTreeDataSource { +export class DocumentTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; // TODO: how do we handle trashed items? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 5bdfda591d..011e67a7e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -7,14 +7,14 @@ import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-ap import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { UmbTreeRepository, RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; export class UmbMediaTypeRepository implements UmbTreeRepository { #init!: Promise; #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbMediaTypeTreeStore; #detailSource: UmbMediaTypeDetailServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index b246beefef..3c2f57bf07 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -1,6 +1,6 @@ import { MediaTypeResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class MediaTypeTreeServerDataSource * @implements {MediaTypeTreeDataSource} */ -export class MediaTypeTreeServerDataSource implements RepositoryTreeDataSource { +export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 24e5fd28aa..bab50b24b8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -1,4 +1,4 @@ -import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; @@ -18,7 +18,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbMediaTreeStore; #detailDataSource: UmbMediaDetailServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts index b2b2cd2603..75c88bf7b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts @@ -1,4 +1,4 @@ -import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, MediaResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class MediaTreeServerDataSource * @implements {MediaTreeDataSource} */ -export class MediaTreeServerDataSource implements RepositoryTreeDataSource { +export class MediaTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; // TODO: how do we handle trashed items? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 0ed1749225..5ca8bcbac1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -7,11 +7,7 @@ import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; -import type { - RepositoryTreeDataSource, - UmbDetailRepository, - UmbTreeRepository, -} from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; // TODO => Update type when backend updated export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRepository { @@ -19,7 +15,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbMemberGroupTreeStore; #detailSource: UmbMemberGroupDetailServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index 6ccabbbf3c..5388958abd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -1,6 +1,6 @@ import { MemberGroupResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class MemberGroupTreeServerDataSource * @implements {MemberGroupTreeDataSource} */ -export class MemberGroupTreeServerDataSource implements RepositoryTreeDataSource { +export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; /** @@ -22,42 +22,42 @@ export class MemberGroupTreeServerDataSource implements RepositoryTreeDataSource } /** - * Fetches the root items for the tree from the server - * @return {*} - * @memberof MemberGroupTreeServerDataSource - */ - async getRootItems() { - return tryExecuteAndNotify(this.#host, MemberGroupResource.getTreeMemberGroupRoot({})); - } + * Fetches the root items for the tree from the server + * @return {*} + * @memberof MemberGroupTreeServerDataSource + */ + async getRootItems() { + return tryExecuteAndNotify(this.#host, MemberGroupResource.getTreeMemberGroupRoot({})); + } - /** - * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey - * @return {*} - * @memberof MemberGroupTreeServerDataSource - */ - async getChildrenOf(parentKey: string | null) { - // Not implemented for this tree - return {}; - } + /** + * Fetches the children of a given parent key from the server + * @param {(string | null)} parentKey + * @return {*} + * @memberof MemberGroupTreeServerDataSource + */ + async getChildrenOf(parentKey: string | null) { + // Not implemented for this tree + return {}; + } - /** - * Fetches the items for the given keys from the server - * @param {Array} keys - * @return {*} - * @memberof MemberGroupTreeServerDataSource - */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; - return { error }; - } + /** + * Fetches the items for the given keys from the server + * @param {Array} keys + * @return {*} + * @memberof MemberGroupTreeServerDataSource + */ + async getItems(keys: Array) { + if (!keys || keys.length === 0) { + const error: ProblemDetailsModel = { title: 'Keys are missing' }; + return { error }; + } - return tryExecuteAndNotify( - this.#host, - MemberGroupResource.getTreeMemberGroupItem({ - key: keys, - }) - ); - } + return tryExecuteAndNotify( + this.#host, + MemberGroupResource.getTreeMemberGroupItem({ + key: keys, + }) + ); + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 5b7f0cf65d..6aaa528dd0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -4,7 +4,7 @@ import { UmbMemberTypeStore, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN } from './membe import { UmbMemberTypeDetailServerDataSource } from './sources/member-type.detail.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; @@ -17,7 +17,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, UmbDetailRepo #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbMemberTypeTreeStore; #detailSource: UmbMemberTypeDetailServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 1384165787..4f450b5bde 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -1,6 +1,6 @@ import { MemberTypeResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class MemberTypeTreeServerDataSource * @implements {MemberTypeTreeDataSource} */ -export class MemberTypeTreeServerDataSource implements RepositoryTreeDataSource { +export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index bcdd0b5099..f6519a85df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -1,8 +1,4 @@ -import type { - RepositoryTreeDataSource, - UmbTreeRepository, - UmbDetailRepository, -} from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -23,7 +19,7 @@ export class UmbDataTypeRepository implements UmbTreeRepository, UmbDetailReposi #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbDataTypeTreeStore; #detailDataSource: UmbDataTypeServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index ae8ebd987a..933a057a7b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -1,4 +1,4 @@ -import type { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, DataTypeResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class DocumentTreeServerDataSource * @implements {DocumentTreeDataSource} */ -export class DataTypeTreeServerDataSource implements RepositoryTreeDataSource { +export class DataTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; // TODO: how do we handle trashed items? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts index 664eeceb64..b7eb9388cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -5,16 +5,16 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { RepositoryTreeDataSource } from 'libs/repository/repository-tree-data-source.interface'; +import { UmbTreeDataSource } from 'libs/repository/repository-tree-data-source.interface'; /** * A data source for the Stylesheet tree that fetches data from the server * @export * @class UmbStylesheetTreeServerDataSource - * @implements {RepositoryTreeDataSource} + * @implements {UmbTreeDataSource} */ export class UmbStylesheetTreeServerDataSource - implements RepositoryTreeDataSource + implements UmbTreeDataSource { #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index a57b2c645f..a420b1ffc8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -1,6 +1,6 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { RepositoryTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import type { DictionaryDetails } from '../'; @@ -14,7 +14,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo #host: UmbControllerHostInterface; - #treeSource: RepositoryTreeDataSource; + #treeSource: UmbTreeDataSource; #treeStore?: UmbDictionaryTreeStore; #detailSource: UmbDictionaryDetailServerDataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index 55ac44213f..a96b16666d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -1,6 +1,6 @@ import { DictionaryResource, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; -import { RepositoryTreeDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** @@ -9,7 +9,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class DictionaryTreeServerDataSource * @implements {DictionaryTreeDataSource} */ -export class DictionaryTreeServerDataSource implements RepositoryTreeDataSource { +export class DictionaryTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostInterface; /** From 960a43f330af56daa16c6d2b066c00997703a08d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:17:05 +0100 Subject: [PATCH 408/550] rename file --- src/Umbraco.Web.UI.Client/libs/repository/index.ts | 2 +- ...e-data-source.interface.ts => tree-data-source.interface.ts} | 0 .../repository/sources/stylesheet.tree.server.data.ts | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/Umbraco.Web.UI.Client/libs/repository/{repository-tree-data-source.interface.ts => tree-data-source.interface.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/index.ts index cd4c9e7d46..1f02dadaaa 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/index.ts @@ -1,5 +1,5 @@ export * from './data-source-response.interface'; export * from './detail-repository.interface'; export * from './tree-repository.interface'; -export * from './repository-tree-data-source.interface'; +export * from './tree-data-source.interface'; export * from './repository-detail-data-source.interface'; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-data-source.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/repository/repository-tree-data-source.interface.ts rename to src/Umbraco.Web.UI.Client/libs/repository/tree-data-source.interface.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts index b7eb9388cd..7165e29c2e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -5,7 +5,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { UmbTreeDataSource } from 'libs/repository/repository-tree-data-source.interface'; +import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; /** * A data source for the Stylesheet tree that fetches data from the server From 54465d2c4a59d310686b8ba1f06d7667f5bd7f7e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:41:17 +0100 Subject: [PATCH 409/550] remove repository from data source + prefix with Umb --- .../repository-detail-data-source.interface.ts | 12 ++++++------ .../repository/sources/document-type.server.data.ts | 10 +++++++--- .../repository/sources/document.server.data.ts | 4 ++-- .../documents/documents/repository/sources/index.ts | 4 ++-- .../repository/sources/media.detail.server.data.ts | 4 ++-- .../sources/member-group.detail.server.data.ts | 4 ++-- .../repository/sources/data-type.server.data.ts | 4 ++-- .../settings/languages/repository/sources/index.ts | 4 ++-- .../repository/sources/relation-type.server.data.ts | 4 ++-- 9 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts index ff4cdd3a6a..766ddf1e87 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts @@ -1,9 +1,9 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface RepositoryDetailDataSource { - createScaffold(parentKey: string | null): Promise>; - get(key: string): Promise>; - insert(data: DetailType): Promise>; - update(data: DetailType): Promise>; - delete(key: string): Promise>; +export interface UmbDataSource { + createScaffold(parentKey: string | null): Promise>; + get(key: string): Promise>; + insert(data: T): Promise>; + update(data: T): Promise>; + delete(key: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 358910aabc..f5819640ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -1,5 +1,9 @@ -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; -import { DocumentTypeResource, ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; +import { + DocumentTypeResource, + ProblemDetailsModel, + DocumentTypeResponseModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -9,7 +13,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDocumentTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentTypeServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 467b0fa35f..c68b6a8eb1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -1,5 +1,5 @@ import { v4 as uuidv4 } from 'uuid'; -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { DocumentResource, ProblemDetailsModel, @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDocumentServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentServerDataSource implements RepositoryDetailDataSource { +export class UmbDocumentServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index ac6a6497ed..de97e4eed6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { RepositoryDetailDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface UmbDocumentDataSource extends RepositoryDetailDataSource { +export interface UmbDocumentDataSource extends UmbDataSource { createScaffold(documentTypeKey: string): Promise>; trash(key: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 57b1fde3c7..120cb495e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -1,5 +1,5 @@ import type { MediaDetails } from '../../'; -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -10,7 +10,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbTemplateDetailServerDataSource * @implements {TemplateDetailDataSource} */ -export class UmbMediaDetailServerDataSource implements RepositoryDetailDataSource { +export class UmbMediaDetailServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts index 91d1b54cd7..544de51bc6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts @@ -2,7 +2,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; /** * @description - A data source for the MemberGroup detail that fetches data from the server @@ -11,7 +11,7 @@ import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; * @implements {MemberGroupDetailDataSource} */ // TODO => Provide type when it is available -export class UmbMemberGroupDetailServerDataSource implements RepositoryDetailDataSource { +export class UmbMemberGroupDetailServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; constructor(host: UmbControllerHostInterface) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 375237041e..86585ea6f1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -1,5 +1,5 @@ import { v4 as uuidv4 } from 'uuid'; -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, DataTypeResource, @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDataTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDataTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbDataTypeServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts index 3a2bfbb366..4a3e236af4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts @@ -1,5 +1,5 @@ import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { RepositoryDetailDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repository'; // TODO: This is a temporary solution until we have a proper paging interface type paging = { @@ -7,7 +7,7 @@ type paging = { take: number; }; -export interface UmbLanguageDataSource extends RepositoryDetailDataSource { +export interface UmbLanguageDataSource extends UmbDataSource { createScaffold(): Promise>; get(isoCode: string): Promise>; delete(isoCode: string): Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index d7756f9ae9..b16a93ebc8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -1,4 +1,4 @@ -import { RepositoryDetailDataSource } from '@umbraco-cms/backoffice/repository'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { ProblemDetailsModel, RelationTypeResource, @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbRelationTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbRelationTypeServerDataSource implements RepositoryDetailDataSource { +export class UmbRelationTypeServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** From 08191c101290092182725574eb8219f3090bd0ca Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:41:37 +0100 Subject: [PATCH 410/550] wip stylesheet data source --- .../sources/stylesheet.server.data.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts new file mode 100644 index 0000000000..2c9dcd186e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts @@ -0,0 +1,33 @@ +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; +import { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; + +/** + * A data source for the Stylesheet that fetches data from the server + * @export + * @class UmbStylesheetServerDataSource + * @implements {UmbStylesheetServerDataSource} + */ +export class UmbStylesheetServerDataSource implements UmbDataSource { + #host: UmbControllerHostInterface; + + /** + * Creates an instance of UmbStylesheetServerDataSource. + * @param {UmbControllerHostInterface} host + * @memberof UmbStylesheetServerDataSource + */ + constructor(host: UmbControllerHostInterface) { + this.#host = host; + } + + /** + * Fetches a Stylesheet with the given path from the server + * @param {string} path + * @return {*} + * @memberof UmbStylesheetServerDataSource + */ + async get(path: string) { + if (!path) throw new Error('Path is missing'); + console.log('GET STYLESHEET WITH PATH', path); + } +} From b39429cab874402c138b912b83199dfa84afc348 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:44:21 +0100 Subject: [PATCH 411/550] add dummy methods to stylesheet data source --- .../sources/stylesheet.server.data.ts | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts index 2c9dcd186e..4419399142 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts @@ -1,5 +1,5 @@ -import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; -import { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { StylesheetDetails } from '../..'; +import { DataSourceResponse, UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; /** @@ -8,7 +8,7 @@ import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; * @class UmbStylesheetServerDataSource * @implements {UmbStylesheetServerDataSource} */ -export class UmbStylesheetServerDataSource implements UmbDataSource { +export class UmbStylesheetServerDataSource implements UmbDataSource { #host: UmbControllerHostInterface; /** @@ -19,6 +19,9 @@ export class UmbStylesheetServerDataSource implements UmbDataSource> { + throw new Error('Method not implemented.'); + } /** * Fetches a Stylesheet with the given path from the server @@ -29,5 +32,16 @@ export class UmbStylesheetServerDataSource implements UmbDataSource> { + throw new Error('Method not implemented.'); + } + update(data: StylesheetDetails): Promise> { + throw new Error('Method not implemented.'); + } + delete(key: string): Promise> { + throw new Error('Method not implemented.'); } } From 6202ba9b683d218eee2cc3b3b4db9e99c643b2e7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:45:35 +0100 Subject: [PATCH 412/550] rename data source file --- ...detail-data-source.interface.ts => data-source.interface.ts} | 0 src/Umbraco.Web.UI.Client/libs/repository/index.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/Umbraco.Web.UI.Client/libs/repository/{repository-detail-data-source.interface.ts => data-source.interface.ts} (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/repository/repository-detail-data-source.interface.ts rename to src/Umbraco.Web.UI.Client/libs/repository/data-source.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/repository/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/index.ts index 1f02dadaaa..59d72e9b48 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/index.ts @@ -2,4 +2,4 @@ export * from './data-source-response.interface'; export * from './detail-repository.interface'; export * from './tree-repository.interface'; export * from './tree-data-source.interface'; -export * from './repository-detail-data-source.interface'; +export * from './data-source.interface'; From eeef6fcf8c508a36ab13cf4d5805788d800a3d74 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 14:48:52 +0100 Subject: [PATCH 413/550] move data source interfaces into folder --- .../{ => data-source}/data-source-response.interface.ts | 0 .../repository/{ => data-source}/data-source.interface.ts | 0 .../libs/repository/data-source/index.ts | 3 +++ .../{ => data-source}/tree-data-source.interface.ts | 0 src/Umbraco.Web.UI.Client/libs/repository/index.ts | 4 +--- 5 files changed, 4 insertions(+), 3 deletions(-) rename src/Umbraco.Web.UI.Client/libs/repository/{ => data-source}/data-source-response.interface.ts (100%) rename src/Umbraco.Web.UI.Client/libs/repository/{ => data-source}/data-source.interface.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts rename src/Umbraco.Web.UI.Client/libs/repository/{ => data-source}/tree-data-source.interface.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source-response.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source-response.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/repository/data-source-response.interface.ts rename to src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source-response.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/repository/data-source.interface.ts rename to src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts new file mode 100644 index 0000000000..0c12e00d34 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts @@ -0,0 +1,3 @@ +export * from './data-source-response.interface'; +export * from './data-source.interface'; +export * from './tree-data-source.interface'; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/repository/tree-data-source.interface.ts rename to src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/repository/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/index.ts index 59d72e9b48..f4727c8ffc 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/index.ts @@ -1,5 +1,3 @@ -export * from './data-source-response.interface'; +export * from './data-source'; export * from './detail-repository.interface'; export * from './tree-repository.interface'; -export * from './tree-data-source.interface'; -export * from './data-source.interface'; From af19b30febac49d0cb6b8faa8bbfe5e6ed7b3a05 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 15:00:17 +0100 Subject: [PATCH 414/550] default to any --- .../libs/repository/data-source/tree-data-source.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts index 2a8999a88c..ae57ef57af 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/tree-data-source.interface.ts @@ -1,6 +1,6 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface UmbTreeDataSource { +export interface UmbTreeDataSource { getRootItems(): Promise>; getChildrenOf(parentUnique: string): Promise>; getItems(unique: Array): Promise>>; From 2a33cf02ee230c41fda8f2a399dc5c23c69d4c10 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 15:00:24 +0100 Subject: [PATCH 415/550] default to any --- src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts index 3f7440385b..80a366ada5 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/tree-store.interface.ts @@ -1,7 +1,7 @@ import type { Observable } from 'rxjs'; import { TreeItemPresentationModel } from '../backend-api'; -export interface UmbTreeStore { +export interface UmbTreeStore { appendItems: (items: Array) => void; updateItem: (unique: string, item: Partial) => void; removeItem: (unique: string) => void; From 48ce44ba8fcb91cd428a291d0324b1ae7a49ec54 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 15:00:38 +0100 Subject: [PATCH 416/550] update story to pass in tree item --- .../tree-item-base/tree-item-base.stories.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts index 1f76f40872..fedf14fccb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts @@ -12,16 +12,20 @@ type Story = StoryObj; export const Overview: Story = { args: { - label: 'My Tree Item', - icon: 'umb:home', - hasChildren: false, + item: { + name: 'My Tree Item', + icon: 'umb:home', + hasChildren: false, + }, }, }; export const WithChildren: Story = { args: { - label: 'My Tree Item', - icon: 'umb:home', - hasChildren: true, + item: { + name: 'My Tree Item', + icon: 'umb:home', + hasChildren: true, + }, }, }; From f29a4c86ce80cdf2abfef5eaf0cbfe36c71f8696 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 15:07:26 +0100 Subject: [PATCH 417/550] wip stylesheet workspace context --- .../sources/stylesheet.server.data.ts | 2 +- .../repository/stylesheet.repository.ts | 16 ++++++++++-- .../workspace/stylesheet-workspace.context.ts | 25 +++++++++++-------- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts index 4419399142..bc82863011 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts @@ -32,7 +32,7 @@ export class UmbStylesheetServerDataSource implements UmbDataSource> { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts index f21b6e2067..9d64f38445 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts @@ -1,5 +1,6 @@ import { UmbStylesheetTreeStore, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN } from './stylesheet.tree.store'; import { UmbStylesheetTreeServerDataSource } from './sources/stylesheet.tree.server.data'; +import { UmbStylesheetServerDataSource } from './sources/stylesheet.server.data'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -12,8 +13,9 @@ import { export class UmbStylesheetRepository implements UmbTreeRepository { - #host: UmbControllerHostInterface; - #treeDataSource: UmbStylesheetTreeServerDataSource; + #host; + #dataSource; + #treeDataSource; #treeStore?: UmbStylesheetTreeStore; #notificationContext?: UmbNotificationContext; #initResolver?: () => void; @@ -21,7 +23,9 @@ export class UmbStylesheetRepository constructor(host: UmbControllerHostInterface) { this.#host = host; + // TODO: figure out how spin up get the correct data source + this.#dataSource = new UmbStylesheetServerDataSource(this.#host); this.#treeDataSource = new UmbStylesheetTreeServerDataSource(this.#host); new UmbContextConsumerController(this.#host, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN, (instance) => { @@ -95,4 +99,12 @@ export class UmbStylesheetRepository await this.#init; return this.#treeStore!.items(paths); } + + // DETAILS + async requestByPath(path: string) { + if (!path) throw new Error('Path is missing'); + await this.#init; + const { data, error } = await this.#dataSource.get(path); + return { data, error }; + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index 324422e1eb..e3be06cf52 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -1,39 +1,42 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; +import { StylesheetDetails } from '..'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; +import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext implements UmbWorkspaceContextInterface { + #data = new ObjectState(undefined); + data = this.#data.asObservable(); + constructor(host: UmbControllerHostInterface) { super(host, new UmbStylesheetRepository(host)); } - /* getEntityType(): string { return 'stylesheet'; } - getEntityKey() { - return '1234'; - } - getData() { - return 'fake' as unknown as MemberDetails; + return this.#data.getValue(); } - async save() { - console.log('save'); + getEntityKey() { + return this.getData()?.path || ''; } async load(path: string) { - console.log('load', path); + const { data } = await this.repository.requestByPath(path); + if (data) { + this.setIsNew(false); + this.#data.update(data); + } } public destroy(): void { - console.log('destroy'); + this.#data.complete(); } - */ } From d79680a63ba2b738b9f5527dbf71b99c9faa191b Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Fri, 24 Mar 2023 15:14:01 +0100 Subject: [PATCH 418/550] template editor --- .../document-type-picker-modal.stories.ts | 4 +- .../input-template-picker.element.ts | 17 ++- .../template-picker-modal.element.ts | 2 +- .../shared/modals/template/index.ts | 8 +- .../modals/template/template-modal.element.ts | 137 +++++++++++++----- 5 files changed, 119 insertions(+), 49 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.stories.ts index fead1b4ac9..e51a73bc24 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/modals/document-type-picker/document-type-picker-modal.stories.ts @@ -9,8 +9,8 @@ import type { UmbDocumentTypePickerModalData } from './index'; export default { title: 'API/Modals/Layouts/Content Picker', - component: 'umb-document-picker-modal', - id: 'umb-document-picker-modal', + component: 'umb-document-type-picker-modal', + id: 'umb-document-type-picker-modal', } as Meta; const data: UmbDocumentTypePickerModalData = { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index 828f13bfe1..90ae4e7cfb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -76,6 +76,10 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen public set allowedKeys(newKeys: Array) { //this.#observePickedTemplates(); this._allowedKeys = newKeys; + //this._templates = []; + //this._allowedKeys.forEach((key) => { + // this.#setup(key); + //}); } _defaultKey = ''; @@ -140,7 +144,10 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen }); modalHandler?.onSubmit().then((data) => { - console.log(data.selection); + if (!data.selection) return; + this.templates = []; + this.allowedKeys = data.selection; + this.allowedKeys.forEach((key) => this.#setup(key)); this.dispatchEvent(new CustomEvent('change-allowed', { bubbles: true, composed: true })); }); } @@ -181,12 +188,12 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen const key = (e.target as UmbTemplateCardElement).value; const modalHandler = this._modalContext?.open(UMB_TEMPLATE_MODAL_TOKEN, { - multiple: true, - selection: [...this.allowedKeys], + key: key as string, + language: 'razor', }); - modalHandler?.onSubmit().then((res) => { - console.log('save template'); + modalHandler?.onSubmit().then(({ key }) => { + // TODO: update list }); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts index 503b3113a8..1f85db2a4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template-picker/template-picker-modal.element.ts @@ -62,7 +62,6 @@ export class UmbTemplatePickerModalElement extends UmbModalBaseElement< private _handleSelectionChange(e: CustomEvent) { e.stopPropagation(); const element = e.target as UmbTreeElement; - //TODO: Should multiple property be implemented here or be passed down into umb-tree? this._selection = this._multiple ? element.selection : [element.selection[element.selection.length - 1]]; } @@ -74,6 +73,7 @@ export class UmbTemplatePickerModalElement extends UmbModalBaseElement< this.modalHandler?.reject(); } + // TODO: make umb-tree have a disabled option (string array like selection)? render() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts index 28f1568e30..741a6d67b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/index.ts @@ -1,18 +1,18 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbTemplateModalData { - multiple: boolean; - selection: string[]; + key: string; + language?: 'razor' | 'typescript' | 'javascript' | 'css' | 'markdown' | 'json' | 'html'; } export interface UmbTemplateModalResult { - selection: string[] | undefined; + key: string; } export const UMB_TEMPLATE_MODAL_TOKEN = new UmbModalToken( 'Umb.Modal.Template', { type: 'sidebar', - size: 'large', + size: 'full', } ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts index 89a6f66061..8d6fa4bf4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -1,9 +1,14 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, state } from 'lit/decorators.js'; +import { customElement, query, state } from 'lit/decorators.js'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; -import { UmbTreeElement } from '../../components/tree/tree.element'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { UUIInputEvent } from '@umbraco-ui/uui'; +import { UmbCodeEditor } from '../../components/code-editor'; import { UmbTemplateModalData, UmbTemplateModalResult } from '.'; +import { UmbInputEvent } from 'libs/umb-events/input.event'; +import { TemplateResource, TemplateResponseModel } from 'libs/backend-api/src'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; //TODO: make a default tree-picker that can be used across multiple pickers // TODO: make use of UmbPickerLayoutBase @@ -12,78 +17,136 @@ export class UmbTemplateModalElement extends UmbModalBaseElement = []; + _key = ''; @state() - _multiple = true; + _template?: TemplateResponseModel; + + @query('umb-code-editor') + _codeEditor?: UmbCodeEditor; connectedCallback() { super.connectedCallback(); - this._selection = this.data?.selection ?? []; - this._multiple = this.data?.multiple ?? true; + + if (!this.data?.key) return; + + this._key = this.data.key; + this.#getTemplate(); } - private _handleSelectionChange(e: CustomEvent) { - e.stopPropagation(); - const element = e.target as UmbTreeElement; - //TODO: Should multiple property be implemented here or be passed down into umb-tree? - this._selection = this._multiple ? element.selection : [element.selection[element.selection.length - 1]]; + async #getTemplate() { + const { data } = await tryExecuteAndNotify(this, TemplateResource.getTemplateByKey({ key: this._key })); + if (!data) return; + + this._template = data; + } + + async #saveTemplate() { + const { error } = await tryExecuteAndNotify( + this, + TemplateResource.putTemplateByKey({ key: this._key, requestBody: this._template }) + ); + if (!error) { + console.log(`template (${this._key}) saved successfully`); + } } private _submit() { - this.modalHandler?.submit({ selection: this._selection }); + if (!this._template?.key) return; + + this.#saveTemplate(); + this.modalHandler?.submit({ key: this._template.key }); } private _close() { this.modalHandler?.reject(); } + #codeEditorInput(e: UmbInputEvent) { + e.stopPropagation(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + this._template.code = this._codeEditor?.code; + } + + #templateNameInput(e: UUIInputEvent) { + if (!this._template) return; + this._template.name = e.target.value as string; + } + render() { return html` - + +
    + +
    ${this._template?.alias}
    +
    +
    + - -
    - Code editor? +
    + Master template: To be continued +
    + To be continued + To be continued + To be continued +
    +
    +
    -
    + `; } } From 0068dcd77f4ada42edbe7a0e28acd235ca1edc9e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 24 Mar 2023 15:23:21 +0100 Subject: [PATCH 419/550] fix logic for file system root and children --- .../libs/store/file-system-tree.store.ts | 4 ++-- .../src/core/mocks/data/stylesheet.data.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts index eba5aee290..0d798b71d5 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts @@ -43,7 +43,7 @@ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore * An observable to observe the root items * @memberof UmbFileSystemTreeStore */ - rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.path === item.name)); + rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.path?.includes('/') === false)); /** * Returns an observable to observe the children of a given parent @@ -52,7 +52,7 @@ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore * @memberof UmbFileSystemTreeStore */ childrenOf(parentPath: string | null) { - return this.#data.getObservablePart((items) => items.filter((item) => item.path?.startsWith(parentPath ?? ''))); + return this.#data.getObservablePart((items) => items.filter((item) => item.path?.startsWith(parentPath + '/'))); } /** diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts index f5e303b893..f73ee09968 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/stylesheet.data.ts @@ -58,14 +58,14 @@ class UmbStylesheetData extends UmbEntityData { } getTreeRoot(): PagedFileSystemTreeItemPresentationModel { - const items = this.data.filter((item) => item.path === item.name); + const items = this.data.filter((item) => item.path?.includes('/') === false); const treeItems = items.map((item) => createFileSystemTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(parentPath: string): PagedFileSystemTreeItemPresentationModel { - const items = this.data.filter((item) => item.path?.startsWith(parentPath)); + const items = this.data.filter((item) => item.path?.startsWith(parentPath + '/')); const treeItems = items.map((item) => createFileSystemTreeItem(item)); const total = items.length; return { items: treeItems, total }; From 48f238f5a00854223f0aeebc5d5242b013e424d7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 09:37:38 +0200 Subject: [PATCH 420/550] move file system tree item into templating folder --- .../src/backoffice/shared/components/index.ts | 1 - .../tree/tree-item-base/tree-item-base.context.ts | 2 +- .../file-system-tree-item/file-system-tree-item.context.ts | 6 +++--- .../file-system-tree-item/file-system-tree-item.element.ts | 0 .../src/backoffice/templating/components/index.ts | 1 + .../src/backoffice/templating/index.ts | 2 ++ .../stylesheets/workspace/stylesheet-workspace.element.ts | 4 ++-- .../src/backoffice/templating/utils.ts | 4 ++-- 8 files changed, 11 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/{shared/components/tree => templating/components}/file-system-tree-item/file-system-tree-item.context.ts (75%) rename src/Umbraco.Web.UI.Client/src/backoffice/{shared/components/tree => templating/components}/file-system-tree-item/file-system-tree-item.element.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.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 c4e61d4c70..bb743e457d 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 @@ -37,7 +37,6 @@ import './table/table.element'; import './tree/tree.element'; import './tree/entity-tree-item/entity-tree-item.element'; -import './tree/file-system-tree-item/file-system-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; import './variantable-property/variantable-property.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index d0e94a4863..b7cfcf7654 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -14,7 +14,7 @@ import { } from '@umbraco-cms/backoffice/context-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; +import { urlFriendlyPathFromServerFilePath } from 'src/backoffice/templating/utils'; // add type for unique function export type UmbTreeItemUniqueFunction = (x: T) => string | null | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts index a51b41b87a..35f216062e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts @@ -1,7 +1,7 @@ -import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; +import { UmbTreeItemContextBase } from '../../../shared/components/tree/tree-item-base/tree-item-base.context'; +import { urlFriendlyPathFromServerFilePath } from '../../utils'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; // TODO get unique method from an entity repository static method export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { @@ -10,6 +10,6 @@ export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index 3479aff92c..a0e2ba7e85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; +import { serverFilePathFromUrlFriendlyPath } from '../../utils'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { serverPathFromUrlFriendlyPath } from '../../utils'; @customElement('umb-stylesheet-workspace') export class UmbStylesheetWorkspaceElement extends UmbLitElement { @@ -30,7 +30,7 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { const path = info.match.params.path; - const serverPath = serverPathFromUrlFriendlyPath(path); + const serverPath = serverFilePathFromUrlFriendlyPath(path); this.#workspaceContext.load(serverPath); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts index 76636de368..80214bb7fd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts @@ -1,5 +1,5 @@ // TODO: we can try and make pretty urls if we want to -export const urlFriendlyPathFromServerPath = (path: string) => encodeURIComponent(path).replace('.', '-'); +export const urlFriendlyPathFromServerFilePath = (path: string) => encodeURIComponent(path).replace('.', '-'); // TODO: we can try and make pretty urls if we want to -export const serverPathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); +export const serverFilePathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); From 55893a054f7c5200dbeb401b83feeb6fb6f5fdc9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 09:43:44 +0200 Subject: [PATCH 421/550] Revert "move file system tree item into templating folder" This reverts commit 48f238f5a00854223f0aeebc5d5242b013e424d7. --- .../src/backoffice/shared/components/index.ts | 1 + .../file-system-tree-item/file-system-tree-item.context.ts | 6 +++--- .../file-system-tree-item/file-system-tree-item.element.ts | 0 .../tree/tree-item-base/tree-item-base.context.ts | 2 +- .../src/backoffice/templating/components/index.ts | 1 - .../src/backoffice/templating/index.ts | 2 -- .../stylesheets/workspace/stylesheet-workspace.element.ts | 4 ++-- .../src/backoffice/templating/utils.ts | 4 ++-- 8 files changed, 9 insertions(+), 11 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/{templating/components => shared/components/tree}/file-system-tree-item/file-system-tree-item.context.ts (75%) rename src/Umbraco.Web.UI.Client/src/backoffice/{templating/components => shared/components/tree}/file-system-tree-item/file-system-tree-item.element.ts (100%) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.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 bb743e457d..c4e61d4c70 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 @@ -37,6 +37,7 @@ import './table/table.element'; import './tree/tree.element'; import './tree/entity-tree-item/entity-tree-item.element'; +import './tree/file-system-tree-item/file-system-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; import './variantable-property/variantable-property.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts index 35f216062e..a51b41b87a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts @@ -1,7 +1,7 @@ -import { UmbTreeItemContextBase } from '../../../shared/components/tree/tree-item-base/tree-item-base.context'; -import { urlFriendlyPathFromServerFilePath } from '../../utils'; +import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; // TODO get unique method from an entity repository static method export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { @@ -10,6 +10,6 @@ export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase = (x: T) => string | null | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.ts deleted file mode 100644 index 23987fc391..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './file-system-tree-item/file-system-tree-item.element'; 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 27ba7af32b..02854c3770 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/index.ts @@ -4,8 +4,6 @@ import { manifests as stylesheetManifests } from './stylesheets/manifests'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; -import './components'; - export const manifests = [...menuManifests, ...templateManifests, ...stylesheetManifests]; const registerExtensions = (manifests: Array) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index a0e2ba7e85..3479aff92c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; -import { serverFilePathFromUrlFriendlyPath } from '../../utils'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { serverPathFromUrlFriendlyPath } from '../../utils'; @customElement('umb-stylesheet-workspace') export class UmbStylesheetWorkspaceElement extends UmbLitElement { @@ -30,7 +30,7 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { const path = info.match.params.path; - const serverPath = serverFilePathFromUrlFriendlyPath(path); + const serverPath = serverPathFromUrlFriendlyPath(path); this.#workspaceContext.load(serverPath); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts index 80214bb7fd..76636de368 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts @@ -1,5 +1,5 @@ // TODO: we can try and make pretty urls if we want to -export const urlFriendlyPathFromServerFilePath = (path: string) => encodeURIComponent(path).replace('.', '-'); +export const urlFriendlyPathFromServerPath = (path: string) => encodeURIComponent(path).replace('.', '-'); // TODO: we can try and make pretty urls if we want to -export const serverFilePathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); +export const serverPathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); From 026d45d4769ba273fdf722802e5a63b8939d5a83 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 10:06:11 +0200 Subject: [PATCH 422/550] Revert "Revert "move file system tree item into templating folder"" This reverts commit 55893a054f7c5200dbeb401b83feeb6fb6f5fdc9. --- .../src/backoffice/shared/components/index.ts | 1 - .../tree/tree-item-base/tree-item-base.context.ts | 2 +- .../file-system-tree-item/file-system-tree-item.context.ts | 6 +++--- .../file-system-tree-item/file-system-tree-item.element.ts | 0 .../src/backoffice/templating/components/index.ts | 1 + .../src/backoffice/templating/index.ts | 2 ++ .../stylesheets/workspace/stylesheet-workspace.element.ts | 4 ++-- .../src/backoffice/templating/utils.ts | 4 ++-- 8 files changed, 11 insertions(+), 9 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/{shared/components/tree => templating/components}/file-system-tree-item/file-system-tree-item.context.ts (75%) rename src/Umbraco.Web.UI.Client/src/backoffice/{shared/components/tree => templating/components}/file-system-tree-item/file-system-tree-item.element.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/templating/components/index.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 c4e61d4c70..bb743e457d 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 @@ -37,7 +37,6 @@ import './table/table.element'; import './tree/tree.element'; import './tree/entity-tree-item/entity-tree-item.element'; -import './tree/file-system-tree-item/file-system-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; import './variantable-property/variantable-property.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index d0e94a4863..b7cfcf7654 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -14,7 +14,7 @@ import { } from '@umbraco-cms/backoffice/context-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; +import { urlFriendlyPathFromServerFilePath } from 'src/backoffice/templating/utils'; // add type for unique function export type UmbTreeItemUniqueFunction = (x: T) => string | null | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts similarity index 75% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts index a51b41b87a..35f216062e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/file-system-tree-item/file-system-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts @@ -1,7 +1,7 @@ -import { UmbTreeItemContextBase } from '../tree-item-base/tree-item-base.context'; +import { UmbTreeItemContextBase } from '../../../shared/components/tree/tree-item-base/tree-item-base.context'; +import { urlFriendlyPathFromServerFilePath } from '../../utils'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { urlFriendlyPathFromServerPath } from 'src/backoffice/templating/utils'; // TODO get unique method from an entity repository static method export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { @@ -10,6 +10,6 @@ export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index 3479aff92c..a0e2ba7e85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -2,10 +2,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { IRoutingInfo } from 'router-slot'; +import { serverFilePathFromUrlFriendlyPath } from '../../utils'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { serverPathFromUrlFriendlyPath } from '../../utils'; @customElement('umb-stylesheet-workspace') export class UmbStylesheetWorkspaceElement extends UmbLitElement { @@ -30,7 +30,7 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { const path = info.match.params.path; - const serverPath = serverPathFromUrlFriendlyPath(path); + const serverPath = serverFilePathFromUrlFriendlyPath(path); this.#workspaceContext.load(serverPath); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts index 76636de368..80214bb7fd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/utils.ts @@ -1,5 +1,5 @@ // TODO: we can try and make pretty urls if we want to -export const urlFriendlyPathFromServerPath = (path: string) => encodeURIComponent(path).replace('.', '-'); +export const urlFriendlyPathFromServerFilePath = (path: string) => encodeURIComponent(path).replace('.', '-'); // TODO: we can try and make pretty urls if we want to -export const serverPathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); +export const serverFilePathFromUrlFriendlyPath = (unique: string) => decodeURIComponent(unique.replace('-', '.')); From 1ac8a5e1e569ad6eb6ca3c6c0a38032ba32b3f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 27 Mar 2023 10:32:00 +0200 Subject: [PATCH 423/550] fix filter --- .../libs/extensions-api/registry/extension.registry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index c380dc602e..32963de61a 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -47,7 +47,7 @@ export class UmbExtensionRegistry { const nextData = this._kinds .getValue() .filter( - (k) => k.matchType !== (kind as ManifestKind).matchType && k.matchKind !== (kind as ManifestKind).matchKind + (k) => !(k.matchType === (kind as ManifestKind).matchType && k.matchKind === (kind as ManifestKind).matchKind) ); nextData.push(kind as ManifestKind); this._kinds.next(nextData); From 07a1a6cc7863d905ce34fbf445c3b20d9f0800ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 27 Mar 2023 10:32:41 +0200 Subject: [PATCH 424/550] performance optimizing --- .../libs/extensions-api/registry/extension.registry.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts index 32963de61a..c1279b91f7 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/registry/extension.registry.ts @@ -125,7 +125,10 @@ export class UmbExtensionRegistry { T extends ManifestBase = SpecificManifestTypeOrManifestBase >(type: Key, alias: string) { return combineLatest([ - this.extensions.pipe(map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias))), + this.extensions.pipe( + map((exts) => exts.find((ext) => ext.type === type && ext.alias === alias)), + distinctUntilChanged(extensionSingleMemoization) + ), this._kindsOfType(type), ]).pipe( map(([ext, kinds]) => { From 3a7ad00706a3eb9ff646387ceebf11d84c954761 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 11:29:53 +0200 Subject: [PATCH 425/550] remove unused store alias from manifest --- .../libs/extensions-registry/tree.models.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts index d4eea123a9..8dbce1f603 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts @@ -7,6 +7,5 @@ export interface ManifestTree extends ManifestBase { } export interface MetaTree { - storeAlias?: string; repository?: ClassConstructor; } From 5291d649243273d612f438b5bb7461dcc3a55260 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 11:31:48 +0200 Subject: [PATCH 426/550] add interface for tree-item-context --- .../repository/tree-repository.interface.ts | 34 +++++++++---------- .../repository/document-type.repository.ts | 10 +++--- .../repository/document.repository.ts | 2 +- .../repository/member-type.repository.ts | 3 +- .../repository/data-type.repository.ts | 3 +- .../repository/relation-type.repository.ts | 3 +- .../shared/collection/collection.context.ts | 2 +- .../tree-item-base/tree-item-base.context.ts | 7 ++-- .../tree-item-base/tree-item-base.element.ts | 2 +- .../tree/tree-item.context.interface.ts | 34 +++++++++++++++++++ .../repository/stylesheet.repository.ts | 2 +- .../repository/template.repository.ts | 2 +- 12 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts diff --git a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts index 6d57205da4..4ef19c3920 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/tree-repository.interface.ts @@ -1,31 +1,29 @@ import type { Observable } from 'rxjs'; -import { - EntityTreeItemResponseModel, - PagedEntityTreeItemResponseModel, - ProblemDetailsModel, -} from '@umbraco-cms/backoffice/backend-api'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; -export interface UmbTreeRepository< - PagedItemsType = PagedEntityTreeItemResponseModel, - ItemsType = EntityTreeItemResponseModel -> { +export interface UmbPagedData { + total: number; + items: Array; +} + +export interface UmbTreeRepository> { requestRootTreeItems: () => Promise<{ - data: PagedItemsType | undefined; + data: PagedItemType | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; requestTreeItemsOf: (parentUnique: string | null) => Promise<{ - data: PagedItemsType | undefined; + data: PagedItemType | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; requestTreeItems: (uniques: string[]) => Promise<{ - data: Array | undefined; + data: Array | undefined; error: ProblemDetailsModel | undefined; - asObservable?: () => Observable; + asObservable?: () => Observable; }>; - rootTreeItems: () => Promise>; - treeItemsOf: (parentUnique: string | null) => Promise>; - treeItems: (uniques: string[]) => Promise>; + rootTreeItems: () => Promise>; + treeItemsOf: (parentUnique: string | null) => Promise>; + treeItems: (uniques: string[]) => Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index c44c9d0601..aae1b52131 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -1,16 +1,16 @@ +import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; +import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; +import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; +import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { ProblemDetailsModel, DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; -import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; -import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; -import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; type ItemType = DocumentTypeResponseModel; -export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbDocumentTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index a0f9397790..5e80ce51f9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -10,7 +10,7 @@ import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco type ItemType = DocumentResponseModel; -export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbDocumentRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 6aaa528dd0..ffa47cbd04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -11,8 +11,9 @@ import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; // TODO => use correct type when available type ItemType = any; +type TreeItemType = any; -export class UmbMemberTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbMemberTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index f6519a85df..bc5c68b8f9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -9,12 +9,13 @@ import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; type ItemType = DataTypeResponseModel; +type TreeItemType = any; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ // element -> context -> repository -> (store) -> data source // All methods should be async and return a promise. Some methods might return an observable as part of the promise response. -export class UmbDataTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbDataTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 5ba5077140..2c277ac890 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -11,12 +11,13 @@ import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = RelationTypeResponseModel; +type TreeItemType = any; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ // element -> context -> repository -> (store) -> data source // All methods should be async and return a promise. Some methods might return an observable as part of the promise response. -export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index d698ed1f71..3979c74ad9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -13,7 +13,7 @@ export class UmbCollectionContext; private _store?: any; protected _dataObserver?: UmbObserverController; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index b7cfcf7654..d366587003 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -5,6 +5,7 @@ import { } from '../../section/section-sidebar/section-sidebar.context'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; import { UmbTreeContextBase } from '../tree.context'; +import { UmbTreeItemContext } from '../tree-item.context.interface'; import { BooleanState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { @@ -14,12 +15,13 @@ import { } from '@umbraco-cms/backoffice/context-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { urlFriendlyPathFromServerFilePath } from 'src/backoffice/templating/utils'; // add type for unique function export type UmbTreeItemUniqueFunction = (x: T) => string | null | undefined; -export class UmbTreeItemContextBase { +export class UmbTreeItemContextBase + implements UmbTreeItemContext +{ public host: UmbControllerHostInterface; public treeItem: T; public unique: string; @@ -144,6 +146,7 @@ export class UmbTreeItemContextBase { + this.observe(asObservable(), (childItems: any) => { this._childItems = childItems; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts new file mode 100644 index 0000000000..02f4087bcc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts @@ -0,0 +1,34 @@ +import { Observable } from 'rxjs'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; + +// TODO: temp type. Add paged response type to the repository interface +interface PagedResponse { + total: number; + items: Array; +} + +export interface UmbTreeItemContext { + host: UmbControllerHostInterface; + treeItem: T; + unique: string; + type: string; + + hasChildren: Observable; + isLoading: Observable; + isSelectable: Observable; + isSelected: Observable; + isActive: Observable; + hasActions: Observable; + path: Observable; + + requestChildren(): Promise<{ + data: PagedResponse | undefined; + error: ProblemDetailsModel | undefined; + asObservable?: () => Observable; + }>; + toggleContextMenu(): void; + select(): void; + deselect(): void; + constructPath(pathname: string, entityType: string, unique: string): string; +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts index 9d64f38445..a045817b57 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/stylesheet.repository.ts @@ -11,7 +11,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; export class UmbStylesheetRepository - implements UmbTreeRepository + implements UmbTreeRepository { #host; #dataSource; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index ef0bb4852e..b8f1044c21 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -9,7 +9,7 @@ import { ProblemDetailsModel, TemplateResponseModel } from '@umbraco-cms/backoff import { UmbDetailRepository } from 'libs/repository/detail-repository.interface'; import { UmbTreeRepository } from 'libs/repository/tree-repository.interface'; -export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { #init; #host: UmbControllerHostInterface; From 7ca21588c47f2c1c517dea8631a3b675bf88f72f Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 12:05:29 +0200 Subject: [PATCH 427/550] fix duplicate storybook ids --- .../workspace/stylesheet-workspace.stories.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts index 09b9cdb96d..9642c1b6bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.stories.ts @@ -3,16 +3,14 @@ import './stylesheet-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { data } from '../../../../core/mocks/data/member.data'; - import type { UmbStylesheetWorkspaceElement } from './stylesheet-workspace.element'; export default { - title: 'Workspaces/Member', - component: 'umb-member-workspace', - id: 'umb-member-workspace', + title: 'Workspaces/Stylesheet', + component: 'umb-stylesheet-workspace', + id: 'umb-stylesheet-workspace', } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; From 408f4eb17da99765d930cf0ef45072f92af1d6f7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 12:05:44 +0200 Subject: [PATCH 428/550] add tree docs scaffold --- .../src/stories/extending/tree.mdx | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx new file mode 100644 index 0000000000..eb0e1c810d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx @@ -0,0 +1,127 @@ +import { Meta } from '@storybook/addon-docs'; + + + +# Trees + +// TODO: add description of trees. +Rough notes: +The tree is a hierarchical structure of nodes. The tree is registered in the Backoffice extension registry. A tree can be rendered anywhere in the Backoffice with the help of the umb-tree element. + +## Registering a tree + +Tree Manifest + +```json +// TODO: add interface +{ + "type": "tree", + "alias": "My.Tree.Alias", + "name": "My Tree", + "meta": { + "repositoryAlias": "My.Repository.Alias" + } +}, +{ + "type": "treeItem", + "kind": "entity", + "alias": "My.TreeItem.Alias", + "name": "My Tree Item", + "conditions": { + "entityType": "my-entity-type", + }, +} +``` + +The backoffice comes with two different tree item kinds out of the box: +entity and fileSystem + +## Rendering a tree + +```html + +``` + +## Render a Custom Tree Item + +The Tree Item Manifest + +```json +{ + "type": "treeItem", + "alias": "Umb.TreeItem.Alias", + "name": "My Tree Item", + "js": "./my-tree-item.element.js", + "conditions": { + "entityType": "my-entity-type", + }, +}; +``` + +### The Tree Item Element + +```typescript +import { css, html, nothing } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import { UmbElementMixin } from '@umbraco-cms/backoffice/element'; +import { UmbMyTreeItemContext, MyTreeItemDataModel } from './my-tree-item.context'; + +@customElement('my-tree-item') +export class MyTreeItemElement extends UmbElementMixin(LitElement) { + @property({ type: Object, attribute: false }) + public item?: MyTreeItemDataModel; + + render() { + if (!this.item) return nothing; + new UmbMyTreeItemContext(this, this.item); + return html` Some custom markup `; + } +} + +export default MyTreeItemElement; +``` + +### The Tree Item Context + +```typescript +// TODO: auto generate this from the interface +export interface UmbTreeItemContext { + host: UmbControllerHostInterface; + treeItem: T; + unique: string; + type: string; + + hasChildren: Observable; + isLoading: Observable; + isSelectable: Observable; + isSelected: Observable; + isActive: Observable; + hasActions: Observable; + path: Observable; + + requestChildren(): Promise<{ + data: PagedResponse | undefined; + error: ProblemDetailsModel | undefined; + asObservable?: () => Observable; + }>; + + toggleContextMenu(): void; + select(): void; + deselect(): void; + constructPath(pathname: string, entityType: string, unique: string): string; +} +``` + +### Extending the Tree Item Context base + +We provide a base class for the tree item context. This class provides some default implementations for the context. You can extend this class to overwrite any of the default implementations. + +```typescript +export class UmbMyTreeItemContext extends UmbTreeItemContextBase { + constructor(host: UmbControllerHostInterface, treeItem: MyTreeItemDataModel) { + super(host, treeItem, (x: MyTreeItemDataModel) => x.unique); + } + + // overwrite any methods or properties here if needed +} +``` From 9d4b0a76679ec8ca8e487d1942020f86621b4d11 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 12:06:52 +0200 Subject: [PATCH 429/550] add tree to intro links --- src/Umbraco.Web.UI.Client/src/stories/extending/intro.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/intro.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/intro.mdx index c0ede6a70b..dbb9dcb584 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/intro.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/intro.mdx @@ -16,3 +16,4 @@ The Umbraco Backoffice currently support the following extension types: - [Property Editor](?path=/docs/guides-extending-the-backoffice-property-editors--docs) - [Repository](?path=/docs/guides-extending-the-backoffice-property-editors--docs) - [Menu](?path=/docs/guides-extending-the-backoffice-menu--docs) +- [Tree](?path=/docs/guides-extending-the-backoffice-trees--docs) From cf361b2dd390d1a3d0b121ae9adc98f2078a8ff4 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 13:25:58 +0200 Subject: [PATCH 430/550] use repository alias in tree manifest --- .../libs/extensions-registry/tree.models.ts | 3 +- .../document-types/tree/manifests.ts | 4 +- .../documents/documents/tree/manifests.ts | 4 +- .../media/media-types/tree/manifests.ts | 4 +- .../backoffice/media/media/tree/manifests.ts | 4 +- .../members/member-groups/tree/manifests.ts | 4 +- .../members/member-types/tree/manifests.ts | 4 +- .../members/members/tree/manifests.ts | 4 +- .../settings/data-types/tree/manifests.ts | 4 +- .../settings/relation-types/tree/manifests.ts | 4 +- .../tree-item-base/tree-item-base.context.ts | 2 +- .../shared/components/tree/tree.context.ts | 57 +++++++++++++++---- .../templating/stylesheets/tree/manifests.ts | 4 +- .../templating/templates/tree/manifests.ts | 4 +- .../translation/dictionary/tree/manifests.ts | 4 +- 15 files changed, 72 insertions(+), 38 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts index 8dbce1f603..49e8387bb4 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-registry/tree.models.ts @@ -1,5 +1,4 @@ import type { ManifestBase } from './models'; -import type { ClassConstructor } from '@umbraco-cms/backoffice/models'; export interface ManifestTree extends ManifestBase { type: 'tree'; @@ -7,5 +6,5 @@ export interface ManifestTree extends ManifestBase { } export interface MetaTree { - repository?: ClassConstructor; + repositoryAlias: string; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts index 30b9f1493a..5a5ccaa08d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; +import { DOCUMENT_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.DocumentTypes', name: 'Document Types Tree', meta: { - repository: UmbDocumentTypeRepository, + repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts index ee92e43e8d..a5dbe90321 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDocumentRepository } from '../repository/document.repository'; +import { DOCUMENT_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Documents'; @@ -8,7 +8,7 @@ const tree: ManifestTree = { alias: treeAlias, name: 'Documents Tree', meta: { - repository: UmbDocumentRepository, // TODO: use alias instead of class + repositoryAlias: DOCUMENT_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts index 164fec3904..fff9c37137 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbMediaTypeRepository } from '../repository/media-type.repository'; +import { MEDIA_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.MediaTypes', name: 'Media Types Tree', meta: { - repository: UmbMediaTypeRepository, + repositoryAlias: MEDIA_TYPE_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts index b3aa588fdf..b66042c3ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbMediaRepository } from '../repository/media.repository'; +import { MEDIA_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.Media'; @@ -8,7 +8,7 @@ const tree: ManifestTree = { alias: treeAlias, name: 'Media Tree', meta: { - repository: UmbMediaRepository, // TODO: use alias instead of class + repositoryAlias: MEDIA_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts index f4e3c2bb10..5d379a3782 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbMemberGroupRepository } from '../repository/member-group.repository'; +import { MEMBER_GROUP_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberGroups'; @@ -9,7 +9,7 @@ const tree: ManifestTree = { name: 'Member Groups Tree', weight: 100, meta: { - repository: UmbMemberGroupRepository, + repositoryAlias: MEMBER_GROUP_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts index e15489ab38..6781a419f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbMemberTypeRepository } from '../repository/member-type.repository'; +import { MEMBER_TYPES_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const treeAlias = 'Umb.Tree.MemberTypes'; @@ -8,7 +8,7 @@ const tree: ManifestTree = { alias: treeAlias, name: 'Member Types Tree', meta: { - repository: UmbMemberTypeRepository, + repositoryAlias: MEMBER_TYPES_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts index 00ee74f8c0..e30a124927 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbMemberRepository } from '../repository/member.repository'; +import { MEMBER_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -7,7 +7,7 @@ const tree: ManifestTree = { name: 'Members Tree', weight: 10, meta: { - repository: UmbMemberRepository, + repositoryAlias: MEMBER_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts index 253a74a011..49c0a602a4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDataTypeRepository } from '../repository/data-type.repository'; +import { DATA_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.DataTypes', name: 'Data Types Tree', meta: { - repository: UmbDataTypeRepository, + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts index c362124d31..42dc1f26cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbRelationTypeRepository } from '../repository/relation-type.repository'; +import { RELATION_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.RelationTypes', name: 'Relation Types Tree', meta: { - repository: UmbRelationTypeRepository, + repositoryAlias: RELATION_TYPE_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index d366587003..796cabce56 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -73,7 +73,7 @@ export class UmbTreeItemContextBase>[]); public readonly selection = this.#selection.asObservable(); - repository!: UmbTreeRepository; + repository?: UmbTreeRepository; + + #initResolver?: () => void; + #initialized = false; + + #init = new Promise((resolve) => { + this.#initialized ? resolve() : (this.#initResolver = resolve); + }); constructor(host: UmbControllerHostInterface, tree: ManifestTree) { - this.#host = host; + this.host = host; this.tree = tree; - if (this.tree.meta.repository) { - // TODO: should be using the right extension and the createExtensionClass method. - this.repository = new this.tree.meta.repository(this.#host) as any; + const repositoryAlias = this.tree.meta.repositoryAlias; + if (!repositoryAlias) throw new Error('Tree must have a repository alias.'); + + new UmbObserverController( + this.host, + umbExtensionsRegistry.getByTypeAndAlias('repository', this.tree.meta.repositoryAlias), + async (repositoryManifest) => { + if (!repositoryManifest) return; + + try { + const result = await createExtensionClass(repositoryManifest, [this.host]); + this.repository = result; + this.#checkIfInitialized(); + } catch (error) { + throw new Error('Could not create repository with alias: ' + repositoryAlias + ''); + } + } + ); + } + + // TODO: find a generic way to do this + #checkIfInitialized() { + if (this.repository) { + this.#initialized = true; + this.#initResolver?.(); } } @@ -58,18 +89,22 @@ export class UmbTreeContextBase implements UmbTreeContext { } public async requestRootItems() { - return this.repository.requestRootTreeItems(); + await this.#init; + return this.repository!.requestRootTreeItems(); } public async requestChildrenOf(parentKey: string | null) { - return this.repository.requestTreeItemsOf(parentKey); + await this.#init; + return this.repository!.requestTreeItemsOf(parentKey); } public async rootItems() { - return this.repository.rootTreeItems(); + await this.#init; + return this.repository!.rootTreeItems(); } public async childrenOf(parentKey: string | null) { - return this.repository.treeItemsOf(parentKey); + await this.#init; + return this.repository!.treeItemsOf(parentKey); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts index f3430be1ec..c93536bd70 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/tree/manifests.ts @@ -1,5 +1,5 @@ -import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; import { STYLESHEET_ENTITY_TYPE } from '..'; +import { STYLESHEET_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; export const STYLESHEET_TREE_ALIAS = 'Umb.Tree.Stylesheet'; @@ -10,7 +10,7 @@ const tree: ManifestTree = { name: 'Stylesheet Tree', weight: 10, meta: { - repository: UmbStylesheetRepository, + repositoryAlias: STYLESHEET_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts index 0a9f6a445a..466a222f9d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbTemplateRepository } from '../repository/template.repository'; +import { TEMPLATE_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.Templates', name: 'Templates Tree', meta: { - repository: UmbTemplateRepository, + repositoryAlias: TEMPLATE_REPOSITORY_ALIAS, }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts index db5158f921..dcfeba9411 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/tree/manifests.ts @@ -1,4 +1,4 @@ -import { UmbDictionaryRepository } from '../repository/dictionary.repository'; +import { DICTIONARY_REPOSITORY_ALIAS } from '../repository/manifests'; import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extensions-registry'; const tree: ManifestTree = { @@ -6,7 +6,7 @@ const tree: ManifestTree = { alias: 'Umb.Tree.Dictionary', name: 'Dictionary Tree', meta: { - repository: UmbDictionaryRepository, + repositoryAlias: DICTIONARY_REPOSITORY_ALIAS, }, }; From 632a5d1a09ff9036e52963791e28d7f0437b6037 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 27 Mar 2023 13:35:21 +0200 Subject: [PATCH 431/550] fix route --- .../components/tree/tree-item-base/tree-item-base.context.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index 796cabce56..43212da66f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -148,7 +148,7 @@ export class UmbTreeItemContextBase Date: Mon, 27 Mar 2023 13:48:46 +0200 Subject: [PATCH 432/550] remove comments --- src/Umbraco.Web.UI.Client/libs/router/route.context.ts | 7 ------- src/Umbraco.Web.UI.Client/libs/router/route.interface.ts | 8 -------- 2 files changed, 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts index 93cc0f64b8..9c240d704d 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -11,7 +11,6 @@ import { UMB_MODAL_CONTEXT_TOKEN, UmbModalRouteRegistration } from '@umbraco-cms const EmptyDiv = document.createElement('div'); export class UmbRouteContext { - //#host: UmbControllerHostInterface; #modalRegistrations: UmbModalRouteRegistration[] = []; #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; #contextRoutes: UmbRoute[] = []; @@ -19,13 +18,7 @@ export class UmbRouteContext { #activeModalPath?: string; constructor(host: UmbControllerHostInterface, private _onGotModals: (contextRoutes: any) => void) { - //this.#host = host; new UmbContextProviderController(host, UMB_ROUTE_CONTEXT_TOKEN, this); - /*new UmbContextConsumerController(host, UMB_ROUTE_CONTEXT_TOKEN, (context) => { - console.log('got a parent', this === context, this, context); - // Why did i want a parent route? was it to capture and inherit routes? - // This is maybe not so necessary as it stands right now, so lets see how it goes. - });*/ new UmbContextConsumerController(host, UMB_MODAL_CONTEXT_TOKEN, (context) => { this.#modalContext = context; this.#generateContextRoutes(); diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts index 0017d03325..b76705bd13 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts @@ -1,11 +1,3 @@ import type { IRoute } from 'router-slot/model'; -/* -type Optional = { [P in keyof T]?: T[P] }; -type IRouteWithComponentRoute = Exclude; -type IComponentRouteWithOptionalComponent = Omit & - Optional>; - -export type UmbRoute = IRouteWithComponentRoute | IComponentRouteWithOptionalComponent; -*/ export type UmbRoute = IRoute; From c29390d3f5c354934f664d1e94d84c8e56d4f65b Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 27 Mar 2023 16:10:19 +0200 Subject: [PATCH 433/550] add plugin node-resolve to ensure build is not failing --- src/Umbraco.Web.UI.Client/package-lock.json | 335 ++++++++++---------- src/Umbraco.Web.UI.Client/package.json | 1 + 2 files changed, 165 insertions(+), 171 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 524f3d9036..c6582aa16d 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -29,6 +29,7 @@ "@open-wc/testing": "^3.1.7", "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.1", "@storybook/addon-a11y": "^7.0.0-rc.3", "@storybook/addon-actions": "^7.0.0-rc.3", "@storybook/addon-essentials": "^7.0.0-rc.3", @@ -2732,7 +2733,32 @@ } } }, - "node_modules/@rollup/plugin-json/node_modules/@rollup/pluginutils": { + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", + "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.0", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", @@ -2754,55 +2780,6 @@ } } }, - "node_modules/@rollup/plugin-json/node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@rollup/plugin-json/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -4931,9 +4908,9 @@ "dev": true }, "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, "node_modules/@types/express": { @@ -5222,13 +5199,10 @@ } }, "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "node_modules/@types/scheduler": { "version": "0.16.2", @@ -6721,6 +6695,64 @@ "node": ">=10.0.0" } }, + "node_modules/@web/dev-server-rollup/node_modules/@rollup/plugin-node-resolve": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@web/dev-server-rollup/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@web/dev-server-rollup/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@web/dev-server-rollup/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@web/dev-server-rollup/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/@web/dev-server-rollup/node_modules/rollup": { "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", @@ -9924,9 +9956,9 @@ } }, "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "node_modules/esutils": { @@ -15734,46 +15766,12 @@ "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0" } }, - "node_modules/rollup-plugin-esbuild/node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/rollup-plugin-esbuild/node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, "node_modules/rollup-plugin-esbuild/node_modules/es-module-lexer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz", "integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==", "dev": true }, - "node_modules/rollup-plugin-esbuild/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "node_modules/rollup-plugin-url": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-url/-/rollup-plugin-url-3.0.1.tgz", @@ -19970,56 +19968,31 @@ "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } } }, "@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", + "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", "dev": true, "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", + "is-builtin-module": "^3.2.0", "is-module": "^1.0.0", - "resolve": "^1.19.0" + "resolve": "^1.22.1" } }, "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" } }, "@sinclair/typebox": { @@ -21578,9 +21551,9 @@ "dev": true }, "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, "@types/express": { @@ -21869,13 +21842,10 @@ } }, "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "@types/scheduler": { "version": "0.16.2", @@ -23213,6 +23183,52 @@ "whatwg-url": "^11.0.0" }, "dependencies": { + "@rollup/plugin-node-resolve": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "rollup": { "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", @@ -25662,9 +25678,9 @@ "dev": true }, "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "esutils": { @@ -30012,34 +30028,11 @@ "jsonc-parser": "^3.2.0" }, "dependencies": { - "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - } - }, - "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, "es-module-lexer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.0.tgz", "integrity": "sha512-2BMfqBDeVCcOlLaL1ZAfp+D868SczNpKArrTM3dhpd7dK/OVlogzY15qpUngt+LMTq5UC/csb9vVQAgupucSbA==", "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true } } }, diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 81af3da3d2..5cb6b54350 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -80,6 +80,7 @@ "@open-wc/testing": "^3.1.7", "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.0.1", "@storybook/addon-a11y": "^7.0.0-rc.3", "@storybook/addon-actions": "^7.0.0-rc.3", "@storybook/addon-essentials": "^7.0.0-rc.3", From e6683d3d73a783d2d8e95375d9ecc60e78151651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 14:04:27 +1300 Subject: [PATCH 434/550] use uui 1.2.0 rc 2 --- src/Umbraco.Web.UI.Client/package-lock.json | 1810 +++++++++---------- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 906 insertions(+), 906 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index ad8c40395a..2dbd269ebf 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.1", + "@umbraco-ui/uui": "^1.2.0-rc.2", "@umbraco-ui/uui-css": "^1.2.0-rc.1", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", @@ -5610,780 +5610,780 @@ } }, "node_modules/@umbraco-ui/uui": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.1.tgz", - "integrity": "sha512-6DexPMgFZ4qm6AwWyd7q6rdkIJCuqf8vVNlVZqGlbaE9OnrWclNBQ+ZGsJrXdY8Ugs1V3u1IjiHd8Gwp4UpBvw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.2.tgz", + "integrity": "sha512-E8CrJYKLBcCnshV+nTVkfkL9I+0sJbBjKMHOVr/jCOj6Dw9mGytq0bmq8EIT0QcqZ6teZZplkwW2JPQauuv5JA==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.1", - "@umbraco-ui/uui-badge": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", - "@umbraco-ui/uui-box": "1.2.0-rc.1", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.1", - "@umbraco-ui/uui-card-media": "1.2.0-rc.1", - "@umbraco-ui/uui-card-user": "1.2.0-rc.1", - "@umbraco-ui/uui-caret": "1.2.0-rc.1", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.1", - "@umbraco-ui/uui-color-area": "1.2.0-rc.1", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.1", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1", - "@umbraco-ui/uui-dialog": "1.2.0-rc.1", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.1", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.1", - "@umbraco-ui/uui-form": "1.2.0-rc.1", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.1", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1", - "@umbraco-ui/uui-input-file": "1.2.0-rc.1", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.1", - "@umbraco-ui/uui-input-password": "1.2.0-rc.1", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.1", - "@umbraco-ui/uui-label": "1.2.0-rc.1", - "@umbraco-ui/uui-loader": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.1", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.1", - "@umbraco-ui/uui-modal": "1.2.0-rc.1", - "@umbraco-ui/uui-pagination": "1.2.0-rc.1", - "@umbraco-ui/uui-popover": "1.2.0-rc.1", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-radio": "1.2.0-rc.1", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-ref": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.1", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1", - "@umbraco-ui/uui-select": "1.2.0-rc.1", - "@umbraco-ui/uui-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.1", - "@umbraco-ui/uui-table": "1.2.0-rc.1", - "@umbraco-ui/uui-tabs": "1.2.0-rc.1", - "@umbraco-ui/uui-tag": "1.2.0-rc.1", - "@umbraco-ui/uui-textarea": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.1", - "@umbraco-ui/uui-toggle": "1.2.0-rc.1" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.2", + "@umbraco-ui/uui-badge": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", + "@umbraco-ui/uui-box": "1.2.0-rc.2", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.2", + "@umbraco-ui/uui-card-media": "1.2.0-rc.2", + "@umbraco-ui/uui-card-user": "1.2.0-rc.2", + "@umbraco-ui/uui-caret": "1.2.0-rc.2", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.2", + "@umbraco-ui/uui-color-area": "1.2.0-rc.2", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.2", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2", + "@umbraco-ui/uui-dialog": "1.2.0-rc.2", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.2", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.2", + "@umbraco-ui/uui-form": "1.2.0-rc.2", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.2", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2", + "@umbraco-ui/uui-input-file": "1.2.0-rc.2", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.2", + "@umbraco-ui/uui-input-password": "1.2.0-rc.2", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.2", + "@umbraco-ui/uui-label": "1.2.0-rc.2", + "@umbraco-ui/uui-loader": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.2", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.2", + "@umbraco-ui/uui-modal": "1.2.0-rc.2", + "@umbraco-ui/uui-pagination": "1.2.0-rc.2", + "@umbraco-ui/uui-popover": "1.2.0-rc.2", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-radio": "1.2.0-rc.2", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-ref": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.2", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2", + "@umbraco-ui/uui-select": "1.2.0-rc.2", + "@umbraco-ui/uui-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.2", + "@umbraco-ui/uui-table": "1.2.0-rc.2", + "@umbraco-ui/uui-tabs": "1.2.0-rc.2", + "@umbraco-ui/uui-tag": "1.2.0-rc.2", + "@umbraco-ui/uui-textarea": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.2", + "@umbraco-ui/uui-toggle": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-0RxQAxzcEWLk0LoeMk0K6svRjFGDhoEpndNtKe9uyfJCoYxEVeH0SVMhzlbCGia7kUejS7b/PzLJ69ZrKqSAlA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-JI9n1/gB6cr+7k0+v+HVAnfXCkZIN3UYbC8BhC+YinMsKIIWiLgo/FmgClgHmJ9zPD9EhAVqUa8wViM03npyDg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.1.tgz", - "integrity": "sha512-RYmBQ+chBF1SrJwzc6Dpwq3kSRWF//GI0DBpGCXLz7URc04GrbH6E2zL2c6vGR/sYxIVDunVEZ17QODxzv+/Gg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.2.tgz", + "integrity": "sha512-WnVicYfGExAKA7gXHjVk4dcANRrWYnXLlAWiRS9SOVDFUYezbNbX82Nt2rMGxZ5K3TJr+WWxBa0b2AYhz/pWpw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.1.tgz", - "integrity": "sha512-Tlsg7jwKbQzwW+ORSM2T7HfsXsjd6WANa9iLhxNxaCp9K2i8JWtFc9B/2QYti5FShhPPmsz9NKa3IJlzR9g1BA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.2.tgz", + "integrity": "sha512-bEtJzr4tC8oL4KszNxqu3ey1DPg9hZnaEND7p8RDXCknZLpi9flhpU73esvskiCRSJr5CTu0pTwJwOR+Bhwr9Q==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.1.tgz", - "integrity": "sha512-vBnPwAF2Q0brsoSKNXelFSp37iomqqdJkHnxOpv+ezC0XwG9EXsIVZYUGFLlHxJaoSnnXQzB7ITAHmK2wI2toQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.2.tgz", + "integrity": "sha512-Z/zxDmf5WbeXo+3CrB62TOHgg5cEcKNB4vc06NAllypzLBKdBPjRe3FtBtRL8ExwZmXoAlJmlItr6nEnfogKUQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-base": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.1.tgz", - "integrity": "sha512-KY1wU+IYa+Wqlpkk0ggqJefB1vv2kzLlX0CDBgixIIYcPEP/JZ6E54T34c2Dhbz8/66yzCsVYVDCQBtVcr22fw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.2.tgz", + "integrity": "sha512-rGHM+OgldohqNlq5B1BMcpVkZNMu8A0X5uN6cG74qGg+WXqXbX9XlRFxMMuoxCTgtqowGZMn7St+Tu3O8GQAiA==", "dependencies": { "lit": "^2.3.1" } }, "node_modules/@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.1.tgz", - "integrity": "sha512-TYj+IiektbvFc+XvRMHPaYw3ccDy0c2eVwYrU96ywgU04STOcEv/vb1NdUDQ8osQLeQgk7lWmXl8G1dK0ESKOw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.2.tgz", + "integrity": "sha512-W3qKtrH1c+nPe0yuz8sySf6hF7rOK9Hg3I2HZ5jRmoKnDmTLiZpXhDDyaYKy1oH5n/WdRlJx9aBaZG5TMmRqpg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-box": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.1.tgz", - "integrity": "sha512-+8rYP6O9OaQY8oCrpYhO11kA/96Gq1F7FyOVbGgPXKDejElTvP4QifI1GLg1vJ8kmgX6AZu0ypHTRGhF5ohjtQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.2.tgz", + "integrity": "sha512-c3rqT0KdCnBqWv8Lbzpetj/MldQSTQ7/7uxTtHcS+Wclkvr+ktKeai45NebiKqDCb6l3scy2Va0TRoJBUNmofA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.1.tgz", - "integrity": "sha512-e7o2re7Rn0Ipu3D2BennKbEM3HOIRFhaTy/0zIG14bp3ktg2vR84GtB8WujonFG9/Mrp22K7IZTfGR0+8n22oA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.2.tgz", + "integrity": "sha512-xX93r/n6dKY1D0wWRx2FKDVtJ2Yja91KPheHExSPuBuwUI0C0hBI02U+AhWjr/6+hUl+Kc0CWOdoYNkuum3RZg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-button": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.1.tgz", - "integrity": "sha512-B9AkSPd/p6+mm7Qmk+wAPhI6XV+HZU1uWIPIfObPgEHorMVUwIEl2UUPgx6Qh0i79+o6QnrW9Ki9sTCfXUP6Dg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.2.tgz", + "integrity": "sha512-IVtsxvRPT8on8vomxCWWRwhJbDl8dDmeUxSFxOPm/LrDZ8Y3sVf5Z248mBVCvX87E9AsBYkd7WX4KRDf3vubFQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.1.tgz", - "integrity": "sha512-IkRtrP0hplhFjIwk6ikxrrWSGycFxEEYWjK0Uha7D666xWJQKj+WBIvHPvRBcAyZXRzjw8ZZpsKUObrHcpVthw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.2.tgz", + "integrity": "sha512-sNxAiZGCbjKE95hiCroBb5DBIiIncpojpS0ARWFHXQAbjPi99qP72cE/+D/LF61NZwDKyyP+GKrzOmzgI4BQMw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.1.tgz", - "integrity": "sha512-klqnbEpIUumSgfTaYobbHKuQESQD81QYllk+ScOoSMJlZQIy8laDRa6c7cYfGBJb+jQl5EvXnYU+B961pSDxLA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.2.tgz", + "integrity": "sha512-lNIFbBuiv113JyS8igqV7VhVppObRa34gpsflcmkCaCN2Khm6XVVsG4h226RNrhnQgjJ0J+r+/QTdaIUKLYX+w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-card": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.1.tgz", - "integrity": "sha512-GVmRf2lAayFhFVu7CtN+kwQFC7l3CP2ct+bpzuN8HXGc4BgyxGxnVpA2+H+7NrUzae5s2E8PNPSRICqDMJQ/ew==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.2.tgz", + "integrity": "sha512-7hlGuunANegwsC6R4N+ILxNMHwXzB6tJzO/enMnrAQA7SkuLDEJB1rHy2TOhUOjEP1hQREM+rc+srX1wT8ZkCw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.1.tgz", - "integrity": "sha512-gHBjmTwkvhblP5N4JucITA1JcC5hjl22G71bCAmXvcjT5KEF94t/gGEP0WYXIhrosT52IPd2S+9u1VcXW4NsBw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.2.tgz", + "integrity": "sha512-RA4VK+XoJQpQmc3sfkw/ZnrMGCn1HDiFowanwrR8SEYOPiMbmGUhRMnnmsa8WSOlNJ4KLpgN8vyaa7cvu93ZuA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.1.tgz", - "integrity": "sha512-F9E+XU5y+a6zeS12dCmFT+UrygxY8NufaHU3uyqq/qbNFiKQfzXm+uuUoy1pWe0o4EP/uW14azSZpI70MwIVUw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.2.tgz", + "integrity": "sha512-VDMbhevtLu0ucbhqVf17rKUrRfiNyyzttBFHX7NDUfeXGoqjTb98z6aproP5ujvqsWhECa5Q2iemTbxqVr/b7A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.1.tgz", - "integrity": "sha512-qxI5YUvwrmHaovQk1AtEYLe7TGaaX3pw9cNgI8joDNs/uvAhYuVXISEM03aooZQ3okveeJwgWeuiYJvXKhjptA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.2.tgz", + "integrity": "sha512-SVh2Rf1b/PL3WamMlSoLtm4bFLj9Ms33wS+94FVoEKikH/b/5OSHJyMnW4h6K/c2yyaMT7/y+tQhoc9oGcq5WQ==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1" + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.1.tgz", - "integrity": "sha512-tf0mTznnLsE8HF7HsIrSa6TKowMsqcXMl5duG6xzt+kRnuXNFSHGdtks2S42etR4/d48tTSedXiqK6+8iWxzow==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.2.tgz", + "integrity": "sha512-/19J8MpMLkWT5u4QdGGmf7xqCZ0URB0YUq48rsn5y/efElWi1HG0ptJwGoqrW5hhKuLWEcZG4V1WVJxT4LgwZQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.1.tgz", - "integrity": "sha512-BZRRCyfUhg4VVL7wGx8tF9/HBZPIRfWRlxG8Uk58D9/X5qux13roIldTD+iJYqbhLvBqLcLNNh9K8Tw5W4J50w==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.2.tgz", + "integrity": "sha512-shjQWdFjjRnbXGaZa6BkSxC2Q1jfSh5q6xVjkDrcGToOW94q6PURF6Vm1aodsBVWZGuJUzmTdT41mhG/SjsIPg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.1.tgz", - "integrity": "sha512-eoMSn0YI9smAU3m005ssw3kW95sr6QZJkVzsrq79jcjL6Cb44Gx+Qmo9fEY0MWAPfvazclPW1zBFGlRtdGC2CA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.2.tgz", + "integrity": "sha512-LwdmkwFu+3Ms9xm86sZovTItlWlHgVfHPOMnW+nxUkVMfwv1FjK4n4G7xVJ9nmpa8W4GjMwcENjvR0Qs2/JqqQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.1.tgz", - "integrity": "sha512-A0EooYaoi8Bef6Tm+082rzzVyMAHCK36KLHTn4R7d5vv47b0S0AfcZcIhM9EJtL+wvlF9jLD/ZxpRSrBCjXDAw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.2.tgz", + "integrity": "sha512-Ibn3dRJn/N8E9mRi2EWEFxyL4BwEbraytGNq7jD+iJZ9cIaZTU/zuxYGxNFNBP3EDsdD10iLnyBA9hfyEDxRcQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-H+pyB70V9Wi7n8sqSxghPfeT73KMWh/jyQRlQj1x72AFvCFPBmJBB9biOQTzHujU8PdVzT9yPhPz/+lT3ZFPIg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-aQTTizgH0oNHBFRXXr3tjhH456SRx7TVx797elcA9b0NtSFMuFwWZZI4qqppHTaVkVGZz/0coF973Xu8s5GSGg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.1.tgz", - "integrity": "sha512-a+gDiQA9Ffz9IskcUrpblbTOneUJeTomauM6SdUffWGmBZjWcA4tF7Wk1ipd8cfoRZ3X02P3E0uK17OACuxxqA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.2.tgz", + "integrity": "sha512-A7G0kz/ZEOANizHNek6nsq41XrCbCBE5XTE5Y0afUEbL3RM37yZHsjNFM4H1iJs57plt4Mfb85TQqb3h5HnHJA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.1.tgz", - "integrity": "sha512-gLYCnsVswaT35jTQ4sZypNpcgWWJ5XThNdSE83/ivEyfwKNJwAPUKkbXVO2s2y818PtvJ2QyxX2G8sYzrGs7FQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.2.tgz", + "integrity": "sha512-FskzxqYXCfi3gV0BOfoo5acDJEpiHF2ZIcjYxgrPNtG2phjVZ1Mk1BinfKRRibXqKGU/uhAQxbNIygxW/C9bJA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.1.tgz", - "integrity": "sha512-WhhDXnrz+CmO4V7wpJuRyBBpNbuT8tvYuVRop0v6Hmpcwve2YtaKEG2nnjGWWEW1tuyBWTvREeXAi1P3UX7/Rg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.2.tgz", + "integrity": "sha512-8BctuzQ1hoiAkhV4XU6sOICoKWn4EMIesWiQavl44IILuldrJhBc9PJlSkBeaOs8raOXCwWb7yhDf0w68rlY/w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.1.tgz", - "integrity": "sha512-OeN1fnZPVq6gupyEMKiu4i1CPTeHcnICrE6I1K7mrrjqipXFrfIQMTWnCaj5VhTDnquhuDFL7AUnpmkd+WIKyQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.2.tgz", + "integrity": "sha512-hOnfyje4XzhPWgDlbfOlaJOIUlMvc0RmwpKmqFynZMo0wZ+zuPMQ34jjPRAkgDa7dHkkAmbhZczLHdPF6I9aFA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-css": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.1.tgz", - "integrity": "sha512-37DRp4JjzwV/4lgL8z4zH+nhu1lNGzh9Z7DL/ForVgqNJGbtHejabw2Zn4WUb6TA0iXJ8x9mVytwM9cThIZlEg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.2.tgz", + "integrity": "sha512-yEHxeUFqRPhxHblR/jjkNLabMFZXZ3aMGVGgehBvsGM01D3yQq9wvFe+qtjr4TGXs7v62DIT4bOtP0f45KfRRg==", "dependencies": { "lit": "^2.2.2" } }, "node_modules/@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.1.tgz", - "integrity": "sha512-8NJ5l6dMirRpIHIiC7C4y6CcRZw46KGUBO/F+/5Kjhn2sHUWIomCt589qv73K0uNNXOrgAC1DXUYXq7QzLHGjg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.2.tgz", + "integrity": "sha512-Jw0YfP4WJMaSsdvUGPjOQtFUiAlno2knxt709V2IugdbnfjgSYllBzQGNHWmbBFS1kJtURAcCWJX74B9P/qRfQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.1.tgz", - "integrity": "sha512-gFpTDHItpmBw73bMVF2VWutdNmDB81wvovmIX8zP+vTu3UItlsrhFR4nOz+EHxu+feCHFZc+plA9Chpc7sD8mQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.2.tgz", + "integrity": "sha512-gqFpO38XtYXQszCwUqt2jUqFHgcIIqf8+evlcGTXr1arFPpLfq2FWbEnXR83BjVRhHRCHhmLrbsoAZzwaJmToQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.1.tgz", - "integrity": "sha512-JsTSY/YZIjRThXFqP0AFgxGRugBsEI70xge914ZaK+bvbuHwy0UvonoE1KmLVNdbU60CXE+LNuA52FdtaToPeA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.2.tgz", + "integrity": "sha512-Pm07+UkQmp+SXuvynjlKlc+/NOHBVve3k6hoPX5Z0mHWUG0XBG0WgbrTJoqgQYytbndt6AaE6vrKKyPE/VvoHw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.1.tgz", - "integrity": "sha512-raSosqY73tphVzi6LxmBkim81oVujKodUvr5ALaTwPDzR+zgCep6FumcFBugd9ZLOV+SlBb2cPwKvovqnIieGA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.2.tgz", + "integrity": "sha512-eG+BtfA+22KmY+UoMBp8iJDTWUoy2Iq0jLahWmHADaQ+HWUMJ/CXYFquNVfk2nQ5SmYrJV+qPC0d+ikf4UXVmQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-form": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.1.tgz", - "integrity": "sha512-sjOUxbgXOZFV6B2eLNw/6Y3ayewl2v24dK4yH4XuvYdPKWA6xAJALBnvUxp2JoskrWn18H+dw6F1UbYrk1AnxQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.2.tgz", + "integrity": "sha512-9iCKrLzmjpUaaL7l3C50UL3iJOYxqEY3aFLx9hRbpFzyQvwMmt/hcKiUeSEVjEtAIxpk5wUTwD7WlxeRve0POA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.1.tgz", - "integrity": "sha512-am0bBYbGzQFbOYNFH/nHHDg6O5oegTApQ9se/UAtxsaTxLqIWOuyMjTyxykcQQkcH5VPqwEOSpPDeMbgT2JkaQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.2.tgz", + "integrity": "sha512-jFmw83oA/ecFOItGc27oHUHa2c6gA0gpzS2qsyYs7pSYEqwUxxe5iWI4otl3Ioi/3GgJwp69qzmVaEYuBgy/Sw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.1.tgz", - "integrity": "sha512-4d09jLFwsXYY8+LgL56R1+mTXzXTO5hIv4bILNaEsppze/KtJLmObmrWyilm1OyDqqhERKWJ1Dn3Zp7QfiySmQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.2.tgz", + "integrity": "sha512-rbdJIO9uvSclc+8lRNcOv3ePp9Aa7wW7pZ6S8aY1bkV03vTAp7syKILNF70NIzxSq1yOKBE8xFXspHxDftdEVw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.1.tgz", - "integrity": "sha512-jZjVhAG1YdzPUikBy39Z30iq4YXfJM/IqdoHD3YV7/YblIzlm0OcF+TnkjoLt1Y2ajY5iZTixBUti/NBpZ1xpQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.2.tgz", + "integrity": "sha512-DKKco6oTG0XpwcYhLscRo22tF1R3Y/kQHn2tDi1T8IBez/AdknQPveYOGoUVC2jENngeNahuXNpWwgNvTpn4Zg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.1.tgz", - "integrity": "sha512-/GT/qLEbibP92LK229ZAuZoA/P79Mm1f7BbZ4DOc6BpeUkd6WfEaoqOoYUaKwcmb/0wU3l124Kr7bPhCar2Smg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.2.tgz", + "integrity": "sha512-Tt9RiNBCsbsZo2uh1saw0V8Z0pIXOAvRr9UgBOdn0GJIYbKDtHV1yALyqcQ//qenwkkPB5a5ly0a3tJHzeej0w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.1.tgz", - "integrity": "sha512-ikB7KbHrFRvtObm92LkEuxX9Ll43rnucw1IcRjnf98cZgcrrWJYKVXw7ggkFpnywYfSk0lT72Yr7NSQH8ErVJA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.2.tgz", + "integrity": "sha512-K93QxSybUhz7Q/UWZVqib2LGxlIQkTGF0fq7yDbGAYnx1OGJ7fKR0BjWok0G5Xz+7bCmjfNqTcb364XECUKpjw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-input": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.1.tgz", - "integrity": "sha512-EWRBV/sF6VQHTUZasgtl6mFuFIe4O5bViwDmUGE6WX8A2VYwDqid7PYdQKVrgUGyLKpWgXhq4VOil29L//uyvA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.2.tgz", + "integrity": "sha512-+Spx/J0ofNL9Rozy05LdKBxDh8It32JzRjt3LCOuBPrN6Tme5HwCmcWtBK2Cn2HQ1zQJgnD+h1KItSyyYPXsnw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.1.tgz", - "integrity": "sha512-jd52PgC64bLVlcc01DK4YJNALt6U6rucb/50J652mWu0eqw8ds6oSTqIz5TWSgCZcgPuEPF/6IY+KOoffa0Ixw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.2.tgz", + "integrity": "sha512-zoFda6gYT1OSJDd9ObTzx4+xEL5/rBrzAZBniWJUQqrPPi3NfYrT+q4hY9c262F/HPbiyWYIH7xxMmr18EfNfw==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.1.tgz", - "integrity": "sha512-mWcQrWmMFBskChV1AtBPLalToiEIdfbIJ6DrXzaaT08H7oWEsV/ypl2XRI18RcnAvGRPnHABppZa6HvrL/oJnA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.2.tgz", + "integrity": "sha512-jhWEm+qeJs4PZLEGNUs9DSTs3VAKe6IS70+i9fQQY0VQQgyDzMtAqf9A+93D6EgT6pLu7HdtfS1yZVIzAteEsg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.1.tgz", - "integrity": "sha512-ErcjBAOLVXDuGJawuqN1WrkimzhgOpGB4EusF0SBfbeZzZv4q+cJZzKz/pNFajdf0NYo4iQZZ0NmKwZ1a+jtOA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.2.tgz", + "integrity": "sha512-MafMMXrAof7YUKQy+hwKfwOADwRQV7xKkDjagyobVsBp2ccCRndZKTOAyBBDTqu+7w/k0SbHd9BvC4xCvVUwrA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.1.tgz", - "integrity": "sha512-udkhE2WqYovWvuBriFDgOyFFHt9TStsTZjQVMtnr0eyeqi0m0zP4zwjv2kx2ug6JX5pGOCjep6Fw0MH+2wujKw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.2.tgz", + "integrity": "sha512-iMvqmDNwU9R0w3D4xRb9nNdoYOiXQJfE+6ojwld84XhfyfMYGIwmiIlCnIzW6g8yFPIDOkF91B+wKgyk5xBlqQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-label": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.1.tgz", - "integrity": "sha512-Bzo0IIa5jz07/fcinzIEGS/Q+vT1U935othOoQVDGi5jVOAJV5c0ciWoWthmg2hxIMZ+XacxL0PwsrEEaC1imA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.2.tgz", + "integrity": "sha512-eYY9e7cPGdwkw3JvM54fPpjn28bkKi3IVkfgDgvVP71vbuoBGCOk4rMP/H2XLElwKFTEM6EDRsXqrth02Ws0SA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.1.tgz", - "integrity": "sha512-BNMZFrn5uwvQMYjArd8PU77TkwySy3m6dDzL2qwxp5dcbqOBA7Mi81qsAGqhyJNXqY1IAGQONZXRE6gvMewF4g==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.2.tgz", + "integrity": "sha512-Vms+NrPH15BhhawaCIdTzC9vY/2oMwu4/3AdEzHznELx3OfZbrt57a+Cpaoq6ojJoynJdGHQ+Kl92cKcv2kk3A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-R1TYp04AmzXf2YzH0IY7T8FXGYgHdR6HoJcLbIFt+AkmWKgI5QZNtBPCsIVwK2FtJQLOoEzcxHgw5SEXpLfzKQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-dGXjMdWzndnWdbh6bNaeR3rP36Oi91l82Hx5mlByAKYVBG/q0J1nDn4gZhfczEx0ItaCq9uB8dfa3WolZKaMTw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.1.tgz", - "integrity": "sha512-4So5Wm7xkIspd67f2pNlWUdomqo1RjLvQWZ+3oa1bs0dCJli52HNzL15RSps4JDwyzi9gS64S2eg3mLZhp3SkQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.2.tgz", + "integrity": "sha512-Djp2Vikv8t7y4yw7hrAveyRe5ASN2ooRCKrN49F2Tn8fKhi5NfZ0NRKMtIU+QZNzLMRA1mjrnxB2mqcD/xGsug==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.1.tgz", - "integrity": "sha512-xEEi631R32i47R69VDhEecYwNFxW9VhvKLpYsi0Ud1lsaTtxBa75BIXL0eYXfAOgBVq9LQoFrfbWizOakUBl5w==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.2.tgz", + "integrity": "sha512-i2YRq6DtxhjjpvhdbG6AVSWGMfY1sxBtylMwyWPMWCY/l0ozQrS8wiE34CEopvQszfnxKABb9nZYM6de3ybbZA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-modal": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.1.tgz", - "integrity": "sha512-qQ02YRI8qvhA+Hdl0amRR9qY6nxJQfuXXRGnKpweGzwoY7l8vcuCFWjxNTBY++r6D2B1WD7elHvEgr8hM/QGPQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.2.tgz", + "integrity": "sha512-mWGhjqb4xk4QJsflXByYy9wvKtUdSVyIQv4064zGSBWH9VgUkSmz3hHrBpjQU2MjCpj6XW96aeEIkg7mY9J0VA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.1.tgz", - "integrity": "sha512-4VGt9KwMcnu4ypHAO3TSWuawiWpTf6Obp1JllrAOVFVPIi037poRlaRAOvMYdUXS/VGSKZwlcPgVS28U3hhfZw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.2.tgz", + "integrity": "sha512-tk5aS8NyugAPl7Dh8g8Igakup2k4eNT5clGvJacRRHIPBOn0p1gV6vKL3NDiVCmHHGLtgZMVnQQN7uSfm/Xj5w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.1.tgz", - "integrity": "sha512-0j/xDxCdDrIZDS2CBlEftQb1sJDuFh8Z6SIcgYV0Tf7Z06D/IEx3rdkQ1tduVSzntKWkpPJSXajbjX4+oEl3rw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.2.tgz", + "integrity": "sha512-ecxT66ZrU/xTRs0vrpPIfr7YpykVtSEh/vwwo9DSkhaaIotPorMrRXi7LixS2mllslHvsETis6STCzsBylqB3w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-w8qMFuwXClXrlCRJozYMCJ5qwIUhdiVlx9OH2ctQopRCxBoy7MU+BIr2Uhe3IFvFVnYSTEQqjMfk6IgC0+zMcA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-KaffpsaFfj/7w2gGziMoYLvcQLCaDFhhCvbOYZE2DyyagIcJMr59LQYbX0ma7cTtUKSaJTk4RB1SWzIEuDu9Mg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.1.tgz", - "integrity": "sha512-Nd53D3MF6DXVs9+7AUhh7Fj827/TOX3QpQRUIWn93/7qKfDrZ3pK2TMWDxy1NKdjoAHCgmQdGI5fwqTt3fNYCQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.2.tgz", + "integrity": "sha512-jfGK/wzXue9s/E026k9ZBThCodrzRbpw/xS8xX9YHq3NvJNjfPTMABuTM2VpW4sPZtkdpkjZKNreJAfpYJoPrA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-qRKhBm3joFo171BV1ri94HVQpjQKXmejRiqr++4IzCZJO8zbtHV4YoHm2F26bbYKMzyzMW2sUnUrI/R6kbQECw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-5K//peXBIAsOh9uAcY/8U+qoRxTaHGwfYl5SYjD/NnfpHXPY8xxXtMDHZcPXnSZLyVsoL2DSroFXgTLSJLsYlg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.1.tgz", - "integrity": "sha512-2vIIjvwibSa0nx/oQo898F7tl4hufseLHQjW3V2fW7ykP7YFTWeXI7JRB8TuSpzF85oEuH3SUIsvNXIzS43Cvg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.2.tgz", + "integrity": "sha512-Qdat4AxQt8neF1sIWvWDGoWkTDa3BHOhc8JUw7QxmcPwvv11Hvg62tAfRN7zbiVcTmpYIPoy6GV+tgAUn7TAIQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.1.tgz", - "integrity": "sha512-/2xiKUtZ/b2KLrcVj+84M3YD6xOpCFmkC8i3fefwr19FvpqgD8Qw5Z4b5iOrcPfe6JCTSNiVrWzdqkDUNuloMQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.2.tgz", + "integrity": "sha512-t0iriFiVPLepRgB4JbCu8YNKBycHHusev3SBGtAV1NJ6uBKVcNgoKk2UCcmy4H9nq+pMAafXm/HX/Oq5F4JfZA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.1.tgz", - "integrity": "sha512-Xem/rxuLnc/H228ojZ1hqNYq2HusDZDQ8LJZGr8WaOWxZxcWW9fOQ/kJdeUt4enZydF/wOnpJf7aexb4bkuTCg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.2.tgz", + "integrity": "sha512-Ji90frchpuqcl/wro/Np4hRhQLa15pvb078UA+zOSpBLHO03Py/Bs6l3BzFYskfOntC3EFSHm6HxFntPjAKFzw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-ref": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-ref": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.1.tgz", - "integrity": "sha512-dQlEjTazYjwavphj/B2lUN+Oo9ODHHY66PTBJPfzmRY92kWrxuzaRqBceXK5fUYyWo4K61haGYB/8Wt0kbmu8g==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.2.tgz", + "integrity": "sha512-aNV5GORnxkPvu0HWKfc7xzRDGYKMzeAXPLjYpcArKKFDfI95GTTNMvR9P0M/8IBJWiGb8oXCjMe1+YsVUCBSfw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.1.tgz", - "integrity": "sha512-L2NCQjNAbgf60euruelI9vfun9dVoAoJecUCRSx8uf4uQTelv42P7rsrUZ6+Xve0DA11T6+7iswFVIZDmAeaqw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.2.tgz", + "integrity": "sha512-WC3aCJjVhDNFF0aSvMf/wZkRzQMmAvkRQzcresG0J20xzGyNh8HiDVTFp24luT7l8vYqAeAl9NlLYbCWZAEyvA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.1.tgz", - "integrity": "sha512-8q5FvoNCG3dbTQbNjmR+INSbqT7wDXbTXA3u/Kt1UIySGgObZd7hOSGfb6UTzcVHTUVxzt29dhdFtiFSDoFu6Q==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.2.tgz", + "integrity": "sha512-UxK8tKD9pYuMU6rYfBcT3zyf/NM6LtnXCN/p9/3CWDhAeHJ4gdf6fFoPzgehZlxHl22BUQ0+bjZ2VF5/4KKtbQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.1.tgz", - "integrity": "sha512-dq14ePyHuBL5Jn3a4gbxklEstYGyC/+Y2g+BIiR51PUa9pE+plXaofLZwkx4gWm5oiVjTTBW2piJFWrlmeuxtQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.2.tgz", + "integrity": "sha512-I9RZAg0AZKLSlmJBu7iL9OHoNg5f+FLdDWv8cO060LRXGftjNdnjaLwlQFL5uxXvXwDI3E4i94XFThiju41fWw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.1.tgz", - "integrity": "sha512-gb2cb/0r7/OESnlJD9ClnO5ZdW67vkA4NoD1XwYl0BH+4edViitKhxlSwg199+MvGJzMjpDW3EUcQ2k+xisWdQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.2.tgz", + "integrity": "sha512-2tNl9S+J17uRSy6eSFJJ47b/zUuemm3UALaBII1+c5rWmUvtvs9ZYljX77VAkuwELKEMgExWjGQKaLQBTbvFMQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.1.tgz", - "integrity": "sha512-HfMKWGTDd2tFWinzLsRbIX+fi3Y0o9NCPKjvw62Eo1Bl6y64zmRjl32jqCinmfXwbozSMZ/MZDnwyfWxH5QJAQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.2.tgz", + "integrity": "sha512-sTrz9xhHrcv9Il27NMMSKTm7A50gpRF9z3vDWiZ0Ottg37oUkGiitgk4XI3AJOSWqDzNJjwuwUk6tAlwc6D5TQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.1.tgz", - "integrity": "sha512-stdCKydwBs41/uQrO6ndmp+fAQR9HFoWWa3zxofkd3TNhKUOt3TmKq2wzZ3B9UcZ0LOzmR2LTcryGpNuo6aofQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.2.tgz", + "integrity": "sha512-Aj2hiU05DFZ7eXab/zAXjitP9bM/TAM7HNVPOAl08BNpkemo0DYTtdFu4VmLIkqw6WtyxIVZ/N5pSJYMYovXYA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-select": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.1.tgz", - "integrity": "sha512-D4i20OKXoqfxWIuXj19XKj6bJJ0UF4L8IWlXzDPdXEdkiDoFJLSpDfJ39bs5xfrzgbr4+5+Pw5ZXCZDEMBaCRw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.2.tgz", + "integrity": "sha512-X17ciKmnrtEut6RTrHvsOSIfwimPc0gT6kQoQFgPcTmF14Zr6edFPd6YKhWtjQNG9rVpmW1HK5bBSyeyiw/P4w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-ISV8nY0TumFiXRePOn6fW7qPOtOsdSZ1Ld9EltT6VhwxADSn06hTwRhiuhACpPriPOmBtFMTc9GH6DMhLsqrNg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-PRoKMCvGTejDg37dm5fGYxO7jFrHECPn20X3fv3bsVqnF5wH7RZ88dBW5oMNoYxoreph4SSQd5AsSQabuCpT4w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.1.tgz", - "integrity": "sha512-pvG5cJ8tTPN51Qc28udzqXDrtWdjfvVxR9qFqGsI7NsS7an3ylLjuzzhuYwuUozbTZU6Nd6NRy4SjELuYNMkbA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.2.tgz", + "integrity": "sha512-i42zskMlDb7tivcFkFo5pXPo6Z+A2Sgu/MTChDzIEw3AK3/V2Lf8jNZtjL9Anjn1ZWg0Mq4GBjR5iv+pkjHZjw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.1.tgz", - "integrity": "sha512-C33jH44RlAjZqSj4hmdy/vBjRBNU3cJbBu1U9YBg+KA7Mrmd/wYmyg89yBIJLfQFnUkWK6oN9jSki+8Y9RqJBg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.2.tgz", + "integrity": "sha512-jIKSrcsmYwQJDyDOSeu49LbqaB7r9xq62cHB5dq2V1SRX9CYQqnX6E6hwcj2KBXwvp6oeAVWg+RzHth/8nR66A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.1.tgz", - "integrity": "sha512-vvAgntDGtj7jQFT1i3vQ7EHtb0u6UUQJJd6LccIzpDAtqo8Xy4aSrqCIRnn3J+NeXMNTrEMPuIdZFLf0e6ZbsA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.2.tgz", + "integrity": "sha512-yy6Ay2q3MW5ntJxmT+bgcCzwfSvsX9/0Fp/W7sX7sSO3gwraWobZuOBCiULiUkMe8No1t7x2HecW4Xr1mHUNXQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.1.tgz", - "integrity": "sha512-g9d1ucYRMyf+mkm2uSjpEPbAdc/VCoOKM2C94ssD8tS+rilMc8Y1qikzLfpq4fZxUyFSToFaHEsfs8IgAPGgtg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.2.tgz", + "integrity": "sha512-hcpxQWHDfPDx8eqWz6O8hHR4C09BOZ/ukYpy5EOJ8I+nwgB6eR39Waml+rOmOoDdMue1B8qPxKUcBODzWomSJg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.1.tgz", - "integrity": "sha512-z1TVu4brfNaZRz5zh1+y/M6/hokhDVm2gSF8iU29bkeN9l1YPrvqIojS+QS+Lr/afWbYi+EBUiS9Ud9bMA6JSg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.2.tgz", + "integrity": "sha512-LdNRWeuE/If+v9N6/MH2rgTWlyBwgjynffmUw+Js29OUJFuCp3docdsB2KlVOsfoDVEyAJtlGbsdAXQvf718VQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.1.tgz", - "integrity": "sha512-khuXk3lprOT0PAFUGIXOqD1d1y8D3Dqz4QVoENVCrlEiWB7ilhNAwjYH6hjENtdC4//PmpClgq2gQGGTSm5PXA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.2.tgz", + "integrity": "sha512-xJIf+T5VkOGEU6A62SINUlkRJjV8rAGp5bS1Buf2z8vxpe50yqLpOm4mXpJXTyvmyybGm0efrUhfX9ESXWWP2g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.1.tgz", - "integrity": "sha512-teb3To70jeLLIkmc1SWMi6sk86CPBzNMnUsmItK5hHfUXhJ8Nds5pdoIKDv4B8p2jvd2vAc+JgEWb+H0s7IkXw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.2.tgz", + "integrity": "sha512-KSJ5JoAijccGBGk233ZSN0a2sz9EDf50oWOE8x10mQvTGRUwwAgEIoxkXN39d0oBgCeY6xrkFS1JL0SC6qD4qg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.1.tgz", - "integrity": "sha512-P2EjmY2+tNeOBuAbsLt+tN2eZ0dfg8/+CBS/XmPysmL1Btb+PYV8Lzi4He7lfx4EY8OtANEVH5r7dO1fu+Fimw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.2.tgz", + "integrity": "sha512-LcUNh/yaKiG5Mli9f95SPcKufKLFFPFz2zaD/iR80kcem2niXfgNPzuhV145XaLpKrebktrDTYKUefsDI6xqrA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-table": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.1.tgz", - "integrity": "sha512-hlhabdzcvNBLckYSx7cw5y7XqZ/LpZMmlprJ+3Qvrg2JrN7l2BWYQHe+iWoJeF6I9LHeLVwx2ba+lvTV8JX6RA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.2.tgz", + "integrity": "sha512-IhHnB5vr7l+8E2Ae/CCy1ZJMH7yWITTfn1zzN+5qcAvQn5M/mm0gCCVFSvHQSRmt9Bj4s9CYSN1rRVp6Nw6gow==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.1.tgz", - "integrity": "sha512-MHzVa/nRtTxOwKggahY8INjVzX1+CM1Pm+T20riV15BefBlNgHNoLSjVOcDamLkn7ZNyZME5DTl0Tlv1wUV2jA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.2.tgz", + "integrity": "sha512-R7kK3j8zF9Em4sB85h//hwXh2tV5h6xuJ1DawqY+am0imdZlr/7rkdv89NTJlP5y8nGGKY1P2lfy3prajxcoqQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.1.tgz", - "integrity": "sha512-UtGOnGIW2mrQPmJqEyBwRdnHPYtO/qco23YGFS2tDCFGNmKpeLpakUnH7u7zp8cjXAyuUw2C/uwrvSypxb2LJQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.2.tgz", + "integrity": "sha512-8P9ejFdgy1LTwJIWAT90DDj1cKFNbnwo/6HiqmFIHL40h43oa5/xtAh8SlwF+VzzT3EyuIS2+kOQBIaUT5CGRA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.1.tgz", - "integrity": "sha512-t78/eFzDg+pYhLMsjJBjCqadYm2y2UVo3EYHfJQkxUNMljPRseOhBhVGcKMsl+ILBAwSwFs1ZEJLATWsL1LEVA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.2.tgz", + "integrity": "sha512-VUbZ9ztkdJpv3bBPCmrrhCjLHiS3MMWVnZT5fnQlbd0v+efD+I09Z4ir8JcdP3lbhP1HbQTVbwx+OyiAHp3pfg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.1.tgz", - "integrity": "sha512-TqiSNcxrdv7PyJPy7hAuf33aa3HksiKzfYNJAmwLyD1PIDFB5Iy5Otme+q5evtHqZLetf2d/Pl/UUVkdg9ySzw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.2.tgz", + "integrity": "sha512-cWm/wUU3WRA5VfQGeLa3nrrmOYmpp78pFWa1QAZUFbCZv/NWEmm1wHLqySb9O9AH5zUz3TG7F1LH75ZXI7dv0g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.1.tgz", - "integrity": "sha512-S4HiRfttbNl3Z98HNZjftTaINJLzRxmFRkSmvAIq+Aua4pvr3X6jwZmuHKnv+jxhVsddFzS0qcmxu+AUCZjE5Q==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.2.tgz", + "integrity": "sha512-3LPWk2mpCsYUOBiqeIdX/DDvQSM324rLMomXgxco+dmI1CvykkSJ2u3HclsmXk567d19h7+rt0k1Ap79him9+g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.1.tgz", - "integrity": "sha512-CdY1TZ2PpYTpbyzoOtRd4L3WJxkw5XKJ0PPyjIOiyBtVCxp3aKk1fDAhBsTqqzhPjADkTHGp4CAsLk/UgtODzw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.2.tgz", + "integrity": "sha512-UagMXNgIoVzk+GyLI7S8nsskMtpADhOqcyO8mNLfppF2RVtZ7xmBUPiZ+9OsaiZFet0IcbPpg1ZtdsuNnHZydw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "node_modules/@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.1.tgz", - "integrity": "sha512-c54NFUKYbGoW2aNXQC8ymT8h0wXDiHBqpJrY+V/x0gCa/kpKrVQ8VrjGAREmLbBZCUhkTjXyLtggNj0yG6fmCA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.2.tgz", + "integrity": "sha512-ypp8pFp3GRXk3WLitMJp7Cg/ducZlVDKQyTqwwHap2q6RfkTwvZcLl59Bf00hgkMeTV1vVzFCMSMqLextPabQQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2" } }, "node_modules/@web/browser-logs": { @@ -22084,780 +22084,780 @@ } }, "@umbraco-ui/uui": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.1.tgz", - "integrity": "sha512-6DexPMgFZ4qm6AwWyd7q6rdkIJCuqf8vVNlVZqGlbaE9OnrWclNBQ+ZGsJrXdY8Ugs1V3u1IjiHd8Gwp4UpBvw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.2.tgz", + "integrity": "sha512-E8CrJYKLBcCnshV+nTVkfkL9I+0sJbBjKMHOVr/jCOj6Dw9mGytq0bmq8EIT0QcqZ6teZZplkwW2JPQauuv5JA==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.1", - "@umbraco-ui/uui-badge": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", - "@umbraco-ui/uui-box": "1.2.0-rc.1", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.1", - "@umbraco-ui/uui-card-media": "1.2.0-rc.1", - "@umbraco-ui/uui-card-user": "1.2.0-rc.1", - "@umbraco-ui/uui-caret": "1.2.0-rc.1", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.1", - "@umbraco-ui/uui-color-area": "1.2.0-rc.1", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.1", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1", - "@umbraco-ui/uui-dialog": "1.2.0-rc.1", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.1", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.1", - "@umbraco-ui/uui-form": "1.2.0-rc.1", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.1", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1", - "@umbraco-ui/uui-input-file": "1.2.0-rc.1", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.1", - "@umbraco-ui/uui-input-password": "1.2.0-rc.1", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.1", - "@umbraco-ui/uui-label": "1.2.0-rc.1", - "@umbraco-ui/uui-loader": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.1", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.1", - "@umbraco-ui/uui-modal": "1.2.0-rc.1", - "@umbraco-ui/uui-pagination": "1.2.0-rc.1", - "@umbraco-ui/uui-popover": "1.2.0-rc.1", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-radio": "1.2.0-rc.1", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-ref": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.1", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1", - "@umbraco-ui/uui-select": "1.2.0-rc.1", - "@umbraco-ui/uui-slider": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.1", - "@umbraco-ui/uui-table": "1.2.0-rc.1", - "@umbraco-ui/uui-tabs": "1.2.0-rc.1", - "@umbraco-ui/uui-tag": "1.2.0-rc.1", - "@umbraco-ui/uui-textarea": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.1", - "@umbraco-ui/uui-toggle": "1.2.0-rc.1" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.2", + "@umbraco-ui/uui-badge": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", + "@umbraco-ui/uui-box": "1.2.0-rc.2", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.2", + "@umbraco-ui/uui-card-media": "1.2.0-rc.2", + "@umbraco-ui/uui-card-user": "1.2.0-rc.2", + "@umbraco-ui/uui-caret": "1.2.0-rc.2", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.2", + "@umbraco-ui/uui-color-area": "1.2.0-rc.2", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.2", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2", + "@umbraco-ui/uui-dialog": "1.2.0-rc.2", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.2", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.2", + "@umbraco-ui/uui-form": "1.2.0-rc.2", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.2", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2", + "@umbraco-ui/uui-input-file": "1.2.0-rc.2", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.2", + "@umbraco-ui/uui-input-password": "1.2.0-rc.2", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.2", + "@umbraco-ui/uui-label": "1.2.0-rc.2", + "@umbraco-ui/uui-loader": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.2", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.2", + "@umbraco-ui/uui-modal": "1.2.0-rc.2", + "@umbraco-ui/uui-pagination": "1.2.0-rc.2", + "@umbraco-ui/uui-popover": "1.2.0-rc.2", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-radio": "1.2.0-rc.2", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-ref": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.2", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2", + "@umbraco-ui/uui-select": "1.2.0-rc.2", + "@umbraco-ui/uui-slider": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.2", + "@umbraco-ui/uui-table": "1.2.0-rc.2", + "@umbraco-ui/uui-tabs": "1.2.0-rc.2", + "@umbraco-ui/uui-tag": "1.2.0-rc.2", + "@umbraco-ui/uui-textarea": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.2", + "@umbraco-ui/uui-toggle": "1.2.0-rc.2" } }, "@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-0RxQAxzcEWLk0LoeMk0K6svRjFGDhoEpndNtKe9uyfJCoYxEVeH0SVMhzlbCGia7kUejS7b/PzLJ69ZrKqSAlA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-JI9n1/gB6cr+7k0+v+HVAnfXCkZIN3UYbC8BhC+YinMsKIIWiLgo/FmgClgHmJ9zPD9EhAVqUa8wViM03npyDg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2" } }, "@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.1.tgz", - "integrity": "sha512-RYmBQ+chBF1SrJwzc6Dpwq3kSRWF//GI0DBpGCXLz7URc04GrbH6E2zL2c6vGR/sYxIVDunVEZ17QODxzv+/Gg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.2.tgz", + "integrity": "sha512-WnVicYfGExAKA7gXHjVk4dcANRrWYnXLlAWiRS9SOVDFUYezbNbX82Nt2rMGxZ5K3TJr+WWxBa0b2AYhz/pWpw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.1.tgz", - "integrity": "sha512-Tlsg7jwKbQzwW+ORSM2T7HfsXsjd6WANa9iLhxNxaCp9K2i8JWtFc9B/2QYti5FShhPPmsz9NKa3IJlzR9g1BA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.2.tgz", + "integrity": "sha512-bEtJzr4tC8oL4KszNxqu3ey1DPg9hZnaEND7p8RDXCknZLpi9flhpU73esvskiCRSJr5CTu0pTwJwOR+Bhwr9Q==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.1.tgz", - "integrity": "sha512-vBnPwAF2Q0brsoSKNXelFSp37iomqqdJkHnxOpv+ezC0XwG9EXsIVZYUGFLlHxJaoSnnXQzB7ITAHmK2wI2toQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.2.tgz", + "integrity": "sha512-Z/zxDmf5WbeXo+3CrB62TOHgg5cEcKNB4vc06NAllypzLBKdBPjRe3FtBtRL8ExwZmXoAlJmlItr6nEnfogKUQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-base": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.1.tgz", - "integrity": "sha512-KY1wU+IYa+Wqlpkk0ggqJefB1vv2kzLlX0CDBgixIIYcPEP/JZ6E54T34c2Dhbz8/66yzCsVYVDCQBtVcr22fw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.2.tgz", + "integrity": "sha512-rGHM+OgldohqNlq5B1BMcpVkZNMu8A0X5uN6cG74qGg+WXqXbX9XlRFxMMuoxCTgtqowGZMn7St+Tu3O8GQAiA==", "requires": { "lit": "^2.3.1" } }, "@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.1.tgz", - "integrity": "sha512-TYj+IiektbvFc+XvRMHPaYw3ccDy0c2eVwYrU96ywgU04STOcEv/vb1NdUDQ8osQLeQgk7lWmXl8G1dK0ESKOw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.2.tgz", + "integrity": "sha512-W3qKtrH1c+nPe0yuz8sySf6hF7rOK9Hg3I2HZ5jRmoKnDmTLiZpXhDDyaYKy1oH5n/WdRlJx9aBaZG5TMmRqpg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-box": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.1.tgz", - "integrity": "sha512-+8rYP6O9OaQY8oCrpYhO11kA/96Gq1F7FyOVbGgPXKDejElTvP4QifI1GLg1vJ8kmgX6AZu0ypHTRGhF5ohjtQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.2.tgz", + "integrity": "sha512-c3rqT0KdCnBqWv8Lbzpetj/MldQSTQ7/7uxTtHcS+Wclkvr+ktKeai45NebiKqDCb6l3scy2Va0TRoJBUNmofA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.1.tgz", - "integrity": "sha512-e7o2re7Rn0Ipu3D2BennKbEM3HOIRFhaTy/0zIG14bp3ktg2vR84GtB8WujonFG9/Mrp22K7IZTfGR0+8n22oA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.2.tgz", + "integrity": "sha512-xX93r/n6dKY1D0wWRx2FKDVtJ2Yja91KPheHExSPuBuwUI0C0hBI02U+AhWjr/6+hUl+Kc0CWOdoYNkuum3RZg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-button": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.1.tgz", - "integrity": "sha512-B9AkSPd/p6+mm7Qmk+wAPhI6XV+HZU1uWIPIfObPgEHorMVUwIEl2UUPgx6Qh0i79+o6QnrW9Ki9sTCfXUP6Dg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.2.tgz", + "integrity": "sha512-IVtsxvRPT8on8vomxCWWRwhJbDl8dDmeUxSFxOPm/LrDZ8Y3sVf5Z248mBVCvX87E9AsBYkd7WX4KRDf3vubFQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.1.tgz", - "integrity": "sha512-IkRtrP0hplhFjIwk6ikxrrWSGycFxEEYWjK0Uha7D666xWJQKj+WBIvHPvRBcAyZXRzjw8ZZpsKUObrHcpVthw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.2.tgz", + "integrity": "sha512-sNxAiZGCbjKE95hiCroBb5DBIiIncpojpS0ARWFHXQAbjPi99qP72cE/+D/LF61NZwDKyyP+GKrzOmzgI4BQMw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.1.tgz", - "integrity": "sha512-klqnbEpIUumSgfTaYobbHKuQESQD81QYllk+ScOoSMJlZQIy8laDRa6c7cYfGBJb+jQl5EvXnYU+B961pSDxLA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.2.tgz", + "integrity": "sha512-lNIFbBuiv113JyS8igqV7VhVppObRa34gpsflcmkCaCN2Khm6XVVsG4h226RNrhnQgjJ0J+r+/QTdaIUKLYX+w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-card": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.1.tgz", - "integrity": "sha512-GVmRf2lAayFhFVu7CtN+kwQFC7l3CP2ct+bpzuN8HXGc4BgyxGxnVpA2+H+7NrUzae5s2E8PNPSRICqDMJQ/ew==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.2.tgz", + "integrity": "sha512-7hlGuunANegwsC6R4N+ILxNMHwXzB6tJzO/enMnrAQA7SkuLDEJB1rHy2TOhUOjEP1hQREM+rc+srX1wT8ZkCw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.1.tgz", - "integrity": "sha512-gHBjmTwkvhblP5N4JucITA1JcC5hjl22G71bCAmXvcjT5KEF94t/gGEP0WYXIhrosT52IPd2S+9u1VcXW4NsBw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.2.tgz", + "integrity": "sha512-RA4VK+XoJQpQmc3sfkw/ZnrMGCn1HDiFowanwrR8SEYOPiMbmGUhRMnnmsa8WSOlNJ4KLpgN8vyaa7cvu93ZuA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2" } }, "@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.1.tgz", - "integrity": "sha512-F9E+XU5y+a6zeS12dCmFT+UrygxY8NufaHU3uyqq/qbNFiKQfzXm+uuUoy1pWe0o4EP/uW14azSZpI70MwIVUw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.2.tgz", + "integrity": "sha512-VDMbhevtLu0ucbhqVf17rKUrRfiNyyzttBFHX7NDUfeXGoqjTb98z6aproP5ujvqsWhECa5Q2iemTbxqVr/b7A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" } }, "@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.1.tgz", - "integrity": "sha512-qxI5YUvwrmHaovQk1AtEYLe7TGaaX3pw9cNgI8joDNs/uvAhYuVXISEM03aooZQ3okveeJwgWeuiYJvXKhjptA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.2.tgz", + "integrity": "sha512-SVh2Rf1b/PL3WamMlSoLtm4bFLj9Ms33wS+94FVoEKikH/b/5OSHJyMnW4h6K/c2yyaMT7/y+tQhoc9oGcq5WQ==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-card": "1.2.0-rc.1" + "@umbraco-ui/uui-avatar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-card": "1.2.0-rc.2" } }, "@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.1.tgz", - "integrity": "sha512-tf0mTznnLsE8HF7HsIrSa6TKowMsqcXMl5duG6xzt+kRnuXNFSHGdtks2S42etR4/d48tTSedXiqK6+8iWxzow==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.2.tgz", + "integrity": "sha512-/19J8MpMLkWT5u4QdGGmf7xqCZ0URB0YUq48rsn5y/efElWi1HG0ptJwGoqrW5hhKuLWEcZG4V1WVJxT4LgwZQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.1.tgz", - "integrity": "sha512-BZRRCyfUhg4VVL7wGx8tF9/HBZPIRfWRlxG8Uk58D9/X5qux13roIldTD+iJYqbhLvBqLcLNNh9K8Tw5W4J50w==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.2.tgz", + "integrity": "sha512-shjQWdFjjRnbXGaZa6BkSxC2Q1jfSh5q6xVjkDrcGToOW94q6PURF6Vm1aodsBVWZGuJUzmTdT41mhG/SjsIPg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.1.tgz", - "integrity": "sha512-eoMSn0YI9smAU3m005ssw3kW95sr6QZJkVzsrq79jcjL6Cb44Gx+Qmo9fEY0MWAPfvazclPW1zBFGlRtdGC2CA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.2.tgz", + "integrity": "sha512-LwdmkwFu+3Ms9xm86sZovTItlWlHgVfHPOMnW+nxUkVMfwv1FjK4n4G7xVJ9nmpa8W4GjMwcENjvR0Qs2/JqqQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.1.tgz", - "integrity": "sha512-A0EooYaoi8Bef6Tm+082rzzVyMAHCK36KLHTn4R7d5vv47b0S0AfcZcIhM9EJtL+wvlF9jLD/ZxpRSrBCjXDAw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.2.tgz", + "integrity": "sha512-Ibn3dRJn/N8E9mRi2EWEFxyL4BwEbraytGNq7jD+iJZ9cIaZTU/zuxYGxNFNBP3EDsdD10iLnyBA9hfyEDxRcQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-H+pyB70V9Wi7n8sqSxghPfeT73KMWh/jyQRlQj1x72AFvCFPBmJBB9biOQTzHujU8PdVzT9yPhPz/+lT3ZFPIg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-aQTTizgH0oNHBFRXXr3tjhH456SRx7TVx797elcA9b0NtSFMuFwWZZI4qqppHTaVkVGZz/0coF973Xu8s5GSGg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.1.tgz", - "integrity": "sha512-a+gDiQA9Ffz9IskcUrpblbTOneUJeTomauM6SdUffWGmBZjWcA4tF7Wk1ipd8cfoRZ3X02P3E0uK17OACuxxqA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.2.tgz", + "integrity": "sha512-A7G0kz/ZEOANizHNek6nsq41XrCbCBE5XTE5Y0afUEbL3RM37yZHsjNFM4H1iJs57plt4Mfb85TQqb3h5HnHJA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.1.tgz", - "integrity": "sha512-gLYCnsVswaT35jTQ4sZypNpcgWWJ5XThNdSE83/ivEyfwKNJwAPUKkbXVO2s2y818PtvJ2QyxX2G8sYzrGs7FQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.2.tgz", + "integrity": "sha512-FskzxqYXCfi3gV0BOfoo5acDJEpiHF2ZIcjYxgrPNtG2phjVZ1Mk1BinfKRRibXqKGU/uhAQxbNIygxW/C9bJA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2" } }, "@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.1.tgz", - "integrity": "sha512-WhhDXnrz+CmO4V7wpJuRyBBpNbuT8tvYuVRop0v6Hmpcwve2YtaKEG2nnjGWWEW1tuyBWTvREeXAi1P3UX7/Rg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.2.tgz", + "integrity": "sha512-8BctuzQ1hoiAkhV4XU6sOICoKWn4EMIesWiQavl44IILuldrJhBc9PJlSkBeaOs8raOXCwWb7yhDf0w68rlY/w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2" } }, "@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.1.tgz", - "integrity": "sha512-OeN1fnZPVq6gupyEMKiu4i1CPTeHcnICrE6I1K7mrrjqipXFrfIQMTWnCaj5VhTDnquhuDFL7AUnpmkd+WIKyQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.2.tgz", + "integrity": "sha512-hOnfyje4XzhPWgDlbfOlaJOIUlMvc0RmwpKmqFynZMo0wZ+zuPMQ34jjPRAkgDa7dHkkAmbhZczLHdPF6I9aFA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-css": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.1.tgz", - "integrity": "sha512-37DRp4JjzwV/4lgL8z4zH+nhu1lNGzh9Z7DL/ForVgqNJGbtHejabw2Zn4WUb6TA0iXJ8x9mVytwM9cThIZlEg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.2.tgz", + "integrity": "sha512-yEHxeUFqRPhxHblR/jjkNLabMFZXZ3aMGVGgehBvsGM01D3yQq9wvFe+qtjr4TGXs7v62DIT4bOtP0f45KfRRg==", "requires": { "lit": "^2.2.2" } }, "@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.1.tgz", - "integrity": "sha512-8NJ5l6dMirRpIHIiC7C4y6CcRZw46KGUBO/F+/5Kjhn2sHUWIomCt589qv73K0uNNXOrgAC1DXUYXq7QzLHGjg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.2.tgz", + "integrity": "sha512-Jw0YfP4WJMaSsdvUGPjOQtFUiAlno2knxt709V2IugdbnfjgSYllBzQGNHWmbBFS1kJtURAcCWJX74B9P/qRfQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.1.tgz", - "integrity": "sha512-gFpTDHItpmBw73bMVF2VWutdNmDB81wvovmIX8zP+vTu3UItlsrhFR4nOz+EHxu+feCHFZc+plA9Chpc7sD8mQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.2.tgz", + "integrity": "sha512-gqFpO38XtYXQszCwUqt2jUqFHgcIIqf8+evlcGTXr1arFPpLfq2FWbEnXR83BjVRhHRCHhmLrbsoAZzwaJmToQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.1.tgz", - "integrity": "sha512-JsTSY/YZIjRThXFqP0AFgxGRugBsEI70xge914ZaK+bvbuHwy0UvonoE1KmLVNdbU60CXE+LNuA52FdtaToPeA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.2.tgz", + "integrity": "sha512-Pm07+UkQmp+SXuvynjlKlc+/NOHBVve3k6hoPX5Z0mHWUG0XBG0WgbrTJoqgQYytbndt6AaE6vrKKyPE/VvoHw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2" } }, "@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.1.tgz", - "integrity": "sha512-raSosqY73tphVzi6LxmBkim81oVujKodUvr5ALaTwPDzR+zgCep6FumcFBugd9ZLOV+SlBb2cPwKvovqnIieGA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.2.tgz", + "integrity": "sha512-eG+BtfA+22KmY+UoMBp8iJDTWUoy2Iq0jLahWmHADaQ+HWUMJ/CXYFquNVfk2nQ5SmYrJV+qPC0d+ikf4UXVmQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" } }, "@umbraco-ui/uui-form": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.1.tgz", - "integrity": "sha512-sjOUxbgXOZFV6B2eLNw/6Y3ayewl2v24dK4yH4XuvYdPKWA6xAJALBnvUxp2JoskrWn18H+dw6F1UbYrk1AnxQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.2.tgz", + "integrity": "sha512-9iCKrLzmjpUaaL7l3C50UL3iJOYxqEY3aFLx9hRbpFzyQvwMmt/hcKiUeSEVjEtAIxpk5wUTwD7WlxeRve0POA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.1.tgz", - "integrity": "sha512-am0bBYbGzQFbOYNFH/nHHDg6O5oegTApQ9se/UAtxsaTxLqIWOuyMjTyxykcQQkcH5VPqwEOSpPDeMbgT2JkaQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.2.tgz", + "integrity": "sha512-jFmw83oA/ecFOItGc27oHUHa2c6gA0gpzS2qsyYs7pSYEqwUxxe5iWI4otl3Ioi/3GgJwp69qzmVaEYuBgy/Sw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2" } }, "@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.1.tgz", - "integrity": "sha512-4d09jLFwsXYY8+LgL56R1+mTXzXTO5hIv4bILNaEsppze/KtJLmObmrWyilm1OyDqqhERKWJ1Dn3Zp7QfiySmQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.2.tgz", + "integrity": "sha512-rbdJIO9uvSclc+8lRNcOv3ePp9Aa7wW7pZ6S8aY1bkV03vTAp7syKILNF70NIzxSq1yOKBE8xFXspHxDftdEVw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.1.tgz", - "integrity": "sha512-jZjVhAG1YdzPUikBy39Z30iq4YXfJM/IqdoHD3YV7/YblIzlm0OcF+TnkjoLt1Y2ajY5iZTixBUti/NBpZ1xpQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.2.tgz", + "integrity": "sha512-DKKco6oTG0XpwcYhLscRo22tF1R3Y/kQHn2tDi1T8IBez/AdknQPveYOGoUVC2jENngeNahuXNpWwgNvTpn4Zg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.1.tgz", - "integrity": "sha512-/GT/qLEbibP92LK229ZAuZoA/P79Mm1f7BbZ4DOc6BpeUkd6WfEaoqOoYUaKwcmb/0wU3l124Kr7bPhCar2Smg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.2.tgz", + "integrity": "sha512-Tt9RiNBCsbsZo2uh1saw0V8Z0pIXOAvRr9UgBOdn0GJIYbKDtHV1yALyqcQ//qenwkkPB5a5ly0a3tJHzeej0w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2" } }, "@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.1.tgz", - "integrity": "sha512-ikB7KbHrFRvtObm92LkEuxX9Ll43rnucw1IcRjnf98cZgcrrWJYKVXw7ggkFpnywYfSk0lT72Yr7NSQH8ErVJA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.2.tgz", + "integrity": "sha512-K93QxSybUhz7Q/UWZVqib2LGxlIQkTGF0fq7yDbGAYnx1OGJ7fKR0BjWok0G5Xz+7bCmjfNqTcb364XECUKpjw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2" } }, "@umbraco-ui/uui-input": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.1.tgz", - "integrity": "sha512-EWRBV/sF6VQHTUZasgtl6mFuFIe4O5bViwDmUGE6WX8A2VYwDqid7PYdQKVrgUGyLKpWgXhq4VOil29L//uyvA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.2.tgz", + "integrity": "sha512-+Spx/J0ofNL9Rozy05LdKBxDh8It32JzRjt3LCOuBPrN6Tme5HwCmcWtBK2Cn2HQ1zQJgnD+h1KItSyyYPXsnw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.1.tgz", - "integrity": "sha512-jd52PgC64bLVlcc01DK4YJNALt6U6rucb/50J652mWu0eqw8ds6oSTqIz5TWSgCZcgPuEPF/6IY+KOoffa0Ixw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.2.tgz", + "integrity": "sha512-zoFda6gYT1OSJDd9ObTzx4+xEL5/rBrzAZBniWJUQqrPPi3NfYrT+q4hY9c262F/HPbiyWYIH7xxMmr18EfNfw==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.1.tgz", - "integrity": "sha512-mWcQrWmMFBskChV1AtBPLalToiEIdfbIJ6DrXzaaT08H7oWEsV/ypl2XRI18RcnAvGRPnHABppZa6HvrL/oJnA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.2.tgz", + "integrity": "sha512-jhWEm+qeJs4PZLEGNUs9DSTs3VAKe6IS70+i9fQQY0VQQgyDzMtAqf9A+93D6EgT6pLu7HdtfS1yZVIzAteEsg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2" } }, "@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.1.tgz", - "integrity": "sha512-ErcjBAOLVXDuGJawuqN1WrkimzhgOpGB4EusF0SBfbeZzZv4q+cJZzKz/pNFajdf0NYo4iQZZ0NmKwZ1a+jtOA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.2.tgz", + "integrity": "sha512-MafMMXrAof7YUKQy+hwKfwOADwRQV7xKkDjagyobVsBp2ccCRndZKTOAyBBDTqu+7w/k0SbHd9BvC4xCvVUwrA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1", - "@umbraco-ui/uui-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-input": "1.2.0-rc.2" } }, "@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.1.tgz", - "integrity": "sha512-udkhE2WqYovWvuBriFDgOyFFHt9TStsTZjQVMtnr0eyeqi0m0zP4zwjv2kx2ug6JX5pGOCjep6Fw0MH+2wujKw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.2.tgz", + "integrity": "sha512-iMvqmDNwU9R0w3D4xRb9nNdoYOiXQJfE+6ojwld84XhfyfMYGIwmiIlCnIzW6g8yFPIDOkF91B+wKgyk5xBlqQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-label": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.1.tgz", - "integrity": "sha512-Bzo0IIa5jz07/fcinzIEGS/Q+vT1U935othOoQVDGi5jVOAJV5c0ciWoWthmg2hxIMZ+XacxL0PwsrEEaC1imA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.2.tgz", + "integrity": "sha512-eYY9e7cPGdwkw3JvM54fPpjn28bkKi3IVkfgDgvVP71vbuoBGCOk4rMP/H2XLElwKFTEM6EDRsXqrth02Ws0SA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.1.tgz", - "integrity": "sha512-BNMZFrn5uwvQMYjArd8PU77TkwySy3m6dDzL2qwxp5dcbqOBA7Mi81qsAGqhyJNXqY1IAGQONZXRE6gvMewF4g==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.2.tgz", + "integrity": "sha512-Vms+NrPH15BhhawaCIdTzC9vY/2oMwu4/3AdEzHznELx3OfZbrt57a+Cpaoq6ojJoynJdGHQ+Kl92cKcv2kk3A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-R1TYp04AmzXf2YzH0IY7T8FXGYgHdR6HoJcLbIFt+AkmWKgI5QZNtBPCsIVwK2FtJQLOoEzcxHgw5SEXpLfzKQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-dGXjMdWzndnWdbh6bNaeR3rP36Oi91l82Hx5mlByAKYVBG/q0J1nDn4gZhfczEx0ItaCq9uB8dfa3WolZKaMTw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.1.tgz", - "integrity": "sha512-4So5Wm7xkIspd67f2pNlWUdomqo1RjLvQWZ+3oa1bs0dCJli52HNzL15RSps4JDwyzi9gS64S2eg3mLZhp3SkQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.2.tgz", + "integrity": "sha512-Djp2Vikv8t7y4yw7hrAveyRe5ASN2ooRCKrN49F2Tn8fKhi5NfZ0NRKMtIU+QZNzLMRA1mjrnxB2mqcD/xGsug==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.1.tgz", - "integrity": "sha512-xEEi631R32i47R69VDhEecYwNFxW9VhvKLpYsi0Ud1lsaTtxBa75BIXL0eYXfAOgBVq9LQoFrfbWizOakUBl5w==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.2.tgz", + "integrity": "sha512-i2YRq6DtxhjjpvhdbG6AVSWGMfY1sxBtylMwyWPMWCY/l0ozQrS8wiE34CEopvQszfnxKABb9nZYM6de3ybbZA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.1", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2" } }, "@umbraco-ui/uui-modal": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.1.tgz", - "integrity": "sha512-qQ02YRI8qvhA+Hdl0amRR9qY6nxJQfuXXRGnKpweGzwoY7l8vcuCFWjxNTBY++r6D2B1WD7elHvEgr8hM/QGPQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.2.tgz", + "integrity": "sha512-mWGhjqb4xk4QJsflXByYy9wvKtUdSVyIQv4064zGSBWH9VgUkSmz3hHrBpjQU2MjCpj6XW96aeEIkg7mY9J0VA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.1.tgz", - "integrity": "sha512-4VGt9KwMcnu4ypHAO3TSWuawiWpTf6Obp1JllrAOVFVPIi037poRlaRAOvMYdUXS/VGSKZwlcPgVS28U3hhfZw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.2.tgz", + "integrity": "sha512-tk5aS8NyugAPl7Dh8g8Igakup2k4eNT5clGvJacRRHIPBOn0p1gV6vKL3NDiVCmHHGLtgZMVnQQN7uSfm/Xj5w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-button-group": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-button-group": "1.2.0-rc.2" } }, "@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.1.tgz", - "integrity": "sha512-0j/xDxCdDrIZDS2CBlEftQb1sJDuFh8Z6SIcgYV0Tf7Z06D/IEx3rdkQ1tduVSzntKWkpPJSXajbjX4+oEl3rw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.2.tgz", + "integrity": "sha512-ecxT66ZrU/xTRs0vrpPIfr7YpykVtSEh/vwwo9DSkhaaIotPorMrRXi7LixS2mllslHvsETis6STCzsBylqB3w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.1.tgz", - "integrity": "sha512-w8qMFuwXClXrlCRJozYMCJ5qwIUhdiVlx9OH2ctQopRCxBoy7MU+BIr2Uhe3IFvFVnYSTEQqjMfk6IgC0+zMcA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.2.tgz", + "integrity": "sha512-KaffpsaFfj/7w2gGziMoYLvcQLCaDFhhCvbOYZE2DyyagIcJMr59LQYbX0ma7cTtUKSaJTk4RB1SWzIEuDu9Mg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.1.tgz", - "integrity": "sha512-Nd53D3MF6DXVs9+7AUhh7Fj827/TOX3QpQRUIWn93/7qKfDrZ3pK2TMWDxy1NKdjoAHCgmQdGI5fwqTt3fNYCQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.2.tgz", + "integrity": "sha512-jfGK/wzXue9s/E026k9ZBThCodrzRbpw/xS8xX9YHq3NvJNjfPTMABuTM2VpW4sPZtkdpkjZKNreJAfpYJoPrA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-qRKhBm3joFo171BV1ri94HVQpjQKXmejRiqr++4IzCZJO8zbtHV4YoHm2F26bbYKMzyzMW2sUnUrI/R6kbQECw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-5K//peXBIAsOh9uAcY/8U+qoRxTaHGwfYl5SYjD/NnfpHXPY8xxXtMDHZcPXnSZLyVsoL2DSroFXgTLSJLsYlg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.1.tgz", - "integrity": "sha512-2vIIjvwibSa0nx/oQo898F7tl4hufseLHQjW3V2fW7ykP7YFTWeXI7JRB8TuSpzF85oEuH3SUIsvNXIzS43Cvg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.2.tgz", + "integrity": "sha512-Qdat4AxQt8neF1sIWvWDGoWkTDa3BHOhc8JUw7QxmcPwvv11Hvg62tAfRN7zbiVcTmpYIPoy6GV+tgAUn7TAIQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.1.tgz", - "integrity": "sha512-/2xiKUtZ/b2KLrcVj+84M3YD6xOpCFmkC8i3fefwr19FvpqgD8Qw5Z4b5iOrcPfe6JCTSNiVrWzdqkDUNuloMQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.2.tgz", + "integrity": "sha512-t0iriFiVPLepRgB4JbCu8YNKBycHHusev3SBGtAV1NJ6uBKVcNgoKk2UCcmy4H9nq+pMAafXm/HX/Oq5F4JfZA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.1.tgz", - "integrity": "sha512-Xem/rxuLnc/H228ojZ1hqNYq2HusDZDQ8LJZGr8WaOWxZxcWW9fOQ/kJdeUt4enZydF/wOnpJf7aexb4bkuTCg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.2.tgz", + "integrity": "sha512-Ji90frchpuqcl/wro/Np4hRhQLa15pvb078UA+zOSpBLHO03Py/Bs6l3BzFYskfOntC3EFSHm6HxFntPjAKFzw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-ref": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-ref": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.1.tgz", - "integrity": "sha512-dQlEjTazYjwavphj/B2lUN+Oo9ODHHY66PTBJPfzmRY92kWrxuzaRqBceXK5fUYyWo4K61haGYB/8Wt0kbmu8g==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.2.tgz", + "integrity": "sha512-aNV5GORnxkPvu0HWKfc7xzRDGYKMzeAXPLjYpcArKKFDfI95GTTNMvR9P0M/8IBJWiGb8oXCjMe1+YsVUCBSfw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.1.tgz", - "integrity": "sha512-L2NCQjNAbgf60euruelI9vfun9dVoAoJecUCRSx8uf4uQTelv42P7rsrUZ6+Xve0DA11T6+7iswFVIZDmAeaqw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.2.tgz", + "integrity": "sha512-WC3aCJjVhDNFF0aSvMf/wZkRzQMmAvkRQzcresG0J20xzGyNh8HiDVTFp24luT7l8vYqAeAl9NlLYbCWZAEyvA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.1.tgz", - "integrity": "sha512-8q5FvoNCG3dbTQbNjmR+INSbqT7wDXbTXA3u/Kt1UIySGgObZd7hOSGfb6UTzcVHTUVxzt29dhdFtiFSDoFu6Q==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.2.tgz", + "integrity": "sha512-UxK8tKD9pYuMU6rYfBcT3zyf/NM6LtnXCN/p9/3CWDhAeHJ4gdf6fFoPzgehZlxHl22BUQ0+bjZ2VF5/4KKtbQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.1.tgz", - "integrity": "sha512-dq14ePyHuBL5Jn3a4gbxklEstYGyC/+Y2g+BIiR51PUa9pE+plXaofLZwkx4gWm5oiVjTTBW2piJFWrlmeuxtQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.2.tgz", + "integrity": "sha512-I9RZAg0AZKLSlmJBu7iL9OHoNg5f+FLdDWv8cO060LRXGftjNdnjaLwlQFL5uxXvXwDI3E4i94XFThiju41fWw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.1.tgz", - "integrity": "sha512-gb2cb/0r7/OESnlJD9ClnO5ZdW67vkA4NoD1XwYl0BH+4edViitKhxlSwg199+MvGJzMjpDW3EUcQ2k+xisWdQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.2.tgz", + "integrity": "sha512-2tNl9S+J17uRSy6eSFJJ47b/zUuemm3UALaBII1+c5rWmUvtvs9ZYljX77VAkuwELKEMgExWjGQKaLQBTbvFMQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.1.tgz", - "integrity": "sha512-HfMKWGTDd2tFWinzLsRbIX+fi3Y0o9NCPKjvw62Eo1Bl6y64zmRjl32jqCinmfXwbozSMZ/MZDnwyfWxH5QJAQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.2.tgz", + "integrity": "sha512-sTrz9xhHrcv9Il27NMMSKTm7A50gpRF9z3vDWiZ0Ottg37oUkGiitgk4XI3AJOSWqDzNJjwuwUk6tAlwc6D5TQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" } }, "@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.1.tgz", - "integrity": "sha512-stdCKydwBs41/uQrO6ndmp+fAQR9HFoWWa3zxofkd3TNhKUOt3TmKq2wzZ3B9UcZ0LOzmR2LTcryGpNuo6aofQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.2.tgz", + "integrity": "sha512-Aj2hiU05DFZ7eXab/zAXjitP9bM/TAM7HNVPOAl08BNpkemo0DYTtdFu4VmLIkqw6WtyxIVZ/N5pSJYMYovXYA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-select": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.1.tgz", - "integrity": "sha512-D4i20OKXoqfxWIuXj19XKj6bJJ0UF4L8IWlXzDPdXEdkiDoFJLSpDfJ39bs5xfrzgbr4+5+Pw5ZXCZDEMBaCRw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.2.tgz", + "integrity": "sha512-X17ciKmnrtEut6RTrHvsOSIfwimPc0gT6kQoQFgPcTmF14Zr6edFPd6YKhWtjQNG9rVpmW1HK5bBSyeyiw/P4w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.1.tgz", - "integrity": "sha512-ISV8nY0TumFiXRePOn6fW7qPOtOsdSZ1Ld9EltT6VhwxADSn06hTwRhiuhACpPriPOmBtFMTc9GH6DMhLsqrNg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.2.tgz", + "integrity": "sha512-PRoKMCvGTejDg37dm5fGYxO7jFrHECPn20X3fv3bsVqnF5wH7RZ88dBW5oMNoYxoreph4SSQd5AsSQabuCpT4w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.1.tgz", - "integrity": "sha512-pvG5cJ8tTPN51Qc28udzqXDrtWdjfvVxR9qFqGsI7NsS7an3ylLjuzzhuYwuUozbTZU6Nd6NRy4SjELuYNMkbA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.2.tgz", + "integrity": "sha512-i42zskMlDb7tivcFkFo5pXPo6Z+A2Sgu/MTChDzIEw3AK3/V2Lf8jNZtjL9Anjn1ZWg0Mq4GBjR5iv+pkjHZjw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.1.tgz", - "integrity": "sha512-C33jH44RlAjZqSj4hmdy/vBjRBNU3cJbBu1U9YBg+KA7Mrmd/wYmyg89yBIJLfQFnUkWK6oN9jSki+8Y9RqJBg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.2.tgz", + "integrity": "sha512-jIKSrcsmYwQJDyDOSeu49LbqaB7r9xq62cHB5dq2V1SRX9CYQqnX6E6hwcj2KBXwvp6oeAVWg+RzHth/8nR66A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.1.tgz", - "integrity": "sha512-vvAgntDGtj7jQFT1i3vQ7EHtb0u6UUQJJd6LccIzpDAtqo8Xy4aSrqCIRnn3J+NeXMNTrEMPuIdZFLf0e6ZbsA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.2.tgz", + "integrity": "sha512-yy6Ay2q3MW5ntJxmT+bgcCzwfSvsX9/0Fp/W7sX7sSO3gwraWobZuOBCiULiUkMe8No1t7x2HecW4Xr1mHUNXQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.1.tgz", - "integrity": "sha512-g9d1ucYRMyf+mkm2uSjpEPbAdc/VCoOKM2C94ssD8tS+rilMc8Y1qikzLfpq4fZxUyFSToFaHEsfs8IgAPGgtg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.2.tgz", + "integrity": "sha512-hcpxQWHDfPDx8eqWz6O8hHR4C09BOZ/ukYpy5EOJ8I+nwgB6eR39Waml+rOmOoDdMue1B8qPxKUcBODzWomSJg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.1.tgz", - "integrity": "sha512-z1TVu4brfNaZRz5zh1+y/M6/hokhDVm2gSF8iU29bkeN9l1YPrvqIojS+QS+Lr/afWbYi+EBUiS9Ud9bMA6JSg==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.2.tgz", + "integrity": "sha512-LdNRWeuE/If+v9N6/MH2rgTWlyBwgjynffmUw+Js29OUJFuCp3docdsB2KlVOsfoDVEyAJtlGbsdAXQvf718VQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.1.tgz", - "integrity": "sha512-khuXk3lprOT0PAFUGIXOqD1d1y8D3Dqz4QVoENVCrlEiWB7ilhNAwjYH6hjENtdC4//PmpClgq2gQGGTSm5PXA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.2.tgz", + "integrity": "sha512-xJIf+T5VkOGEU6A62SINUlkRJjV8rAGp5bS1Buf2z8vxpe50yqLpOm4mXpJXTyvmyybGm0efrUhfX9ESXWWP2g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.1.tgz", - "integrity": "sha512-teb3To70jeLLIkmc1SWMi6sk86CPBzNMnUsmItK5hHfUXhJ8Nds5pdoIKDv4B8p2jvd2vAc+JgEWb+H0s7IkXw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.2.tgz", + "integrity": "sha512-KSJ5JoAijccGBGk233ZSN0a2sz9EDf50oWOE8x10mQvTGRUwwAgEIoxkXN39d0oBgCeY6xrkFS1JL0SC6qD4qg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.1.tgz", - "integrity": "sha512-P2EjmY2+tNeOBuAbsLt+tN2eZ0dfg8/+CBS/XmPysmL1Btb+PYV8Lzi4He7lfx4EY8OtANEVH5r7dO1fu+Fimw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.2.tgz", + "integrity": "sha512-LcUNh/yaKiG5Mli9f95SPcKufKLFFPFz2zaD/iR80kcem2niXfgNPzuhV145XaLpKrebktrDTYKUefsDI6xqrA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-table": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.1.tgz", - "integrity": "sha512-hlhabdzcvNBLckYSx7cw5y7XqZ/LpZMmlprJ+3Qvrg2JrN7l2BWYQHe+iWoJeF6I9LHeLVwx2ba+lvTV8JX6RA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.2.tgz", + "integrity": "sha512-IhHnB5vr7l+8E2Ae/CCy1ZJMH7yWITTfn1zzN+5qcAvQn5M/mm0gCCVFSvHQSRmt9Bj4s9CYSN1rRVp6Nw6gow==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.1.tgz", - "integrity": "sha512-MHzVa/nRtTxOwKggahY8INjVzX1+CM1Pm+T20riV15BefBlNgHNoLSjVOcDamLkn7ZNyZME5DTl0Tlv1wUV2jA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.2.tgz", + "integrity": "sha512-R7kK3j8zF9Em4sB85h//hwXh2tV5h6xuJ1DawqY+am0imdZlr/7rkdv89NTJlP5y8nGGKY1P2lfy3prajxcoqQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.1.tgz", - "integrity": "sha512-UtGOnGIW2mrQPmJqEyBwRdnHPYtO/qco23YGFS2tDCFGNmKpeLpakUnH7u7zp8cjXAyuUw2C/uwrvSypxb2LJQ==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.2.tgz", + "integrity": "sha512-8P9ejFdgy1LTwJIWAT90DDj1cKFNbnwo/6HiqmFIHL40h43oa5/xtAh8SlwF+VzzT3EyuIS2+kOQBIaUT5CGRA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.1.tgz", - "integrity": "sha512-t78/eFzDg+pYhLMsjJBjCqadYm2y2UVo3EYHfJQkxUNMljPRseOhBhVGcKMsl+ILBAwSwFs1ZEJLATWsL1LEVA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.2.tgz", + "integrity": "sha512-VUbZ9ztkdJpv3bBPCmrrhCjLHiS3MMWVnZT5fnQlbd0v+efD+I09Z4ir8JcdP3lbhP1HbQTVbwx+OyiAHp3pfg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2" } }, "@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.1.tgz", - "integrity": "sha512-TqiSNcxrdv7PyJPy7hAuf33aa3HksiKzfYNJAmwLyD1PIDFB5Iy5Otme+q5evtHqZLetf2d/Pl/UUVkdg9ySzw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.2.tgz", + "integrity": "sha512-cWm/wUU3WRA5VfQGeLa3nrrmOYmpp78pFWa1QAZUFbCZv/NWEmm1wHLqySb9O9AH5zUz3TG7F1LH75ZXI7dv0g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-button": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1", - "@umbraco-ui/uui-icon": "1.2.0-rc.1", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-button": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2", + "@umbraco-ui/uui-icon": "1.2.0-rc.2", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" } }, "@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.1.tgz", - "integrity": "sha512-S4HiRfttbNl3Z98HNZjftTaINJLzRxmFRkSmvAIq+Aua4pvr3X6jwZmuHKnv+jxhVsddFzS0qcmxu+AUCZjE5Q==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.2.tgz", + "integrity": "sha512-3LPWk2mpCsYUOBiqeIdX/DDvQSM324rLMomXgxco+dmI1CvykkSJ2u3HclsmXk567d19h7+rt0k1Ap79him9+g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2" } }, "@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.1.tgz", - "integrity": "sha512-CdY1TZ2PpYTpbyzoOtRd4L3WJxkw5XKJ0PPyjIOiyBtVCxp3aKk1fDAhBsTqqzhPjADkTHGp4CAsLk/UgtODzw==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.2.tgz", + "integrity": "sha512-UagMXNgIoVzk+GyLI7S8nsskMtpADhOqcyO8mNLfppF2RVtZ7xmBUPiZ+9OsaiZFet0IcbPpg1ZtdsuNnHZydw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-css": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-css": "1.2.0-rc.2" } }, "@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.1", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.1.tgz", - "integrity": "sha512-c54NFUKYbGoW2aNXQC8ymT8h0wXDiHBqpJrY+V/x0gCa/kpKrVQ8VrjGAREmLbBZCUhkTjXyLtggNj0yG6fmCA==", + "version": "1.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.2.tgz", + "integrity": "sha512-ypp8pFp3GRXk3WLitMJp7Cg/ducZlVDKQyTqwwHap2q6RfkTwvZcLl59Bf00hgkMeTV1vVzFCMSMqLextPabQQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.1", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.1" + "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2" } }, "@web/browser-logs": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 0cbcf183a0..efb3ce4bf1 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -60,7 +60,7 @@ "npm": ">=9.5 < 10" }, "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.1", + "@umbraco-ui/uui": "^1.2.0-rc.2", "@umbraco-ui/uui-css": "^1.2.0-rc.1", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", From bd6e27d941bb8649968d55b94301552ec1863a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 28 Mar 2023 14:11:31 +1300 Subject: [PATCH 435/550] fix z-index on modal container --- src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts | 3 +++ 1 file changed, 3 insertions(+) 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 9deb5efb8e..c4590ec1ee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/backoffice.element.ts @@ -50,6 +50,9 @@ export class UmbBackofficeElement extends UmbLitElement { font-size: 14px; box-sizing: border-box; } + umb-backoffice-modal-container { + z-index: 1000; + } `, ]; From dab3a2b80f12ab1060c38d71d4ef7ab00063fc7e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 28 Mar 2023 08:41:28 +0200 Subject: [PATCH 436/550] upgrade uui-css to 1.2.0-rc.2 --- src/Umbraco.Web.UI.Client/package-lock.json | 2 +- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files 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 2dbd269ebf..77a30f411a 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@umbraco-ui/uui": "^1.2.0-rc.2", - "@umbraco-ui/uui-css": "^1.2.0-rc.1", + "@umbraco-ui/uui-css": "^1.2.0-rc.2", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index efb3ce4bf1..b09fa44cd1 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@umbraco-ui/uui": "^1.2.0-rc.2", - "@umbraco-ui/uui-css": "^1.2.0-rc.1", + "@umbraco-ui/uui-css": "^1.2.0-rc.2", "element-internals-polyfill": "^1.1.19", "lit": "^2.6.1", "lodash-es": "4.17.21", From 6d8dd62b1a79158d1184a3d37fc13cb7f4ed9baa Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 28 Mar 2023 08:47:17 +0200 Subject: [PATCH 437/550] delete custom builds of uui-modal --- .../umbraco-ui-uui-modal-0.0.0.tgz | Bin 2570 -> 0 bytes .../umbraco-ui-uui-modal-container-0.0.0.tgz | Bin 2406 -> 0 bytes .../umbraco-ui-uui-modal-dialog-0.0.0.tgz | Bin 1739 -> 0 bytes .../umbraco-ui-uui-modal-sidebar-0.0.0.tgz | Bin 2825 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-0.0.0.tgz delete mode 100644 src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-container-0.0.0.tgz delete mode 100644 src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-dialog-0.0.0.tgz delete mode 100644 src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-sidebar-0.0.0.tgz diff --git a/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-0.0.0.tgz b/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-0.0.0.tgz deleted file mode 100644 index 59e52f8bd66b845daf497f2ac5b034421cd2e9ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2570 zcmV+l3ib6LiwFP!00002|Lq!SZyUEVpBM0dm~LKcDUeo@uK@CqHjaZDNM3^^MnAYl zMD0=%$+hD+`tNUe>?yg9i`4Ik*9IgFhcm;u$z@8yb26p9n2mcZiRh=`qkQy@ zpMJl;v$X}Q;Cg8L=~H;LxxLdL40d+{MKt6{o(qW{iIcnwBH+UZ6!Q(D!#?~r z{zyX=Sh?Rg61xs|yGU`u1++9- zh7>Ehh-oraGw8ygQ-XI9>tG-H_}T5YaW(*(RAjG_IAv!R1xk@yPQC)GRa>jY(*l+V z4%UV*U);DBTeCH^e)=h&Wq1{aTS-{Y6jWs*DM&4Ly_hOEIXQmKBNFF+xeuYS4E>~N z63L3E89RhLL8r_@EnwR~0Az-?ZUsSrj5CcX4L<-iV=@S1E?F`~!V?lpS{eC(5>5n} zQ|$+**T7Q}GIccszwg7M169ZXA!pUOJk^1rXI?v9N0|+lA#7~-I}SKuag5W)T+RF( zMu`>(p)vY35d}PzG>f=fEe;QdW6a$V>eM$F3(bF_U55#&PSOb7IBIfH}X64Kc3K#S^uB4o@`H6%!d z`Fueq1Wlh)t=NaUsdivdXDd^p!kJ;(O6VmVVnXM0``gE5B)&G)I2(^+Dlx)DMv+82 zSC(GQbEn6`WwaL?@+4t%W3@73w3k){C@|2}HANUWZ8cn}Q}>VdDoSXRgvl9=0yU#a zt5s8312rWXs;8zIy{Z|D=*m_7aMxu8X-uxPqrJt|;2OJw8?jmiduOyN0@aud ztFyme3s`9Gq60%%&^f=LWkd)hLd79ROC#Z2I9Ky@i!>V5QCH%?o?XeoKdv2@8r8*K z&y9nlhBcv4K{3LvVq4O5ph`K)>yw#Ts2wAM3nV^-geP>jfToz?O?m2T> zig*|+w#t&RD~0HT8+2K=2difF|KgHt{vCPP>@=F? zmi8yp(6@Xmf#3GdI?WCab3a#HU8NX7IUdGwdo{g$XVAI^J!J^bIgcqxIzW^XY>f8B zPRM0QU-y%f7~A|JBySU-oT(*PZZ=oRRNE-Ee7!50>sc$8i&Q=O$!&L<^f5aBFR}rn% zK^@7y*+ZGkP#<(nmL50TJHHrQxNm2r*u|#jc1dgzT`kDryLWHRCie8~Mqy5qERN4A z(scg9$_v%~{kpNm@OHhJ{nnjUMem62deS>i(ke7#Iw^)$38aeoPI<|YNqzXMb&cD54D*tM_C>_uyLt!Sf$GA>D#|}=8!7QMpY6TS3 z>=L-RLTsBficC2znPei?keO1c9QJxRGRwvR(&{-a^&F$%w7Ygih(25B z%lb=Y@;GC0q_LB94kAl{BqYB2O!Yaok|A`v1_M7QT!aQJcpPUbbVK(IZIw*ew7LpY zbdhMCf&m)}Y%a(|?`0JjCE#4BXajE4tFHc5Ku!LVj=P1Acin&hL#6DwkTcKJOEd`F zq+Y9>G#kfE&JN9TN)?eXq|%t%AcWy}atbXo0{P#5nOY-4*Wlqz;T~FnqU# z_rI+Ezdicp#p|PB9{mkGZrT6!HZ!@ydO?6{hhV)7-n<*wujL; zk^$pA9P3^5R`v+bVm{@E`t)f3$BoUw^NpRYmu=6>E3w%wHH&fJd5<5%af14fV{=%o z0gvJ69oQGd((^{6(PugHbW&!plCwtfykq-DSBe@{9 z3goY&*H_YC-?bcmpV0(j&d>Exyy6h!mPlaW7@niX$<7FL@o}#z3I3bYE37F|j|=l^ z*Sx>f4HcxB(8tKK0}(2U|Cxjb z-u&HX{_ppSmq>!%(sAAT?%G3A_%7mq`K0#ShgL`ZF3$BP_!z1#xr`f8ky0Nup zU;Qg=)@oqrbu z*oD5#Qruo?z{}e@%>j37XGxG-E>R8PHA(ldDb>B>7f7&K!|nMOkXQ3Dk2{bh=Lx?| z4%$O=VbGDU-%P3v)o*^(hTPSgXG1V|80v$i#PvHEHy|}`RNR2oxP(wMU{|-BXvOz* zo??$rtts~g2aZa9*Ws%tE!Mo;&89IQ<9@<9k$Gu9At5#1;QZh{nf?>)h}zH5^s`=e g$it?aI=L2x(?fN5cpjdI=l}WnH+L%?TmUiv0EVLva{vGU diff --git a/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-container-0.0.0.tgz b/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-container-0.0.0.tgz deleted file mode 100644 index f5639e95526418bde66b0cb2b7dc45d9e36a65f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 zcmV-s37PgEiwFP!00002|Lq!UbK1DJpFNZRpwiuq>41Se=nOPTyJ>cAW}5BJrkVYa zWrDB;R%0w*Nluz=`R{x5@B=U;y*JH$4DJIsZylX;bR;>!{xzPERzycF8VBUF_enf^ zk{F$pY(C=<5=;xkafxPZ6>R_6wDbae&B{>E8? z4$z0uC*n)bSg&A&%e%fMn-KZoHdfGgMEC`D0aw%t$7upe`nhfupQ5bZHI_L=9FdCpX>KWM4l3{L1WF5%N&pt>T zGmcy(mV(5RFCr38WQdxm(%ff=9hYpM6LCogh6EKRyVky(%AFgl zp;HDH1Qu3DU%y(sGFz$DvVQt0I609ik8@G8z7r9NE-p^bSb(Er7E28C z%(E~(K)#+L@>!BN5T(G=6XLTthWRGJF^-}UR64h=;RuNorrxW-_cdCERCqWDPHsTd zdkAy_O5Ga7OI&Lh>=lc(O&H z6YPhsYY7{O=7px@YW(?Jf+~=@*Pp}ac>66C;iAG)@lfR=mv98Xdr&>*q$EawyHY|E zicS-qVHtWL$!#~#u7W{Dcv+Z`$+QAIL1f8Q0hYL_J=_!_r|~uT%m}2hOF>{A+ z5N-APgJmhx%aYXZ2HLL_W(FJKJHpqw3kH^Pr~tC`Fn@ch(oyt$KAB2JLPEK@wppc& z{d;7D@VO{sR!#_;?|I`n*qyG1Gh9CU!Ww{#64qvwv$>Gq5gk@ya656fyt0pTk2!C!y@2PP_eM0llSx3>Se3R7}+`^i?Ek)CYiiTNCVYOJi!F-)E{Xm-^Y7$QbU@mpSW%aNY<0+}lC2A4*jf^OPwO0{& zYRmZNpB1#84LDDV5}VnWQBvqF>z>nZ%6HDIaVoyAED{xi%vOKowdpST~Q5u_45j9XGjc@IBuW>xubKOZ&k zAC~_+JKf#o^Pm0BCjXx-|Fg(jJngAU>~gVad+^6VBkGe_Xeno>9}NsP_qU7(MHbgC zjC>o}wPU^Lpls2}z<-btbmY^7#bxNlY4#0v`Po;U3MgMVRp1Y_?!X@ESWB&9ba9Fn z232S>MsuRuG{*0M&*W#Gdy_(O$|D5{rA$Px)dEbIjy#anvOa8CmEOgvSKLl7x&VLqcEv3!L<-e07c~XZc|p$4d(FT>e;SchSmgq-hzzo_oqNa% z(J<3eWIdk3Ry7%hc1)vEwXZ1^FJHD^78=UHPdTVkU?~O?wUdZ_vyxZ`Rvl?7<2ovs zo7{(p&i!R#sKh)?~C{0k)x8KyM z)0j@mqlgIB(=snXgS7-Y<#?=iAh1VOP5@q1@&;PzR}gLuRN`;RsF_E5(;_(1Qi^pL zG_zFx0uzE(xz{)+Nk zz|FFhPA8rSDTxB%QPu)n>!x*2w{R4(2|H#H;|D+P>~?F)hfcbse`){Xn>#n^M4 z7cbCh46_qO`j$xnUZ9h6WUh~d;|zzxzeMP$QcTf3)+l1fIW;#=G9;*cfrZ!@4PRGq z9S+eA#XYU+6TZP_J;*Mww(rro-8WkQ2uX}0#;$2RL6V_}Ko12;r|lT7+WilaTAAzx z2Zp~$EwZrS1TDt(&5*wJP`wyRQVv}U5e*c8XW2TV*Bv*kxb#~wESQZ80mIOW)ajg4 z>B84lG7hzfP5J$=ssHm$-BZ?oKrY|^zuMW<|0j9uA>>P&`d(|zA77$N66| z^-b~_Pm_rJTUFt{^WVMhV*YnKyL+4bf717V%J1xaBrxY#5_5Vw|Mt$71KZ9m2P(!J zTNcooxKV_yt?a5JAkfY5tfyJ-Lkv&l+Z`p3t!_g0uiCY;{D7!eMFclx?)8E(&57ZBzM*aEY=%HD$0UUv?GVz%XEW1d88 zgrjUAG?s*qu}{i|eZ-Sr@syn5BqLML_8RwY_f~q*+Befi{LA^Dp9_4y{O|0xJInds zd9}&^|4{xf=KIpd;X(Ta6;YMk^A{KQY&z^+NG9wdrRUp9j+OIhCC3zpqaIqi46+2- z?M{hg@hYdNUW;$1_4F%33-ze{(%1@=eOYT6Tf8%|RL@EyZK~ZJ4EHHZTxDsSE8zE) Yw#~D7HqYkSJZql60jF2<$N(|`0L`nU&;S4c diff --git a/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-dialog-0.0.0.tgz b/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-dialog-0.0.0.tgz deleted file mode 100644 index 1b6f3b50bbfb26357e299a350ad587f6e30fb659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1739 zcmV;+1~mB}iwFP!00002|LqxTZ`(Gop9SPU+*GWw3tO`D8ek`Bw=~59EZfjF*oVxR zX^FPk(xO08ZnG}`eMgFV_?5O>n_-*TCQ|OrBYAf`r6hVoCN$)16tX0y?}FFr!Dk+w zPUq<00M@~A?Co{B@L>P&sMGBp9d(cnUk;9r@cG~#My528Xv$}pBn~K_|B}IGsgN4p zLrljkq34{=Xrkd3#!}2+_h~j8NfL>6#=&3#NL; zOA(yuI>FV|#ifV||B$AcAu_6v*_#syzx{?L{wzfbC-BqgHH~zT+iYM|>YKhJn^67J z+r&VhQ599x72Hr8oMfpMvR{gi1Wt&aaiSEmH5@=loDyylL9}aKKHfpV` zM~@0FtE*hNwSo<&q&kyHDeAWGajMIm@{AEKCdGa^fyk~8eWz&>tCjuq-pa#BCeK8I zB)ZYGuu_ZJoWtXo%}8gp)q1#7hjO5bp5Hpey61wpW+-Qin^#Dg$& zuI^2R(v9ng3&oPjpxN30huG?J=9(c=5;1+#!{seubEepcaSNWZIHpO3O9jI@%Ql^( zF{%fNNN9n*wa=k9*f2Mo)Y2Jfm`N_gg@#`q&310A-}DBp^-G0I>(O^h$9_>I`uV|j z{F5Vf`9H!uC}wS%FO0$}KqU8*|GNkK`^))%f8VCkZT|n_!^9eYPNl*;?)SjQ14|_{ zdw_7?1S(&Xi9*b^4If2l@)I(nhJGa;6v53;iJlsYz$Ecse_bXF+*S*;s(6Ujl8rJ= zD~)xn3z}WnESW7*-=r2f5`t5bEFv+K5lk=!KPFsJzeL`;w?SonUM8@Qu_O=r>kT=3 z`SOKLYuAH~##|>E=PmPVP&29Z7p7nO@5?(VPca{M4!SYl(UE?%8IzW zc$LGj#(yhhTtx`~Di`iTj(=t=4k#*)0{jadK_u|DnAD+H7scBTOc$@VpoF}lG-ufc zCk$fw#m<@Ow8GT|)TdMF$jy~B#b}9_n;T@x!$uh^CzZ-fas!!aovL0KB4(P60+bax z*M&}BaCH&X_+lpU3Ytsz-C0wsKK5Mn@<*9Xy6-<-Ysi$!FdLPkW`reW9xi)4`K(cS z#_1-knZH^_#zn#|-Q$E6~aiyUSd|iUp3aqVu zYA%0ClxJ?|z;$g5V_etl;kJx$BbWZlcTbIZlrbI~>Li_k%n~38;WxiibI;W(f_B?d z;1e(Ikp)Y^d6q&ua&Nd+$(T**v#{A0g)U04U@L*mBpKt4P-(DEKwhYM12+2AlmWSc zM*LekYL{ER?GO^Il&S(l%_7s!aY0~{dvoWc*@!bWJ+srPTtuRXD!bg4AgUOqVn$Qk z?DhSND-gH^v77jbDHTsbWzNT%Gx7gO#Q$*qe{ufpv&-{f7JmU9AGrT@_gC_N=Wu`9 z|Gk&-5S9;|=Y4gJk#5i^jw_o@0ySln$0}eVL|ixz?@bv`cae9V z^^`)rX$@iw!{cR^(;>_m=~*SO$(-cLpy*!j-lc7~pX>W&N)zBhyurH{XaO8=N)nHl zwP3im4>kmokX&Pv;D0c=74u9S3TfNHw%chcFGw?ql?qiYh|!heE^{|_-R^3+FUZ@^ab!{GtS?SBe%IZxS4~_k&7!=9R6SP|Hhj*s-wbNa_Wq9h=DYAEc!8m9 z${FN(MQ172nlxuU?w%s=?T%L%JKC_!%;+Ua3o`Z+sWZ>`#GNZO9=*p7P|e*)ZtG3x**008gbZaM$} diff --git a/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-sidebar-0.0.0.tgz b/src/Umbraco.Web.UI.Client/umbraco-ui-uui-modal-sidebar-0.0.0.tgz deleted file mode 100644 index a49b019951bc923c13f5608aa11daac4491d1ab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2825 zcmV+k3-zv=J?yAWeAk}nhp5G3cd@(JT|8pyU(+#b3qEY~C}6kl zJN4uvRqdJivpOy>IaI$s;_ON@)V3e1<{7LyFJe z$-~1~CMo$q0yg3idnH)NqLj?YD3KxA`8ErO3H4I2$dAK!%uii2!k;XOzC|0e^v9bBq2Dp(&#~ul#KyLS$H1gtkk?$(>NJ3%@$& z0UOdJcdsMjYXh;{ltqDBazC_*FC%c}%tv7x8bXN5!0vU|bwP*>F_q>`NIK!lRs1~z z(#|Lo!YRS8CcynQ51Gu6bp*}jRvPh8&zMr%3{A)rm0rXFxKmKS@+UMJv%tC@XR0ET z`w()8VVtQ+-RXGV^u}ot$8#DvN0hS|E1F_S{JG^(+v~@uSZcr2>xGxk6_wrz<_28F zg5IIVA{jBOv4?avYm)B1SBR`8^5y}N3*Nq9G|9zU#&0|(u3Ci{YhY5#W$uMV zOT5vW2!zH+!PE?a+6}n5yupZaBEvWXyPYFHLn7c*$Z^9hI`k`afO^7jQ7`ObV+WEj=n*xn!J1L~21 zeiz_?|EmA_12Ud924Jp-aZ{-=HR5Hz#8bv76mrbf7-S~7^w0@%(jzWJk2ph_PMjRZ zsN&HWpaP;hO&l{GL)?Z6)E&%_kSkWla3sZ)E&FO^dX{YC8aS&LifQKZHr8oZMv!Z` znqb7Na55R-iuQ}|^(&h5E4$N?nF{69a77oaW+O8Wrwm#jY)Yz`6%)%2??gy7j|rvt z;bH7BK?K}%!lG3Z9fnHL@6whnS!Kfbc#`%AjPt9xCU1CCHicji4{hQaOhWp|Tz)GK+$iFNI8cX!&}pg~g2qv{aUisLz_uMx#;5e6dvAcz(iQ z;_xXe^S*6ap?oU*I!cBq{=kcG8&$N`BO1!vmYPtAM`d{oq!q9@owRnF9(0OtNf-Ym z;~}kkP5t9`{@Nf-@WlgYI9P1#?l#I!i1Xf#V;&4)E{BSknF^KKf}XQTnVM#4u$7is z-my24Dy_ePR7g#|2m?uYbbYkr?OZmNjl4p0du7GV9;Dm(RJt!Vquc#dx}EN3gm*ug z@IjTZeQ7_3`OOkWDEy^2l7tdoFff4ohzurP3Ka-3>~heM`7~3E+`un|A}f`q2T&r+ z7G82R(%+%3W-KDl+iQn{UDsK(lxa$d=F?PU=yo=s+uGZNa(5HTFE*jPy9wn_^%z5X zZzIwNn~>h$gml+i=Z>x7A?K(6esx|36kY^)RtzlFk9M$7U%`I1BIxTToX z(K45y{1q~LRWe1Uo0iaRiQ6MXA^q$AuStJ8gYfsd<{HWb z(s~O(Rq+QksO}cl$aT!m`2xNUMdDq|dgL6+)o6_CyODrpH#$Mapm3;NHrFiaT%eIk z>HfRX9m&OHJEuNu2u*v?qs3gyc0WB(_%`+t6> zQW>^vbjF<&89mDWpV#&F_ZIj6c6aqw+IIi%i$53|oGD8b6lxAEqQJ3P!qEq)&`T^Q zrDFvxW+j+M5+{On5aKV-oP1s8#1vL(fa2mV-rKiJn67m;H&ydaG=+dLgf;S zx0(Fq7K{qmvM?*pmk?q8(@dm@`&RGbymg$Seb&66uMcY+2wJOI52X~0Mr+xPs8FoL z%f4OC)mCif{2C1u`ulGx$Sk>5b3Qpg|5@+cy}4Y=@eQt5oA~eYH(I5ljxTFBHpRgC zu+6}_(PpD!8=|)`q@|m7f))CT;T5|>m$liG?em9w^89Z#+m`6nC!cey%);ZB7XTBkj zrwiv7HYC0bV;Pm97pM8#4?N9ZbqXUkhhgy2(HNq(IjpmCTDIiklvD;Z=VAm-nBIAl z$sP1EfwIUB<2lnT5eS*2X{>tfHndE#p$oLyR(oyB(7iZyOZ@_#FyB&l>~vEr)LgRx z+ZkrM@cOVh+csA!g9KcV3Mr3@Qmi=VH^T<*nPBT$Q2}bPG001{LO+&>hMA?rtK6); z98z6e7~ByTr8>t!7SErzpU*jzf$s{?N`fW($GF`b`KE@l3S4!Rjly-%ja!KizFg?b z_)n?xFykUX>?jUNl0}3@RNTF1czT&CpR`&U13pJG@ijP+LS!*%`SuNL6^;0~JPKWK z0MRN14b~KRn9vcf*;AsG0DVbG8)U6svGOqjBKaFOY!$xVvJDB*ROU4}aF$v6Js55?@&pgLj=t*dcK+Ty*!#XwtL2$kuMgKHW4Bg&_KciHU>70u z0VV>Tkyq!$+yhdz+F&qvuO>AN#+=+M38L0&r{)3?o;Q>)E)h8*gTtjh#{)9uw5Qp; zqf=_KL4FHq=U#q0eZ%pW35$r3@){PLc>W<^d6>XN(=rTJ?-~vW<|KPzg~G4iBZX8G zv}L02`RH3LSbvc?OQ2f8qv!ziDen__{U+soSFaWa1QxhZFaXU2Pi$)|6nD7X|5$h5 z2HOAe_+KsV9y9)X-u}VT`tO_F?f&nhJoX^txeWzwd+j#uPXFn48vmi^|N0&J-xd=d zsQ-4q@fPR*{{H^<{`ceF|Na&CvY+P1paFxL1@DJoxw7JDfgBNggiSt@{7@WU%{e>1 z=>vM82y5G?H3&!F=J!OFoD!ScORP=Nw5HHmd-?aNxmTM)HRzkFRP}6?S$70aorYUF zujpHJ7*TK4Fl~FB@F`6hDPK8VY$`726%8_Fe#(M}?gID78I2E>J~aouMPMCR%6}y4 zE*whHBw2JF$(!i7(bM+^EqQa@w*oTPX)B;yI=rs2Bv Date: Tue, 28 Mar 2023 10:22:01 +0200 Subject: [PATCH 438/550] todo --- .../input-template-picker/input-template-picker.element.ts | 4 ++-- .../shared/modals/template/template-modal.element.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index 90ae4e7cfb..7eac9a58c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -137,7 +137,6 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen } #openPicker() { - //TODO: Tree-picker modal? const modalHandler = this._modalContext?.open(UMB_TEMPLATE_PICKER_MODAL_TOKEN, { multiple: true, selection: [...this.allowedKeys], @@ -145,6 +144,7 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen modalHandler?.onSubmit().then((data) => { if (!data.selection) return; + //TODO: a better way to do this? this.templates = []; this.allowedKeys = data.selection; this.allowedKeys.forEach((key) => this.#setup(key)); @@ -193,7 +193,7 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen }); modalHandler?.onSubmit().then(({ key }) => { - // TODO: update list + // TODO: update template }); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts index 8d6fa4bf4c..a3e156f832 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -38,7 +38,7 @@ export class UmbTemplateModalElement extends UmbModalBaseElement Date: Tue, 28 Mar 2023 10:31:20 +0200 Subject: [PATCH 439/550] build err --- .../input-document-type-picker.element.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index 6eb5872571..acf5977054 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -99,7 +99,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl }); } - private async _removeItem(item: EntityTreeItemResponseModel) { + private async _removeItem(item: DocumentTypeResponseModel) { const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL_TOKEN, { color: 'danger', headline: `Remove ${item.name}?`, @@ -129,9 +129,9 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl `; } - private _renderItem(item: EntityTreeItemResponseModel) { + private _renderItem(item: DocumentTypeResponseModel) { // TODO: remove when we have a way to handle trashed items - const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; + const tempItem = item as DocumentTypeResponseModel & { isTrashed: boolean }; return html` From 7dc614751b329790b9499f729aaa6790e1bb3890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 28 Mar 2023 10:57:28 +0200 Subject: [PATCH 440/550] change to use type import --- src/Umbraco.Web.UI.Client/libs/router/route.context.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts index 9c240d704d..67ab065308 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -1,4 +1,4 @@ -import { IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import type { IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; import { UmbRoute } from './route.interface'; import { UmbContextConsumerController, From afc1e8098363d675c1fe52fa191e442906272a09 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Mar 2023 10:59:47 +0200 Subject: [PATCH 441/550] Update libs/store/file-system-tree.store.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Niels Lyngsø --- src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts index 0d798b71d5..384ff4d883 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts @@ -27,7 +27,7 @@ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore * @memberof UmbFileSystemTreeStore */ updateItem(path: string, data: Partial) { - this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.path === path)); + this.#data.appendOne(data) } /** From d63419ccda787a6afee33d56ecf50248c0f15dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 28 Mar 2023 13:04:11 +0200 Subject: [PATCH 442/550] make sure to only import types from router-slot in libs. --- .../libs/router/route.context.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts index 67ab065308..021495954d 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -1,4 +1,4 @@ -import type { IRoutingInfo, PARAM_IDENTIFIER, stripSlash } from 'router-slot'; +import type { IRoutingInfo, ISlashOptions } from 'router-slot'; import { UmbRoute } from './route.interface'; import { UmbContextConsumerController, @@ -10,6 +10,17 @@ import { UMB_MODAL_CONTEXT_TOKEN, UmbModalRouteRegistration } from '@umbraco-cms const EmptyDiv = document.createElement('div'); +const PARAM_IDENTIFIER = /:([^\\/]+)/g; + +function stripSlash(path: string): string { + return slashify(path, { start: false, end: false }); +} + +function slashify(path: string, { start = true, end = true }: Partial = {}): string { + path = start && !path.startsWith('/') ? `/${path}` : !start && path.startsWith('/') ? path.slice(1) : path; + return end && !path.endsWith('/') ? `${path}/` : !end && path.endsWith('/') ? path.slice(0, path.length - 1) : path; +} + export class UmbRouteContext { #modalRegistrations: UmbModalRouteRegistration[] = []; #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; From feacedb686fc64719cac1d1799699110c973e995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 28 Mar 2023 13:04:32 +0200 Subject: [PATCH 443/550] make watch script do the same as build. Still missing watch feature for libs. --- src/Umbraco.Web.UI.Client/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index b09fa44cd1..2d00798d91 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -30,8 +30,8 @@ "build": "tsc && vite build --mode staging", "build:libs": "npm run wc-analyze && npm run wc-analyze:vscode && rollup -c rollup-libs.config.js && node utils/move-libs.js", "build:for:static": "tsc && vite build", - "build:for:cms": "tsc && vite build -c vite.cms.config.ts && npm run build:libs", - "build:for:cms:watch": "vite build -c vite.cms.config.ts --watch", + "build:for:cms": "tsc && npm run build:libs && vite build -c vite.cms.config.ts", + "build:for:cms:watch": "tsc && npm run build:libs && vite build -c vite.cms.config.ts --watch", "preview": "vite preview --open", "test": "web-test-runner --coverage", "test:watch": "web-test-runner --watch", From ee7be0472ca65656e71e1e899bba5a8b48cb6787 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Mar 2023 13:17:53 +0200 Subject: [PATCH 444/550] add setTreeItem method on TreeItemContext instead of setting it in the constructor --- .../tree-item/document-tree-item.context.ts | 4 +- .../tree-item/document-tree-item.element.ts | 16 +++-- .../entity-tree-item.context.ts | 4 +- .../entity-tree-item.element.ts | 14 +++- .../tree-item-base/tree-item-base.context.ts | 66 +++++++++++++------ .../tree-item-base/tree-item-base.element.ts | 24 +++---- .../tree-item-base/tree-item-base.stories.ts | 17 +---- .../tree/tree-item.context.interface.ts | 11 ++-- .../file-system-tree-item.context.ts | 4 +- .../file-system-tree-item.element.ts | 14 +++- 10 files changed, 103 insertions(+), 71 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts index 49c2653424..19cfaf1ccd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts @@ -4,7 +4,7 @@ import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-a // TODO get unique method from an document repository static method export class UmbDocumentTreeItemContext extends UmbTreeItemContextBase { - constructor(host: UmbControllerHostInterface, treeItem: DocumentTreeItemResponseModel) { - super(host, treeItem, (x: DocumentTreeItemResponseModel) => x.key); + constructor(host: UmbControllerHostInterface) { + super(host, (x: DocumentTreeItemResponseModel) => x.key); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts index 68ab99af32..e71f162a4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -31,16 +31,22 @@ export class UmbDocumentTreeItemElement extends UmbLitElement { `, ]; + private _item?: DocumentTreeItemResponseModel; @property({ type: Object, attribute: false }) - public item?: DocumentTreeItemResponseModel; + public get item() { + return this._item; + } + public set item(value: DocumentTreeItemResponseModel | undefined) { + this._item = value; + this.#context.setTreeItem(value); + } + + #context = new UmbDocumentTreeItemContext(this); render() { if (!this.item) return nothing; - new UmbDocumentTreeItemContext(this, this.item); return html` - - ${this.#renderIconWithStatusSymbol()} ${this.#renderLabel()} - + ${this.#renderIconWithStatusSymbol()} ${this.#renderLabel()} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts index 934cd4b874..2b014d81c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts @@ -4,7 +4,7 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api // TODO get unique method from an entity repository static method export class UmbEntityTreeItemContext extends UmbTreeItemContextBase { - constructor(host: UmbControllerHostInterface, treeItem: EntityTreeItemResponseModel) { - super(host, treeItem, (x: EntityTreeItemResponseModel) => x.key); + constructor(host: UmbControllerHostInterface) { + super(host, (x: EntityTreeItemResponseModel) => x.key); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts index 7540c8156c..11fd1f40f3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.element.ts @@ -24,13 +24,21 @@ umbExtensionsRegistry.register(manifest); export class UmbEntityTreeItemElement extends UmbLitElement { static styles = [UUITextStyles, css``]; + private _item?: EntityTreeItemResponseModel; @property({ type: Object, attribute: false }) - item?: EntityTreeItemResponseModel; + public get item() { + return this._item; + } + public set item(value: EntityTreeItemResponseModel | undefined) { + this._item = value; + this.#context.setTreeItem(value); + } + + #context = new UmbEntityTreeItemContext(this); render() { if (!this.item) return nothing; - new UmbEntityTreeItemContext(this, this.item); - return html``; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index 43212da66f..25c3a500cb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -6,7 +6,7 @@ import { import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; import { UmbTreeContextBase } from '../tree.context'; import { UmbTreeItemContext } from '../tree-item.context.interface'; -import { BooleanState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { BooleanState, DeepState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostInterface } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController, @@ -23,9 +23,11 @@ export class UmbTreeItemContextBase { public host: UmbControllerHostInterface; - public treeItem: T; - public unique: string; - public type: string; + public unique?: string; + public type?: string; + + #treeItem = new DeepState(undefined); + treeItem = this.#treeItem.asObservable(); #hasChildren = new BooleanState(false); hasChildren = this.#hasChildren.asObservable(); @@ -51,26 +53,36 @@ export class UmbTreeItemContextBase; - constructor(host: UmbControllerHostInterface, treeItem: T, getUniqueFunction: UmbTreeItemUniqueFunction) { + constructor(host: UmbControllerHostInterface, getUniqueFunction: UmbTreeItemUniqueFunction) { this.host = host; - this.treeItem = treeItem; - - const unique = getUniqueFunction(this.treeItem); - if (!unique) throw new Error('Could not create tree item context, unique key is missing'); - this.unique = unique; - - if (!this.treeItem.type) throw new Error('Could not create tree item context, tree item type is missing'); - this.type = this.treeItem.type; - + this.#getUniqueFunction = getUniqueFunction; this.#observeTreeItemActions(); - this.#hasChildren.next(this.treeItem.hasChildren || false); - this.#consumeContexts(); new UmbContextProviderController(host, UMB_TREE_ITEM_CONTEXT_TOKEN, this); } + public setTreeItem(treeItem: T | undefined) { + if (!treeItem) { + this.#treeItem.next(undefined); + return; + } + + const unique = this.#getUniqueFunction(treeItem); + if (!unique) throw new Error('Could not create tree item context, unique key is missing'); + this.unique = unique; + + if (!treeItem.type) throw new Error('Could not create tree item context, tree item type is missing'); + this.type = treeItem.type; + + this.#hasChildren.next(treeItem.hasChildren || false); + this.#treeItem.next(treeItem); + } + public async requestChildren() { + if (!this.unique) throw new Error('Could not request children, unique key is missing'); + // TODO: wait for tree context to be ready this.#isLoading.next(true); const response = await this.treeContext!.requestChildrenOf(this.unique); @@ -79,14 +91,20 @@ export class UmbTreeItemContextBase this.#isSelectable.next(value)); } #observeIsSelected() { - if (!this.treeContext) return; + if (!this.treeContext) throw new Error('Could not request children, tree context is missing'); + if (!this.unique) throw new Error('Could not request children, unique key is missing'); new UmbObserverController( this.host, - this.treeContext.selection.pipe(map((selection) => selection.includes(this.unique))), + this.treeContext.selection.pipe(map((selection) => selection.includes(this.unique!))), (isSelected) => { this.#isSelected.next(isSelected); } @@ -129,6 +152,9 @@ export class UmbTreeItemContextBase { if (!pathname) return; + if (!this.type) throw new Error('Cant construct path, entity type is missing'); + if (!this.unique) throw new Error('Cant construct path, unique is missing'); + const path = this.constructPath(pathname, this.type, this.unique); this.#path.next(path); }); @@ -152,4 +178,4 @@ export class UmbTreeItemContextBase('UmbTreeItemContext'); +export const UMB_TREE_ITEM_CONTEXT_TOKEN = new UmbContextToken('UmbTreeItemContext'); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts index b07e42dbae..a2b059421c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.element.ts @@ -1,9 +1,10 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property, state } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbTreeItemContextBase, UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item-base.context'; +import { UmbTreeItemContext } from '../tree-item.context.interface'; +import { UMB_TREE_ITEM_CONTEXT_TOKEN } from './tree-item-base.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; @@ -11,16 +12,8 @@ import { TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbTreeItemBaseElement extends UmbLitElement { static styles = [UUITextStyles, css``]; + @state() private _item?: TreeItemPresentationModel; - @property({ type: Object, attribute: false }) - get item() { - return this._item; - } - set item(newVal) { - const oldVal = this._item; - this._item = newVal; - this.requestUpdate('item', oldVal); - } @state() private _childItems?: TreeItemPresentationModel[]; @@ -46,7 +39,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { @state() private _iconSlotHasChildren = false; - #treeItemContext?: UmbTreeItemContextBase; + #treeItemContext?: UmbTreeItemContext; constructor() { super(); @@ -55,6 +48,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { this.#treeItemContext = instance; if (!this.#treeItemContext) return; // TODO: investigate if we can make an observe decorator + this.observe(this.#treeItemContext.treeItem, (value) => (this._item = value)); this.observe(this.#treeItemContext.hasChildren, (value) => (this._hasChildren = value)); this.observe(this.#treeItemContext.isLoading, (value) => (this._isLoading = value)); this.observe(this.#treeItemContext.isSelectable, (value) => (this._isSelectable = value)); @@ -109,7 +103,7 @@ export class UmbTreeItemBaseElement extends UmbLitElement { ?selected=${this._isSelected} .loading=${this._isLoading} .hasChildren=${this._hasChildren} - label="${ifDefined(this.item?.name)}" + label="${ifDefined(this._item?.name)}" href="${ifDefined(this._href)}"> ${this.#renderIcon()} ${this.#renderLabel()} ${this.#renderActions()} ${this.#renderChildItems()} @@ -129,8 +123,8 @@ export class UmbTreeItemBaseElement extends UmbLitElement { @slotchange=${(e: Event) => { this._iconSlotHasChildren = this.#hasNodes(e); }}> - ${this.item?.icon && !this._iconSlotHasChildren - ? html` ` + ${this._item?.icon && !this._iconSlotHasChildren + ? html` ` : nothing} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts index fedf14fccb..f81fe83f46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.stories.ts @@ -2,6 +2,7 @@ import { Meta, StoryObj } from '@storybook/web-components'; import './tree-item-base.element'; import type { UmbTreeItemBaseElement } from './tree-item-base.element'; +// TODO: provide tree item context to make this element render properly const meta: Meta = { title: 'Components/Tree/Tree Item', component: 'umb-tree-item', @@ -11,21 +12,9 @@ export default meta; type Story = StoryObj; export const Overview: Story = { - args: { - item: { - name: 'My Tree Item', - icon: 'umb:home', - hasChildren: false, - }, - }, + args: {}, }; export const WithChildren: Story = { - args: { - item: { - name: 'My Tree Item', - icon: 'umb:home', - hasChildren: true, - }, - }, + args: {}, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts index 02f4087bcc..0144422f76 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item.context.interface.ts @@ -1,5 +1,5 @@ import { Observable } from 'rxjs'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { ProblemDetailsModel, TreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostInterface } from 'libs/controller/controller-host.mixin'; // TODO: temp type. Add paged response type to the repository interface @@ -8,12 +8,12 @@ interface PagedResponse { items: Array; } -export interface UmbTreeItemContext { +export interface UmbTreeItemContext { host: UmbControllerHostInterface; - treeItem: T; - unique: string; - type: string; + unique?: string; + type?: string; + treeItem: Observable; hasChildren: Observable; isLoading: Observable; isSelectable: Observable; @@ -22,6 +22,7 @@ export interface UmbTreeItemContext { hasActions: Observable; path: Observable; + setTreeItem(treeItem: T | undefined): void; requestChildren(): Promise<{ data: PagedResponse | undefined; error: ProblemDetailsModel | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts index 35f216062e..92d1f20549 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.context.ts @@ -5,8 +5,8 @@ import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/bac // TODO get unique method from an entity repository static method export class UmbFileSystemTreeItemContext extends UmbTreeItemContextBase { - constructor(host: UmbControllerHostInterface, treeItem: FileSystemTreeItemPresentationModel) { - super(host, treeItem, (x: FileSystemTreeItemPresentationModel) => x.path); + constructor(host: UmbControllerHostInterface) { + super(host, (x: FileSystemTreeItemPresentationModel) => x.path); } constructPath(pathname: string, entityType: string, path: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.element.ts index 3572e6dccc..1d18dc610a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/components/file-system-tree-item/file-system-tree-item.element.ts @@ -24,13 +24,21 @@ umbExtensionsRegistry.register(manifest); export class UmbFileSystemTreeItemElement extends UmbLitElement { static styles = [UUITextStyles, css``]; + private _item?: FileSystemTreeItemPresentationModel; @property({ type: Object, attribute: false }) - item?: FileSystemTreeItemPresentationModel; + public get item() { + return this._item; + } + public set item(value: FileSystemTreeItemPresentationModel | undefined) { + this._item = value; + this.#context.setTreeItem(value); + } + + #context = new UmbFileSystemTreeItemContext(this); render() { if (!this.item) return nothing; - new UmbFileSystemTreeItemContext(this, this.item); - return html``; + return html``; } } From ca2baab3f7aff185547b61c28d860a7c80150a0c Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Mar 2023 13:26:16 +0200 Subject: [PATCH 445/550] update story book docs --- .../src/stories/extending/tree.mdx | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx b/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx index eb0e1c810d..98b44058f9 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/extending/tree.mdx @@ -68,13 +68,21 @@ import { UmbMyTreeItemContext, MyTreeItemDataModel } from './my-tree-item.contex @customElement('my-tree-item') export class MyTreeItemElement extends UmbElementMixin(LitElement) { + private _item?: MyTreeItemDataModel; @property({ type: Object, attribute: false }) - public item?: MyTreeItemDataModel; + public get item() { + return this._item; + } + public set item(value: MyTreeItemDataModel | undefined) { + this._item = value; + this.#context.setTreeItem(value); + } + + #context = new UmbMyTreeItemContext(this); render() { if (!this.item) return nothing; - new UmbMyTreeItemContext(this, this.item); - return html` Some custom markup `; + return html` Some custom markup `; } } @@ -87,10 +95,10 @@ export default MyTreeItemElement; // TODO: auto generate this from the interface export interface UmbTreeItemContext { host: UmbControllerHostInterface; - treeItem: T; - unique: string; - type: string; + unique?: string; + type?: string; + treeItem: Observable; hasChildren: Observable; isLoading: Observable; isSelectable: Observable; @@ -99,12 +107,13 @@ export interface UmbTreeItemContext { hasActions: Observable; path: Observable; + setTreeItem(treeItem: T | undefined): void; + requestChildren(): Promise<{ data: PagedResponse | undefined; error: ProblemDetailsModel | undefined; asObservable?: () => Observable; }>; - toggleContextMenu(): void; select(): void; deselect(): void; @@ -118,8 +127,8 @@ We provide a base class for the tree item context. This class provides some defa ```typescript export class UmbMyTreeItemContext extends UmbTreeItemContextBase { - constructor(host: UmbControllerHostInterface, treeItem: MyTreeItemDataModel) { - super(host, treeItem, (x: MyTreeItemDataModel) => x.unique); + constructor(host: UmbControllerHostInterface) { + super(host, (x: MyTreeItemDataModel) => x.unique); } // overwrite any methods or properties here if needed From dfac9ade835d5c6e64f9cd501a7f3dcd5152b724 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 28 Mar 2023 13:30:47 +0200 Subject: [PATCH 446/550] don't render anything if there is no item --- .../shared/components/tree/tree-item/tree-item.element.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts index d91f31c020..9cecba3412 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item/tree-item.element.ts @@ -1,4 +1,4 @@ -import { css, html } from 'lit'; +import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -13,6 +13,7 @@ export class UmbTreeItemElement extends UmbLitElement { item?: TreeItemPresentationModel; render() { + if (!this.item) return nothing; return html` manifests.conditions.entityType === this.item?.type} From f836d7b0366b236f1908d0b331c5a597efb84456 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 28 Mar 2023 13:55:08 +0200 Subject: [PATCH 447/550] init --- .../language-workspace-create.element.ts | 42 +++++++++++++++++++ .../language-workspace-edit.element.ts | 10 ++--- .../language/language-workspace.element.ts | 4 ++ ...language-details-workspace-view.element.ts | 22 +++++----- 4 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-create.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-create.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-create.element.ts new file mode 100644 index 0000000000..e226bef7e5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-create.element.ts @@ -0,0 +1,42 @@ +import { UUITextStyles } from '@umbraco-ui/uui-css'; +import { css, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; + +@customElement('umb-language-workspace-create') +export class UmbLanguageWorkspaceCreateElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #header { + display: flex; + padding: 0 var(--uui-size-space-6); + gap: var(--uui-size-space-4); + width: 100%; + } + strong { + display: flex; + align-items: center; + } + `, + ]; + + render() { + return html` + + `; + } +} + +export default UmbLanguageWorkspaceCreateElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-language-workspace-create': UmbLanguageWorkspaceCreateElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts index ecb56842c0..fa93f20153 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -7,8 +7,8 @@ import { UmbLanguageWorkspaceContext } from './language-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; -@customElement('umb-language-workspace-thingy') -export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { +@customElement('umb-language-workspace-edit') +export class UmbLanguageWorkspaceEditElement extends UmbLitElement { static styles = [ UUITextStyles, css` @@ -58,7 +58,7 @@ export class UmbLanguageWorkspaceThingyElement extends UmbLitElement { render() { return html` `; } - + private _renderContextAliases() { const contextsTemplates: TemplateResult[] = []; - for (const [alias, instance] of this.contexts) { + this.contextData.forEach((contextData) => { contextsTemplates.push( html`
  • - Context: ${alias} - (${typeof instance}) + Context: ${contextData.alias} + (${contextData.type})
      - ${this._renderInstance(instance)} + ${this._renderInstance(contextData.data)}
  • ` ); - } + }); return contextsTemplates; } - private _renderInstance(instance: any) { + private _renderInstance(instance: DebugContextItemData) { const instanceTemplates: TemplateResult[] = []; - - // TODO: WB - Maybe make this a switch statement? - if (typeof instance === 'function') { + + if(instance.type === 'function'){ return instanceTemplates.push(html`
  • Callable Function
  • `); - } else if (typeof instance === 'object') { - const methodNames = this.getClassMethodNames(instance); - if (methodNames.length) { + } + else if(instance.type === 'object'){ + if(instance.methods?.length){ instanceTemplates.push( html`
  • Methods
      - ${methodNames.map((methodName) => html`
    • ${methodName}
    • `)} + ${instance.methods?.map((methodName) => html`
    • ${methodName}
    • `)}
  • ` @@ -177,19 +179,13 @@ export class UmbDebugElement extends UmbLitElement { } const props: TemplateResult[] = []; - - for (const key in instance) { - if (key.startsWith('_')) { - continue; - } - - const value = instance[key]; - if (typeof value === 'string') { - props.push(html`
  • ${key} = ${value}
  • `); + instance.properties?.forEach((property) => { + if (property.type === 'string') { + props.push(html`
  • ${property.key} = ${property.value}
  • `); } else { - props.push(html`
  • ${key} (${typeof value})
  • `); + props.push(html`
  • ${property.key} (${property.type})
  • `); } - } + }); instanceTemplates.push(html`
  • @@ -199,29 +195,13 @@ export class UmbDebugElement extends UmbLitElement {
  • `); - } else { - instanceTemplates.push(html`
  • Context is a primitive with value: ${instance}
  • `); + } + else if(instance.type === 'primitive'){ + instanceTemplates.push(html`
  • Context is a primitive with value: ${instance.value}
  • `); } return instanceTemplates; } - - private getClassMethodNames(klass: any) { - const isGetter = (x: any, name: string): boolean => !!(Object.getOwnPropertyDescriptor(x, name) || {}).get; - const isFunction = (x: any, name: string): boolean => typeof x[name] === 'function'; - const deepFunctions = (x: any): any => - x !== Object.prototype && - Object.getOwnPropertyNames(x) - .filter((name) => isGetter(x, name) || isFunction(x, name)) - .concat(deepFunctions(Object.getPrototypeOf(x)) || []); - const distinctDeepFunctions = (klass: any) => Array.from(new Set(deepFunctions(klass))); - - const allMethods = - typeof klass.prototype === 'undefined' - ? distinctDeepFunctions(klass) - : Object.getOwnPropertyNames(klass.prototype); - return allMethods.filter((name: any) => name !== 'constructor' && !name.startsWith('_')); - } } declare global { From ab4923fa9c06a16788e98f812c4800540e0b1d08 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Fri, 31 Mar 2023 09:00:24 +0200 Subject: [PATCH 499/550] Update src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> --- .../workspace/language/language-workspace-edit.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts index bcc57482a3..3aba73efe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace-edit.element.ts @@ -79,7 +79,7 @@ export class UmbLanguageWorkspaceEditElement extends UmbLitElement { render() { return html` `; From 424beea16e83531ed59b196f1a489e43dedfa998 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 31 Mar 2023 13:41:14 +0200 Subject: [PATCH 501/550] Feature: Create data type folders (1. round) (#630) * update data type handlers * call correct method on repo * introduce base menu item element * wip register create and delete entity actions for data types * stop event * add folder request interceptor * remove todo * create interface for folder data source * create interface for folder repository * open create dialog in data type create action * wip create folder modal * add token * clean up data type repo * add has children prop * add create folder modal * add folder to temp data * update import * implement delete folder action * add method to update folder * update detail data source interface to follow backend models * lint fixes * move import fixes * make generic folder modal * add correct request model * add put interceptor * fix import * update data type notification headline --- .../delete-folder/delete-folder.action.ts | 39 ++++ .../actions/delete/delete.action.ts | 4 +- .../folder-update/folder-update.action.ts | 30 +++ .../libs/entity-action/actions/index.ts | 2 + .../libs/entity-action/entity-action.ts | 2 + .../libs/modal/token/folder-modal.token.ts | 16 ++ .../libs/modal/token/index.ts | 1 + .../data-source/data-source.interface.ts | 12 +- .../folder-data-source.interface.ts | 14 ++ .../libs/repository/data-source/index.ts | 1 + .../repository/folder-repository.interface.ts | 35 ++++ .../libs/repository/index.ts | 1 + .../repository/document-type.repository.ts | 2 +- .../sources/document-type.server.data.ts | 38 +--- .../repository/document.repository.ts | 10 +- .../sources/document.server.data.ts | 19 +- .../documents/repository/sources/index.ts | 2 +- .../workspace/document-workspace.context.ts | 6 +- .../media/repository/media.repository.ts | 2 +- .../sources/media.detail.server.data.ts | 4 +- .../repository/member-group.repository.ts | 2 +- .../member-group.detail.server.data.ts | 4 +- .../entity-actions/create/create.action.ts | 25 +++ .../entity-actions/create/manifests.ts | 29 +++ .../modal/create-data-type-modal.element.ts | 56 +++++ .../entity-actions/create/modal/index.ts | 6 + .../data-types/entity-actions/manifests.ts | 58 ++++++ .../settings/data-types/manifests.ts | 9 +- .../data-types/menu-item/manifests.ts | 2 +- .../repository/data-type.repository.ts | 192 ++++++++++++------ .../sources/data-type-folder.server.data.ts | 112 ++++++++++ .../sources/data-type.server.data.ts | 80 ++------ .../sources/data-type.tree.server.data.ts | 60 +----- .../repository/language.repository.ts | 4 +- .../languages/repository/sources/index.ts | 15 -- .../sources/language.server.data.ts | 33 ++- .../repository/relation-type.repository.ts | 2 +- .../sources/relation-type.server.data.ts | 70 ++----- .../src/backoffice/shared/components/index.ts | 2 + .../components/menu-item/menu-item.element.ts | 55 ----- .../menu-item-base/menu-item-base.element.ts | 125 ++++++++++++ .../menu/menu-item/menu-item.element.ts | 31 +++ .../shared/components/menu/menu.element.ts | 2 +- .../section-sidebar.context.ts | 7 +- .../tree-menu-item/tree-menu-item.element.ts | 20 +- .../modals/folder/folder-modal.element.ts | 177 ++++++++++++++++ .../src/backoffice/shared/modals/manifests.ts | 6 + .../sources/stylesheet.server.data.ts | 6 +- .../src/core/mocks/data/data-type.data.ts | 42 +++- .../core/mocks/domains/data-type.handlers.ts | 92 +++++++-- 50 files changed, 1138 insertions(+), 426 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete-folder/delete-folder.action.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/entity-action/actions/folder-update/folder-update.action.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/modal/token/folder-modal.token.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item-base/menu-item-base.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item/menu-item.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/folder/folder-modal.element.ts diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete-folder/delete-folder.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete-folder/delete-folder.action.ts new file mode 100644 index 0000000000..9a2adadb0b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete-folder/delete-folder.action.ts @@ -0,0 +1,39 @@ +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; + +export class UmbDeleteFolderEntityAction< + T extends { deleteFolder(unique: string): Promise; requestTreeItems(uniques: Array): any } +> extends UmbEntityActionBase { + #modalContext?: UmbModalContext; + + constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { + super(host, repositoryAlias, unique); + + new UmbContextConsumerController(this.host, UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this.#modalContext = instance; + }); + } + + async execute() { + if (!this.repository || !this.#modalContext) return; + + const { data } = await this.repository.requestTreeItems([this.unique]); + + if (data) { + const item = data[0]; + + // TODO: maybe we can show something about how many items are part of the folder? + const modalHandler = this.#modalContext.open(UMB_CONFIRM_MODAL, { + headline: `Delete folder ${item.name}`, + content: 'Are you sure you want to delete this folder?', + color: 'danger', + confirmLabel: 'Delete', + }); + + await modalHandler.onSubmit(); + await this.repository?.deleteFolder(this.unique); + } + } +} diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts index 0dfc13f22d..d290a1f912 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/delete/delete.action.ts @@ -4,7 +4,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; export class UmbDeleteEntityAction< - T extends { delete(unique: string): Promise; requestItems(uniques: Array): any } + T extends { delete(unique: string): Promise; requestTreeItems(uniques: Array): any } > extends UmbEntityActionBase { #modalContext?: UmbModalContext; @@ -19,7 +19,7 @@ export class UmbDeleteEntityAction< async execute() { if (!this.repository || !this.#modalContext) return; - const { data } = await this.repository.requestItems([this.unique]); + const { data } = await this.repository.requestTreeItems([this.unique]); if (data) { const item = data[0]; diff --git a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/folder-update/folder-update.action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/folder-update/folder-update.action.ts new file mode 100644 index 0000000000..2a1fc97ece --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/folder-update/folder-update.action.ts @@ -0,0 +1,30 @@ +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_FOLDER_MODAL, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbFolderRepository } from '@umbraco-cms/backoffice/repository'; + +export class UmbFolderUpdateEntityAction< + T extends UmbFolderRepository = UmbFolderRepository +> extends UmbEntityActionBase { + #modalContext?: UmbModalContext; + + constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { + super(host, repositoryAlias, unique); + + new UmbContextConsumerController(this.host, UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this.#modalContext = instance; + }); + } + + async execute() { + if (!this.repository || !this.#modalContext) return; + + const modalHandler = this.#modalContext.open(UMB_FOLDER_MODAL, { + repositoryAlias: this.repositoryAlias, + unique: this.unique, + }); + + await modalHandler.onSubmit(); + } +} 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 index b8fa3d3206..8551f08139 100644 --- a/src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/entity-action/actions/index.ts @@ -1,5 +1,7 @@ export * from './copy/copy.action'; export * from './delete/delete.action'; +export * from './delete-folder/delete-folder.action'; +export * from './folder-update/folder-update.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/libs/entity-action/entity-action.ts b/src/Umbraco.Web.UI.Client/libs/entity-action/entity-action.ts index c0235ae958..5c2d816deb 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 @@ -7,9 +7,11 @@ export interface UmbEntityAction extends UmbAction extends UmbActionBase { unique: string; + repositoryAlias: string; constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { super(host, repositoryAlias); this.unique = unique; + this.repositoryAlias = repositoryAlias; } } diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/folder-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/folder-modal.token.ts new file mode 100644 index 0000000000..f842409751 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/folder-modal.token.ts @@ -0,0 +1,16 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; +import { FolderReponseModel } from '@umbraco-cms/backoffice/backend-api'; + +export interface UmbFolderModalData { + repositoryAlias: string; + unique?: string; +} + +export interface UmbFolderModalResult { + folder: FolderReponseModel; +} + +export const UMB_FOLDER_MODAL = new UmbModalToken('Umb.Modal.Folder', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts index ed363f7165..7fd02d418b 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/index.ts @@ -25,3 +25,4 @@ export * from './template-modal.token'; export * from './template-picker-modal.token'; export * from './user-group-picker-modal.token'; export * from './user-picker-modal.token'; +export * from './folder-modal.token'; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts index 766ddf1e87..13cfbfe7a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts @@ -1,9 +1,9 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -export interface UmbDataSource { - createScaffold(parentKey: string | null): Promise>; - get(key: string): Promise>; - insert(data: T): Promise>; - update(data: T): Promise>; - delete(key: string): Promise>; +export interface UmbDataSource { + createScaffold(parentKey: string | null): Promise>; + get(unique: string): Promise>; + insert(data: CreateRequestType): Promise; + update(unique: string, data: UpdateRequestType): Promise>; + delete(unique: string): Promise; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts new file mode 100644 index 0000000000..c07bf208f5 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts @@ -0,0 +1,14 @@ +import { DataSourceResponse } from './data-source-response.interface'; +import { + CreateFolderRequestModel, + FolderReponseModel, + UpdateFolderReponseModel, +} from '@umbraco-cms/backoffice/backend-api'; + +export interface UmbFolderDataSource { + createScaffold(parentKey: string | null): Promise>; + get(unique: string): Promise>; + insert(data: CreateFolderRequestModel): Promise>; + update(unique: string, data: CreateFolderRequestModel): Promise>; + delete(unique: string): Promise; +} diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts index 0c12e00d34..905a6849fe 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/index.ts @@ -1,3 +1,4 @@ export * from './data-source-response.interface'; export * from './data-source.interface'; +export * from './folder-data-source.interface'; export * from './tree-data-source.interface'; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts new file mode 100644 index 0000000000..4a021f2bd0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts @@ -0,0 +1,35 @@ +import type { + CreateFolderRequestModel, + FolderModelBaseModel, + FolderReponseModel, + ProblemDetailsModel, + UpdateFolderReponseModel, +} from '@umbraco-cms/backoffice/backend-api'; + +export interface UmbFolderRepository { + createFolderScaffold(parentKey: string | null): Promise<{ + data?: FolderReponseModel; + error?: ProblemDetailsModel; + }>; + createFolder(folderRequest: CreateFolderRequestModel): Promise<{ + data?: string; + error?: ProblemDetailsModel; + }>; + + requestFolder(unique: string): Promise<{ + data?: FolderReponseModel; + error?: ProblemDetailsModel; + }>; + + updateFolder( + unique: string, + folder: FolderModelBaseModel + ): Promise<{ + data?: UpdateFolderReponseModel; + error?: ProblemDetailsModel; + }>; + + deleteFolder(key: string): Promise<{ + error?: ProblemDetailsModel; + }>; +} diff --git a/src/Umbraco.Web.UI.Client/libs/repository/index.ts b/src/Umbraco.Web.UI.Client/libs/repository/index.ts index f4727c8ffc..9dcba782ba 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/index.ts @@ -1,3 +1,4 @@ export * from './data-source'; export * from './detail-repository.interface'; export * from './tree-repository.interface'; +export * from './folder-repository.interface'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 24eeb55d75..14494da134 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -164,7 +164,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U if (!item || !item.key) throw new Error('Document-Type is missing'); await this.#init; - const { error } = await this.#detailDataSource.update(item); + const { error } = await this.#detailDataSource.update(item.key, item); if (!error) { const notification = { data: { message: `Document saved` } }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 5f96641f64..561d27c049 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -13,7 +13,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDocumentTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentTypeServerDataSource implements UmbDataSource { +export class UmbDocumentTypeServerDataSource implements UmbDataSource { #host: UmbControllerHostElement; /** @@ -82,7 +82,7 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type', { method: 'POST', @@ -100,13 +100,8 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource( - this.#host, - fetch(`/umbraco/management/api/v1/document-type/${key}`, { - method: 'DELETE', - body: JSON.stringify([key]), - headers: { - 'Content-Type': 'application/json', - }, - }) as any - ); - } - /** * Deletes a Template on the server * @param {string} key diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index f1b76e815c..46b2efdabd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -5,7 +5,11 @@ import { DocumentTreeServerDataSource } from './sources/document.tree.server.dat import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ProblemDetailsModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + ProblemDetailsModel, + DocumentResponseModel, + CreateDocumentRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemType = DocumentResponseModel; @@ -133,7 +137,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Could potentially be general methods: - async create(item: ItemType) { + async create(item: CreateDocumentRequestModel & { key: string }) { await this.#init; if (!item || !item.key) { @@ -162,7 +166,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe throw new Error('Document is missing'); } - const { error } = await this.#detailDataSource.update(item); + const { error } = await this.#detailDataSource.update(item.key, item); if (!error) { const notification = { data: { message: `Document saved` } }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 20de768ab9..83a93a9c1a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -5,6 +5,8 @@ import { ProblemDetailsModel, DocumentResponseModel, ContentStateModel, + CreateDocumentRequestModel, + UpdateDocumentRequestModel, } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -15,7 +17,9 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDocumentServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDocumentServerDataSource implements UmbDataSource { +export class UmbDocumentServerDataSource + implements UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -83,12 +87,8 @@ export class UmbDocumentServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/save', { method: 'POST', @@ -118,8 +118,7 @@ export class UmbDocumentServerDataSource implements UmbDataSource { +export interface UmbDocumentDataSource extends UmbDataSource { createScaffold(documentTypeKey: string): Promise>; trash(key: string): Promise>; } 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 63c0f26405..246b1866a6 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 @@ -5,7 +5,7 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../../../shared/comp import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; -import type { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -164,7 +164,9 @@ export class UmbDocumentWorkspaceContext async save() { if (!this.#draft.value) return; if (this.getIsNew()) { - await this.repository.create(this.#draft.value); + // TODO: typescript hack until we get the create type + const value = this.#draft.value as CreateDocumentRequestModel & { key: string }; + await this.repository.create(value); } else { await this.repository.save(this.#draft.value); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index c2de9efe12..873e8011d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -179,7 +179,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor throw new Error('Template is missing'); } - const { error } = await this.#detailDataSource.update(document); + const { error } = await this.#detailDataSource.update(document.key, document); if (!error) { const notification = { data: { message: `Document saved` } }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 416090e87e..609a119df6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -10,7 +10,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbTemplateDetailServerDataSource * @implements {TemplateDetailDataSource} */ -export class UmbMediaDetailServerDataSource implements UmbDataSource { +export class UmbMediaDetailServerDataSource implements UmbDataSource { #host: UmbControllerHostElement; /** @@ -124,7 +124,7 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource Provide type when it is available -export class UmbMemberGroupDetailServerDataSource implements UmbDataSource { +export class UmbMemberGroupDetailServerDataSource implements UmbDataSource { #host: UmbControllerHostElement; constructor(host: UmbControllerHostElement) { @@ -49,7 +49,7 @@ export class UmbMemberGroupDetailServerDataSource implements UmbDataSource * @return {*} * @memberof UmbMemberGroupDetailServerDataSource */ - async update(memberGroup: MemberGroupDetails) { + async update(key: string, memberGroup: MemberGroupDetails) { if (!memberGroup.key) { const error: ProblemDetailsModel = { title: 'Member Group key is missing' }; return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts new file mode 100644 index 0000000000..5849726dd0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts @@ -0,0 +1,25 @@ +import { UmbDataTypeRepository } from '../../repository/data-type.repository'; +import { UMB_CREATE_DATA_TYPE_MODAL } from './modal'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; + +export class UmbCreateDataTypeEntityAction extends UmbEntityActionBase { + #modalContext?: UmbModalContext; + + constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { + super(host, repositoryAlias, unique); + + new UmbContextConsumerController(this.host, UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this.#modalContext = instance; + }); + } + + async execute() { + // TODO: what to do if modal service is not available? + if (!this.#modalContext) return; + if (!this.repository) return; + this.#modalContext?.open(UMB_CREATE_DATA_TYPE_MODAL); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/manifests.ts new file mode 100644 index 0000000000..e564e04fc6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/manifests.ts @@ -0,0 +1,29 @@ +import { DATA_TYPE_REPOSITORY_ALIAS } from '../../repository/manifests'; +import { UmbCreateDataTypeEntityAction } from './create.action'; +import { ManifestTypes } from '@umbraco-cms/backoffice/extensions-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + alias: 'Umb.EntityAction.DataType.Create', + name: 'Create Data Type Entity Action', + weight: 900, + meta: { + icon: 'umb:add', + label: 'Create', + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, + api: UmbCreateDataTypeEntityAction, + }, + conditions: { + entityType: 'data-type-root', + }, + }, + { + type: 'modal', + alias: 'Umb.Modal.CreateDataType', + name: 'Create Data Type Modal', + loader: () => import('./modal/create-data-type-modal.element'), + }, +]; + +export const manifests = [...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts new file mode 100644 index 0000000000..cfe48669f7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts @@ -0,0 +1,56 @@ +import { html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement } from 'lit/decorators.js'; +import { DATA_TYPE_REPOSITORY_ALIAS } from '../../../repository/manifests'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import { UmbModalContext, UMB_FOLDER_MODAL, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; + +@customElement('umb-create-data-type-modal') +export class UmbCreateDataTypeModalElement extends UmbModalBaseElement { + static styles = [UUITextStyles]; + + #modalContext?: UmbModalContext; + + constructor() { + super(); + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this.#modalContext = instance; + }); + } + + #onClick(event: PointerEvent) { + event.stopPropagation(); + const folderModalHandler = this.#modalContext?.open(UMB_FOLDER_MODAL, { + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, + }); + folderModalHandler?.onSubmit().then(() => this.modalHandler?.submit()); + } + + #onCancel() { + this.modalHandler?.reject(); + } + + render() { + return html` + + + + } + + + } + + + Cancel + + `; + } +} + +export default UmbCreateDataTypeModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-create-data-type-modal': UmbCreateDataTypeModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts new file mode 100644 index 0000000000..9e1e8eb025 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts @@ -0,0 +1,6 @@ +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export const UMB_CREATE_DATA_TYPE_MODAL = new UmbModalToken('Umb.Modal.CreateDataType', { + type: 'sidebar', + size: 'small', +}); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/manifests.ts new file mode 100644 index 0000000000..54e8288b16 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/manifests.ts @@ -0,0 +1,58 @@ +import { DATA_TYPE_REPOSITORY_ALIAS } from '../repository/manifests'; +import { manifests as createManifests } from './create/manifests'; +import { + UmbDeleteEntityAction, + UmbDeleteFolderEntityAction, + UmbFolderUpdateEntityAction, +} from '@umbraco-cms/backoffice/entity-action'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + alias: 'Umb.EntityAction.DataType.Delete', + name: 'Delete Data Type Entity Action', + weight: 900, + meta: { + icon: 'umb:trash', + label: 'Delete...', + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, + api: UmbDeleteEntityAction, + }, + conditions: { + entityType: 'data-type', + }, + }, + { + type: 'entityAction', + alias: 'Umb.EntityAction.DataType.DeleteFolder', + name: 'Delete Data Type Folder Entity Action', + weight: 800, + meta: { + icon: 'umb:trash', + label: 'Delete Folder...', + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, + api: UmbDeleteFolderEntityAction, + }, + conditions: { + entityType: 'data-type', + }, + }, + { + type: 'entityAction', + alias: 'Umb.EntityAction.DataType.RenameFolder', + name: 'Rename Data Type Folder Entity Action', + weight: 700, + meta: { + icon: 'umb:edit', + label: 'Rename Folder...', + repositoryAlias: DATA_TYPE_REPOSITORY_ALIAS, + api: UmbFolderUpdateEntityAction, + }, + conditions: { + entityType: 'data-type', + }, + }, +]; + +export const manifests = [...entityActions, ...createManifests]; 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 ddaa4babdc..fac58d2628 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,13 @@ +import { manifests as entityActions } from './entity-actions/manifests'; import { manifests as repositoryManifests } from './repository/manifests'; import { manifests as menuItemManifests } from './menu-item/manifests'; import { manifests as treeManifests } from './tree/manifests'; import { manifests as workspaceManifests } from './workspace/manifests'; -export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; +export const manifests = [ + ...entityActions, + ...repositoryManifests, + ...menuItemManifests, + ...treeManifests, + ...workspaceManifests, +]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 29c995c92a..1f44f2d881 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -9,7 +9,7 @@ const menuItem: ManifestTypes = { meta: { label: 'Data Types', icon: 'umb:folder', - entityType: 'data-type', + entityType: 'data-type-root', treeAlias: 'Umb.Tree.DataTypes', }, conditions: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index c49f8e180c..d08e01a230 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -1,30 +1,44 @@ -import { UmbDataTypeTreeStore, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './data-type.tree.store'; -import { UmbDataTypeServerDataSource } from './sources/data-type.server.data'; +import { UmbDataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; import { UmbDataTypeStore, UMB_DATA_TYPE_STORE_CONTEXT_TOKEN } from './data-type.store'; -import { DataTypeTreeServerDataSource } from './sources/data-type.tree.server.data'; -import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbDataTypeServerDataSource } from './sources/data-type.server.data'; +import { UmbDataTypeTreeStore, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './data-type.tree.store'; +import { UmbDataTypeFolderServerDataSource } from './sources/data-type-folder.server.data'; +import type { + UmbTreeDataSource, + UmbTreeRepository, + UmbDetailRepository, + UmbFolderDataSource, + UmbDataSource, +} from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ProblemDetailsModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateDataTypeRequestModel, + CreateFolderRequestModel, + DataTypeResponseModel, + FolderModelBaseModel, + FolderTreeItemResponseModel, + UpdateDataTypeRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbFolderRepository } from '@umbraco-cms/backoffice/repository'; type ItemType = DataTypeResponseModel; type TreeItemType = any; -// Move to documentation / JSdoc -/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ -// element -> context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. -export class UmbDataTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbDataTypeRepository + implements UmbTreeRepository, UmbDetailRepository, UmbFolderRepository +{ #init!: Promise; #host: UmbControllerHostElement; #treeSource: UmbTreeDataSource; - #treeStore?: UmbDataTypeTreeStore; + #detailSource: UmbDataSource; + #folderSource: UmbFolderDataSource; - #detailDataSource: UmbDataTypeServerDataSource; #detailStore?: UmbDataTypeStore; + #treeStore?: UmbDataTypeTreeStore; #notificationContext?: UmbNotificationContext; @@ -32,8 +46,9 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new DataTypeTreeServerDataSource(this.#host); - this.#detailDataSource = new UmbDataTypeServerDataSource(this.#host); + this.#treeSource = new UmbDataTypeTreeServerDataSource(this.#host); + this.#detailSource = new UmbDataTypeServerDataSource(this.#host); + this.#folderSource = new UmbDataTypeFolderServerDataSource(this.#host); this.#init = Promise.all([ new UmbContextConsumerController(this.#host, UMB_DATA_TYPE_TREE_STORE_CONTEXT_TOKEN, (instance) => { @@ -50,9 +65,6 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U ]); } - // TODO: Trash - // TODO: Move - async requestRootTreeItems() { await this.#init; @@ -66,13 +78,9 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U } async requestTreeItemsOf(parentKey: string | null) { + if (!parentKey) throw new Error('Parent key is missing'); await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; - return { data: undefined, error }; - } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); if (data) { @@ -83,13 +91,9 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U } async requestTreeItems(keys: Array) { + if (!keys) throw new Error('Keys are missing'); await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; - return { data: undefined, error }; - } - const { data, error } = await this.#treeSource.getItems(keys); return { data, error, asObservable: () => this.#treeStore!.items(keys) }; @@ -101,6 +105,7 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U } async treeItemsOf(parentKey: string | null) { + if (parentKey === undefined) throw new Error('Parent key is missing'); await this.#init; return this.#treeStore!.childrenOf(parentKey); } @@ -113,25 +118,17 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U // DETAILS: async createScaffold(parentKey: string | null) { + if (parentKey === undefined) throw new Error('Parent key is missing'); await this.#init; - if (!parentKey) { - throw new Error('Parent key is missing'); - } - - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailSource.createScaffold(parentKey); } async requestByKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; - // TODO: should we show a notification if the key is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailSource.get(key); if (data) { this.#detailStore?.append(data); @@ -141,53 +138,49 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U } async byKey(key: string) { + if (!key) throw new Error('Key is missing'); await this.#init; return this.#detailStore!.byKey(key); } // Could potentially be general methods: + async create(dataType: ItemType) { + if (!dataType) throw new Error('Data Type is missing'); + if (!dataType.key) throw new Error('Data Type key is missing'); - async create(template: ItemType) { await this.#init; - if (!template || !template.key) { - throw new Error('Template is missing'); - } - - const { error } = await this.#detailDataSource.insert(template); + const { error } = await this.#detailSource.insert(dataType); if (!error) { - const notification = { data: { message: `Document created` } }; + const notification = { data: { message: `Data Type created` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - this.#detailStore?.append(template); - // TODO: Update tree store with the new item? or ask tree to request the new item? + this.#detailStore?.append(dataType); + this.#treeStore?.appendItems([dataType]); + } return { error }; } - async save(item: ItemType) { + async save(dataType: ItemType) { + if (!dataType) throw new Error('Data Type is missing'); + if (!dataType.key) throw new Error('Data Type key is missing'); + await this.#init; - if (!item || !item.key) { - throw new Error('Document-Type is missing'); - } - - const { error } = await this.#detailDataSource.update(item); + const { error } = await this.#detailSource.update(dataType.key, dataType); if (!error) { - const notification = { data: { message: `Document saved` } }; + const notification = { data: { message: `Data Type saved` } }; this.#notificationContext?.peek('positive', notification); } // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.key, { name: item.name }); + this.#detailStore?.append(dataType); + this.#treeStore?.updateItem(dataType.key, { name: dataType.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -196,16 +189,13 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U // General: async delete(key: string) { + if (!key) throw new Error('Data Type key is missing'); await this.#init; - if (!key) { - throw new Error('Document key is missing'); - } - - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailSource.delete(key); if (!error) { - const notification = { data: { message: `Document deleted` } }; + const notification = { data: { message: `Data Type deleted` } }; this.#notificationContext?.peek('positive', notification); } @@ -218,4 +208,74 @@ export class UmbDataTypeRepository implements UmbTreeRepository, U return { error }; } + + // folder + async createFolderScaffold(parentKey: string | null) { + if (parentKey === undefined) throw new Error('Parent key is missing'); + return this.#folderSource.createScaffold(parentKey); + } + + // TODO: temp create type until backend is ready. Remove the key addition when new types are generated. + async createFolder(folderRequest: CreateFolderRequestModel & { key?: string | undefined }) { + if (!folderRequest) throw new Error('folder request is missing'); + await this.#init; + + const { error } = await this.#folderSource.insert(folderRequest); + + // TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items? + if (!error) { + const treeItem: FolderTreeItemResponseModel = { + $type: 'FolderTreeItemResponseModel', + parentKey: folderRequest.parentKey, + name: folderRequest.name, + key: folderRequest.key, + isFolder: true, + isContainer: false, + type: 'data-type', + icon: 'umb:folder', + hasChildren: false, + }; + + this.#treeStore?.appendItems([treeItem]); + } + + return { error }; + } + + async deleteFolder(key: string) { + if (!key) throw new Error('Key is missing'); + + const { error } = await this.#folderSource.delete(key); + + if (!error) { + this.#treeStore?.removeItem(key); + } + + return { error }; + } + + async updateFolder(key: string, folder: FolderModelBaseModel) { + if (!key) throw new Error('Key is missing'); + if (!folder) throw new Error('Folder data is missing'); + + const { error } = await this.#folderSource.update(key, folder); + + if (!error) { + this.#treeStore?.updateItem(key, { name: folder.name }); + } + + return { error }; + } + + async requestFolder(key: string) { + if (!key) throw new Error('Key is missing'); + + const { data, error } = await this.#folderSource.get(key); + + if (data) { + this.#treeStore?.appendItems([data]); + } + + return { data, error }; + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts new file mode 100644 index 0000000000..ddeea07a1a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts @@ -0,0 +1,112 @@ +import { v4 as uuidv4 } from 'uuid'; +import { UmbFolderDataSource } from '@umbraco-cms/backoffice/repository'; +import { + DataTypeResource, + FolderReponseModel, + CreateFolderRequestModel, + FolderModelBaseModel, +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for a Data Type folder that fetches data from the server + * @export + * @class UmbDataTypeFolderServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { + #host: UmbControllerHostElement; + + /** + * Creates an instance of UmbDataTypeFolderServerDataSource. + * @param {UmbControllerHostElement} host + * @memberof UmbDataTypeFolderServerDataSource + */ + constructor(host: UmbControllerHostElement) { + this.#host = host; + } + + /** + * Creates a Data Type folder with the given key from the server + * @param {string} key + * @return {*} + * @memberof UmbDataTypeFolderServerDataSource + */ + async createScaffold(parentKey: string | null) { + const scaffold: FolderReponseModel = { + $type: 'FolderReponseModel', + name: '', + key: uuidv4(), + parentKey, + }; + + return { data: scaffold }; + } + + /** + * Fetches a Data Type folder with the given key from the server + * @param {string} key + * @return {*} + * @memberof UmbDataTypeFolderServerDataSource + */ + async get(key: string) { + if (!key) throw new Error('Key is missing'); + return tryExecuteAndNotify( + this.#host, + DataTypeResource.getDataTypeFolderByKey({ + key, + }) + ); + } + + /** + * Inserts a new Data Type folder on the server + * @param {folder} folder + * @return {*} + * @memberof UmbDataTypeFolderServerDataSource + */ + async insert(folder: CreateFolderRequestModel) { + if (!folder) throw new Error('Folder is missing'); + return tryExecuteAndNotify( + this.#host, + DataTypeResource.postDataTypeFolder({ + requestBody: folder, + }) + ); + } + + /** + * Updates a Data Type folder on the server + * @param {folder} folder + * @return {*} + * @memberof UmbDataTypeFolderServerDataSource + */ + async update(key: string, folder: FolderModelBaseModel) { + if (!key) throw new Error('Key is missing'); + if (!key) throw new Error('Folder data is missing'); + return tryExecuteAndNotify( + this.#host, + DataTypeResource.putDataTypeFolderByKey({ + key, + requestBody: folder, + }) + ); + } + + /** + * Deletes a Data Type folder with the given key on the server + * @param {string} key + * @return {*} + * @memberof UmbDataTypeServerDataSource + */ + async delete(key: string) { + if (!key) throw new Error('Key is missing'); + return tryExecuteAndNotify( + this.#host, + DataTypeResource.deleteDataTypeFolderByKey({ + key, + }) + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 126a1bd5ec..aab943d402 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -1,10 +1,11 @@ import { v4 as uuidv4 } from 'uuid'; import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; import { - ProblemDetailsModel, DataTypeResource, DataTypeResponseModel, DataTypeModelBaseModel, + CreateDataTypeRequestModel, + UpdateDataTypeRequestModel, } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -15,7 +16,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbDataTypeServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbDataTypeServerDataSource implements UmbDataSource { +export class UmbDataTypeServerDataSource + implements + UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -34,11 +38,7 @@ export class UmbDataTypeServerDataSource implements UmbDataSource( + tryExecuteAndNotify( this.#host, - // TODO: avoid this any?.. - tryExecuteAndNotify( - this.#host, - DataTypeResource.postDataType({ - requestBody, - }) - ) as any + DataTypeResource.postDataType({ + requestBody: dataType, + }) ); } @@ -95,42 +87,14 @@ export class UmbDataTypeServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.putDataTypeByKey({ - key: dataType.key, - requestBody, - }) - ); - } - - /** - * Trash a Document on the server - * @param {Document} Document - * @return {*} - * @memberof UmbDataTypeServerDataSource - */ - async trash(key: string) { - if (!key) { - const error: ProblemDetailsModel = { title: 'DataType key is missing' }; - return { error }; - } - - // TODO: use resources when end point is ready: - return tryExecuteAndNotify( - this.#host, - DataTypeResource.deleteDataTypeByKey({ key, + requestBody: data, }) ); } @@ -142,13 +106,9 @@ export class UmbDataTypeServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, DataTypeResource.deleteDataTypeByKey({ key, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index 8613494a9d..c2582f00e8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -1,54 +1,21 @@ import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; -import { ProblemDetailsModel, DataTypeResource } from '@umbraco-cms/backoffice/backend-api'; +import { DataTypeResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server * @export - * @class DocumentTreeServerDataSource + * @class UmbDataTypeTreeServerDataSource * @implements {DocumentTreeDataSource} */ -export class DataTypeTreeServerDataSource implements UmbTreeDataSource { +export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; - // TODO: how do we handle trashed items? - async trashItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'DataType keys is missing' }; - return { error }; - } - - // TODO: use resources when end point is ready: - /* - return tryExecuteAndNotify( - this.#host, - DataTypeResource.deleteDataTypeByKey({ - key: keys, - }) - ); - */ - return Promise.resolve({ error: null, data: null }); - } - - async moveItems(keys: Array, destination: string) { - // TODO: use backend cli when available. - return tryExecuteAndNotify( - this.#host, - fetch('/umbraco/management/api/v1/data-type/move', { - method: 'POST', - body: JSON.stringify({ keys, destination }), - headers: { - 'Content-Type': 'application/json', - }, - }) - ); - } - /** - * Creates an instance of DocumentTreeServerDataSource. + * Creates an instance of UmbDataTypeTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof DocumentTreeServerDataSource + * @memberof UmbDataTypeTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -57,7 +24,7 @@ export class DataTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDataTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, DataTypeResource.getTreeDataTypeRoot({})); @@ -67,13 +34,10 @@ export class DataTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent key from the server * @param {(string | null)} parentKey * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDataTypeTreeServerDataSource */ async getChildrenOf(parentKey: string | null) { - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; - return { error }; - } + if (!parentKey) throw new Error('Parent key is missing'); return tryExecuteAndNotify( this.#host, @@ -87,14 +51,10 @@ export class DataTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given keys from the server * @param {Array} keys * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDataTypeTreeServerDataSource */ async getItems(keys: Array) { - if (keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; - return { error }; - } - + if (!keys) throw new Error('Keys are missing'); return tryExecuteAndNotify( this.#host, DataTypeResource.getTreeDataTypeItem({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts index 768c114d96..d37dada762 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.repository.ts @@ -105,9 +105,11 @@ export class UmbLanguageRepository { * @memberof UmbLanguageRepository */ async save(language: LanguageResponseModel) { + if (!language.isoCode) throw new Error('Language iso code is missing'); + await this.#init; - const { error } = await this.#dataSource.update(language); + const { error } = await this.#dataSource.update(language.isoCode, language); if (!error) { const notification = { data: { message: `Language saved` } }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts deleted file mode 100644 index 4a3e236af4..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { LanguageResponseModel, PagedLanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { UmbDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repository'; - -// TODO: This is a temporary solution until we have a proper paging interface -type paging = { - skip: number; - take: number; -}; - -export interface UmbLanguageDataSource extends UmbDataSource { - createScaffold(): Promise>; - get(isoCode: string): Promise>; - delete(isoCode: string): Promise>; - getCollection(paging: paging): Promise>; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts index a7b8096dc5..af2231bbe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts @@ -1,6 +1,12 @@ -import { ProblemDetailsModel, LanguageResource, LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + ProblemDetailsModel, + LanguageResource, + LanguageResponseModel, + CreateLanguageRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; /** * A data source for the Language that fetches data from the server @@ -8,7 +14,9 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbLanguageServerDataSource * @implements {RepositoryDetailDataSource} */ -export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource { +export class UmbLanguageServerDataSource + implements UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -27,11 +35,7 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @memberof UmbLanguageServerDataSource */ async get(isoCode: string) { - if (!isoCode) { - const error: ProblemDetailsModel = { title: 'Iso Code is missing' }; - return { error }; - } - + if (!isoCode) throw new Error('Iso Code is missing'); return tryExecuteAndNotify( this.#host, LanguageResource.getLanguageByIsoCode({ @@ -64,7 +68,7 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @return {*} * @memberof UmbLanguageServerDataSource */ - async insert(language: LanguageResponseModel) { + async insert(language: CreateLanguageRequestModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; @@ -79,7 +83,7 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @return {*} * @memberof UmbLanguageServerDataSource */ - async update(language: LanguageResponseModel) { + async update(iscoCode: string, language: LanguageResponseModel) { if (!language.isoCode) { const error: ProblemDetailsModel = { title: 'Language iso code is missing' }; return { error }; @@ -98,15 +102,8 @@ export class UmbLanguageServerDataSource implements UmbLanguageServerDataSource * @memberof UmbLanguageServerDataSource */ async delete(isoCode: string) { - if (!isoCode) { - const error: ProblemDetailsModel = { title: 'Iso code is missing' }; - return { error }; - } - - return tryExecuteAndNotify( - this.#host, - tryExecuteAndNotify(this.#host, LanguageResource.deleteLanguageByIsoCode({ isoCode })).then(() => isoCode) - ); + if (!isoCode) throw new Error('Iso Code is missing'); + return tryExecuteAndNotify(this.#host, LanguageResource.deleteLanguageByIsoCode({ isoCode })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index f56abe82ee..e098faaefd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -166,7 +166,7 @@ export class UmbRelationTypeRepository implements UmbTreeRepository { +export class UmbRelationTypeServerDataSource + implements UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -61,72 +63,35 @@ export class UmbRelationTypeServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, - // TODO: avoid this any?.. - tryExecuteAndNotify( - this.#host, - RelationTypeResource.postRelationType({ - requestBody, - }) - ) as any - ); - } - - /** - * Updates a RelationType on the server - * @param {RelationTypeResponseModel} RelationType - * @return {*} - * @memberof UmbRelationTypeServerDataSource - */ - // TODO: Error mistake in this: - async update(RelationType: RelationTypeResponseModel) { - if (!RelationType.key) { - const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; - return { error }; - } - - const requestBody: UpdateRelationTypeRequestModel = { ...RelationType }; - - // TODO: use resources when end point is ready: - return tryExecuteAndNotify( - this.#host, - RelationTypeResource.putRelationTypeByKey({ - key: RelationType.key, - requestBody, + RelationTypeResource.postRelationType({ + requestBody: relationType, }) ); } /** - * Trash a Document on the server - * @param {Document} Document + * Updates a RelationType on the server + * @param {RelationTypeResponseModel} relationType * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async trash(key: string) { - if (!key) { - const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; - return { error }; - } + async update(key: string, relationType: UpdateRelationTypeRequestModel) { + if (!key) throw new Error('RelationType key is missing'); - // TODO: use resources when end point is ready: - return tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, - RelationTypeResource.deleteRelationTypeByKey({ + RelationTypeResource.putRelationTypeByKey({ key, + requestBody: relationType, }) ); } @@ -143,8 +108,7 @@ export class UmbRelationTypeServerDataSource implements UmbDataSource( + return tryExecuteAndNotify( this.#host, RelationTypeResource.deleteRelationTypeByKey({ key, 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 7ba6b5fb07..d7c74fb3df 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 @@ -41,6 +41,8 @@ import './tree/tree.element'; import './tree/entity-tree-item/entity-tree-item.element'; import './tree/tree-menu-item/tree-menu-item.element'; +import './menu/menu-item-base/menu-item-base.element'; + import './variantable-property/variantable-property.element'; import './workspace/workspace-action-menu/workspace-action-menu.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts deleted file mode 100644 index caf7c4d39b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu-item/menu-item.element.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { css, html } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property, state } from 'lit/decorators.js'; -import { ifDefined } from 'lit/directives/if-defined.js'; -import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; - -@customElement('umb-menu-item') -export class UmbMenuItemElement extends UmbLitElement { - static styles = [UUITextStyles, css``]; - - @property({ type: Object, attribute: false }) - manifest!: ManifestMenuItem; - - @state() - private _href?: string; - - #sectionContext?: UmbSectionContext; - - constructor() { - super(); - - this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { - this.#sectionContext = sectionContext; - this._observeSection(); - }); - } - - private _observeSection() { - if (!this.#sectionContext) return; - - this.observe(this.#sectionContext?.pathname, (pathname) => { - if (!pathname) return; - this._href = this._constructPath(pathname); - }); - } - - // TODO: how do we handle this? - private _constructPath(sectionPathname: string) { - return `section/${sectionPathname}/workspace/${this.manifest.meta.entityType}`; - } - - render() { - return html` `; - } -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-menu-item': UmbMenuItemElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item-base/menu-item-base.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item-base/menu-item-base.element.ts new file mode 100644 index 0000000000..ad7cd66ff4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item-base/menu-item-base.element.ts @@ -0,0 +1,125 @@ +import { css, html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { map } from 'rxjs'; +import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/section.context'; +import { + UmbSectionSidebarContext, + UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, +} from '../../section/section-sidebar/section-sidebar.context'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; + +@customElement('umb-menu-item-base') +export class UmbMenuItemBaseElement extends UmbLitElement { + static styles = [UUITextStyles, css``]; + + private _entityType?: string; + @property({ type: String, attribute: 'entity-type' }) + public get entityType() { + return this._entityType; + } + public set entityType(value: string | undefined) { + this._entityType = value; + this.#observeEntityActions(); + } + + @property({ type: String, attribute: 'icon-name' }) + public iconName = ''; + + @property({ type: String }) + public label = ''; + + @property({ type: Boolean, attribute: 'has-children' }) + public hasChildren = false; + + @state() + private _href?: string; + + @state() + private _hasActions = false; + + #sectionContext?: UmbSectionContext; + #sectionSidebarContext?: UmbSectionSidebarContext; + #actionObserver?: UmbObserverController>; + + constructor() { + super(); + + this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (sectionContext) => { + this.#sectionContext = sectionContext; + this._observeSection(); + }); + + this.consumeContext(UMB_SECTION_SIDEBAR_CONTEXT_TOKEN, (sectionContext) => { + this.#sectionSidebarContext = sectionContext; + }); + } + + #observeEntityActions() { + if (this.#actionObserver) this.#actionObserver.destroy(); + + this.#actionObserver = this.observe( + umbExtensionsRegistry + .extensionsOfType('entityAction') + .pipe(map((actions) => actions.filter((action) => action.conditions.entityType === this.entityType))), + (actions) => { + this._hasActions = actions.length > 0; + }, + 'entityAction' + ); + } + + private _observeSection() { + if (!this.#sectionContext) return; + + this.observe(this.#sectionContext?.pathname, (pathname) => { + if (!pathname) return; + this._href = this._constructPath(pathname); + }); + } + + // TODO: how do we handle this? + // TODO: use router context + private _constructPath(sectionPathname: string) { + return `section/${sectionPathname}/workspace/${this.entityType}`; + } + + private _openActions() { + if (!this.entityType) throw new Error('Entity type is not defined'); + this.#sectionSidebarContext?.toggleContextMenu(this.entityType, undefined, this.label); + } + + render() { + return html` ${this.#renderIcon()}${this.#renderActions()}`; + } + + #renderIcon() { + return html` `; + } + + #renderActions() { + return html` + ${this._hasActions + ? html` + + + + + + ` + : nothing} + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-menu-item-base': UmbMenuItemBaseElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item/menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item/menu-item.element.ts new file mode 100644 index 0000000000..0639f05620 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/menu/menu-item/menu-item.element.ts @@ -0,0 +1,31 @@ +import { html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; + +export interface UmbMenuItemExtensionElement { + manifest: ManifestMenuItem; +} + +@customElement('umb-menu-item') +export class UmbMenuItemElement extends UmbLitElement implements UmbMenuItemExtensionElement { + static styles = [UUITextStyles]; + + @property({ type: Object, attribute: false }) + manifest!: ManifestMenuItem; + + render() { + return html``; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-menu-item': UmbMenuItemElement; + } +} 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 index 62cc9d6c76..55679c7bc2 100644 --- 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 @@ -4,7 +4,7 @@ import { customElement, property } from 'lit/decorators.js'; import { ManifestMenu, ManifestMenuItem } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import '../menu-item/menu-item.element'; +import './menu-item/menu-item.element'; @customElement('umb-menu') export class UmbMenuElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts index ccede9a33e..c3a4264b2a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts @@ -20,13 +20,14 @@ export class UmbSectionSidebarContext { this.#host = host; } - toggleContextMenu(entityType: string, unique: string, headline: string) { - this.#unique.getValue() === unique ? this.closeContextMenu() : this.openContextMenu(entityType, unique, headline); + toggleContextMenu(entityType: string, unique: string | undefined, headline: string) { + console.log('open for ', entityType, unique, headline); + this.openContextMenu(entityType, unique, headline); } // TODO: we wont get notified about tree item name changes because we don't have a subscription // we need to figure out how we best can handle this when we only know the entity and unique id - openContextMenu(entityType: string, unique: string, headline: string) { + openContextMenu(entityType: string, unique: string | undefined, headline: string) { this.#entityType.next(entityType); this.#unique.next(unique); this.#headline.next(headline); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts index 91a0304a92..7922feb209 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-menu-item/tree-menu-item.element.ts @@ -1,5 +1,7 @@ import { html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { UUIMenuItemEvent } from '@umbraco-ui/uui'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestKind, ManifestMenuItemTreeKind } from '@umbraco-cms/backoffice/extensions-registry'; @@ -22,11 +24,13 @@ export class UmbMenuItemTreeElement extends UmbLitElement { @state() private _renderTree = false; - private _onShowChildren() { + private _onShowChildren(event: UUIMenuItemEvent) { + event.stopPropagation(); this._renderTree = true; } - private _onHideChildren() { + private _onHideChildren(event: UUIMenuItemEvent) { + event.stopPropagation(); this._renderTree = false; } @@ -38,15 +42,15 @@ export class UmbMenuItemTreeElement extends UmbLitElement { render() { return this.manifest ? html` - + has-children> ${this._renderTree ? html`` : nothing} - + ` : ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/folder/folder-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/folder/folder-modal.element.ts new file mode 100644 index 0000000000..eb9986ff11 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/folder/folder-modal.element.ts @@ -0,0 +1,177 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, query, state } from 'lit/decorators.js'; +import { UmbFolderModalData, UmbFolderModalResult, UmbModalHandler } from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbFolderRepository } from '@umbraco-cms/backoffice/repository'; +import { createExtensionClass, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; +import { FolderReponseModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; + +@customElement('umb-folder-modal') +export class UmbFolderModalElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + #name { + width: 100%; + } + `, + ]; + + @property({ attribute: false }) + modalHandler?: UmbModalHandler; + + private _data?: UmbFolderModalData; + @property({ type: Object, attribute: false }) + public get data() { + return this._data; + } + public set data(value: UmbFolderModalData | undefined) { + this._data = value; + this.#unique = value?.unique || null; + this.#repositoryAlias = value?.repositoryAlias; + this.#observeRepository(); + } + + #repositoryAlias?: string; + #unique: string | null = null; + #repository?: UmbFolderRepository; + #repositoryObserver?: UmbObserverController; + + @state() + _folder?: FolderReponseModel; + + @state() + _headline?: string; + + @state() + _isNew = false; + + #observeRepository() { + this.#repositoryObserver?.destroy(); + if (!this.#repositoryAlias) return; + this.#repositoryObserver = this.observe( + umbExtensionsRegistry.getByTypeAndAlias('repository', this.#repositoryAlias), + async (repositoryManifest) => { + if (!repositoryManifest) return; + + try { + const result = await createExtensionClass(repositoryManifest, [this]); + this.#repository = result; + this.#init(); + } catch (error) { + throw new Error('Could not create repository with alias: ' + this.#repositoryAlias + ''); + } + } + ); + } + + // TODO: so I ended up building a full workspace in the end. We should look into building the real workspace folder editor + // and see if we can use that in this modal instead of this custom logic. + #init() { + if (this.#unique) { + this.#load(); + } else { + this.#create(); + } + } + + async #create() { + if (!this.#repository) throw new Error('Repository is required to create folder'); + const { data } = await this.#repository.createFolderScaffold(this.#unique); + this._folder = data; + this._isNew = true; + } + + async #load() { + if (!this.#unique) throw new Error('Unique is required to load folder'); + if (!this.#repository) throw new Error('Repository is required to create folder'); + const { data } = await this.#repository.requestFolder(this.#unique); + this._folder = data; + this._isNew = false; + } + + @query('#dataTypeFolderForm') + private _formElement?: HTMLFormElement; + + #onCancel() { + this.modalHandler?.reject(); + } + + #submitForm() { + this._formElement?.requestSubmit(); + } + + async #onSubmit(event: SubmitEvent) { + event.preventDefault(); + if (!this._folder) throw new Error('Folder is not initialized correctly'); + if (!this.#repository) throw new Error('Repository is required to create folder'); + + const isValid = this._formElement?.checkValidity(); + if (!isValid) return; + + let error: ProblemDetailsModel | undefined; + + const formData = new FormData(this._formElement); + const folderName = formData.get('name') as string; + + this._folder = { ...this._folder, name: folderName }; + + if (this._isNew) { + const { error: createError } = await this.#repository.createFolder(this._folder); + error = createError; + } else { + if (!this.#unique) throw new Error('Unique is required to update folder'); + const { error: updateError } = await this.#repository.updateFolder(this.#unique, this._folder); + error = updateError; + } + + if (!error) { + this.modalHandler?.submit(); + } + } + + render() { + return html` + + + +
    + + Folder name + + +
    +
    +
    + + + +
    + `; + } +} + +export default UmbFolderModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-folder-modal': UmbFolderModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts index 37134949c7..a91cbbc426 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/manifests.ts @@ -7,6 +7,12 @@ const modals: Array = [ name: 'Confirm Modal', loader: () => import('./confirm/confirm-modal.element'), }, + { + type: 'modal', + alias: 'Umb.Modal.Folder', + name: 'Folder Modal', + loader: () => import('./folder/folder-modal.element'), + }, { type: 'modal', alias: 'Umb.Modal.IconPicker', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts index 65fcd64e91..1e29622343 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts @@ -8,7 +8,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @class UmbStylesheetServerDataSource * @implements {UmbStylesheetServerDataSource} */ -export class UmbStylesheetServerDataSource implements UmbDataSource { +export class UmbStylesheetServerDataSource implements UmbDataSource { #host: UmbControllerHostElement; /** @@ -38,10 +38,10 @@ export class UmbStylesheetServerDataSource implements UmbDataSource> { throw new Error('Method not implemented.'); } - update(data: StylesheetDetails): Promise> { + update(path: string, data: StylesheetDetails): Promise> { throw new Error('Method not implemented.'); } - delete(key: string): Promise> { + delete(path: string): Promise { throw new Error('Method not implemented.'); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index 8661c38826..83e6cd42e3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -1,9 +1,21 @@ import { UmbEntityData } from './entity.data'; import { createFolderTreeItem } from './utils'; -import type { FolderTreeItemResponseModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { + FolderTreeItemResponseModel, + DataTypeResponseModel, + CreateFolderRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; -// TODO: investigate why we don't get an entity type as part of the DataTypeModel -export const data: Array = [ +// TODO: investigate why we don't get an type as part of the DataTypeModel +export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | FolderTreeItemResponseModel> = [ + { + $type: 'data-type', + type: 'data-type', + name: 'Folder 1', + key: 'dt-folder1', + parentKey: null, + isFolder: true, + }, { $type: 'data-type', type: 'data-type', @@ -590,7 +602,7 @@ export const data: Array = [ // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDataTypeData extends UmbEntityData { +class UmbDataTypeData extends UmbEntityData { constructor() { super(data); } @@ -609,6 +621,28 @@ class UmbDataTypeData extends UmbEntityData { const items = this.data.filter((item) => keys.includes(item.key ?? '')); return items.map((item) => createFolderTreeItem(item)); } + + createFolder(folder: CreateFolderRequestModel & { key: string | undefined }) { + const newFolder: FolderTreeItemResponseModel = { + name: folder.name, + key: folder.key, + parentKey: folder.parentKey, + $type: 'data-type', + type: 'data-type', + isFolder: true, + isContainer: false, + }; + + this.data.push(newFolder); + } + + // TODO: this could be reused across other types that support folders + deleteFolder(key: string) { + const item = this.getByKey(key) as FolderTreeItemResponseModel; + if (!item) throw new Error(`Item with key ${key} not found`); + if (!item.isFolder) throw new Error(`Item with key ${key} is not a folder`); + this.data = this.data.filter((item) => item.key !== key); + } } export const umbDataTypeData = new UmbDataTypeData(); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts index c6c3c740e2..d235482f9a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts @@ -1,19 +1,12 @@ import { rest } from 'msw'; import { umbDataTypeData } from '../data/data-type.data'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; // TODO: add schema export const handlers = [ - rest.delete('/umbraco/backoffice/data-type/:key', async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; - - umbDataTypeData.delete([key]); - - return res(ctx.status(200)); - }), - - rest.get('/umbraco/management/api/v1/tree/data-type/root', (req, res, ctx) => { + // TREE + rest.get(umbracoPath('/tree/data-type/root'), (req, res, ctx) => { const rootItems = umbDataTypeData.getTreeRoot(); const response = { total: rootItems.length, @@ -22,7 +15,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/management/api/v1/tree/data-type/children', (req, res, ctx) => { + rest.get(umbracoPath('/tree/data-type/children'), (req, res, ctx) => { const parentKey = req.url.searchParams.get('parentKey'); if (!parentKey) return; @@ -36,13 +29,70 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/management/api/v1/tree/data-type/item', (req, res, ctx) => { + rest.get(umbracoPath('/tree/data-type/item'), (req, res, ctx) => { const keys = req.url.searchParams.getAll('key'); if (!keys) return; const items = umbDataTypeData.getTreeItem(keys); return res(ctx.status(200), ctx.json(items)); }), + // FOLDERS + rest.post(umbracoPath('/data-type/folder'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + umbDataTypeData.createFolder(data); + + return res(ctx.status(200)); + }), + + rest.get(umbracoPath('/data-type/folder/:key'), (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + const dataType = umbDataTypeData.getByKey(key); + + return res(ctx.status(200), ctx.json(dataType)); + }), + + rest.put(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + umbDataTypeData.save(data); + + return res(ctx.status(200)); + }), + + rest.delete(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + try { + umbDataTypeData.deleteFolder(key); + return res(ctx.status(200)); + } catch (error) { + return res( + ctx.status(404), + ctx.json({ + status: 404, + type: 'error', + detail: 'Not Found', + }) + ); + } + }), + + // Details + rest.post(umbracoPath('/data-type'), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbDataTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), + rest.get(umbracoPath('/data-type/:key'), (req, res, ctx) => { const key = req.params.key as string; if (!key) return; @@ -52,15 +102,6 @@ export const handlers = [ return res(ctx.status(200), ctx.json(dataType)); }), - rest.post(umbracoPath('/data-type/:key'), async (req, res, ctx) => { - const data = await req.json(); - if (!data) return; - - const saved = umbDataTypeData.save(data); - - return res(ctx.status(200), ctx.json(saved)); - }), - rest.put(umbracoPath('/data-type/:key'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -69,4 +110,13 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), + + rest.delete(umbracoPath('/data-type/:key'), async (req, res, ctx) => { + const key = req.params.key as string; + if (!key) return; + + umbDataTypeData.delete([key]); + + return res(ctx.status(200)); + }), ]; From 7096bad6f06979b76921a7edd4b13d1d0be32acb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 19:00:43 +0000 Subject: [PATCH 502/550] Bump eslint-config-prettier from 8.6.0 to 8.8.0 Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 8.6.0 to 8.8.0. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v8.6.0...v8.8.0) --- updated-dependencies: - dependency-name: eslint-config-prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 14 +++++++------- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 77a30f411a..dc2aa1db7f 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -46,7 +46,7 @@ "@web/test-runner-playwright": "^0.9.0", "babel-loader": "^9.1.2", "eslint": "^8.32.0", - "eslint-config-prettier": "^8.6.0", + "eslint-config-prettier": "^8.8.0", "eslint-import-resolver-typescript": "^3.5.3", "eslint-plugin-import": "^2.27.4", "eslint-plugin-lit": "^1.8.2", @@ -9352,9 +9352,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -25256,9 +25256,9 @@ } }, "eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true }, "eslint-import-resolver-node": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 2d00798d91..7d1c746780 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -97,7 +97,7 @@ "@web/test-runner-playwright": "^0.9.0", "babel-loader": "^9.1.2", "eslint": "^8.32.0", - "eslint-config-prettier": "^8.6.0", + "eslint-config-prettier": "^8.8.0", "eslint-import-resolver-typescript": "^3.5.3", "eslint-plugin-import": "^2.27.4", "eslint-plugin-lit": "^1.8.2", From df9dfc5d20f64f3b4e13e85a5064cfae3fdf3b31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 19:01:34 +0000 Subject: [PATCH 503/550] Bump @typescript-eslint/parser from 5.54.0 to 5.57.0 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.54.0 to 5.57.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.57.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 200 ++++++++++++++++++-- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 188 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 77a30f411a..aea466046a 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -38,7 +38,7 @@ "@types/mocha": "^10.0.0", "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.54.0", + "@typescript-eslint/parser": "^5.57.0", "@web/dev-server-esbuild": "^0.3.3", "@web/dev-server-import-maps": "^0.0.7", "@web/dev-server-rollup": "^0.3.21", @@ -5390,14 +5390,14 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", - "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "debug": "^4.3.4" }, "engines": { @@ -5416,6 +5416,113 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.54.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz", @@ -21951,15 +22058,82 @@ } }, "@typescript-eslint/parser": { - "version": "5.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.54.0.tgz", - "integrity": "sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==", + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.0.tgz", + "integrity": "sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.54.0", - "@typescript-eslint/types": "5.54.0", - "@typescript-eslint/typescript-estree": "5.54.0", + "@typescript-eslint/scope-manager": "5.57.0", + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/typescript-estree": "5.57.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz", + "integrity": "sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0" + } + }, + "@typescript-eslint/types": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.0.tgz", + "integrity": "sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz", + "integrity": "sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.57.0", + "@typescript-eslint/visitor-keys": "5.57.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz", + "integrity": "sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.57.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "@typescript-eslint/scope-manager": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 2d00798d91..e610601d62 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -89,7 +89,7 @@ "@types/mocha": "^10.0.0", "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.54.0", + "@typescript-eslint/parser": "^5.57.0", "@web/dev-server-esbuild": "^0.3.3", "@web/dev-server-import-maps": "^0.0.7", "@web/dev-server-rollup": "^0.3.21", From 7cbb9f4963f41b6cdd398a0edd9bb4e270e300ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 09:10:57 +0200 Subject: [PATCH 504/550] + imports --- .../modals/current-user/current-user-modal.element.ts | 2 +- .../user-profile-apps/user-profile-app-history.element.ts | 2 +- .../user-profile-apps/user-profile-app-themes.element.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts index 88dfb0be81..862d2e5823 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/modals/current-user/current-user-modal.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, CSSResultGroup, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; +import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; import { UmbModalHandler } from '@umbraco-cms/backoffice/modal'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN } from '../../current-user.store'; @customElement('umb-current-user-modal') export class UmbCurrentUserModalElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-history.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-history.element.ts index 6c6c792a0c..ffdd50ace4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-history.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-history.element.ts @@ -1,12 +1,12 @@ import { css, html, nothing } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbCurrentUserHistoryItem, UmbCurrentUserHistoryStore, UMB_CURRENT_USER_HISTORY_STORE_CONTEXT_TOKEN, } from '../current-user-history.store'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-user-profile-app-history') export class UmbUserProfileAppHistoryElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-themes.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-themes.element.ts index 423b7509f0..b6bc69938f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-themes.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-themes.element.ts @@ -2,10 +2,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UUISelectEvent } from '@umbraco-ui/uui'; +import { UmbThemeContext, UMB_THEME_CONTEXT_TOKEN } from '../../../themes/theme.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestTheme } from '@umbraco-cms/backoffice/extensions-registry'; -import { UmbThemeContext, UMB_THEME_CONTEXT_TOKEN } from '../../../themes/theme.context'; @customElement('umb-user-profile-app-themes') export class UmbUserProfileAppThemesElement extends UmbLitElement { From cc050d137b154724d9f06067e3a86b42162fe670 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 18:59:07 +0000 Subject: [PATCH 505/550] Bump vite from 4.1.4 to 4.2.1 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.1.4 to 4.2.1. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.2.1/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 1542 ++++++++++++++++++- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 1532 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 8c2ef9ca9d..17a3a49afa 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -69,7 +69,7 @@ "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", "typescript": "^4.9.5", - "vite": "^4.1.4", + "vite": "^4.2.1", "vite-plugin-static-copy": "^0.13.0", "vite-tsconfig-paths": "^4.0.5", "web-component-analyzer": "^2.0.0-next.4" @@ -2015,6 +2015,70 @@ "react": ">=16.8.0" } }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz", + "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz", + "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.14.tgz", + "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz", + "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-x64": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", @@ -2031,6 +2095,278 @@ "node": ">=12" } }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz", + "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz", + "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz", + "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz", + "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz", + "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz", + "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz", + "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz", + "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz", + "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz", + "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz", + "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz", + "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz", + "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz", + "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz", + "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz", + "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz", + "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", @@ -6669,6 +7005,22 @@ "node": ">=10.0.0" } }, + "node_modules/@web/dev-server-esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@web/dev-server-esbuild/node_modules/esbuild": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", @@ -9343,6 +9695,38 @@ "@esbuild/win32-x64": "0.16.17" } }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-darwin-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", @@ -9359,6 +9743,214 @@ "node": ">=12" } }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild-plugin-alias": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", @@ -9377,6 +9969,406 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -17486,15 +18478,15 @@ } }, "node_modules/vite": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", - "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", + "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", "dev": true, "dependencies": { - "esbuild": "^0.16.14", + "esbuild": "^0.17.5", "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.10.0" + "rollup": "^3.18.0" }, "bin": { "vite": "bin/vite.js" @@ -17563,6 +18555,59 @@ "tsconfck": "^2.0.1" } }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz", + "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.14.tgz", + "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.14", + "@esbuild/android-arm64": "0.17.14", + "@esbuild/android-x64": "0.17.14", + "@esbuild/darwin-arm64": "0.17.14", + "@esbuild/darwin-x64": "0.17.14", + "@esbuild/freebsd-arm64": "0.17.14", + "@esbuild/freebsd-x64": "0.17.14", + "@esbuild/linux-arm": "0.17.14", + "@esbuild/linux-arm64": "0.17.14", + "@esbuild/linux-ia32": "0.17.14", + "@esbuild/linux-loong64": "0.17.14", + "@esbuild/linux-mips64el": "0.17.14", + "@esbuild/linux-ppc64": "0.17.14", + "@esbuild/linux-riscv64": "0.17.14", + "@esbuild/linux-s390x": "0.17.14", + "@esbuild/linux-x64": "0.17.14", + "@esbuild/netbsd-x64": "0.17.14", + "@esbuild/openbsd-x64": "0.17.14", + "@esbuild/sunos-x64": "0.17.14", + "@esbuild/win32-arm64": "0.17.14", + "@esbuild/win32-ia32": "0.17.14", + "@esbuild/win32-x64": "0.17.14" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -19456,6 +20501,34 @@ "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", "dev": true }, + "@esbuild/android-arm": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz", + "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz", + "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.14.tgz", + "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz", + "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==", + "dev": true, + "optional": true + }, "@esbuild/darwin-x64": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", @@ -19463,6 +20536,125 @@ "dev": true, "optional": true }, + "@esbuild/freebsd-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz", + "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz", + "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz", + "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz", + "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz", + "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz", + "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz", + "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz", + "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz", + "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz", + "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz", + "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz", + "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz", + "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz", + "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz", + "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz", + "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz", + "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==", + "dev": true, + "optional": true + }, "@eslint/eslintrc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", @@ -23176,6 +24368,13 @@ "ua-parser-js": "^1.0.2" }, "dependencies": { + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, "esbuild": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", @@ -25242,8 +26441,171 @@ "@esbuild/win32-arm64": "0.16.17", "@esbuild/win32-ia32": "0.16.17", "@esbuild/win32-x64": "0.16.17" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "dev": true, + "optional": true + } } }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, "esbuild-darwin-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", @@ -25251,6 +26613,97 @@ "dev": true, "optional": true }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, "esbuild-plugin-alias": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", @@ -25266,6 +26719,34 @@ "debug": "^4.3.4" } }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -31390,16 +32871,55 @@ "dev": true }, "vite": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", - "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", + "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", "dev": true, "requires": { - "esbuild": "^0.16.14", + "esbuild": "^0.17.5", "fsevents": "~2.3.2", "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.10.0" + "rollup": "^3.18.0" + }, + "dependencies": { + "@esbuild/darwin-x64": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz", + "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.17.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.14.tgz", + "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.14", + "@esbuild/android-arm64": "0.17.14", + "@esbuild/android-x64": "0.17.14", + "@esbuild/darwin-arm64": "0.17.14", + "@esbuild/darwin-x64": "0.17.14", + "@esbuild/freebsd-arm64": "0.17.14", + "@esbuild/freebsd-x64": "0.17.14", + "@esbuild/linux-arm": "0.17.14", + "@esbuild/linux-arm64": "0.17.14", + "@esbuild/linux-ia32": "0.17.14", + "@esbuild/linux-loong64": "0.17.14", + "@esbuild/linux-mips64el": "0.17.14", + "@esbuild/linux-ppc64": "0.17.14", + "@esbuild/linux-riscv64": "0.17.14", + "@esbuild/linux-s390x": "0.17.14", + "@esbuild/linux-x64": "0.17.14", + "@esbuild/netbsd-x64": "0.17.14", + "@esbuild/openbsd-x64": "0.17.14", + "@esbuild/sunos-x64": "0.17.14", + "@esbuild/win32-arm64": "0.17.14", + "@esbuild/win32-ia32": "0.17.14", + "@esbuild/win32-x64": "0.17.14" + } + } } }, "vite-plugin-static-copy": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index c0d6d37feb..9bf129c76d 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -120,7 +120,7 @@ "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", "typescript": "^4.9.5", - "vite": "^4.1.4", + "vite": "^4.2.1", "vite-plugin-static-copy": "^0.13.0", "vite-tsconfig-paths": "^4.0.5", "web-component-analyzer": "^2.0.0-next.4" From 447c833bf867ba8aeca2331335ef46132a32aabc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 18:59:35 +0000 Subject: [PATCH 506/550] Bump lit from 2.6.1 to 2.7.0 Bumps [lit](https://github.com/lit/lit/tree/HEAD/packages/lit) from 2.6.1 to 2.7.0. - [Release notes](https://github.com/lit/lit/releases) - [Changelog](https://github.com/lit/lit/blob/main/packages/lit/CHANGELOG.md) - [Commits](https://github.com/lit/lit/commits/lit@2.7.0/packages/lit) --- updated-dependencies: - dependency-name: lit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 64 +++++++++++---------- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 17a3a49afa..0360d9c5e8 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -12,7 +12,7 @@ "@umbraco-ui/uui": "^1.2.0-rc.2", "@umbraco-ui/uui-css": "^1.2.0-rc.2", "element-internals-polyfill": "^1.1.19", - "lit": "^2.6.1", + "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", "router-slot": "file:router-slot-1.6.1.tgz", @@ -2809,9 +2809,9 @@ "dev": true }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz", - "integrity": "sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.0.tgz", + "integrity": "sha512-92uQ5ARf7UXYrzaFcAX3T2rTvaS9Z1//ukV+DqjACM4c8s0ZBQd7ayJU5Dh2AFLD/Ayuyz4uMmxQec8q3U4Ong==" }, "node_modules/@lit/reactive-element": { "version": "1.6.1", @@ -13999,28 +13999,29 @@ "dev": true }, "node_modules/lit": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.1.tgz", - "integrity": "sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.0.tgz", + "integrity": "sha512-qSy2BAVA+OiWtNptP404egcC/izDdNRw6iHGIbUmkZtbMJvPKfNsaoKrNs8Zmsbjmv5ZX2tur1l9TfzkSWWT4g==", "dependencies": { "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.2.0", - "lit-html": "^2.6.0" + "lit-element": "^3.3.0", + "lit-html": "^2.7.0" } }, "node_modules/lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.0.tgz", + "integrity": "sha512-M3OIoblNS7LZdRxOIk8g0wyLEA/lRw/UGJ1TX+767OpkuDsRdSoxBIvewpWqCo7sMd9xt1XedUNZIr9jUO1X3g==", "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" + "lit-html": "^2.7.0" } }, "node_modules/lit-html": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.6.1.tgz", - "integrity": "sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.0.tgz", + "integrity": "sha512-/zPOl8EfeB3HHpTzINSpnWgvgQ8N07g/j272EOAIyB0Ys2RzBqTVT23i+JZuUlNbB2WHHeSsTCFi92NtWrtpqQ==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -20993,9 +20994,9 @@ "dev": true }, "@lit-labs/ssr-dom-shim": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.0.0.tgz", - "integrity": "sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.0.tgz", + "integrity": "sha512-92uQ5ARf7UXYrzaFcAX3T2rTvaS9Z1//ukV+DqjACM4c8s0ZBQd7ayJU5Dh2AFLD/Ayuyz4uMmxQec8q3U4Ong==" }, "@lit/reactive-element": { "version": "1.6.1", @@ -29490,28 +29491,29 @@ "dev": true }, "lit": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.1.tgz", - "integrity": "sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.0.tgz", + "integrity": "sha512-qSy2BAVA+OiWtNptP404egcC/izDdNRw6iHGIbUmkZtbMJvPKfNsaoKrNs8Zmsbjmv5ZX2tur1l9TfzkSWWT4g==", "requires": { "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.2.0", - "lit-html": "^2.6.0" + "lit-element": "^3.3.0", + "lit-html": "^2.7.0" } }, "lit-element": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.2.2.tgz", - "integrity": "sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.0.tgz", + "integrity": "sha512-M3OIoblNS7LZdRxOIk8g0wyLEA/lRw/UGJ1TX+767OpkuDsRdSoxBIvewpWqCo7sMd9xt1XedUNZIr9jUO1X3g==", "requires": { + "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.2.0" + "lit-html": "^2.7.0" } }, "lit-html": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.6.1.tgz", - "integrity": "sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.0.tgz", + "integrity": "sha512-/zPOl8EfeB3HHpTzINSpnWgvgQ8N07g/j272EOAIyB0Ys2RzBqTVT23i+JZuUlNbB2WHHeSsTCFi92NtWrtpqQ==", "requires": { "@types/trusted-types": "^2.0.2" } diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 9bf129c76d..37baadb160 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -63,7 +63,7 @@ "@umbraco-ui/uui": "^1.2.0-rc.2", "@umbraco-ui/uui-css": "^1.2.0-rc.2", "element-internals-polyfill": "^1.1.19", - "lit": "^2.6.1", + "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", "router-slot": "file:router-slot-1.6.1.tgz", From 9ecc1ed015a20678558c1b30ca1e6c8cec1c3470 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 07:14:40 +0000 Subject: [PATCH 507/550] Bump typescript from 4.9.5 to 5.0.3 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.5 to 5.0.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/commits) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 16 ++++++++-------- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 0360d9c5e8..e4bf31c88a 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -68,7 +68,7 @@ "rollup-plugin-url": "^3.0.1", "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", - "typescript": "^4.9.5", + "typescript": "^5.0.3", "vite": "^4.2.1", "vite-plugin-static-copy": "^0.13.0", "vite-tsconfig-paths": "^4.0.5", @@ -18105,16 +18105,16 @@ "dev": true }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/typical": { @@ -32605,9 +32605,9 @@ "dev": true }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", + "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", "dev": true }, "typical": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 37baadb160..602f19a6e2 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -119,7 +119,7 @@ "rollup-plugin-url": "^3.0.1", "storybook": "^7.0.0-rc.3", "tiny-glob": "^0.2.9", - "typescript": "^4.9.5", + "typescript": "^5.0.3", "vite": "^4.2.1", "vite-plugin-static-copy": "^0.13.0", "vite-tsconfig-paths": "^4.0.5", From 0380d5c054ce76d3bc0156f3ba9bacd607c6af2e Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Mon, 3 Apr 2023 09:37:32 +0200 Subject: [PATCH 508/550] Feature/property editor upload field (#583) * init * change event * handle multiple files and validation * render correction * correct import * story --------- Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> --- .../src/backoffice/shared/components/index.ts | 1 + .../input-media-picker.element.ts | 2 +- .../input-upload-field.element.ts | 188 ++++++++++++++++++ .../input-upload-field.stories.ts | 17 ++ ...property-editor-ui-upload-field.element.ts | 30 ++- .../src/core/mocks/data/data-type.data.ts | 7 +- 6 files changed, 239 insertions(+), 6 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.stories.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 d7c74fb3df..78b453c6cb 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 @@ -28,6 +28,7 @@ import './input-media-picker/input-media-picker.element'; import './input-multi-url-picker/input-multi-url-picker.element'; import './input-slider/input-slider.element'; import './input-toggle/input-toggle.element'; +import './input-upload-field/input-upload-field.element'; import './input-template-picker/input-template-picker.element'; import './property-type-based-property/property-type-based-property.element'; import './ref-property-editor-ui/ref-property-editor-ui.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 626bfd9def..d14afe852b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -26,7 +26,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } #add-button { text-align: center; - height: 202px; + height: 160px; } uui-icon { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.element.ts new file mode 100644 index 0000000000..a5237a876d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.element.ts @@ -0,0 +1,188 @@ +import { css, html, nothing } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, query, state } from 'lit/decorators.js'; +import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; +import { ifDefined } from 'lit/directives/if-defined.js'; +import { UUIFileDropzoneElement } from '@umbraco-ui/uui'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; + +@customElement('umb-input-upload-field') +export class UmbInputUploadFieldElement extends FormControlMixin(UmbLitElement) { + static styles = [ + UUITextStyles, + css` + uui-icon { + vertical-align: sub; + margin-right: var(--uui-size-space-4); + } + + uui-symbol-file-thumbnail { + box-sizing: border-box; + min-height: 150px; + padding: var(--uui-size-space-4); + border: 1px solid var(--uui-color-border); + } + + #wrapper { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, auto)); + } + `, + ]; + + private _keys: Array = []; + /** + * @description Keys to the files that belong to this upload field. + * @type {Array} + * @default [] + */ + @property({ type: Array }) + public set keys(fileKeys: Array) { + this._keys = fileKeys; + super.value = this._keys.join(','); + } + public get keys(): Array { + return this._keys; + } + + /** + * @description Allowed file extensions. If left empty, all are allowed. + * @type {Array} + * @default undefined + */ + @property({ type: Array }) + fileExtensions?: Array; + + /** + * @description Allows the user to upload multiple files. + * @type {Boolean} + * @default false + * @attr + */ + @property({ type: Boolean }) + multiple = false; + + @state() + _currentFiles: Blob[] = []; + + @state() + _currentFilesTemp?: Blob[]; + + @state() + extensions?: string[]; + + @query('#dropzone') + private _dropzone?: UUIFileDropzoneElement; + + private _notificationContext?: UmbNotificationContext; + + protected getFormElement() { + return undefined; + } + + constructor() { + super(); + this.consumeContext(UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this._notificationContext = instance; + }); + } + + connectedCallback(): void { + super.connectedCallback(); + this.#setExtensions(); + } + + #setExtensions() { + if (!this.fileExtensions?.length) return; + + this.extensions = this.fileExtensions.map((extension) => { + return `.${extension}`; + }); + } + + #onUpload(e: CustomEvent) { + // UUIFileDropzoneEvent doesnt exist? + + this._currentFilesTemp = e.detail.files; + + if (!this.fileExtensions?.length && this._currentFilesTemp?.length) { + this.#setFiles(this._currentFilesTemp); + return; + } + const validated = this.#validateExtensions(); + this.#setFiles(validated); + } + + #validateExtensions(): Blob[] { + // TODO: Should property editor be able to handle allowed extensions like image/* ? + + const filesValidated: Blob[] = []; + this._currentFilesTemp?.forEach((temp) => { + const type = temp.type.slice(temp.type.lastIndexOf('/') + 1, temp.length); + if (this.fileExtensions?.find((x) => x === type)) filesValidated.push(temp); + else + this._notificationContext?.peek('danger', { + data: { headline: 'File upload', message: `Chosen file type "${type}" is not allowed` }, + }); + }); + + return filesValidated; + } + #setFiles(files: Blob[]) { + this._currentFiles = [...this._currentFiles, ...files]; + + //TODO: set keys when possible, not names + this.keys = this._currentFiles.map((file) => file.name); + this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); + } + + #handleBrowse() { + if (!this._dropzone) return; + this._dropzone.browse(); + } + + render() { + return html`${this.#renderFiles()} ${this.#renderDropzone()}`; + } + + #renderDropzone() { + if (!this.multiple && this._currentFiles.length) return nothing; + return html` + + Upload file here + + `; + } + + #renderFiles() { + if (!this._currentFiles?.length) return nothing; + return html`
    + ${this._currentFiles.map((file) => { + return html` + `; + })} +
    + + Remove file(s) + `; + } + + #handleRemove() { + // Remove via endpoint? + this._currentFiles = []; + } +} + +export default UmbInputUploadFieldElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-input-upload-field': UmbInputUploadFieldElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.stories.ts new file mode 100644 index 0000000000..02a1fdb44f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-upload-field/input-upload-field.stories.ts @@ -0,0 +1,17 @@ +import { Meta, StoryObj } from '@storybook/web-components'; +import './input-upload-field.element'; +import type { UmbInputUploadFieldElement } from './input-upload-field.element'; + +const meta: Meta = { + title: 'Components/Inputs/Upload Field', + component: 'umb-input-upload-field', +}; + +export default meta; +type Story = StoryObj; + +export const Overview: Story = { + args: { + multiple: false, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.element.ts index 22b4707a98..56afaf29ca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/upload-field/property-editor-ui-upload-field.element.ts @@ -1,7 +1,9 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement, property } from 'lit/decorators.js'; -import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; +import { customElement, property, state } from 'lit/decorators.js'; +import { UmbInputUploadFieldElement } from '../../../../shared/components/input-upload-field/input-upload-field.element'; +import type { DataTypePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** @@ -15,10 +17,30 @@ export class UmbPropertyEditorUIUploadFieldElement extends UmbLitElement impleme value = ''; @property({ type: Array, attribute: false }) - public config = []; + public set config(config: Array) { + const fileExtensions = config.find((x) => x.alias === 'fileExtensions'); + if (fileExtensions) this._fileExtensions = fileExtensions.value; + + const multiple = config.find((x) => x.alias === 'multiple'); + if (multiple) this._multiple = multiple.value; + } + + @state() + private _fileExtensions?: Array; + + @state() + private _multiple?: boolean; + + private _onChange(event: CustomEvent) { + this.value = (event.target as unknown as UmbInputUploadFieldElement).value as string; + this.dispatchEvent(new CustomEvent('property-value-change')); + } render() { - return html`
    umb-property-editor-ui-upload-field
    `; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index 83e6cd42e3..ff90a90a2e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -464,7 +464,12 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde parentKey: null, propertyEditorAlias: 'Umbraco.UploadField', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UploadField', - values: [], + values: [ + { + alias: 'fileExtensions', + value: ['jpg', 'jpeg', 'png'], + }, + ], }, { $type: 'data-type', From 5205bce4d88cc13cd95015ba8b13bb708f682b2f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 09:39:54 +0200 Subject: [PATCH 509/550] add missing docs for slot=header --- .../workspace/workspace-layout/workspace-layout.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index b41fd563ea..1c430fa534 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -19,6 +19,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; * @element umb-workspace-layout * @description * @slot icon - Slot for icon + * @slot header - Slot for workspace header * @slot name - Slot for name * @slot footer - Slot for workspace footer * @slot actions - Slot for workspace footer actions From 57f13546add35a5fe30554193611207e4a594ef7 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 10:35:21 +0200 Subject: [PATCH 510/550] try to parse the error.body as JSON since the error detail may have been packed away into a json string --- .../libs/resources/resource.controller.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts b/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts index c323c76d2a..2432b6fe96 100644 --- a/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/resources/resource.controller.ts @@ -39,8 +39,17 @@ export class UmbResourceController extends UmbController { */ static toProblemDetailsModel(error: unknown): ProblemDetailsModel | undefined { if (error instanceof ApiError) { - const errorDetails = error.body as ProblemDetailsModel; - return errorDetails; + try { + const errorDetails = ( + typeof error.body === 'string' ? JSON.parse(error.body) : error.body + ) as ProblemDetailsModel; + return errorDetails; + } catch { + return { + title: error.name, + detail: error.message, + }; + } } else if (error instanceof Error) { return { title: error.name, From 8becebe74da32fa028dd9271ca20e8c96044c428 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 10:42:05 +0200 Subject: [PATCH 511/550] remove `fallbackIsoCode` from scaffolding since the server fails if it is present and empty --- .../languages/repository/sources/language.server.data.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts index af2231bbe1..6764a51dea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/sources/language.server.data.ts @@ -55,7 +55,6 @@ export class UmbLanguageServerDataSource name: '', isDefault: false, isMandatory: false, - fallbackIsoCode: '', isoCode: '', }; From a20e430da32c8439415ce9799604cbd1b6326d32 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 11:02:35 +0200 Subject: [PATCH 512/550] If there is no cultureName, it was probably an unknown event that triggered the change event, so ignore it. --- .../views/details/language-details-workspace-view.element.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts index 012df86991..a2c0d105d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/views/details/language-details-workspace-view.element.ts @@ -98,6 +98,11 @@ export class UmbLanguageDetailsWorkspaceViewElement extends UmbLitElement { const isoCode = target.value.toString(); const cultureName = target.selectedCultureName; + // If there is no cultureName, it was probably an unknown event that triggered the change event, so ignore it. + if (!cultureName) { + return; + } + if (!isoCode) { // If the isoCode is empty, we reset the value to the original value. // Provides a way better UX From dae902c2a04b55e2d4f108e6c4685dc86708610d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 11:34:54 +0200 Subject: [PATCH 513/550] Partly Document Type Workspace (#636) * move container property logic into a manager * restructure of property structure helpers * simpler styling * migrate structural code to helper classes * rename to helper * re arrange * rename + transfer structural views * styling * context observers * refactor container observables * _observeOwnerProperties * clean up * creation of base structure * add property method * move style * view and edit properties * use ! * import ordering * correct typing * fixes --- .../libs/observable-api/array-state.ts | 56 +++-- .../libs/utils/generate-guid.ts | 4 + src/Umbraco.Web.UI.Client/libs/utils/index.ts | 1 + .../document-type-workspace-editor.element.ts | 31 ++- .../document-type-workspace.context.ts | 43 +++- .../document-type-workspace.element.ts | 4 +- .../document-types/workspace/manifests.ts | 2 +- ...ment-type-workspace-view-design.element.ts | 7 +- ...-workspace-view-edit-properties.element.ts | 130 +++++++++++ ...pe-workspace-view-edit-property.element.ts | 106 +++++++++ ...nt-type-workspace-view-edit-tab.element.ts | 115 ++++++++++ ...cument-type-workspace-view-edit.element.ts | 207 ++++++++++++++++++ ...ent-type-workspace-view-details.element.ts | 6 +- ...t-type-workspace-view-structure.element.ts | 6 +- ...t-type-workspace-view-templates.element.ts | 6 +- .../workspace/document-workspace.context.ts | 2 +- ...-workspace-view-edit-properties.element.ts | 85 +------ ...ocument-workspace-view-edit-tab.element.ts | 119 ++-------- .../document-workspace-view-edit.element.ts | 45 ++-- ...kspace-container-structure-helper.class.ts | 160 ++++++++++++++ ...rkspace-property-structure-helper.class.ts | 114 ++++++++++ ...s => workspace-structure-manager.class.ts} | 126 ++++++++++- .../workspace-property-layout.element.ts | 86 ++++---- .../src/core/mocks/data/document-type.data.ts | 22 +- 24 files changed, 1176 insertions(+), 307 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/utils/generate-guid.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts rename src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/{workspace-property-structure-manager.class.ts => workspace-structure-manager.class.ts} (58%) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts index 5c06539f36..04dc42b3bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts @@ -12,11 +12,37 @@ import { pushToUniqueArray } from './push-to-unique-array.function'; * The ArrayState provides methods to append data when the data is an Object. */ export class ArrayState extends DeepState { - private _getUnique?: (entry: T) => unknown; + #getUnique?: (entry: T) => unknown; + #sortMethod?: (a: T, b: T) => number; constructor(initialData: T[], getUniqueMethod?: (entry: T) => unknown) { super(initialData); - this._getUnique = getUniqueMethod; + this.#getUnique = getUniqueMethod; + } + + /** + * @method sortBy + * @param {(a: T, b: T) => number} sortMethod - A method to be used for sorting everytime data is set. + * @description - A sort method to this Subject. + * @example Example add sort method + * const data = [ + * { key: 1, value: 'foo'}, + * { key: 2, value: 'bar'} + * ]; + * const myState = new ArrayState(data, (x) => x.key); + * myState.sortBy((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); + */ + sortBy(sortMethod?: (a: T, b: T) => number) { + this.#sortMethod = sortMethod; + return this; + } + + next(value: T[]) { + if (this.#sortMethod) { + super.next(value.sort(this.#sortMethod)); + } else { + super.next(value); + } } /** @@ -34,12 +60,12 @@ export class ArrayState extends DeepState { */ remove(uniques: unknown[]) { let next = this.getValue(); - if (this._getUnique) { + if (this.#getUnique) { uniques.forEach((unique) => { next = next.filter((x) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - return this._getUnique(x) !== unique; + return this.#getUnique(x) !== unique; }); }); @@ -63,11 +89,11 @@ export class ArrayState extends DeepState { */ removeOne(unique: unknown) { let next = this.getValue(); - if (this._getUnique) { + if (this.#getUnique) { next = next.filter((x) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - return this._getUnique(x) !== unique; + return this.#getUnique(x) !== unique; }); this.next(next); @@ -116,8 +142,8 @@ export class ArrayState extends DeepState { */ appendOne(entry: T) { const next = [...this.getValue()]; - if (this._getUnique) { - pushToUniqueArray(next, entry, this._getUnique); + if (this.#getUnique) { + pushToUniqueArray(next, entry, this.#getUnique); } else { next.push(entry); } @@ -142,10 +168,10 @@ export class ArrayState extends DeepState { * ]); */ append(entries: T[]) { - if (this._getUnique) { + if (this.#getUnique) { const next = [...this.getValue()]; entries.forEach((entry) => { - pushToUniqueArray(next, entry, this._getUnique!); + pushToUniqueArray(next, entry, this.#getUnique!); }); this.next(next); } else { @@ -169,16 +195,10 @@ export class ArrayState extends DeepState { * myState.updateOne(2, {value: 'updated-bar'}); */ updateOne(unique: unknown, entry: Partial) { - if (!this._getUnique) { + if (!this.#getUnique) { throw new Error("Can't partial update an ArrayState without a getUnique method provided when constructed."); } - this.next( - partialUpdateFrozenArray( - this.getValue(), - entry, - (x) => unique === (this._getUnique as Exclude)(x) - ) - ); + this.next(partialUpdateFrozenArray(this.getValue(), entry, (x) => unique === this.#getUnique!(x))); return this; } } diff --git a/src/Umbraco.Web.UI.Client/libs/utils/generate-guid.ts b/src/Umbraco.Web.UI.Client/libs/utils/generate-guid.ts new file mode 100644 index 0000000000..b0b7f6b981 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/utils/generate-guid.ts @@ -0,0 +1,4 @@ +import { v4 as uuid } from 'uuid'; +export function generateGuid() { + return uuid(); +} diff --git a/src/Umbraco.Web.UI.Client/libs/utils/index.ts b/src/Umbraco.Web.UI.Client/libs/utils/index.ts index b7439f0c3a..d16b3e3261 100644 --- a/src/Umbraco.Web.UI.Client/libs/utils/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/utils/index.ts @@ -1,3 +1,4 @@ export * from './utils'; export * from './umbraco-path'; export * from './udi-service'; +export * from './generate-guid'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-editor.element.ts index ebb3b26d47..21d8c3e526 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace-editor.element.ts @@ -2,7 +2,7 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from './document-type-workspace.context'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_ICON_PICKER_MODAL } from '@umbraco-cms/backoffice/modal'; @@ -32,7 +32,9 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { } #alias { - padding: 0 var(--uui-size-space-3); + height: calc(100% - 2px); + --uui-input-border-width: 0; + --uui-button-height: calc(100% -2px); } #icon { @@ -48,7 +50,7 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { name: 'umb:document-dashed-line', }; - #workspaceContext?: UmbWorkspaceDocumentTypeContext; + #workspaceContext?: UmbDocumentTypeWorkspaceContext; //@state() //private _documentType?: DocumentTypeResponseModel; @@ -64,7 +66,7 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { super(); this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (instance) => { - this.#workspaceContext = instance as UmbWorkspaceDocumentTypeContext; + this.#workspaceContext = instance as UmbDocumentTypeWorkspaceContext; this.#observeDocumentType(); }); @@ -76,10 +78,12 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { #observeDocumentType() { if (!this.#workspaceContext) return; //this.observe(this.#workspaceContext.data, (data) => (this._documentType = data)); + this.observe(this.#workspaceContext.name, (name) => (this._name = name)); + this.observe(this.#workspaceContext.alias, (alias) => (this._alias = alias)); } // TODO. find a way where we don't have to do this for all workspaces. - private _handleInput(event: UUIInputEvent) { + private _handleNameInput(event: UUIInputEvent) { if (event instanceof UUIInputEvent) { const target = event.composedPath()[0] as UUIInputElement; @@ -89,6 +93,18 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { } } + // TODO. find a way where we don't have to do this for all workspaces. + private _handleAliasInput(event: UUIInputEvent) { + if (event instanceof UUIInputEvent) { + const target = event.composedPath()[0] as UUIInputElement; + + if (typeof target?.value === 'string') { + this.#workspaceContext?.setAlias(target.value); + } + } + event.stopPropagation(); + } + private async _handleIconClick() { const modalHandler = this._modalContext?.open(UMB_ICON_PICKER_MODAL); @@ -106,8 +122,9 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement { - -
    ${this._alias}
    + +
    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 7d6ddd92d3..18df653f8a 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 @@ -1,18 +1,36 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbDocumentTypeRepository } from '../repository/document-type.repository'; -import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; +import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-structure-manager.class'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; type EntityType = DocumentTypeResponseModel; -export class UmbWorkspaceDocumentTypeContext +export class UmbDocumentTypeWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { // Draft is located in structure manager + + // General for content types: readonly data; readonly name; + readonly alias; + readonly description; + readonly icon; + + // TODO: Consider if each of these should go the view it self, but only if its used in that one view, otherwise make then go here. + readonly allowedAsRoot; + readonly variesByCulture; + readonly variesBySegment; + readonly isElement; + readonly allowedContentTypes; + readonly compositions; + + // Document type specific: + readonly allowedTemplateKeys; + readonly defaultTemplateKey; + readonly cleanup; readonly structure; @@ -20,12 +38,28 @@ export class UmbWorkspaceDocumentTypeContext super(host, new UmbDocumentTypeRepository(host)); this.structure = new UmbWorkspacePropertyStructureManager(this.host, this.repository); + + // General for content types: this.data = this.structure.rootDocumentType; this.name = this.structure.rootDocumentTypeObservablePart((data) => data?.name); + this.alias = this.structure.rootDocumentTypeObservablePart((data) => data?.alias); + this.description = this.structure.rootDocumentTypeObservablePart((data) => data?.description); + this.icon = this.structure.rootDocumentTypeObservablePart((data) => data?.icon); + this.allowedAsRoot = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedAsRoot); + this.variesByCulture = this.structure.rootDocumentTypeObservablePart((data) => data?.variesByCulture); + this.variesBySegment = this.structure.rootDocumentTypeObservablePart((data) => data?.variesBySegment); + this.isElement = this.structure.rootDocumentTypeObservablePart((data) => data?.isElement); + this.allowedContentTypes = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedContentTypes); + this.compositions = this.structure.rootDocumentTypeObservablePart((data) => data?.compositions); + + // Document type specific: + this.allowedTemplateKeys = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateKeys); + this.defaultTemplateKey = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); + this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); } public setPropertyValue(alias: string, value: unknown) { - throw new Error('setPropertyValue is not implemented for UmbWorkspaceDocumentTypeContext'); + throw new Error('setPropertyValue is not implemented for UmbDocumentTypeWorkspaceContext'); } getData() { @@ -43,6 +77,9 @@ export class UmbWorkspaceDocumentTypeContext setName(name: string) { this.structure.updateRootDocumentType({ name }); } + setAlias(alias: string) { + this.structure.updateRootDocumentType({ alias }); + } // TODO => manage setting icon color setIcon(icon: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 28748e430c..54086efee8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceDocumentTypeContext } from './document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from './document-type-workspace.context'; import { UmbDocumentTypeWorkspaceEditorElement } from './document-type-workspace-editor.element'; import { IRoutingInfo } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -10,7 +10,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { static styles = [UUITextStyles]; - #workspaceContext = new UmbWorkspaceDocumentTypeContext(this); + #workspaceContext = new UmbDocumentTypeWorkspaceContext(this); #element = new UmbDocumentTypeWorkspaceEditorElement(); @state() 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 3baf28c927..37e4baa850 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 @@ -20,7 +20,7 @@ const workspaceViews: Array = [ type: 'workspaceView', alias: 'Umb.WorkspaceView.DocumentType.Design', name: 'Document Type Workspace Design View', - loader: () => import('./views/design/document-type-workspace-view-design.element'), + loader: () => import('./views/design/document-type-workspace-view-edit.element'), weight: 1000, meta: { label: 'Design', diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-design.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-design.element.ts index 9266050fbe..5f7c657b58 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-design.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-design.element.ts @@ -2,9 +2,8 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import '../../../../../shared/property-creator/property-creator.element.ts'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; @@ -78,7 +77,7 @@ export class UmbDocumentTypeWorkspaceViewDesignElement extends UmbLitElement { `, ]; - private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + private _workspaceContext?: UmbDocumentTypeWorkspaceContext; @state() private _tabs: any[] = []; @@ -88,7 +87,7 @@ export class UmbDocumentTypeWorkspaceViewDesignElement extends UmbLitElement { // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (documentTypeContext) => { - this._workspaceContext = documentTypeContext as UmbWorkspaceDocumentTypeContext; + this._workspaceContext = documentTypeContext as UmbDocumentTypeWorkspaceContext; this._observeDocumentType(); }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts new file mode 100644 index 0000000000..99e55283a7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts @@ -0,0 +1,130 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbWorkspacePropertyStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-property-structure-helper.class'; +import { PropertyContainerTypes } from '../../../../../shared/components/workspace/workspace-context/workspace-structure-manager.class'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { DocumentTypePropertyTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UMB_MODAL_CONTEXT_TOKEN, UMB_PROPERTY_SETTINGS_MODAL } from '@umbraco-cms/backoffice/modal'; +import './document-type-workspace-view-edit-property.element'; + +@customElement('umb-document-type-workspace-view-edit-properties') +export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitElement { + private _containerKey: string | undefined; + + public get containerKey(): string | undefined { + return this._containerKey; + } + public set containerKey(value: string | undefined) { + if (value === this._containerKey) return; + const oldValue = this._containerKey; + this._containerKey = value; + this.requestUpdate('containerKey', oldValue); + } + + @property({ type: String, attribute: 'container-name', reflect: false }) + public get containerName(): string | undefined { + return this._propertyStructureHelper.getContainerName(); + } + public set containerName(value: string | undefined) { + this._propertyStructureHelper.setContainerName(value); + } + + @property({ type: String, attribute: 'container-type', reflect: false }) + public get containerType(): PropertyContainerTypes | undefined { + return this._propertyStructureHelper.getContainerType(); + } + public set containerType(value: PropertyContainerTypes | undefined) { + this._propertyStructureHelper.setContainerType(value); + } + + _propertyStructureHelper = new UmbWorkspacePropertyStructureHelper(this); + + @state() + _propertyStructure: Array = []; + + #modalContext?: typeof UMB_MODAL_CONTEXT_TOKEN.TYPE; + + constructor() { + super(); + + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => (this.#modalContext = instance)); + this.observe(this._propertyStructureHelper.propertyStructure, (propertyStructure) => { + this._propertyStructure = propertyStructure; + }); + } + + async #onAddProperty() { + const property = await this._propertyStructureHelper.addProperty(this._containerKey); + if (!property) return; + + // Take key and parse to modal: + console.log('property key:', property.key!); + + const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL); + + modalHandler?.onSubmit().then((result) => { + console.log(result); + }); + } + + render() { + return html`${repeat( + this._propertyStructure, + (property) => property.alias, + (property) => + html` { + this._propertyStructureHelper.partialUpdateProperty(property.key, event.detail); + }}>` + )} Add property `; + } + + static styles = [ + UUITextStyles, + css` + .property:first-of-type { + padding-top: 0; + } + .property { + border-bottom: 1px solid var(--uui-color-divider); + } + .property:last-child { + border-bottom: 0; + } + + .property { + display: grid; + grid-template-columns: 200px auto; + column-gap: var(--uui-size-layout-2); + border-bottom: 1px solid var(--uui-color-divider); + padding: var(--uui-size-layout-1) 0; + container-type: inline-size; + } + + .property > div { + grid-column: span 2; + } + + @container (width > 600px) { + .property:not([orientation='vertical']) > div { + grid-column: span 1; + } + } + + #add { + width: 100%; + } + `, + ]; +} + +export default UmbDocumentTypeWorkspaceViewEditPropertiesElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-type-workspace-view-edit-properties': UmbDocumentTypeWorkspaceViewEditPropertiesElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.ts new file mode 100644 index 0000000000..45fad85fcb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.ts @@ -0,0 +1,106 @@ +import { css, html, LitElement } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property } from 'lit/decorators.js'; +import { PropertyTypeResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; + +/** + * @element document-type-workspace-view-edit-property + * @description - Element for displaying a property in an workspace. + * @slot editor - Slot for rendering the Property Editor + */ +@customElement('document-type-workspace-view-edit-property') +export class UmbDocumentTypeWorkspacePropertyElement extends LitElement { + /** + * Property, the data object for the property. + * @type {string} + * @attr + * @default '' + */ + @property({ type: Object }) + public property?: PropertyTypeResponseModelBaseModel; + + _firePartialUpdate(propertyName: string, value: string | number | boolean | null | undefined) { + const partialObject = {} as any; + partialObject[propertyName] = value; + + this.dispatchEvent(new CustomEvent('partial-property-update', { detail: partialObject })); + } + + render() { + // TODO: Only show alias on label if user has access to DocumentType within settings: + return this.property + ? html` + +
    + ` + : ''; + } + + static styles = [ + UUITextStyles, + css` + :host { + display: grid; + grid-template-columns: 200px auto; + column-gap: var(--uui-size-layout-2); + border-bottom: 1px solid var(--uui-color-divider); + padding: var(--uui-size-layout-1) 0; + container-type: inline-size; + } + + :host > div { + grid-column: span 2; + } + + @container (width > 600px) { + :host(:not([orientation='vertical'])) > div { + grid-column: span 1; + } + } + + :host(:last-of-type) { + border-bottom: none; + } + + :host-context(umb-variantable-property:first-of-type) { + padding-top: 0; + } + + p { + margin-bottom: 0; + } + + #header { + position: sticky; + top: var(--uui-size-space-4); + height: min-content; + z-index: 2; + } + `, + ]; +} + +declare global { + interface HTMLElementTagNameMap { + 'document-type-workspace-view-edit-property': UmbDocumentTypeWorkspacePropertyElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts new file mode 100644 index 0000000000..19de474446 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts @@ -0,0 +1,115 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, property, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; +import './document-type-workspace-view-edit-properties.element'; + +@customElement('umb-document-type-workspace-view-edit-tab') +export class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + uui-box { + margin: var(--uui-size-layout-1); + } + + #add { + width: 100%; + } + `, + ]; + + private _ownerTabKey?: string | undefined; + + @property({ type: String }) + public get ownerTabKey(): string | undefined { + return this._ownerTabKey; + } + public set ownerTabKey(value: string | undefined) { + if (value === this._ownerTabKey) return; + const oldValue = this._ownerTabKey; + this._ownerTabKey = value; + this.requestUpdate('ownerTabKey', oldValue); + } + + private _tabName?: string | undefined; + + @property({ type: String }) + public get tabName(): string | undefined { + return this._groupStructureHelper.getName(); + } + public set tabName(value: string | undefined) { + if (value === this._tabName) return; + const oldValue = this._tabName; + this._tabName = value; + this._groupStructureHelper.setName(value); + this.requestUpdate('tabName', oldValue); + } + + @property({ type: Boolean }) + public get noTabName(): boolean { + return this._groupStructureHelper.getIsRoot(); + } + public set noTabName(value: boolean) { + this._groupStructureHelper.setIsRoot(value); + } + + _groupStructureHelper = new UmbWorkspaceContainerStructureHelper(this); + + @state() + _groups: Array = []; + + @state() + _hasProperties = false; + + constructor() { + super(); + + this.observe(this._groupStructureHelper.containers, (groups) => { + this._groups = groups; + }); + this.observe(this._groupStructureHelper.hasProperties, (hasProperties) => { + this._hasProperties = hasProperties; + }); + } + + #onAddGroup = () => { + // Idea, maybe we can gather the sortOrder from the last group rendered and add 1 to it? + this._groupStructureHelper.addGroup(this._ownerTabKey); + }; + + render() { + return html` + ${this._hasProperties + ? html` + + + + ` + : ''} + ${repeat( + this._groups, + (group) => group.name, + (group) => html` + + ` + )} + Add Group + `; + } +} + +export default UmbDocumentTypeWorkspaceViewEditTabElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-type-workspace-view-edit-tab': UmbDocumentTypeWorkspaceViewEditTabElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts new file mode 100644 index 0000000000..3fb75e1c6f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -0,0 +1,207 @@ +import { css, html } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, state } from 'lit/decorators.js'; +import { repeat } from 'lit/directives/repeat.js'; +import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; +import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; + +@customElement('umb-document-type-workspace-view-edit') +export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { + static styles = [ + UUITextStyles, + css` + :host { + display: block; + --uui-tab-background: var(--uui-color-surface); + } + + /* TODO: This should be replaced with a general workspace bar — naming is hard */ + #workspace-tab-bar { + padding: 0 var(--uui-size-layout-1); + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--uui-color-surface); + flex-wrap: nowrap; + } + `, + ]; + + //private _hasRootProperties = false; + private _hasRootGroups = false; + + @state() + private _routes: IRoute[] = []; + + @state() + _tabs: Array = []; + + @state() + private _routerPath?: string; + + @state() + private _activePath = ''; + + private _workspaceContext?: UmbDocumentTypeWorkspaceContext; + + private _tabsStructureHelper = new UmbWorkspaceContainerStructureHelper(this); + + constructor() { + super(); + + this._tabsStructureHelper.setIsRoot(true); + this._tabsStructureHelper.setContainerChildType('Tab'); + this.observe(this._tabsStructureHelper.containers, (tabs) => { + this._tabs = tabs; + this._createRoutes(); + }); + + // _hasRootProperties can be gotten via _tabsStructureHelper.hasProperties. But we do not support root properties currently. + + this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (workspaceContext) => { + this._workspaceContext = workspaceContext as UmbDocumentTypeWorkspaceContext; + this._observeRootGroups(); + }); + } + + private _observeRootGroups() { + if (!this._workspaceContext) return; + + this.observe( + this._workspaceContext.structure.hasRootContainers('Group'), + (hasRootGroups) => { + this._hasRootGroups = hasRootGroups; + this._createRoutes(); + }, + '_observeGroups' + ); + } + + private _createRoutes() { + const routes: any[] = []; + + if (this._tabs.length > 0) { + this._tabs?.forEach((tab) => { + const tabName = tab.name; + routes.push({ + path: `tab/${encodeURI(tabName || '').toString()}`, + component: () => import('./document-type-workspace-view-edit-tab.element'), + setup: (component: Promise) => { + (component as any).tabName = tabName; + (component as any).ownerTabKey = tab.key; + }, + }); + }); + } + + if (this._hasRootGroups) { + routes.push({ + path: '', + component: () => import('./document-type-workspace-view-edit-tab.element'), + setup: (component: Promise) => { + (component as any).noTabName = true; + }, + }); + } + + if (routes.length !== 0) { + routes.push({ + path: '**', + redirectTo: routes[0]?.path, + }); + } + + this._routes = routes; + } + + #remove(tabKey: string | undefined) { + if (!tabKey) return; + this._workspaceContext?.structure.removeContainer(null, tabKey); + } + async #addTab() { + this._workspaceContext?.structure.createContainer(null, null, 'Tab'); + } + + renderTabsNavigation() { + return html` + ${this._hasRootGroups + ? html` + Content + ` + : ''} + ${repeat( + this._tabs, + (tab) => tab.key, + (tab) => { + // TODO: make better url folder name: + const path = this._routerPath + '/tab/' + encodeURI(tab.name || ''); + return html` + ${path === this._activePath + ? html` + + this.#remove(tab.key)} + compact> + + + ` + : tab.name} + `; + } + )} + + + Add tab + + `; + } + + renderActions() { + return html`
    + + + Compositions + + + + Recorder + +
    `; + } + + render() { + return html` +
    ${this._routerPath ? this.renderTabsNavigation() : ''}${this.renderActions()}
    + + { + this._routerPath = event.target.absoluteRouterPath; + }} + @change=${(event: UmbRouterSlotChangeEvent) => { + this._activePath = event.target.absoluteActiveViewPath || ''; + }}> + + `; + } +} + +export default UmbDocumentTypeWorkspaceViewEditElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-document-type-workspace-view-edit': UmbDocumentTypeWorkspaceViewEditElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/details/document-type-workspace-view-details.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/details/document-type-workspace-view-details.element.ts index 5e755d67d7..803fcf76a0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/details/document-type-workspace-view-details.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/details/document-type-workspace-view-details.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; @@ -27,14 +27,14 @@ export class UmbDocumentTypeWorkspaceViewDetailsElement extends UmbLitElement { `, ]; - private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + private _workspaceContext?: UmbDocumentTypeWorkspaceContext; constructor() { super(); // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (documentTypeContext) => { - this._workspaceContext = documentTypeContext as UmbWorkspaceDocumentTypeContext; + this._workspaceContext = documentTypeContext as UmbDocumentTypeWorkspaceContext; this._observeDocumentType(); }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts index f7d3f88e5f..94ee23568c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; -import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; @@ -27,14 +27,14 @@ export class UmbDocumentTypeWorkspaceViewStructureElement extends UmbLitElement `, ]; - private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + private _workspaceContext?: UmbDocumentTypeWorkspaceContext; constructor() { super(); // TODO: Figure out if this is the best way to consume the context or if it can be strongly typed with an UmbContextToken this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (documentTypeContext) => { - this._workspaceContext = documentTypeContext as UmbWorkspaceDocumentTypeContext; + this._workspaceContext = documentTypeContext as UmbDocumentTypeWorkspaceContext; this._observeDocumentType(); }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 2cdbfc6392..32f96d6687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -1,7 +1,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement } from 'lit/decorators.js'; -import { UmbWorkspaceDocumentTypeContext } from '../../document-type-workspace.context'; +import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; @@ -35,12 +35,12 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement `, ]; - private _workspaceContext?: UmbWorkspaceDocumentTypeContext; + private _workspaceContext?: UmbDocumentTypeWorkspaceContext; constructor() { super(); this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (documentTypeContext) => { - this._workspaceContext = documentTypeContext as UmbWorkspaceDocumentTypeContext; + this._workspaceContext = documentTypeContext as UmbDocumentTypeWorkspaceContext; this._observeDocumentType(); }); } 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 246b1866a6..81629020e2 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 @@ -3,7 +3,7 @@ import { UmbDocumentRepository } from '../repository/document.repository'; import { UmbDocumentTypeRepository } from '../../document-types/repository/document-type.repository'; import { UmbWorkspaceVariableEntityContextInterface } from '../../../shared/components/workspace/workspace-context/workspace-variable-entity-context.interface'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; -import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-property-structure-manager.class'; +import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import type { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-properties.element.ts index a64174b210..2cc4063213 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-properties.element.ts @@ -2,13 +2,10 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbDocumentWorkspaceContext } from '../../document-workspace.context'; +import { UmbWorkspacePropertyStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-property-structure-helper.class'; +import { PropertyContainerTypes } from '../../../../../shared/components/workspace/workspace-context/workspace-structure-manager.class'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { - DocumentTypePropertyTypeResponseModel, - PropertyTypeContainerResponseModelBaseModel, -} from '@umbraco-cms/backoffice/backend-api'; -import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import { DocumentTypePropertyTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-document-workspace-view-edit-properties') export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement { @@ -24,93 +21,35 @@ export class UmbDocumentWorkspaceViewEditPropertiesElement extends UmbLitElement `, ]; - private _containerName?: string; - @property({ type: String, attribute: 'container-name', reflect: false }) public get containerName(): string | undefined { - return this._containerName; + return this._propertyStructureHelper.getContainerName(); } public set containerName(value: string | undefined) { - if (this._containerName === value) return; - this._containerName = value; - this._observeGroupContainers(); + this._propertyStructureHelper.setContainerName(value); } - private _containerType?: 'Group' | 'Tab'; - @property({ type: String, attribute: 'container-type', reflect: false }) - public get containerType(): 'Group' | 'Tab' | undefined { - return this._containerType; + public get containerType(): PropertyContainerTypes | undefined { + return this._propertyStructureHelper.getContainerType(); } - public set containerType(value: 'Group' | 'Tab' | undefined) { - if (this._containerType === value) return; - this._containerType = value; - this._observeGroupContainers(); + public set containerType(value: PropertyContainerTypes | undefined) { + this._propertyStructureHelper.setContainerType(value); } - @state() - _groupContainers: Array = []; + _propertyStructureHelper = new UmbWorkspacePropertyStructureHelper(this); @state() _propertyStructure: Array = []; - private _workspaceContext?: UmbDocumentWorkspaceContext; - constructor() { super(); - this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (workspaceContext) => { - this._workspaceContext = workspaceContext as UmbDocumentWorkspaceContext; - this._observeGroupContainers(); + this.observe(this._propertyStructureHelper.propertyStructure, (propertyStructure) => { + this._propertyStructure = propertyStructure; }); } - private _observeGroupContainers() { - if (!this._workspaceContext || !this._containerName || !this._containerType) return; - - // TODO: Should be no need to update this observable if its already there. - this.observe( - this._workspaceContext!.structure.containersByNameAndType(this._containerName, this._containerType), - (groupContainers) => { - this._groupContainers = groupContainers || []; - groupContainers.forEach((group) => { - if (group.key) { - // Gather property aliases of this group, by group key. - this._observePropertyStructureOfGroup(group); - } - }); - }, - '_observeGroupContainers' - ); - } - - private _observePropertyStructureOfGroup(group: PropertyTypeContainerResponseModelBaseModel) { - if (!this._workspaceContext || !group.key) return; - - // TODO: Should be no need to update this observable if its already there. - this.observe( - this._workspaceContext.structure.propertyStructuresOf(group.key), - (properties) => { - // If this need to be able to remove properties, we need to clean out the ones of this group.key before inserting them: - this._propertyStructure = this._propertyStructure.filter((x) => x.containerKey !== group.key); - - properties?.forEach((property) => { - if (!this._propertyStructure.find((x) => x.alias === property.alias)) { - this._propertyStructure.push(property); - } - }); - - if (this._propertyStructure.length > 0) { - // TODO: Missing sort order? - //this._propertyStructure.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); - } - }, - '_observePropertyStructureOfGroup' + group.key - ); - - // cache observable - } - render() { return repeat( this._propertyStructure, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts index 53bfdf0ae6..6febfe89a9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts @@ -2,25 +2,19 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; -import { UmbDocumentWorkspaceContext } from '../../document-workspace.context'; +import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import './document-workspace-view-edit-properties.element'; -import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; @customElement('umb-document-workspace-view-edit-tab') export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { static styles = [ UUITextStyles, css` - :host { - display: block; + uui-box { margin: var(--uui-size-layout-1); } - - uui-box + uui-box { - margin-top: var(--uui-size-layout-1); - } `, ]; @@ -28,127 +22,46 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { @property({ type: String }) public get tabName(): string | undefined { - return this._tabName; + return this._groupStructureHelper.getName(); } public set tabName(value: string | undefined) { + if (value === this._tabName) return; const oldValue = this._tabName; - if (oldValue === value) return; this._tabName = value; - this._observeTabContainers(); + this._groupStructureHelper.setName(value); this.requestUpdate('tabName', oldValue); } - private _noTabName = false; - @property({ type: Boolean }) public get noTabName(): boolean { - return this._noTabName; + return this._groupStructureHelper.getIsRoot(); } public set noTabName(value: boolean) { - const oldValue = this._noTabName; - if (oldValue === value) return; - this._noTabName = value; - if (this._noTabName) { - this._tabName = undefined; - } - this._observeTabContainers(); - this.requestUpdate('noTabName', oldValue); + this._groupStructureHelper.setIsRoot(value); } - @state() - _tabContainers: PropertyTypeContainerResponseModelBaseModel[] = []; - - @state() - _hasTabProperties = false; + _groupStructureHelper = new UmbWorkspaceContainerStructureHelper(this); @state() _groups: Array = []; - private _workspaceContext?: UmbDocumentWorkspaceContext; + @state() + _hasProperties = false; constructor() { super(); - this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (workspaceContext) => { - this._workspaceContext = workspaceContext as UmbDocumentWorkspaceContext; - this._observeTabContainers(); + this.observe(this._groupStructureHelper.containers, (groups) => { + this._groups = groups; + }); + this.observe(this._groupStructureHelper.hasProperties, (hasProperties) => { + this._hasProperties = hasProperties; }); } - private _observeHasTabProperties() { - if (!this._workspaceContext) return; - - this._tabContainers.forEach((container) => { - this.observe( - this._workspaceContext!.structure.hasPropertyStructuresOf(container.key!), - (hasTabProperties) => { - this._hasTabProperties = hasTabProperties; - }, - '_observeHasTabProperties_' + container.key - ); - }); - } - - private _observeTabContainers() { - if (!this._workspaceContext) return; - - if (this._tabName) { - this._groups = []; - this.observe( - this._workspaceContext.structure.containersByNameAndType(this._tabName, 'Tab'), - (tabContainers) => { - this._tabContainers = tabContainers || []; - if (this._tabContainers.length > 0) { - this._observeHasTabProperties(); - this._observeGroups(); - } - }, - '_observeTabContainers' - ); - } else if (this._noTabName) { - this._groups = []; - this._observeRootGroups(); - } - } - - private _observeGroups() { - if (!this._workspaceContext || !this._tabName) return; - - this._tabContainers.forEach((container) => { - this.observe( - this._workspaceContext!.structure.containersOfParentKey(container.key, 'Group'), - this._insertGroupContainers, - '_observeGroupsOf_' + container.key - ); - }); - } - - private _observeRootGroups() { - if (!this._workspaceContext || !this._noTabName) return; - - // This is where we potentially could observe root properties as well. - this.observe( - this._workspaceContext!.structure.rootContainers('Group'), - this._insertGroupContainers, - '_observeRootGroups' - ); - } - - private _insertGroupContainers = (groupContainers: PropertyTypeContainerResponseModelBaseModel[]) => { - groupContainers.forEach((group) => { - if (group.name) { - if (!this._groups.find((x) => x.name === group.name)) { - this._groups.push(group); - this._groups.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); - } - } - }); - }; - render() { - // TODO: only show tab properties if there was any. We might do this with an event? to tell us when the properties is empty. return html` - ${this._hasTabProperties + ${this._hasProperties ? html` { + this._tabs = tabs; + this._createRoutes(); + }); + + // _hasRootProperties can be gotten via _tabsStructureHelper.hasProperties. But we do not support root properties currently. + this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (workspaceContext) => { this._workspaceContext = workspaceContext as UmbDocumentWorkspaceContext; - this._observeTabs(); + this._observeRootGroups(); }); } - private _observeTabs() { + private _observeRootGroups() { if (!this._workspaceContext) return; - this.observe( - this._workspaceContext.structure.rootContainers('Tab'), - (tabs) => { - tabs.forEach((tab) => { - // Only add each tab name once, as our containers merge on name: - if (!this._tabs.find((x) => x.name === tab.name || '')) { - this._tabs.push(tab); - } - }); - this._createRoutes(); - }, - '_observeTabs' - ); - - /* - Impleent this, when it becomes an option to have properties directly in the root of the document. - this.observe( - this._workspaceContext.rootPropertyStructures(), - (rootPropertyStructure) => { - this._hasRootProperties = rootPropertyStructure.length > 0; - this._createRoutes(); - }, - '_observeTabs' - ); - */ - this.observe( this._workspaceContext.structure.hasRootContainers('Group'), (hasRootGroups) => { this._hasRootGroups = hasRootGroups; this._createRoutes(); }, - '_observeTabs' + '_observeGroups' ); } @@ -139,6 +125,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { this._tabs, (tab) => tab.name, (tab) => { + // TODO: make better url folder name: const path = this._routerPath + '/tab/' + encodeURI(tab.name || ''); return html`${tab.name}([], (x) => x.key); + readonly containers = this.#containers.asObservable(); + + #hasProperties = new BooleanState(false); + readonly hasProperties = this.#hasProperties.asObservable(); + + constructor(host: UmbControllerHostElement) { + this.#host = host; + + this.#containers.sortBy((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); + + new UmbContextConsumerController(host, UMB_ENTITY_WORKSPACE_CONTEXT, (context) => { + this.#workspaceContext = context as UmbDocumentWorkspaceContext; + this._observeOwnerContainers(); + }); + } + + public setType(value?: PropertyContainerTypes) { + if (this._ownerType === value) return; + this._ownerType = value; + this._observeOwnerContainers(); + } + public getType() { + return this._ownerType; + } + + public setContainerChildType(value?: PropertyContainerTypes) { + if (this._childType === value) return; + this._childType = value; + this._observeOwnerContainers(); + } + public getContainerChildType() { + return this._childType; + } + + public setName(value?: string) { + if (this._ownerName === value) return; + this._ownerName = value; + this._observeOwnerContainers(); + } + public getName() { + return this._ownerName; + } + + public setIsRoot(value: boolean) { + if (this._isRoot === value) return; + this._isRoot = value; + this._observeOwnerContainers(); + } + public getIsRoot() { + return this._isRoot; + } + + private _observeOwnerContainers() { + if (!this.#workspaceContext) return; + + if (this._isRoot) { + this.#containers.next([]); + // We cannot have root properties currently, therefor we set it to false: + this.#hasProperties.next(false); + this._observeRootContainers(); + } else if (this._ownerName && this._ownerType) { + new UmbObserverController( + this.#host, + this.#workspaceContext.structure.containersByNameAndType(this._ownerName, this._ownerType), + (ownerContainers) => { + this.#containers.next([]); + this._ownerContainers = ownerContainers || []; + if (this._ownerContainers.length > 0) { + this._observeOwnerProperties(); + this._observeChildContainers(); + } + }, + '_observeOwnerContainers' + ); + } + } + + private _observeOwnerProperties() { + if (!this.#workspaceContext) return; + + this._ownerContainers.forEach((container) => { + new UmbObserverController( + this.#host, + this.#workspaceContext!.structure.hasPropertyStructuresOf(container.key!), + (hasProperties) => { + this.#hasProperties.next(hasProperties); + }, + '_observeOwnerHasProperties_' + container.key + ); + }); + } + + private _observeChildContainers() { + if (!this.#workspaceContext || !this._ownerName || !this._childType) return; + + this._ownerContainers.forEach((container) => { + new UmbObserverController( + this.#host, + this.#workspaceContext!.structure.containersOfParentKey(container.key, this._childType!), + this._insertGroupContainers, + '_observeGroupsOf_' + container.key + ); + }); + } + + private _observeRootContainers() { + if (!this.#workspaceContext || !this._isRoot) return; + + new UmbObserverController( + this.#host, + this.#workspaceContext!.structure.rootContainers(this._childType!), + (rootContainers) => { + this.#containers.next([]); + this._insertGroupContainers(rootContainers); + }, + '_observeRootContainers' + ); + } + + private _insertGroupContainers = (groupContainers: PropertyTypeContainerResponseModelBaseModel[]) => { + groupContainers.forEach((group) => { + if (group.name !== null && group.name !== undefined) { + if (!this.#containers.getValue().find((x) => x.name === group.name)) { + this.#containers.appendOne(group); + } + } + }); + }; + + /** Manipulate methods: */ + + async addGroup(ownerKey?: string, sortOrder?: number) { + if (!this.#workspaceContext) return; + + await this.#workspaceContext.structure.createContainer(null, ownerKey, this._childType, sortOrder); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts new file mode 100644 index 0000000000..651e18e549 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -0,0 +1,114 @@ +import { UmbDocumentWorkspaceContext } from '../../../../documents/documents/workspace/document-workspace.context'; +import { PropertyContainerTypes } from './workspace-structure-manager.class'; +import { DocumentTypePropertyTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { UmbContextConsumerController, UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; + +export class UmbWorkspacePropertyStructureHelper { + #host: UmbControllerHostElement; + + #workspaceContext?: UmbDocumentWorkspaceContext; + + private _containerType?: PropertyContainerTypes; + private _isRoot?: boolean; + private _containerName?: string; + + #propertyStructure = new ArrayState([], (x) => x.key); + readonly propertyStructure = this.#propertyStructure.asObservable(); + + constructor(host: UmbControllerHostElement) { + this.#host = host; + new UmbContextConsumerController(host, UMB_ENTITY_WORKSPACE_CONTEXT, (context) => { + this.#workspaceContext = context as UmbDocumentWorkspaceContext; + this._observeGroupContainers(); + }); + } + + public setContainerType(value?: PropertyContainerTypes) { + if (this._containerType === value) return; + this._containerType = value; + this._observeGroupContainers(); + } + public getContainerType() { + return this._containerType; + } + + public setContainerName(value?: string) { + if (this._containerName === value) return; + this._containerName = value; + this._observeGroupContainers(); + } + public getContainerName() { + return this._containerName; + } + + public setIsRoot(value: boolean) { + if (this._isRoot === value) return; + this._isRoot = value; + this._observeGroupContainers(); + } + public getIsRoot() { + return this._isRoot; + } + + private _observeGroupContainers() { + if (!this.#workspaceContext || !this._containerType) return; + + if (this._isRoot === true) { + this._observePropertyStructureOf(null); + } else if (this._containerName !== undefined) { + new UmbObserverController( + this.#host, + this.#workspaceContext!.structure.containersByNameAndType(this._containerName, this._containerType), + (groupContainers) => { + groupContainers.forEach((group) => this._observePropertyStructureOf(group.key)); + }, + '_observeGroupContainers' + ); + } + } + + private _observePropertyStructureOf(groupKey?: string | null) { + if (!this.#workspaceContext || groupKey === undefined) return; + + new UmbObserverController( + this.#host, + this.#workspaceContext.structure.propertyStructuresOf(groupKey), + (properties) => { + // If this need to be able to remove properties, we need to clean out the ones of this group.key before inserting them: + const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerKey !== groupKey); + + properties?.forEach((property) => { + if (!_propertyStructure.find((x) => x.alias === property.alias)) { + _propertyStructure.push(property); + } + }); + + if (_propertyStructure.length > 0) { + // TODO: End-point: Missing sort order? + //_propertyStructure = _propertyStructure.sort((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); + } + + // Fire update to subscribers: + this.#propertyStructure.next(_propertyStructure); + }, + '_observePropertyStructureOfGroup' + groupKey + ); + } + + /** Manipulate methods: */ + + async addProperty(ownerKey?: string, sortOrder?: number) { + if (!this.#workspaceContext) return; + + return await this.#workspaceContext.structure.createProperty(null, ownerKey, sortOrder); + } + + // Takes optional arguments as this is easier for the implementation in the view: + async partialUpdateProperty(propertyKey?: string, partialUpdate?: Partial) { + if (!this.#workspaceContext || !propertyKey || !partialUpdate) return; + + return await this.#workspaceContext.structure.updateProperty(null, propertyKey, partialUpdate); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts similarity index 58% rename from src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index df36f1db8c..9b7cb37126 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -1,12 +1,19 @@ import { UmbDocumentTypeRepository } from '../../../../documents/document-types/repository/document-type.repository'; +import { generateGuid } from '@umbraco-cms/backoffice/utils'; import { DocumentTypeResponseModel, DocumentTypePropertyTypeResponseModel, PropertyTypeContainerResponseModelBaseModel, ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel, + PropertyTypeResponseModelBaseModel, } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; -import { ArrayState, UmbObserverController, MappingFunction } from '@umbraco-cms/backoffice/observable-api'; +import { + ArrayState, + UmbObserverController, + MappingFunction, + partialUpdateFrozenArray, +} from '@umbraco-cms/backoffice/observable-api'; export type PropertyContainerTypes = 'Group' | 'Tab'; @@ -16,18 +23,36 @@ type T = DocumentTypeResponseModel; // TODO: make general interface for NodeTypeRepository, to replace UmbDocumentTypeRepository: export class UmbWorkspacePropertyStructureManager { #host: UmbControllerHostElement; + #init!: Promise; #documentTypeRepository: R; #rootDocumentTypeKey?: string; #documentTypeObservers = new Array(); #documentTypes = new ArrayState([], (x) => x.key); + readonly documentTypes = this.#documentTypes.asObservable(); + private readonly _documentTypeContainers = this.#documentTypes.getObservablePart((x) => + x.flatMap((x) => x.containers ?? []) + ); #containers = new ArrayState([], (x) => x.key); constructor(host: UmbControllerHostElement, typeRepository: R) { this.#host = host; this.#documentTypeRepository = typeRepository; + + new UmbObserverController(host, this.documentTypes, (documentTypes) => { + documentTypes.forEach((documentType) => { + // We could cache by docType Key? + // TODO: how do we ensure a container goes away? + + //this._initDocumentTypeContainers(documentType); + this._loadDocumentTypeCompositions(documentType); + }); + }); + new UmbObserverController(host, this._documentTypeContainers, (documentTypeContainers) => { + this.#containers.next(documentTypeContainers); + }); } /** @@ -39,7 +64,10 @@ export class UmbWorkspacePropertyStructureManager x.key === key)) return; + await this._loadType(key); + } + private async _loadType(key?: string) { if (!key) return {}; @@ -77,9 +112,11 @@ export class UmbWorkspacePropertyStructureManager { if (docType) { + // TODO: Handle if there was changes made to the specific document type in this context. + /* + possible easy solutions could be to notify user wether they want to update(Discard the changes to accept the new ones). + */ this.#documentTypes.appendOne(docType); - this._initDocumentTypeContainers(docType); - this._loadDocumentTypeCompositions(docType); } }) ); @@ -87,15 +124,17 @@ export class UmbWorkspacePropertyStructureManager { - this._loadType(composition.key); + this._ensureType(composition.key); }); } + /* private async _initDocumentTypeContainers(documentType: T) { documentType.containers?.forEach((container) => { - this.#containers.appendOne(container); + this.#containers.appendOne({ ...container, _ownerDocumentTypeKey: documentType.key }); }); } + */ /** Public methods for consuming structure: */ @@ -106,7 +145,77 @@ export class UmbWorkspacePropertyStructureManager y.key === this.#rootDocumentTypeKey); } updateRootDocumentType(entry: T) { - return this.#documentTypes.updateOne(this.#rootDocumentTypeKey, entry); + this.#documentTypes.updateOne(this.#rootDocumentTypeKey, entry); + } + + // We could move the actions to another class? + + async createContainer( + documentTypeKey: string | null, + parentKey: string | null = null, + type: PropertyContainerTypes = 'Group', + sortOrder?: number + ) { + await this.#init; + documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; + + const container: PropertyTypeContainerResponseModelBaseModel = { + key: generateGuid(), + parentKey: parentKey, + name: 'New', + type: type, + sortOrder: sortOrder ?? 0, + }; + + const containers = [...(this.#documentTypes.getValue().find((x) => x.key === documentTypeKey)?.containers ?? [])]; + containers.push(container); + + this.#documentTypes.updateOne(documentTypeKey, { containers }); + + return container; + } + + async removeContainer(documentTypeKey: string | null, containerKey: string | null = null) { + await this.#init; + documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; + + const frozenContainers = this.#documentTypes.getValue().find((x) => x.key === documentTypeKey)?.containers ?? []; + const containers = frozenContainers.filter((x) => x.key !== containerKey); + + this.#documentTypes.updateOne(documentTypeKey, { containers }); + } + + async createProperty(documentTypeKey: string | null, containerKey: string | null = null, sortOrder?: number) { + await this.#init; + documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; + + const property: PropertyTypeResponseModelBaseModel = { + key: generateGuid(), + containerKey: containerKey, + //sortOrder: sortOrder ?? 0, + }; + + const properties = [...(this.#documentTypes.getValue().find((x) => x.key === documentTypeKey)?.properties ?? [])]; + properties.push(property); + + this.#documentTypes.updateOne(documentTypeKey, { properties }); + + return property; + } + + async updateProperty( + documentTypeKey: string | null, + propertyKey: string, + partialUpdate: Partial + ) { + await this.#init; + documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; + + const frozenProperties = this.#documentTypes.getValue().find((x) => x.key === documentTypeKey)?.properties ?? []; + + const properties = partialUpdateFrozenArray(frozenProperties, partialUpdate, (x) => x.key === propertyKey!); + + this.#documentTypes.updateOne(documentTypeKey, { properties }); } /* @@ -180,6 +289,7 @@ export class UmbWorkspacePropertyStructureManager { return data.filter((x) => x.name === name && x.type === containerType); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts index 96cedd6512..0363bb948b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-property-layout/workspace-property-layout.element.ts @@ -11,49 +11,6 @@ import { customElement, property } from 'lit/decorators.js'; */ @customElement('umb-workspace-property-layout') export class UmbWorkspacePropertyLayoutElement extends LitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: grid; - grid-template-columns: 200px auto; - column-gap: var(--uui-size-layout-2); - border-bottom: 1px solid var(--uui-color-divider); - padding: var(--uui-size-layout-1) 0; - container-type: inline-size; - } - - :host > div { - grid-column: span 2; - } - - @container (width > 600px) { - :host(:not([orientation='vertical'])) > div { - grid-column: span 1; - } - } - - :host(:last-of-type) { - border-bottom: none; - } - - :host-context(umb-variantable-property:first-of-type) { - padding-top: 0; - } - - p { - margin-bottom: 0; - } - - #header { - position: sticky; - top: var(--uui-size-space-4); - height: min-content; - z-index: 2; - } - `, - ]; - /** * Alias. The technical name of the property. * @type {string} @@ -107,6 +64,49 @@ export class UmbWorkspacePropertyLayoutElement extends LitElement { `; } + + static styles = [ + UUITextStyles, + css` + :host { + display: grid; + grid-template-columns: 200px auto; + column-gap: var(--uui-size-layout-2); + border-bottom: 1px solid var(--uui-color-divider); + padding: var(--uui-size-layout-1) 0; + container-type: inline-size; + } + + :host > div { + grid-column: span 2; + } + + @container (width > 600px) { + :host(:not([orientation='vertical'])) > div { + grid-column: span 1; + } + } + + :host(:last-of-type) { + border-bottom: none; + } + + :host-context(umb-variantable-property:first-of-type) { + padding-top: 0; + } + + p { + margin-bottom: 0; + } + + #header { + position: sticky; + top: var(--uui-size-space-4); + height: min-content; + z-index: 2; + } + `, + ]; } declare global { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index ec6d416519..1df0a4c0ea 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -1030,23 +1030,33 @@ export const treeData: Array = [ }, { $type: 'DocumentTypeTreeItemViewModel', - name: 'Document Type 1', + name: 'Page Document Type', type: 'document-type', hasChildren: false, - key: 'd81c7957-153c-4b5a-aa6f-b434a4964624', + key: '29643452-cff9-47f2-98cd-7de4b6807681', isContainer: false, parentKey: null, - icon: '', + icon: 'umb:document', }, { $type: 'DocumentTypeTreeItemViewModel', - name: 'Document Type 2', + name: 'Page Document Type Compositional', type: 'document-type', hasChildren: false, - key: 'a99e4018-3ffc-486b-aa76-eecea9593d17', + key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', isContainer: false, parentKey: null, - icon: '', + icon: 'umb:document', + }, + { + $type: 'DocumentTypeTreeItemViewModel', + name: 'Page Document Type Inherited', + type: 'document-type', + hasChildren: false, + key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + isContainer: false, + parentKey: null, + icon: 'umb:document', }, { $type: 'DocumentTypeTreeItemViewModel', From 6199b41729ba01e747a8aab9d98daaab26281188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 14:09:47 +0200 Subject: [PATCH 514/550] updated models --- .../libs/backend-api/src/index.ts | 22 +- .../src/models/AuditLogBaseModel.ts | 5 +- .../src/models/AuditLogResponseModel.ts | 1 + .../AuditLogWithUsernameResponseModel.ts | 5 +- .../models/ChangePasswordUserRequestModel.ts | 9 + .../models/ConsentLevelPresentationModel.ts | 1 + ...tValueModelDocumentVariantResponseModel.ts | 5 +- .../models/ContentTreeItemResponseModel.ts | 7 +- .../src/models/ContentTypeCleanupModel.ts | 1 + .../src/models/ContentTypeCompositionModel.ts | 3 +- ...tTypePropertyTypeContainerResponseModel.ts | 3 +- ...aTypePropertyTypeContainerResponseModel.ts | 3 +- .../src/models/ContentTypeSortModel.ts | 3 +- .../src/models/ContentUrlInfoModel.ts | 1 + .../src/models/CopyDataTypeRequestModel.ts | 3 +- ...ntValueModelDocumentVariantRequestModel.ts | 3 +- ...MediaValueModelMediaVariantRequestModel.ts | 3 +- .../src/models/CreateDataTypeRequestModel.ts | 4 +- .../CreateDictionaryItemRequestModel.ts | 3 +- .../src/models/CreateDocumentRequestModel.ts | 5 +- .../src/models/CreateFolderRequestModel.ts | 4 +- .../src/models/CreateLanguageRequestModel.ts | 3 +- .../src/models/CreateMediaRequestModel.ts | 3 +- .../src/models/CreatePackageRequestModel.ts | 1 + .../models/CreateRelationTypeRequestModel.ts | 3 +- .../src/models/CreateTemplateRequestModel.ts | 1 + .../src/models/CreateUserRequestModel.ts | 8 + .../src/models/CreateUserResponseModel.ts | 9 + .../src/models/CultureReponseModel.ts | 1 + .../src/models/DataTypeModelBaseModel.ts | 1 + .../DataTypePropertyPresentationModel.ts | 1 + .../models/DataTypePropertyReferenceModel.ts | 1 + .../models/DataTypeReferenceResponseModel.ts | 3 +- .../src/models/DataTypeResponseModel.ts | 7 +- .../models/DatabaseInstallResponseModel.ts | 1 + .../DatabaseSettingsPresentationModel.ts | 1 + .../models/DictionaryItemModelBaseModel.ts | 1 + .../src/models/DictionaryItemResponseModel.ts | 5 +- .../models/DictionaryItemTranslationModel.ts | 1 + .../models/DictionaryOverviewResponseModel.ts | 5 +- .../src/models/DisableUserRequestModel.ts | 8 + .../DocumentBlueprintTreeItemResponseModel.ts | 9 +- .../DocumentNotificationResponseModel.ts | 9 + .../src/models/DocumentResponseModel.ts | 5 +- .../models/DocumentTreeItemResponseModel.ts | 9 +- ...tTypePropertyTypeContainerResponseModel.ts | 1 + .../DocumentTypePropertyTypeResponseModel.ts | 1 + .../src/models/DocumentTypeResponseModel.ts | 7 +- .../DocumentTypeTreeItemResponseModel.ts | 5 +- .../src/models/DocumentValueModel.ts | 3 +- .../src/models/DocumentVariantRequestModel.ts | 3 +- .../models/DocumentVariantResponseModel.ts | 7 +- .../src/models/DomainPresentationModel.ts | 1 + .../DomainsPresentationModelBaseModel.ts | 1 + .../src/models/DomainsResponseModel.ts | 1 + .../src/models/EnableUserRequestModel.ts | 8 + .../src/models/EntityTreeItemResponseModel.ts | 9 +- .../src/models/FieldPresentationModel.ts | 1 + .../FileSystemTreeItemPresentationModel.ts | 5 +- .../src/models/FolderModelBaseModel.ts | 1 + .../src/models/FolderReponseModel.ts | 7 +- .../src/models/FolderTreeItemResponseModel.ts | 5 +- .../models/HealthCheckActionRequestModel.ts | 3 +- .../HealthCheckGroupPresentationBaseModel.ts | 1 + .../HealthCheckGroupPresentationModel.ts | 3 +- .../models/HealthCheckGroupResponseModel.ts | 1 + ...HealthCheckGroupWithResultResponseModel.ts | 1 + .../src/models/HealthCheckModel.ts | 5 +- .../src/models/HealthCheckModelBaseModel.ts | 3 +- .../models/HealthCheckResultResponseModel.ts | 1 + .../HealthCheckWithResultPresentationModel.ts | 3 +- .../src/models/HelpPageResponseModel.ts | 1 + .../ImportDictionaryItemsPresentationModel.ts | 9 - .../models/ImportDictionaryRequestModel.ts | 5 +- .../src/models/IndexResponseModel.ts | 1 + .../models/InstallSettingsResponseModel.ts | 1 + .../src/models/InstallVResponseModel.ts | 1 + .../src/models/InviteUserRequestModel.ts | 10 + .../src/models/LanguageModelBaseModel.ts | 1 + .../src/models/LanguageResponseModel.ts | 3 +- .../src/models/LogLevelCountsReponseModel.ts | 1 + .../LogMessagePropertyPresentationModel.ts | 1 + .../src/models/LogMessageResponseModel.ts | 1 + .../src/models/LogTemplateResponseModel.ts | 1 + .../src/models/LoggerResponseModel.ts | 1 + ...aTypePropertyTypeContainerResponseModel.ts | 1 + .../MediaTypePropertyTypeResponseModel.ts | 1 + .../src/models/MediaTypeResponseModel.ts | 1 + .../backend-api/src/models/MediaValueModel.ts | 3 +- .../src/models/MediaVariantRequestModel.ts | 3 +- .../src/models/MediaVariantResponseModel.ts | 3 +- .../src/models/ModelsBuilderResponseModel.ts | 1 + .../src/models/MoveDataTypeRequestModel.ts | 3 +- .../src/models/MoveDictionaryRequestModel.ts | 3 +- .../src/models/ObjectTypeResponseModel.ts | 1 + .../backend-api/src/models/OkResultModel.ts | 1 + .../models/OutOfDateStatusResponseModel.ts | 1 + .../models/PackageDefinitionResponseModel.ts | 5 +- .../models/PackageManifestResponseModel.ts | 1 + .../PackageMigrationStatusResponseModel.ts | 1 + .../src/models/PackageModelBaseModel.ts | 3 +- .../src/models/PagedAuditLogResponseModel.ts | 1 + .../PagedAuditLogWithUsernameResponseModel.ts | 1 + .../PagedContentTreeItemResponseModel.ts | 1 + .../src/models/PagedCultureReponseModel.ts | 1 + .../PagedDictionaryOverviewResponseModel.ts | 1 + ...dDocumentBlueprintTreeItemResponseModel.ts | 1 + .../PagedDocumentTreeItemResponseModel.ts | 1 + .../PagedDocumentTypeTreeItemResponseModel.ts | 1 + .../PagedEntityTreeItemResponseModel.ts | 1 + ...agedFileSystemTreeItemPresentationModel.ts | 1 + .../PagedFolderTreeItemResponseModel.ts | 1 + .../PagedHealthCheckGroupResponseModel.ts | 1 + .../src/models/PagedHelpPageResponseModel.ts | 1 + .../src/models/PagedIndexResponseModel.ts | 1 + .../src/models/PagedLanguageResponseModel.ts | 1 + .../models/PagedLogMessageResponseModel.ts | 1 + .../models/PagedLogTemplateResponseModel.ts | 1 + .../src/models/PagedLoggerResponseModel.ts | 1 + .../models/PagedObjectTypeResponseModel.ts | 1 + .../PagedPackageDefinitionResponseModel.ts | 1 + ...agedPackageMigrationStatusResponseModel.ts | 1 + .../PagedRecycleBinItemResponseModel.ts | 1 + .../models/PagedRedirectUrlResponseModel.ts | 1 + .../models/PagedRelationItemResponseModel.ts | 1 + .../src/models/PagedRelationResponseModel.ts | 1 + .../PagedSavedLogSearchResponseModel.ts | 1 + .../models/PagedSearchResultResponseModel.ts | 1 + .../src/models/PagedSearcherResponseModel.ts | 1 + .../src/models/PagedTelemetryResponseModel.ts | 1 + .../models/PagedUserGroupPresentationModel.ts | 1 + .../src/models/PagedUserResponseModel.ts | 11 + .../src/models/ProfilingStatusRequestModel.ts | 1 + .../models/ProfilingStatusResponseModel.ts | 1 + .../src/models/PropertyTypeAppearanceModel.ts | 1 + ...ertyTypeContainerResponseModelBaseModel.ts | 5 +- .../PropertyTypeResponseModelBaseModel.ts | 7 +- .../src/models/PropertyTypeValidationModel.ts | 1 + .../src/models/RecycleBinItemResponseModel.ts | 5 +- .../src/models/RedirectUrlResponseModel.ts | 5 +- .../models/RedirectUrlStatusResponseModel.ts | 1 + .../src/models/RelationItemResponseModel.ts | 3 +- .../src/models/RelationResponseModel.ts | 1 + .../src/models/RelationTypeBaseModel.ts | 1 + .../src/models/RelationTypeResponseModel.ts | 13 +- .../src/models/SaveUserGroupRequestModel.ts | 1 + .../SavedLogSearchPresenationBaseModel.ts | 1 + .../src/models/SavedLogSearchRequestModel.ts | 1 + .../src/models/SavedLogSearchResponseModel.ts | 1 + .../src/models/SearchResultResponseModel.ts | 1 + .../src/models/SearcherResponseModel.ts | 1 + .../src/models/ServerStatusResponseModel.ts | 1 + .../src/models/SetAvatarRequestModel.ts | 8 + .../TelemetryRepresentationBaseModel.ts | 1 + .../src/models/TelemetryRequestModel.ts | 1 + .../src/models/TelemetryResponseModel.ts | 1 + .../src/models/TemplateModelBaseModel.ts | 1 + ...lateQueryExecuteFilterPresentationModel.ts | 1 + .../src/models/TemplateQueryExecuteModel.ts | 3 +- .../models/TemplateQueryExecuteSortModel.ts | 1 + .../src/models/TemplateQueryOperatorModel.ts | 1 + .../TemplateQueryPropertyPresentationModel.ts | 1 + ...emplateQueryResultItemPresentationModel.ts | 1 + .../TemplateQueryResultResponseModel.ts | 1 + .../TemplateQuerySettingsResponseModel.ts | 1 + .../src/models/TemplateResponseModel.ts | 5 +- .../models/TemplateScaffoldResponseModel.ts | 1 + .../src/models/TemporaryFileResponseModel.ts | 10 + .../src/models/TreeItemPresentationModel.ts | 1 + .../src/models/UnlockUsersRequestModel.ts | 8 + ...ntValueModelDocumentVariantRequestModel.ts | 1 + ...MediaValueModelMediaVariantRequestModel.ts | 1 + .../src/models/UpdateDataTypeRequestModel.ts | 1 + .../UpdateDictionaryItemRequestModel.ts | 1 + ...UpdateDocumentNotificationsRequestModel.ts | 8 + .../src/models/UpdateDocumentRequestModel.ts | 3 +- .../src/models/UpdateDomainsRequestModel.ts | 1 + .../src/models/UpdateFolderReponseModel.ts | 1 + .../src/models/UpdateLanguageRequestModel.ts | 1 + .../src/models/UpdateMediaRequestModel.ts | 1 + .../src/models/UpdatePackageRequestModel.ts | 3 +- .../models/UpdateRelationTypeRequestModel.ts | 1 + .../src/models/UpdateTemplateRequestModel.ts | 1 + .../src/models/UpdateUserGroupRequestModel.ts | 1 + .../UpdateUserGroupsOnUserRequestModel.ts | 9 + .../src/models/UpdateUserRequestModel.ts | 12 + .../models/UpgradeSettingsResponseModel.ts | 1 + .../models/UploadDictionaryResponseModel.ts | 10 - .../src/models/UserGroupBaseModel.ts | 5 +- .../src/models/UserGroupPresentationModel.ts | 5 +- .../src/models/UserInstallResponseModel.ts | 1 + .../backend-api/src/models/UserOrderModel.ts | 16 + .../src/models/UserPresentationBaseModel.ts | 11 + .../src/models/UserResponseModel.ts | 23 ++ .../src/models/UserSettingsModel.ts | 1 + .../backend-api/src/models/UserStateModel.ts | 12 + .../src/models/ValueModelBaseModel.ts | 1 + .../src/models/VariantModelBaseModel.ts | 1 + .../models/VariantResponseModelBaseModel.ts | 1 + .../src/models/VersionResponseModel.ts | 1 + .../src/services/AuditLogResource.ts | 70 ++-- .../src/services/CultureResource.ts | 12 +- .../src/services/DataTypeResource.ts | 206 +++++------ .../src/services/DictionaryResource.ts | 170 ++++----- .../src/services/DocumentBlueprintResource.ts | 22 +- .../src/services/DocumentResource.ts | 234 ++++++++----- .../src/services/DocumentTypeResource.ts | 62 ++-- .../src/services/HealthCheckResource.ts | 36 +- .../backend-api/src/services/HelpResource.ts | 24 +- .../src/services/IndexerResource.ts | 28 +- .../src/services/InstallResource.ts | 16 +- .../src/services/LanguageResource.ts | 48 +-- .../src/services/LogViewerResource.ts | 124 +++---- .../backend-api/src/services/MediaResource.ts | 142 ++++---- .../src/services/MediaTypeResource.ts | 62 ++-- .../src/services/MemberGroupResource.ts | 22 +- .../src/services/MemberTypeResource.ts | 22 +- .../src/services/ObjectTypesResource.ts | 12 +- .../src/services/PackageResource.ts | 100 +++--- .../src/services/PartialViewResource.ts | 36 +- .../src/services/ProfilingResource.ts | 8 +- .../services/RedirectManagementResource.ts | 60 ++-- .../src/services/RelationResource.ts | 50 +-- .../src/services/RelationTypeResource.ts | 76 ++--- .../src/services/ScriptResource.ts | 36 +- .../src/services/SearcherResource.ts | 32 +- .../src/services/StaticFileResource.ts | 36 +- .../src/services/StylesheetResource.ts | 36 +- .../src/services/TelemetryResource.ts | 20 +- .../src/services/TemplateResource.ts | 102 +++--- .../src/services/TemporaryFileResource.ts | 80 +++++ .../src/services/TrackedReferenceResource.ts | 74 ++-- .../src/services/UserGroupsResource.ts | 66 ++-- .../backend-api/src/services/UsersResource.ts | 323 ++++++++++++++++++ 234 files changed, 1934 insertions(+), 1134 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts 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 5e9a463517..326b993f2f 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 @@ -10,6 +10,7 @@ export type { AuditLogBaseModel } from './models/AuditLogBaseModel'; export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; export { AuditTypeModel } from './models/AuditTypeModel'; +export type { ChangePasswordUserRequestModel } from './models/ChangePasswordUserRequestModel'; export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; export type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; export { ContentStateModel } from './models/ContentStateModel'; @@ -33,6 +34,8 @@ export type { CreateMediaRequestModel } from './models/CreateMediaRequestModel'; export type { CreatePackageRequestModel } from './models/CreatePackageRequestModel'; export type { CreateRelationTypeRequestModel } from './models/CreateRelationTypeRequestModel'; export type { CreateTemplateRequestModel } from './models/CreateTemplateRequestModel'; +export type { CreateUserRequestModel } from './models/CreateUserRequestModel'; +export type { CreateUserResponseModel } from './models/CreateUserResponseModel'; export type { CultureReponseModel } from './models/CultureReponseModel'; export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; @@ -46,7 +49,9 @@ export type { DictionaryItemResponseModel } from './models/DictionaryItemRespons export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; +export type { DisableUserRequestModel } from './models/DisableUserRequestModel'; export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentNotificationResponseModel } from './models/DocumentNotificationResponseModel'; export type { DocumentResponseModel } from './models/DocumentResponseModel'; export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; @@ -59,6 +64,7 @@ export type { DocumentVariantResponseModel } from './models/DocumentVariantRespo export type { DomainPresentationModel } from './models/DomainPresentationModel'; export type { DomainsPresentationModelBaseModel } from './models/DomainsPresentationModelBaseModel'; export type { DomainsResponseModel } from './models/DomainsResponseModel'; +export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; export type { FieldPresentationModel } from './models/FieldPresentationModel'; export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; @@ -76,11 +82,11 @@ export type { HealthCheckResultResponseModel } from './models/HealthCheckResultR export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; export { HealthStatusModel } from './models/HealthStatusModel'; export type { HelpPageResponseModel } from './models/HelpPageResponseModel'; -export type { ImportDictionaryItemsPresentationModel } from './models/ImportDictionaryItemsPresentationModel'; export type { ImportDictionaryRequestModel } from './models/ImportDictionaryRequestModel'; export type { IndexResponseModel } from './models/IndexResponseModel'; export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; export type { InstallVResponseModel } from './models/InstallVResponseModel'; +export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; export type { LanguageResponseModel } from './models/LanguageResponseModel'; export type { LoggerResponseModel } from './models/LoggerResponseModel'; @@ -138,6 +144,7 @@ export type { PagedSearcherResponseModel } from './models/PagedSearcherResponseM export type { PagedSearchResultResponseModel } from './models/PagedSearchResultResponseModel'; export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; +export type { PagedUserResponseModel } from './models/PagedUserResponseModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; @@ -161,6 +168,7 @@ export type { SaveUserGroupRequestModel } from './models/SaveUserGroupRequestMod export type { SearcherResponseModel } from './models/SearcherResponseModel'; export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; +export type { SetAvatarRequestModel } from './models/SetAvatarRequestModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; @@ -178,11 +186,14 @@ export type { TemplateQueryResultResponseModel } from './models/TemplateQueryRes export type { TemplateQuerySettingsResponseModel } from './models/TemplateQuerySettingsResponseModel'; export type { TemplateResponseModel } from './models/TemplateResponseModel'; export type { TemplateScaffoldResponseModel } from './models/TemplateScaffoldResponseModel'; +export type { TemporaryFileResponseModel } from './models/TemporaryFileResponseModel'; export type { TreeItemPresentationModel } from './models/TreeItemPresentationModel'; +export type { UnlockUsersRequestModel } from './models/UnlockUsersRequestModel'; export type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; +export type { UpdateDocumentNotificationsRequestModel } from './models/UpdateDocumentNotificationsRequestModel'; export type { UpdateDocumentRequestModel } from './models/UpdateDocumentRequestModel'; export type { UpdateDomainsRequestModel } from './models/UpdateDomainsRequestModel'; export type { UpdateFolderReponseModel } from './models/UpdateFolderReponseModel'; @@ -192,12 +203,17 @@ export type { UpdatePackageRequestModel } from './models/UpdatePackageRequestMod export type { UpdateRelationTypeRequestModel } from './models/UpdateRelationTypeRequestModel'; export type { UpdateTemplateRequestModel } from './models/UpdateTemplateRequestModel'; export type { UpdateUserGroupRequestModel } from './models/UpdateUserGroupRequestModel'; +export type { UpdateUserGroupsOnUserRequestModel } from './models/UpdateUserGroupsOnUserRequestModel'; +export type { UpdateUserRequestModel } from './models/UpdateUserRequestModel'; export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; -export type { UploadDictionaryResponseModel } from './models/UploadDictionaryResponseModel'; export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; export type { UserGroupPresentationModel } from './models/UserGroupPresentationModel'; export type { UserInstallResponseModel } from './models/UserInstallResponseModel'; +export { UserOrderModel } from './models/UserOrderModel'; +export type { UserPresentationBaseModel } from './models/UserPresentationBaseModel'; +export type { UserResponseModel } from './models/UserResponseModel'; export type { UserSettingsModel } from './models/UserSettingsModel'; +export { UserStateModel } from './models/UserStateModel'; export type { ValueModelBaseModel } from './models/ValueModelBaseModel'; export type { VariantModelBaseModel } from './models/VariantModelBaseModel'; export type { VariantResponseModelBaseModel } from './models/VariantResponseModelBaseModel'; @@ -237,6 +253,8 @@ export { StaticFileResource } from './services/StaticFileResource'; export { StylesheetResource } from './services/StylesheetResource'; export { TelemetryResource } from './services/TelemetryResource'; export { TemplateResource } from './services/TemplateResource'; +export { TemporaryFileResource } from './services/TemporaryFileResource'; export { TrackedReferenceResource } from './services/TrackedReferenceResource'; export { UpgradeResource } from './services/UpgradeResource'; export { UserGroupsResource } from './services/UserGroupsResource'; +export { UsersResource } from './services/UsersResource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts index 1e56192c01..92a6024151 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts @@ -5,11 +5,12 @@ import type { AuditTypeModel } from './AuditTypeModel'; export type AuditLogBaseModel = { - userKey?: string; - entityKey?: string | null; + userId?: string; + entityId?: string | null; timestamp?: string; logType?: AuditTypeModel; entityType?: string | null; comment?: string | null; parameters?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts index 150aed42b7..53aaafdb87 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts @@ -5,3 +5,4 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogResponseModel = AuditLogBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts index 3cc6f615f3..eb768a7c43 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts @@ -5,6 +5,7 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogWithUsernameResponseModel = (AuditLogBaseModel & { -userName?: string | null; -userAvatars?: Array | null; + userName?: string | null; + userAvatars?: Array | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts new file mode 100644 index 0000000000..450bc06538 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ChangePasswordUserRequestModel = { + newPassword?: string; + oldPassword?: string | null; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts index f8481a3c36..b9a1283ad5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts @@ -8,3 +8,4 @@ export type ConsentLevelPresentationModel = { level?: TelemetryLevelModel; description?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts index ed77830467..7ad34d5e3e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts @@ -8,6 +8,7 @@ import type { DocumentVariantResponseModel } from './DocumentVariantResponseMode export type ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel = { values?: Array; variants?: Array; - key?: string; - contentTypeKey?: string; + id?: string; + contentTypeId?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts index d87dbd5e82..630fb6ae84 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts @@ -5,7 +5,8 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type ContentTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -noAccess?: boolean; -isTrashed?: boolean; + $type: string; + noAccess?: boolean; + isTrashed?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts index 6d5a4bdf54..7ea186e255 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts @@ -7,3 +7,4 @@ export type ContentTypeCleanupModel = { keepAllVersionsNewerThanDays?: number | null; keepLatestVersionPerDayForDays?: number | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts index 55cd2c0c03..d704a9fcf9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts @@ -5,6 +5,7 @@ import type { ContentTypeCompositionTypeModel } from './ContentTypeCompositionTypeModel'; export type ContentTypeCompositionModel = { - key?: string; + id?: string; compositionType?: ContentTypeCompositionTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts index 34a78a67b9..8427bc56c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts @@ -8,7 +8,7 @@ import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentT import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel = { - key?: string; + id?: string; alias?: string; name?: string; description?: string | null; @@ -22,3 +22,4 @@ export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDoc allowedContentTypes?: Array; compositions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts index 0cae4423f3..c8285cef7b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts @@ -8,7 +8,7 @@ import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePro import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel = { - key?: string; + id?: string; alias?: string; name?: string; description?: string | null; @@ -22,3 +22,4 @@ export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaT allowedContentTypes?: Array; compositions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts index bf4f78b7d6..02c537079a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type ContentTypeSortModel = { - key?: string; + id?: string; sortOrder?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts index 0afeb120d3..aabc5314c5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts @@ -6,3 +6,4 @@ export type ContentUrlInfoModel = { culture?: string | null; url?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts index d15502deef..eb76506716 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type CopyDataTypeRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts index 6e7608eca4..bb5147ecc2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -8,5 +8,6 @@ import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel' export type CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { values?: Array; variants?: Array; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts index a8ecb5c7bb..3a0e270428 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -8,5 +8,6 @@ import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; export type CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { values?: Array; variants?: Array; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts index df4380d8ad..a3b6c50157 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts @@ -5,5 +5,7 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type CreateDataTypeRequestModel = (DataTypeModelBaseModel & { -parentKey?: string | null; + id?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts index fb32c43da5..95b723fb43 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts @@ -5,5 +5,6 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type CreateDictionaryItemRequestModel = (DictionaryItemModelBaseModel & { -parentKey?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts index a789b2c4fa..645d204832 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts @@ -5,6 +5,7 @@ import type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type CreateDocumentRequestModel = (CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { -contentTypeKey?: string; -templateKey?: string | null; + contentTypeId?: string; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts index 6f23857001..e4af10670e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts @@ -5,5 +5,7 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type CreateFolderRequestModel = (FolderModelBaseModel & { -parentKey?: string | null; + id?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts index 4eed24634f..16326ad62f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts @@ -5,5 +5,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type CreateLanguageRequestModel = (LanguageModelBaseModel & { -isoCode?: string; + isoCode?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts index bf4333b9da..723fe2ecfc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts @@ -5,5 +5,6 @@ import type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type CreateMediaRequestModel = (CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel & { -contentTypeKey?: string; + contentTypeId?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts index 2cfedb1c03..a88367acca 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts @@ -5,3 +5,4 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type CreatePackageRequestModel = PackageModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts index de6232ee5c..fb75ae7736 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts @@ -5,5 +5,6 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type CreateRelationTypeRequestModel = (RelationTypeBaseModel & { -key?: string | null; + id?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts index e2d8afb847..e5aa227ac5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts @@ -5,3 +5,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type CreateTemplateRequestModel = TemplateModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts new file mode 100644 index 0000000000..0166c949fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; + +export type CreateUserRequestModel = UserPresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts new file mode 100644 index 0000000000..0d3678436e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type CreateUserResponseModel = { + userId?: string; + initialPassword?: string | null; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts index 3b17cfc739..cf18c8883e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts @@ -6,3 +6,4 @@ export type CultureReponseModel = { name?: string; englishName?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts index 9c8b59ed42..c7fa61f661 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts @@ -10,3 +10,4 @@ export type DataTypeModelBaseModel = { propertyEditorUiAlias?: string | null; values?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts index 10ca3bc30c..30bcddd9a3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts @@ -6,3 +6,4 @@ export type DataTypePropertyPresentationModel = { alias?: string; value?: any; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts index d78ee8d9f8..f891dd3af0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts @@ -6,3 +6,4 @@ export type DataTypePropertyReferenceModel = { name?: string; alias?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts index 4586e124d8..9855622b89 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts @@ -5,7 +5,8 @@ import type { DataTypePropertyReferenceModel } from './DataTypePropertyReferenceModel'; export type DataTypeReferenceResponseModel = { - key?: string; + id?: string; type?: string; properties?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts index ab8d3cef09..5fa2a1085c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts @@ -5,7 +5,8 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type DataTypeResponseModel = (DataTypeModelBaseModel & { -$type: string; -key?: string; -parentKey?: string | null; + $type: string; + id?: string; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts index 48dac68577..233df53325 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts @@ -12,3 +12,4 @@ export type DatabaseInstallResponseModel = { useIntegratedAuthentication?: boolean; connectionString?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts index ed0057f69f..8046700e30 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts @@ -15,3 +15,4 @@ export type DatabaseSettingsPresentationModel = { supportsIntegratedAuthentication?: boolean; requiresConnectionTest?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts index 1ffac7af64..cd1a89d95a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts @@ -8,3 +8,4 @@ export type DictionaryItemModelBaseModel = { name?: string; translations?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts index b691fd7c96..f5da8949f1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts @@ -5,6 +5,7 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type DictionaryItemResponseModel = (DictionaryItemModelBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts index 37e5189a01..9bc10a302f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts @@ -6,3 +6,4 @@ export type DictionaryItemTranslationModel = { isoCode?: string; translation?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts index f0744047dc..abc3190425 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts @@ -4,7 +4,8 @@ export type DictionaryOverviewResponseModel = { name?: string | null; - key?: string; - parentKey?: string | null; + id?: string; + parentId?: string | null; translatedIsoCodes?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts new file mode 100644 index 0000000000..1074d06b75 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DisableUserRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts index 6821ca9675..0dc6c99953 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type DocumentBlueprintTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -documentTypeKey?: string; -documentTypeAlias?: string; -documentTypeName?: string | null; + $type: string; + documentTypeId?: string; + documentTypeAlias?: string; + documentTypeName?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts new file mode 100644 index 0000000000..e898c96eda --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DocumentNotificationResponseModel = { + actionId?: string; + subscribed?: boolean; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts index af1dbfa151..ce053d9297 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts @@ -6,6 +6,7 @@ import type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseM import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; export type DocumentResponseModel = (ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel & { -urls?: Array; -templateKey?: string | null; + urls?: Array; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts index 2f49967d81..d9d187c704 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; export type DocumentTreeItemResponseModel = (ContentTreeItemResponseModel & { -$type: string; -isProtected?: boolean; -isPublished?: boolean; -isEdited?: boolean; + $type: string; + isProtected?: boolean; + isPublished?: boolean; + isEdited?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts index 0aa23dce56..83aa9e6459 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; export type DocumentTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts index 2cd2e32d6e..c74873bb1b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; export type DocumentTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts index 7e0adcb071..8712b46d1f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts @@ -6,7 +6,8 @@ import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; import type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; export type DocumentTypeResponseModel = (ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel & { -allowedTemplateKeys?: Array; -defaultTemplateKey?: string | null; -cleanup?: ContentTypeCleanupModel; + allowedTemplateIds?: Array; + defaultTemplateId?: string | null; + cleanup?: ContentTypeCleanupModel; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts index f6737ab3af..d211b01020 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts @@ -5,6 +5,7 @@ import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; export type DocumentTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { -$type: string; -isElement?: boolean; + $type: string; + isElement?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts index 3f856dc060..497bb7255a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts @@ -5,5 +5,6 @@ import type { ValueModelBaseModel } from './ValueModelBaseModel'; export type DocumentValueModel = (ValueModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts index a362a5d53c..8377863391 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts @@ -5,5 +5,6 @@ import type { VariantModelBaseModel } from './VariantModelBaseModel'; export type DocumentVariantRequestModel = (VariantModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts index 1ec48739e2..2c19f50dd9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts @@ -6,7 +6,8 @@ import type { ContentStateModel } from './ContentStateModel'; import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; export type DocumentVariantResponseModel = (VariantResponseModelBaseModel & { -$type: string; -state?: ContentStateModel; -publishDate?: string | null; + $type: string; + state?: ContentStateModel; + publishDate?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts index 05f340dbb8..237c3037f4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts @@ -6,3 +6,4 @@ export type DomainPresentationModel = { domainName?: string; isoCode?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts index 0109e12809..597b473ad7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts @@ -8,3 +8,4 @@ export type DomainsPresentationModelBaseModel = { defaultIsoCode?: string | null; domains?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts index 4ef04f4c24..aeec02fb3d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts @@ -5,3 +5,4 @@ import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; export type DomainsResponseModel = DomainsPresentationModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts new file mode 100644 index 0000000000..6230b2469f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type EnableUserRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts index 7efeefad1e..6cff369186 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; export type EntityTreeItemResponseModel = (TreeItemPresentationModel & { -$type: string; -key?: string; -isContainer?: boolean; -parentKey?: string | null; + $type: string; + id?: string; + isContainer?: boolean; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts index 14255377d9..73dd10d3b0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts @@ -6,3 +6,4 @@ export type FieldPresentationModel = { name?: string; values?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts index 98c014b13c..9b82bc2e4a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts @@ -5,6 +5,7 @@ import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; export type FileSystemTreeItemPresentationModel = (TreeItemPresentationModel & { -path?: string; -isFolder?: boolean; + path?: string; + isFolder?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts index f4fa285d6a..bb5a9dab5b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts @@ -5,3 +5,4 @@ export type FolderModelBaseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts index c3606779e5..dede400904 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts @@ -5,7 +5,8 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type FolderReponseModel = (FolderModelBaseModel & { -$type: string; -key?: string; -parentKey?: string | null; + $type: string; + id?: string; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts index 25c0f50fd2..207186fdc1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts @@ -5,6 +5,7 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type FolderTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -isFolder?: boolean; + $type: string; + isFolder?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts index 0a64ed3f60..05f50ef3c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts @@ -3,7 +3,7 @@ /* eslint-disable */ export type HealthCheckActionRequestModel = { - healthCheckKey?: string; + healthCheckId?: string; alias?: string | null; name?: string | null; description?: string | null; @@ -12,3 +12,4 @@ export type HealthCheckActionRequestModel = { providedValueValidation?: string | null; providedValueValidationRegex?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts index fbc62be4ff..22073b3a22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts @@ -5,3 +5,4 @@ export type HealthCheckGroupPresentationBaseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts index dfdf778e12..8029327431 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts @@ -6,5 +6,6 @@ import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPr import type { HealthCheckModel } from './HealthCheckModel'; export type HealthCheckGroupPresentationModel = (HealthCheckGroupPresentationBaseModel & { -checks?: Array; + checks?: Array; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts index 5a038bd74e..46704d9f25 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts @@ -5,3 +5,4 @@ import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; export type HealthCheckGroupResponseModel = HealthCheckGroupPresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts index 45f3b948df..e3a7841939 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts @@ -7,3 +7,4 @@ import type { HealthCheckWithResultPresentationModel } from './HealthCheckWithRe export type HealthCheckGroupWithResultResponseModel = { checks?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts index 56ca3e0121..9a85add96d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts @@ -5,6 +5,7 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; export type HealthCheckModel = (HealthCheckModelBaseModel & { -name?: string; -description?: string | null; + name?: string; + description?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts index 55f41c4618..0cee4aca31 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type HealthCheckModelBaseModel = { - key?: string; + id?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts index d5a99706b5..c0c237a43c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts @@ -11,3 +11,4 @@ export type HealthCheckResultResponseModel = { actions?: Array | null; readMoreLink?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts index 12929e62f8..5028107875 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts @@ -6,5 +6,6 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; export type HealthCheckWithResultPresentationModel = (HealthCheckModelBaseModel & { -results?: Array | null; + results?: Array | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts index 43a41c82c6..a3cb83ead7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts @@ -8,3 +8,4 @@ export type HelpPageResponseModel = { url?: string | null; type?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts deleted file mode 100644 index ae77e85dbc..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ImportDictionaryItemsPresentationModel = { - key?: string; - name?: string | null; - parentKey?: string | null; -}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts index f08dd2599a..4e29abf47a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type ImportDictionaryRequestModel = { - fileName?: string; - parentKey?: string | null; + temporaryFileId?: string; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts index befb90a467..68c87f9aa0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts @@ -13,3 +13,4 @@ export type IndexResponseModel = { fieldCount: number; providerProperties?: Record | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts index 2b432cb901..100bb5b12f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts @@ -9,3 +9,4 @@ export type InstallSettingsResponseModel = { user?: UserSettingsModel; databases?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts index 0754a817a4..ada168bb74 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts @@ -11,3 +11,4 @@ export type InstallVResponseModel = { database: DatabaseInstallResponseModel; telemetryLevel?: TelemetryLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts new file mode 100644 index 0000000000..e0e7e9ad62 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateUserRequestModel } from './CreateUserRequestModel'; + +export type InviteUserRequestModel = (CreateUserRequestModel & { + message?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts index b7dd8054d4..eaff3e8d4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts @@ -8,3 +8,4 @@ export type LanguageModelBaseModel = { isMandatory?: boolean; fallbackIsoCode?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts index 77993ea4ae..5d17bf3842 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts @@ -5,5 +5,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type LanguageResponseModel = (LanguageModelBaseModel & { -isoCode?: string; + isoCode?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index 8a423396d7..a1064cc7a4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -9,3 +9,4 @@ export type LogLevelCountsReponseModel = { error?: number; fatal?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts index 51a22a6a2b..dd9be7aa49 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts @@ -6,3 +6,4 @@ export type LogMessagePropertyPresentationModel = { name?: string; value?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts index 38e9321909..ad67dd8483 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts @@ -13,3 +13,4 @@ export type LogMessageResponseModel = { properties?: Array; exception?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts index 2731cd2df8..1aeece3a0a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts @@ -6,3 +6,4 @@ export type LogTemplateResponseModel = { messageTemplate?: string | null; count?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts index 6615168857..552470c462 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts @@ -8,3 +8,4 @@ export type LoggerResponseModel = { name?: string; level?: LogLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts index dea0899aee..f8a0b7ba60 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; export type MediaTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts index 30de030f1a..a4d992c86a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; export type MediaTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts index ba0ca6251c..71d255850e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; export type MediaTypeResponseModel = ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts index 3df317dfed..a8ba985e23 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts @@ -5,5 +5,6 @@ import type { ValueModelBaseModel } from './ValueModelBaseModel'; export type MediaValueModel = (ValueModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts index 49b8b7b4e6..66baded663 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts @@ -5,5 +5,6 @@ import type { VariantModelBaseModel } from './VariantModelBaseModel'; export type MediaVariantRequestModel = (VariantModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts index b76e970304..739ae9bd33 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts @@ -5,5 +5,6 @@ import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; export type MediaVariantResponseModel = (VariantResponseModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts index cb7477ebdf..5f9962c2fa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts @@ -13,3 +13,4 @@ export type ModelsBuilderResponseModel = { modelsNamespace?: string | null; trackingOutOfDateModels?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts index 2470cac98c..3e318c9479 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type MoveDataTypeRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts index 742605cfcc..0973241bc6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type MoveDictionaryRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts index 4b5b44cb19..d160dfceb5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts @@ -6,3 +6,4 @@ export type ObjectTypeResponseModel = { name?: string | null; id?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts index 0b041f81ee..886e643b17 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts @@ -5,3 +5,4 @@ export type OkResultModel = { statusCode?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts index 3525c5b9a3..6d527b9a78 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts @@ -7,3 +7,4 @@ import type { OutOfDateTypeModel } from './OutOfDateTypeModel'; export type OutOfDateStatusResponseModel = { status?: OutOfDateTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts index 1e40334b1d..d86f8ba651 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts @@ -5,6 +5,7 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type PackageDefinitionResponseModel = (PackageModelBaseModel & { -key?: string; -packagePath?: string; + id?: string; + packagePath?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts index 1ac843ab9b..269793340b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts @@ -7,3 +7,4 @@ export type PackageManifestResponseModel = { version?: string | null; extensions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts index f2aa442a61..d003e467e2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts @@ -6,3 +6,4 @@ export type PackageMigrationStatusResponseModel = { 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 index 4ccfb1eacf..fa68538ec2 100644 --- 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 @@ -6,7 +6,7 @@ export type PackageModelBaseModel = { name?: string; contentNodeId?: string | null; contentLoadChildNodes?: boolean; - mediaKeys?: Array; + mediaIds?: Array; mediaLoadChildNodes?: boolean; documentTypes?: Array; mediaTypes?: Array; @@ -18,3 +18,4 @@ export type PackageModelBaseModel = { languages?: Array; dictionaryItems?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts index 4d8cbdd238..28e4883e9d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts @@ -8,3 +8,4 @@ export type PagedAuditLogResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts index 32531185f4..2faa8a352c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts @@ -8,3 +8,4 @@ export type PagedAuditLogWithUsernameResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts index baa7dc3c36..9b01050dc0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts @@ -9,3 +9,4 @@ export type PagedContentTreeItemResponseModel = { total: number; items: Array<(ContentTreeItemResponseModel | DocumentTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts index 266daa8cd2..b75368444a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts @@ -8,3 +8,4 @@ export type PagedCultureReponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts index 990d186c40..416064523d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDictionaryOverviewResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts index 8dc4a5165e..f5fb88fbf5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentBlueprintTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts index d8dd2f0fc6..3364678fac 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts index ba0f93c358..cfa8e9eb1d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentTypeTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts index 9df2b4b601..ac8b646854 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts @@ -13,3 +13,4 @@ export type PagedEntityTreeItemResponseModel = { total: number; items: Array<(EntityTreeItemResponseModel | ContentTreeItemResponseModel | DocumentBlueprintTreeItemResponseModel | DocumentTreeItemResponseModel | DocumentTypeTreeItemResponseModel | FolderTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts index be96ca744e..3297c3ab40 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts @@ -8,3 +8,4 @@ export type PagedFileSystemTreeItemPresentationModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts index 3543ba5636..deafb5c398 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts @@ -9,3 +9,4 @@ export type PagedFolderTreeItemResponseModel = { total: number; items: Array<(FolderTreeItemResponseModel | DocumentTypeTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts index 8bcb42c1d8..bcd0a47ba7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts @@ -8,3 +8,4 @@ export type PagedHealthCheckGroupResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts index fb379bf641..963dcbbc72 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedHelpPageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts index a84e061c7c..7798b6b5a2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts @@ -8,3 +8,4 @@ export type PagedIndexResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts index d749a241cb..0fba24b689 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLanguageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts index 88457e9701..0a9e2324f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLogMessageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts index 801c440db4..0118ef7d9b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLogTemplateResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts index 273205e323..18d7c7d708 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLoggerResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts index e72657d180..c8eaf672f7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts @@ -8,3 +8,4 @@ export type PagedObjectTypeResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts index 8582af874a..af37046ae9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts @@ -8,3 +8,4 @@ export type PagedPackageDefinitionResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts index 114244e919..759633f03b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts @@ -8,3 +8,4 @@ export type PagedPackageMigrationStatusResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts index 4077e2d0d5..de0221c66d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRecycleBinItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts index 3026d71af4..efa56add27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRedirectUrlResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts index 4ad8badc22..2340e59dbc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRelationItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts index 5a4d95e4c1..a93d16ea07 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRelationResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts index 6f5b02d4f3..994d6a2f99 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSavedLogSearchResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts index 2a95a2d85b..faaad892f6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSearchResultResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts index b8c9c60dab..f59af076ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSearcherResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts index 6a8ddbabfd..dfff74e1ff 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts @@ -8,3 +8,4 @@ export type PagedTelemetryResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts index 8a01377edf..7000915e7e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts @@ -8,3 +8,4 @@ export type PagedUserGroupPresentationModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts new file mode 100644 index 0000000000..0b658bd8df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserResponseModel } from './UserResponseModel'; + +export type PagedUserResponseModel = { + total: number; + items: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts index cc933cc8d4..c1998e149e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts @@ -5,3 +5,4 @@ export type ProfilingStatusRequestModel = { enabled?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts index 98b69d1149..b78df9baf7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts @@ -5,3 +5,4 @@ export type ProfilingStatusResponseModel = { enabled?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts index cdbf7325af..e8138d4992 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts @@ -5,3 +5,4 @@ export type PropertyTypeAppearanceModel = { labelOnTop?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts index 44c151e3a4..e57942bc53 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts @@ -3,9 +3,10 @@ /* eslint-disable */ export type PropertyTypeContainerResponseModelBaseModel = { - key?: string; - parentKey?: string | null; + id?: string; + parentId?: string | null; name?: string | null; type?: string; sortOrder?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts index 57f4f6c6dd..ad3a59bbbf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts @@ -6,14 +6,15 @@ import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel' import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; export type PropertyTypeResponseModelBaseModel = { - key?: string; - containerKey?: string | null; + id?: string; + containerId?: string | null; alias?: string; name?: string; description?: string | null; - dataTypeKey?: string; + dataTypeId?: string; variesByCulture?: boolean; variesBySegment?: boolean; validation?: PropertyTypeValidationModel; appearance?: PropertyTypeAppearanceModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts index efdc5b51ec..6966054e27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts @@ -8,3 +8,4 @@ export type PropertyTypeValidationModel = { regEx?: string | null; regExMessage?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts index 203b715fb4..baa8488713 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts @@ -4,11 +4,12 @@ export type RecycleBinItemResponseModel = { $type: string; - key?: string; + id?: string; name?: string; type?: string; icon?: string; hasChildren?: boolean; isContainer?: boolean; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts index d2c743ba79..7e50854125 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts @@ -3,10 +3,11 @@ /* eslint-disable */ export type RedirectUrlResponseModel = { - key?: string; + id?: string; originalUrl?: string; destinationUrl?: string; created?: string; - contentKey?: string; + contentId?: string; culture?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts index 6ef9f24316..3c24019ae5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts @@ -8,3 +8,4 @@ export type RedirectUrlStatusResponseModel = { status?: RedirectStatusModel; userIsAdmin?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts index 2b261d21d2..544ea5831d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts @@ -3,7 +3,7 @@ /* eslint-disable */ export type RelationItemResponseModel = { - nodeKey?: string; + nodeId?: string; nodeName?: string | null; nodeType?: string | null; nodePublished?: boolean | null; @@ -14,3 +14,4 @@ export type RelationItemResponseModel = { relationTypeIsBidirectional?: boolean; relationTypeIsDependency?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts index 4fe5555e69..7e6546465f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts @@ -10,3 +10,4 @@ export type RelationResponseModel = { createDate?: string; comment?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts index e7de6f1945..0213197525 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts @@ -9,3 +9,4 @@ export type RelationTypeBaseModel = { childObjectType?: string | null; isDependency?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts index dab718bbf1..cc2461d0ce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts @@ -5,10 +5,11 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type RelationTypeResponseModel = (RelationTypeBaseModel & { -key?: string; -alias?: string | null; -path?: string; -isSystemRelationType?: boolean; -parentObjectTypeName?: string | null; -childObjectTypeName?: string | null; + id?: string; + alias?: string | null; + path?: string; + isSystemRelationType?: boolean; + parentObjectTypeName?: string | null; + childObjectTypeName?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts index 14466b644d..33d58dc4aa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts @@ -5,3 +5,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type SaveUserGroupRequestModel = UserGroupBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts index 2cc7b02658..c187d78876 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts @@ -6,3 +6,4 @@ export type SavedLogSearchPresenationBaseModel = { name?: string; query?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts index e2e7aecf61..3ef1732e4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts @@ -5,3 +5,4 @@ import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; export type SavedLogSearchRequestModel = SavedLogSearchPresenationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts index 1a89ce91c6..54f039e1b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts @@ -5,3 +5,4 @@ import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; export type SavedLogSearchResponseModel = SavedLogSearchPresenationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts index 9706011ad7..3d84badc22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts @@ -10,3 +10,4 @@ export type SearchResultResponseModel = { readonly fieldCount?: number; fields?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts index 898a4172a8..bf0ec4ed22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts @@ -5,3 +5,4 @@ export type SearcherResponseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts index 5ba10b5849..a93b8e36ac 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts @@ -7,3 +7,4 @@ import type { RuntimeLevelModel } from './RuntimeLevelModel'; export type ServerStatusResponseModel = { serverStatus?: RuntimeLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts new file mode 100644 index 0000000000..ccf61568d0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type SetAvatarRequestModel = { + fileId?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts index 1734020f3e..e1040f19bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts @@ -7,3 +7,4 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; export type TelemetryRepresentationBaseModel = { telemetryLevel?: TelemetryLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts index 08f54adf7c..ed7ed14981 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts @@ -5,3 +5,4 @@ import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; export type TelemetryRequestModel = TelemetryRepresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts index 3ddf37ec02..2ab7ab6087 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts @@ -5,3 +5,4 @@ import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; export type TelemetryResponseModel = TelemetryRepresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts index 11e0260809..7471d8b826 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts @@ -7,3 +7,4 @@ export type TemplateModelBaseModel = { alias?: string; content?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts index 83a2625447..336c8dcc51 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts @@ -9,3 +9,4 @@ export type TemplateQueryExecuteFilterPresentationModel = { constraintValue?: string; operator?: OperatorModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts index 29ad0c52ae..a1711fce8f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts @@ -6,9 +6,10 @@ import type { TemplateQueryExecuteFilterPresentationModel } from './TemplateQuer import type { TemplateQueryExecuteSortModel } from './TemplateQueryExecuteSortModel'; export type TemplateQueryExecuteModel = { - rootContentKey?: string | null; + rootContentId?: string | null; contentTypeAlias?: string | null; filters?: Array | null; sort?: TemplateQueryExecuteSortModel | null; take?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts index a733632dcc..d3a1b6cf56 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts @@ -6,3 +6,4 @@ export type TemplateQueryExecuteSortModel = { propertyAlias?: string; direction?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts index df264e1646..5b24f440a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts @@ -9,3 +9,4 @@ export type TemplateQueryOperatorModel = { operator?: OperatorModel; applicableTypes?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts index dfd201f49e..63f89b6fbd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts @@ -8,3 +8,4 @@ export type TemplateQueryPropertyPresentationModel = { alias?: string; type?: TemplateQueryPropertyTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts index a2082853e0..101a71f87f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts @@ -6,3 +6,4 @@ export type TemplateQueryResultItemPresentationModel = { icon?: string; name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts index c32ff1d249..128ba29cd6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts @@ -10,3 +10,4 @@ export type TemplateQueryResultResponseModel = { resultCount?: number; executionTime?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts index b49bbae056..724e4113eb 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts @@ -10,3 +10,4 @@ export type TemplateQuerySettingsResponseModel = { properties?: Array; operators?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts index 1044f35131..4163616f8f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts @@ -5,6 +5,7 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type TemplateResponseModel = (TemplateModelBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts index d616c8c655..78ea2b296d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts @@ -5,3 +5,4 @@ export type TemplateScaffoldResponseModel = { content?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts new file mode 100644 index 0000000000..117d1376ea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type TemporaryFileResponseModel = { + id?: string; + availableUntil?: string | null; + fileName?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts index e62a6043a5..385278eba9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts @@ -8,3 +8,4 @@ export type TreeItemPresentationModel = { icon?: string; hasChildren?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts new file mode 100644 index 0000000000..78c63357bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UnlockUsersRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts index c2d856a916..be30b01b27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -9,3 +9,4 @@ export type UpdateContentRequestModelBaseDocumentValueModelDocumentVariantReques values?: Array; variants?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts index 5c95019eb1..303415adef 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -9,3 +9,4 @@ export type UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel values?: Array; variants?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts index fce11fbc4e..b221f60b1f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts @@ -5,3 +5,4 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type UpdateDataTypeRequestModel = DataTypeModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts index 2c4af9822a..e145ccd319 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts @@ -5,3 +5,4 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type UpdateDictionaryItemRequestModel = DictionaryItemModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts new file mode 100644 index 0000000000..37066167b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UpdateDocumentNotificationsRequestModel = { + subscribedActionIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts index 2b10730abb..6382ef989d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts @@ -5,5 +5,6 @@ import type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type UpdateDocumentRequestModel = (UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { -templateKey?: string | null; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts index 06caa5c458..a2cb1b6fe4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts @@ -5,3 +5,4 @@ import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; export type UpdateDomainsRequestModel = DomainsPresentationModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts index 1644854933..cc79576144 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts @@ -5,3 +5,4 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type UpdateFolderReponseModel = FolderModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts index 45f9f1a76c..dd2e81b5f5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts @@ -5,3 +5,4 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type UpdateLanguageRequestModel = LanguageModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts index 8363477f55..3214fd055c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts @@ -5,3 +5,4 @@ import type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type UpdateMediaRequestModel = UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts index ab91b916f3..95e1518519 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts @@ -5,5 +5,6 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type UpdatePackageRequestModel = (PackageModelBaseModel & { -packagePath?: string; + packagePath?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts index df64f4fb41..d4ec475f57 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts @@ -5,3 +5,4 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type UpdateRelationTypeRequestModel = RelationTypeBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts index a95046e2f9..6011f0a108 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts @@ -5,3 +5,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type UpdateTemplateRequestModel = TemplateModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts index 7e357408c1..f1810a85c5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts @@ -5,3 +5,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type UpdateUserGroupRequestModel = UserGroupBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts new file mode 100644 index 0000000000..0e552a780b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UpdateUserGroupsOnUserRequestModel = { + userIds?: Array; + userGroupIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts new file mode 100644 index 0000000000..928742c00d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; + +export type UpdateUserRequestModel = (UserPresentationBaseModel & { + languageIsoCode?: string; + contentStartNodeIds?: Array; + mediaStartNodeIds?: Array; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts index 8331fa652a..c59279f453 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts @@ -9,3 +9,4 @@ export type UpgradeSettingsResponseModel = { oldVersion?: string; readonly reportUrl?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts deleted file mode 100644 index 3394ac66c7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ImportDictionaryItemsPresentationModel } from './ImportDictionaryItemsPresentationModel'; - -export type UploadDictionaryResponseModel = { - dictionaryItems?: Array; - fileName?: string | null; -}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts index 5da0876910..eaf8e83aa0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts @@ -8,7 +8,8 @@ export type UserGroupBaseModel = { sections?: Array; languages?: Array; hasAccessToAllLanguages?: boolean; - documentStartNodeKey?: string | null; - mediaStartNodeKey?: string | null; + documentStartNodeId?: string | null; + mediaStartNodeId?: string | null; permissions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts index e812fc9384..ee3a34c477 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts @@ -5,6 +5,7 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type UserGroupPresentationModel = (UserGroupBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts index c107963227..a1807e8bcd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts @@ -8,3 +8,4 @@ export type UserInstallResponseModel = { password: string; readonly subscribeToNewsletter?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts new file mode 100644 index 0000000000..3c668a8c97 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum UserOrderModel { + USER_NAME = 'UserName', + LANGUAGE = 'Language', + NAME = 'Name', + EMAIL = 'Email', + ID = 'Id', + CREATE_DATE = 'CreateDate', + UPDATE_DATE = 'UpdateDate', + IS_APPROVED = 'IsApproved', + IS_LOCKED_OUT = 'IsLockedOut', + LAST_LOGIN_DATE = 'LastLoginDate', +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts new file mode 100644 index 0000000000..687e34bde7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UserPresentationBaseModel = { + email?: string; + userName?: string; + name?: string; + userGroupIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts new file mode 100644 index 0000000000..69fabaf972 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts @@ -0,0 +1,23 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; +import type { UserStateModel } from './UserStateModel'; + +export type UserResponseModel = (UserPresentationBaseModel & { + $type: string; + id?: string; + languageIsoCode?: string | null; + contentStartNodeIds?: Array; + mediaStartNodeIds?: Array; + avatarUrls?: Array; + state?: UserStateModel; + failedLoginAttempts?: number; + createDate?: string; + updateDate?: string; + lastLoginDate?: string | null; + lastlockoutDate?: string | null; + lastPasswordChangeDate?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts index e5837a651d..0179397099 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts @@ -9,3 +9,4 @@ export type UserSettingsModel = { minNonAlphaNumericLength?: number; consentLevels?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts new file mode 100644 index 0000000000..7e1858868f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum UserStateModel { + ACTIVE = 'Active', + DISABLED = 'Disabled', + LOCKED_OUT = 'LockedOut', + INVITED = 'Invited', + INACTIVE = 'Inactive', + ALL = 'All', +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts index ef9d722992..8167e5e124 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts @@ -9,3 +9,4 @@ export type ValueModelBaseModel = { alias?: string; value?: any; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts index b2227d9a71..599a5fd749 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts @@ -8,3 +8,4 @@ export type VariantModelBaseModel = { segment?: string | null; name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts index a0b2fa88a5..8add15bf08 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts @@ -10,3 +10,4 @@ export type VariantResponseModelBaseModel = { createDate?: string; updateDate?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts index b454174231..e545e2d0d9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts @@ -5,3 +5,4 @@ export type VersionResponseModel = { version?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts index f1c3b47e92..96065a5663 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts @@ -17,16 +17,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLog({ -orderDirection, -sinceDate, -skip, -take = 100, -}: { -orderDirection?: DirectionModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + orderDirection, + sinceDate, + skip, + take = 100, + }: { + orderDirection?: DirectionModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log', @@ -43,24 +43,24 @@ take?: number, * @returns PagedAuditLogResponseModel Success * @throws ApiError */ - public static getAuditLogByKey({ -key, -orderDirection, -sinceDate, -skip, -take = 100, -}: { -key: string, -orderDirection?: DirectionModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getAuditLogById({ + id, + orderDirection, + sinceDate, + skip, + take = 100, + }: { + id: string, + orderDirection?: DirectionModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/audit-log/{key}', + url: '/umbraco/management/api/v1/audit-log/{id}', path: { - 'key': key, + 'id': id, }, query: { 'orderDirection': orderDirection, @@ -76,16 +76,16 @@ take?: number, * @throws ApiError */ public static getAuditLogTypeByLogType({ -logType, -sinceDate, -skip, -take = 100, -}: { -logType: AuditTypeModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + logType, + sinceDate, + skip, + take = 100, + }: { + logType: AuditTypeModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/type/{logType}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts index 16fe49b915..4e357c7e3f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts @@ -14,12 +14,12 @@ export class CultureResource { * @throws ApiError */ public static getCulture({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/culture', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts index dddb4cd14f..fec4ff09e8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts @@ -25,10 +25,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataType({ -requestBody, -}: { -requestBody?: CreateDataTypeRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type', @@ -46,16 +46,16 @@ requestBody?: CreateDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDataTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -67,16 +67,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDataTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDataTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -89,18 +89,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDataTypeByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDataTypeRequestModel, -}): CancelablePromise { + public static putDataTypeById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -115,18 +115,18 @@ requestBody?: UpdateDataTypeRequestModel, * @returns string Created * @throws ApiError */ - public static postDataTypeByKeyCopy({ -key, -requestBody, -}: { -key: string, -requestBody?: CopyDataTypeRequestModel, -}): CancelablePromise { + public static postDataTypeByIdCopy({ + id, + requestBody, + }: { + id: string, + requestBody?: CopyDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/data-type/{key}/copy', + url: '/umbraco/management/api/v1/data-type/{id}/copy', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -141,18 +141,18 @@ requestBody?: CopyDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static postDataTypeByKeyMove({ -key, -requestBody, -}: { -key: string, -requestBody?: MoveDataTypeRequestModel, -}): CancelablePromise { + public static postDataTypeByIdMove({ + id, + requestBody, + }: { + id: string, + requestBody?: MoveDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/data-type/{key}/move', + url: '/umbraco/management/api/v1/data-type/{id}/move', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -166,16 +166,16 @@ requestBody?: MoveDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeByKeyReferences({ -key, -}: { -key: string, -}): CancelablePromise> { + public static getDataTypeByIdReferences({ + id, + }: { + id: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/{key}/references', + url: '/umbraco/management/api/v1/data-type/{id}/references', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -188,10 +188,10 @@ key: string, * @throws ApiError */ public static postDataTypeFolder({ -requestBody, -}: { -requestBody?: CreateFolderRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateFolderRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/folder', @@ -205,16 +205,16 @@ requestBody?: CreateFolderRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeFolderByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDataTypeFolderById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -226,16 +226,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDataTypeFolderByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDataTypeFolderById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -247,18 +247,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDataTypeFolderByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateFolderReponseModel, -}): CancelablePromise { + public static putDataTypeFolderById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateFolderReponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -273,21 +273,21 @@ requestBody?: UpdateFolderReponseModel, * @throws ApiError */ public static getTreeDataTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -300,15 +300,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeDataTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -318,14 +318,14 @@ key?: Array, * @throws ApiError */ public static getTreeDataTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts index b2a18ac44d..74af557479 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts @@ -10,7 +10,6 @@ import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequest import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; -import type { UploadDictionaryResponseModel } from '../models/UploadDictionaryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -23,12 +22,12 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionary({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary', @@ -44,10 +43,10 @@ take?: number, * @throws ApiError */ public static postDictionary({ -requestBody, -}: { -requestBody?: CreateDictionaryItemRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDictionaryItemRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary', @@ -66,16 +65,16 @@ requestBody?: CreateDictionaryItemRequestModel, * @returns any Success * @throws ApiError */ - public static getDictionaryByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDictionaryById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -87,16 +86,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDictionaryByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDictionaryById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -109,18 +108,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDictionaryByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDictionaryItemRequestModel, -}): CancelablePromise { + public static putDictionaryById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDictionaryItemRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -135,18 +134,18 @@ requestBody?: UpdateDictionaryItemRequestModel, * @returns binary Success * @throws ApiError */ - public static getDictionaryByKeyExport({ -key, -includeChildren = false, -}: { -key: string, -includeChildren?: boolean, -}): CancelablePromise { + public static getDictionaryByIdExport({ + id, + includeChildren = false, + }: { + id: string, + includeChildren?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{key}/export', + url: '/umbraco/management/api/v1/dictionary/{id}/export', path: { - 'key': key, + 'id': id, }, query: { 'includeChildren': includeChildren, @@ -161,18 +160,18 @@ includeChildren?: boolean, * @returns any Success * @throws ApiError */ - public static postDictionaryByKeyMove({ -key, -requestBody, -}: { -key: string, -requestBody?: MoveDictionaryRequestModel, -}): CancelablePromise { + public static postDictionaryByIdMove({ + id, + requestBody, + }: { + id: string, + requestBody?: MoveDictionaryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/dictionary/{key}/move', + url: '/umbraco/management/api/v1/dictionary/{id}/move', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -188,10 +187,10 @@ requestBody?: MoveDictionaryRequestModel, * @throws ApiError */ public static postDictionaryImport({ -requestBody, -}: { -requestBody?: ImportDictionaryRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: ImportDictionaryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/import', @@ -205,43 +204,24 @@ requestBody?: ImportDictionaryRequestModel, }); } - /** - * @returns any Success - * @throws ApiError - */ - public static postDictionaryUpload({ -requestBody, -}: { -requestBody?: any, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/dictionary/upload', - body: requestBody, - errors: { - 400: `Bad Request`, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -253,15 +233,15 @@ take?: number, * @throws ApiError */ public static getTreeDictionaryItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/item', query: { - 'key': key, + 'id': id, }, }); } @@ -271,12 +251,12 @@ key?: Array, * @throws ApiError */ public static getTreeDictionaryRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts index 5a31940e98..61330ba056 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts @@ -15,15 +15,15 @@ export class DocumentBlueprintResource { * @throws ApiError */ public static getTreeDocumentBlueprintItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/item', query: { - 'key': key, + 'id': id, }, }); } @@ -33,12 +33,12 @@ key?: Array, * @throws ApiError */ public static getTreeDocumentBlueprintRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts index 8d30863d05..0ab286ae37 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts @@ -2,10 +2,12 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentNotificationResponseModel } from '../models/DocumentNotificationResponseModel'; import type { DocumentResponseModel } from '../models/DocumentResponseModel'; import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateDocumentNotificationsRequestModel } from '../models/UpdateDocumentNotificationsRequestModel'; import type { UpdateDocumentRequestModel } from '../models/UpdateDocumentRequestModel'; import type { UpdateDomainsRequestModel } from '../models/UpdateDomainsRequestModel'; @@ -20,10 +22,10 @@ export class DocumentResource { * @throws ApiError */ public static postDocument({ -requestBody, -}: { -requestBody?: CreateDocumentRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDocumentRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/document', @@ -41,16 +43,16 @@ requestBody?: CreateDocumentRequestModel, * @returns any Success * @throws ApiError */ - public static getDocumentByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -62,16 +64,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDocumentByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDocumentById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -84,18 +86,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDocumentByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDocumentRequestModel, -}): CancelablePromise { + public static putDocumentById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDocumentRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -110,16 +112,16 @@ requestBody?: UpdateDocumentRequestModel, * @returns any Success * @throws ApiError */ - public static getDocumentByKeyDomains({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentByIdDomains({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document/{key}/domains', + url: '/umbraco/management/api/v1/document/{id}/domains', path: { - 'key': key, + 'id': id, }, }); } @@ -128,42 +130,88 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDocumentByKeyDomains({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDomainsRequestModel, -}): CancelablePromise { + public static putDocumentByIdDomains({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDomainsRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/document/{key}/domains', + url: '/umbraco/management/api/v1/document/{id}/domains', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentByIdNotifications({ + id, + }: { + id: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + 'id': id, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByIdNotifications({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDocumentNotificationsRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 404: `Not Found`, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -178,12 +226,12 @@ take?: number, * @throws ApiError */ public static getRecycleBinDocumentRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/root', @@ -202,26 +250,26 @@ take?: number, * @throws ApiError */ public static getTreeDocumentChildren({ -parentKey, -skip, -take = 100, -dataTypeKey, -culture, -}: { -parentKey?: string, -skip?: number, -take?: number, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise { + parentId, + skip, + take = 100, + dataTypeId, + culture, + }: { + parentId?: string, + skip?: number, + take?: number, + dataTypeId?: string, + culture?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); @@ -232,20 +280,20 @@ culture?: string, * @throws ApiError */ public static getTreeDocumentItem({ -key, -dataTypeKey, -culture, -}: { -key?: Array, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise> { + id, + dataTypeId, + culture, + }: { + id?: Array, + dataTypeId?: string, + culture?: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/item', query: { - 'key': key, - 'dataTypeKey': dataTypeKey, + 'id': id, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); @@ -256,23 +304,23 @@ culture?: string, * @throws ApiError */ public static getTreeDocumentRoot({ -skip, -take = 100, -dataTypeKey, -culture, -}: { -skip?: number, -take?: number, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise { + skip, + take = 100, + dataTypeId, + culture, + }: { + skip?: number, + take?: number, + dataTypeId?: string, + culture?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/root', query: { 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts index 5d034deb83..5c908b4ccf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts @@ -15,16 +15,16 @@ export class DocumentTypeResource { * @returns any Success * @throws ApiError */ - public static getDocumentTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document-type/{key}', + url: '/umbraco/management/api/v1/document-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -37,21 +37,21 @@ key: string, * @throws ApiError */ public static getTreeDocumentTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -64,15 +64,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeDocumentTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -82,14 +82,14 @@ key?: Array, * @throws ApiError */ public static getTreeDocumentTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts index d7100791c1..6ec8cf2917 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts @@ -18,12 +18,12 @@ export class HealthCheckResource { * @throws ApiError */ public static getHealthCheckGroup({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getHealthCheckGroupByName({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group/{name}', @@ -60,10 +60,10 @@ name: string, * @throws ApiError */ public static postHealthCheckGroupByNameCheck({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check-group/{name}/check', @@ -81,10 +81,10 @@ name: string, * @throws ApiError */ public static postHealthCheckExecuteAction({ -requestBody, -}: { -requestBody?: HealthCheckActionRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: HealthCheckActionRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check/execute-action', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts index c9377a09fc..e3a76d04ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts @@ -14,18 +14,18 @@ export class HelpResource { * @throws ApiError */ public static getHelp({ -section, -tree, -skip, -take, -baseUrl = 'https://our.umbraco.com', -}: { -section?: string, -tree?: string, -skip?: number, -take?: number, -baseUrl?: string, -}): CancelablePromise { + section, + tree, + skip, + take, + baseUrl = 'https://our.umbraco.com', + }: { + section?: string, + tree?: string, + skip?: number, + take?: number, + baseUrl?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/help', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts index 0ba53cc918..3b8485e122 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts @@ -16,12 +16,12 @@ export class IndexerResource { * @throws ApiError */ public static getIndexer({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer', @@ -37,10 +37,10 @@ take?: number, * @throws ApiError */ public static getIndexerByIndexName({ -indexName, -}: { -indexName: string, -}): CancelablePromise { + indexName, + }: { + indexName: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer/{indexName}', @@ -58,10 +58,10 @@ indexName: string, * @throws ApiError */ public static postIndexerByIndexNameRebuild({ -indexName, -}: { -indexName: string, -}): CancelablePromise { + indexName, + }: { + indexName: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts index dcf826bbcf..927209fa7d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts @@ -31,10 +31,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallSetup({ -requestBody, -}: { -requestBody?: InstallVResponseModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: InstallVResponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/setup', @@ -52,10 +52,10 @@ requestBody?: InstallVResponseModel, * @throws ApiError */ public static postInstallValidateDatabase({ -requestBody, -}: { -requestBody?: DatabaseInstallResponseModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: DatabaseInstallResponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/validate-database', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts index 51967f3fce..56e3f9b7c7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts @@ -17,12 +17,12 @@ export class LanguageResource { * @throws ApiError */ public static getLanguage({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language', @@ -38,10 +38,10 @@ take?: number, * @throws ApiError */ public static postLanguage({ -requestBody, -}: { -requestBody?: CreateLanguageRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateLanguageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/language', @@ -60,10 +60,10 @@ requestBody?: CreateLanguageRequestModel, * @throws ApiError */ public static getLanguageByIsoCode({ -isoCode, -}: { -isoCode: string, -}): CancelablePromise { + isoCode, + }: { + isoCode: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -81,10 +81,10 @@ isoCode: string, * @throws ApiError */ public static deleteLanguageByIsoCode({ -isoCode, -}: { -isoCode: string, -}): CancelablePromise { + isoCode, + }: { + isoCode: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -103,12 +103,12 @@ isoCode: string, * @throws ApiError */ public static putLanguageByIsoCode({ -isoCode, -requestBody, -}: { -isoCode: string, -requestBody?: UpdateLanguageRequestModel, -}): CancelablePromise { + isoCode, + requestBody, + }: { + isoCode: string, + requestBody?: UpdateLanguageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/language/{isoCode}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index ef9b3cbf79..dc8cf7baa1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -22,12 +22,12 @@ export class LogViewerResource { * @throws ApiError */ public static getLogViewerLevel({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level', @@ -43,12 +43,12 @@ take?: number, * @throws ApiError */ public static getLogViewerLevelCount({ -startDate, -endDate, -}: { -startDate?: string, -endDate?: string, -}): CancelablePromise { + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level-count', @@ -67,22 +67,22 @@ endDate?: string, * @throws ApiError */ public static getLogViewerLog({ -skip, -take = 100, -orderDirection, -filterExpression, -logLevel, -startDate, -endDate, -}: { -skip?: number, -take?: number, -orderDirection?: DirectionModel, -filterExpression?: string, -logLevel?: Array, -startDate?: string, -endDate?: string, -}): CancelablePromise { + skip, + take = 100, + orderDirection, + filterExpression, + logLevel, + startDate, + endDate, + }: { + skip?: number, + take?: number, + orderDirection?: DirectionModel, + filterExpression?: string, + logLevel?: Array, + startDate?: string, + endDate?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/log', @@ -103,16 +103,16 @@ endDate?: string, * @throws ApiError */ public static getLogViewerMessageTemplate({ -skip, -take = 100, -startDate, -endDate, -}: { -skip?: number, -take?: number, -startDate?: string, -endDate?: string, -}): CancelablePromise { + skip, + take = 100, + startDate, + endDate, + }: { + skip?: number, + take?: number, + startDate?: string, + endDate?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/message-template', @@ -133,12 +133,12 @@ endDate?: string, * @throws ApiError */ public static getLogViewerSavedSearch({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -154,10 +154,10 @@ take?: number, * @throws ApiError */ public static postLogViewerSavedSearch({ -requestBody, -}: { -requestBody?: SavedLogSearchRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: SavedLogSearchRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/log-viewer/saved-search', @@ -175,10 +175,10 @@ requestBody?: SavedLogSearchRequestModel, * @throws ApiError */ public static getLogViewerSavedSearchByName({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -196,10 +196,10 @@ name: string, * @throws ApiError */ public static deleteLogViewerSavedSearchByName({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', @@ -217,12 +217,12 @@ name: string, * @throws ApiError */ public static getLogViewerValidateLogsSize({ -startDate, -endDate, -}: { -startDate?: string, -endDate?: string, -}): CancelablePromise { + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts index bd2f3e59d6..27690e5cf2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts @@ -20,10 +20,10 @@ export class MediaResource { * @throws ApiError */ public static postMedia({ -requestBody, -}: { -requestBody?: CreateMediaRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateMediaRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/media', @@ -41,16 +41,16 @@ requestBody?: CreateMediaRequestModel, * @returns any Success * @throws ApiError */ - public static getMediaByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getMediaById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -62,16 +62,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteMediaByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteMediaById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -84,18 +84,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putMediaByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateMediaRequestModel, -}): CancelablePromise { + public static putMediaById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateMediaRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -111,19 +111,19 @@ requestBody?: UpdateMediaRequestModel, * @throws ApiError */ public static getRecycleBinMediaChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -138,12 +138,12 @@ take?: number, * @throws ApiError */ public static getRecycleBinMediaRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/root', @@ -162,24 +162,24 @@ take?: number, * @throws ApiError */ public static getTreeMediaChildren({ -parentKey, -skip, -take = 100, -dataTypeKey, -}: { -parentKey?: string, -skip?: number, -take?: number, -dataTypeKey?: string, -}): CancelablePromise { + parentId, + skip, + take = 100, + dataTypeId, + }: { + parentId?: string, + skip?: number, + take?: number, + dataTypeId?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, }, }); } @@ -189,18 +189,18 @@ dataTypeKey?: string, * @throws ApiError */ public static getTreeMediaItem({ -key, -dataTypeKey, -}: { -key?: Array, -dataTypeKey?: string, -}): CancelablePromise> { + id, + dataTypeId, + }: { + id?: Array, + dataTypeId?: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/item', query: { - 'key': key, - 'dataTypeKey': dataTypeKey, + 'id': id, + 'dataTypeId': dataTypeId, }, }); } @@ -210,21 +210,21 @@ dataTypeKey?: string, * @throws ApiError */ public static getTreeMediaRoot({ -skip, -take = 100, -dataTypeKey, -}: { -skip?: number, -take?: number, -dataTypeKey?: string, -}): CancelablePromise { + skip, + take = 100, + dataTypeId, + }: { + skip?: number, + take?: number, + dataTypeId?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/root', query: { 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, }, }); } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts index e8cd962868..8d583f4fd4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts @@ -16,16 +16,16 @@ export class MediaTypeResource { * @returns any Success * @throws ApiError */ - public static getMediaTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getMediaTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/media-type/{key}', + url: '/umbraco/management/api/v1/media-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -38,21 +38,21 @@ key: string, * @throws ApiError */ public static getTreeMediaTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -65,15 +65,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeMediaTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -83,14 +83,14 @@ key?: Array, * @throws ApiError */ public static getTreeMediaTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts index d0845c8968..7144009cb1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts @@ -20,15 +20,15 @@ export class MemberGroupResource { * @throws ApiError */ public static getTreeMemberGroupItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/item', query: { - 'key': key, + 'id': id, }, }); } @@ -38,12 +38,12 @@ key?: Array, * @throws ApiError */ public static getTreeMemberGroupRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts index 3336953d5a..df77ec68fd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts @@ -20,15 +20,15 @@ export class MemberTypeResource { * @throws ApiError */ public static getTreeMemberTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -38,12 +38,12 @@ key?: Array, * @throws ApiError */ public static getTreeMemberTypeRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts index c87823f5aa..b25a8644ce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts @@ -14,12 +14,12 @@ export class ObjectTypesResource { * @throws ApiError */ public static getObjectTypes({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/object-types', 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 index d33c63d582..0d64af3fd7 100644 --- 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 @@ -19,10 +19,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageByNameRunMigration({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/{name}/run-migration', @@ -41,12 +41,12 @@ name: string, * @throws ApiError */ public static getPackageCreated({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created', @@ -62,10 +62,10 @@ take?: number, * @throws ApiError */ public static postPackageCreated({ -requestBody, -}: { -requestBody?: CreatePackageRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreatePackageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/created', @@ -83,16 +83,16 @@ requestBody?: CreatePackageRequestModel, * @returns any Success * @throws ApiError */ - public static getPackageCreatedByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getPackageCreatedById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -104,16 +104,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deletePackageCreatedByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deletePackageCreatedById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -125,18 +125,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putPackageCreatedByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdatePackageRequestModel, -}): CancelablePromise { + public static putPackageCreatedById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdatePackageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -150,16 +150,16 @@ requestBody?: UpdatePackageRequestModel, * @returns binary Success * @throws ApiError */ - public static getPackageCreatedByKeyDownload({ -key, -}: { -key: string, -}): CancelablePromise { + public static getPackageCreatedByIdDownload({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/package/created/{key}/download', + url: '/umbraco/management/api/v1/package/created/{id}/download', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -183,12 +183,12 @@ key: string, * @throws ApiError */ public static getPackageMigrationStatus({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/migration-status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts index f249b42346..4f44e0cf12 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts @@ -15,14 +15,14 @@ export class PartialViewResource { * @throws ApiError */ public static getTreePartialViewChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreePartialViewItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreePartialViewRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts index ddd5d31988..81422ff13b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts @@ -26,10 +26,10 @@ export class ProfilingResource { * @throws ApiError */ public static putProfilingStatus({ -requestBody, -}: { -requestBody?: ProfilingStatusRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: ProfilingStatusRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/profiling/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts index 2c82d24fcd..2d12b27858 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts @@ -16,14 +16,14 @@ export class RedirectManagementResource { * @throws ApiError */ public static getRedirectManagement({ -filter, -skip, -take, -}: { -filter?: string, -skip?: number, -take?: number, -}): CancelablePromise { + filter, + skip, + take, + }: { + filter?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management', @@ -42,20 +42,20 @@ take?: number, * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ - public static getRedirectManagementByKey({ -key, -skip, -take, -}: { -key: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getRedirectManagementById({ + id, + skip, + take, + }: { + id: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/redirect-management/{key}', + url: '/umbraco/management/api/v1/redirect-management/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, @@ -68,16 +68,16 @@ take?: number, * @returns any Success * @throws ApiError */ - public static deleteRedirectManagementByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteRedirectManagementById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/redirect-management/{key}', + url: '/umbraco/management/api/v1/redirect-management/{id}', path: { - 'key': key, + 'id': id, }, }); } @@ -98,10 +98,10 @@ key: string, * @throws ApiError */ public static postRedirectManagementStatus({ -status, -}: { -status?: RedirectStatusModel, -}): CancelablePromise { + status, + }: { + status?: RedirectStatusModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/redirect-management/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts index 69d6c06860..3c5ef6f3c7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts @@ -15,10 +15,10 @@ export class RelationResource { * @throws ApiError */ public static getRelationById({ -id, -}: { -id: number, -}): CancelablePromise { + id, + }: { + id: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/{id}', @@ -36,16 +36,16 @@ id: number, * @throws ApiError */ public static getRelationChildRelationByChildId({ -childId, -skip, -take, -relationTypeAlias = '', -}: { -childId: number, -skip?: number, -take?: number, -relationTypeAlias?: string, -}): CancelablePromise { + childId, + skip, + take, + relationTypeAlias = '', + }: { + childId: number, + skip?: number, + take?: number, + relationTypeAlias?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/child-relation/{childId}', @@ -64,20 +64,20 @@ relationTypeAlias?: string, * @returns PagedRelationResponseModel Success * @throws ApiError */ - public static getRelationTypeByKey({ -key, -skip, -take = 100, -}: { -key: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getRelationTypeById({ + id, + skip, + take = 100, + }: { + id: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/relation/type/{key}', + url: '/umbraco/management/api/v1/relation/type/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index 1c9c7bb266..ae5d2ffd04 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -19,10 +19,10 @@ export class RelationTypeResource { * @throws ApiError */ public static postRelationType({ -requestBody, -}: { -requestBody?: CreateRelationTypeRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateRelationTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/relation-type', @@ -39,16 +39,16 @@ requestBody?: CreateRelationTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getRelationTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getRelationTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -60,16 +60,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteRelationTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteRelationTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -81,18 +81,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putRelationTypeByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateRelationTypeRequestModel, -}): CancelablePromise { + public static putRelationTypeById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateRelationTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -108,15 +108,15 @@ requestBody?: UpdateRelationTypeRequestModel, * @throws ApiError */ public static getTreeRelationTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -126,12 +126,12 @@ key?: Array, * @throws ApiError */ public static getTreeRelationTypeRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts index db3cb6e256..573b19912c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts @@ -15,14 +15,14 @@ export class ScriptResource { * @throws ApiError */ public static getTreeScriptChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeScriptItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeScriptRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts index b284454529..68b20fe3ee 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts @@ -15,12 +15,12 @@ export class SearcherResource { * @throws ApiError */ public static getSearcher({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher', @@ -36,16 +36,16 @@ take?: number, * @throws ApiError */ public static getSearcherBySearcherNameQuery({ -searcherName, -term, -skip, -take, -}: { -searcherName: string, -term?: string, -skip?: number, -take?: number, -}): CancelablePromise { + searcherName, + term, + skip, + take, + }: { + searcherName: string, + term?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher/{searcherName}/query', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts index 240af80ee8..4379b0aafa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts @@ -15,14 +15,14 @@ export class StaticFileResource { * @throws ApiError */ public static getTreeStaticFileChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeStaticFileItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeStaticFileRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts index b504ba6aab..5d85a44b41 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts @@ -15,14 +15,14 @@ export class StylesheetResource { * @throws ApiError */ public static getTreeStylesheetChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeStylesheetItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeStylesheetRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts index 289f0f8e46..19975410d0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts @@ -16,12 +16,12 @@ export class TelemetryResource { * @throws ApiError */ public static getTelemetry({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry', @@ -48,10 +48,10 @@ take?: number, * @throws ApiError */ public static postTelemetryLevel({ -requestBody, -}: { -requestBody?: TelemetryRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: TelemetryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/telemetry/level', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts index d5133dc6a7..ab2c55cccd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts @@ -27,10 +27,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplate({ -requestBody, -}: { -requestBody?: CreateTemplateRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateTemplateRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template', @@ -48,16 +48,16 @@ requestBody?: CreateTemplateRequestModel, * @returns any Success * @throws ApiError */ - public static getTemplateByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getTemplateById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -69,16 +69,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteTemplateByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteTemplateById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -91,18 +91,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putTemplateByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateTemplateRequestModel, -}): CancelablePromise { + public static putTemplateById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateTemplateRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -118,10 +118,10 @@ requestBody?: UpdateTemplateRequestModel, * @throws ApiError */ public static postTemplateQueryExecute({ -requestBody, -}: { -requestBody?: TemplateQueryExecuteModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: TemplateQueryExecuteModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template/query/execute', @@ -160,19 +160,19 @@ requestBody?: TemplateQueryExecuteModel, * @throws ApiError */ public static getTreeTemplateChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -184,15 +184,15 @@ take?: number, * @throws ApiError */ public static getTreeTemplateItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/item', query: { - 'key': key, + 'id': id, }, }); } @@ -202,12 +202,12 @@ key?: Array, * @throws ApiError */ public static getTreeTemplateRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts new file mode 100644 index 0000000000..44dc7b5f19 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts @@ -0,0 +1,80 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { TemporaryFileResponseModel } from '../models/TemporaryFileResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class TemporaryFileResource { + + /** + * @returns string Created + * @throws ApiError + */ + public static postTemporaryfile({ + formData, + }: { + formData?: { + Id?: string; + File?: Blob; + }, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/temporaryfile', + formData: formData, + mediaType: 'multipart/form-data', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getTemporaryfileById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/temporaryfile/{id}', + path: { + 'id': id, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteTemporaryfileById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/temporaryfile/{id}', + path: { + 'id': id, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts index 3c1a145658..2ba114f3a2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts @@ -13,22 +13,22 @@ export class TrackedReferenceResource { * @returns PagedRelationItemResponseModel Success * @throws ApiError */ - public static getTrackedReferenceByKey({ -key, -skip, -take = 20, -filterMustBeIsDependency = false, -}: { -key: string, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + public static getTrackedReferenceById({ + id, + skip, + take = 20, + filterMustBeIsDependency = false, + }: { + id: string, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tracked-reference/{key}', + url: '/umbraco/management/api/v1/tracked-reference/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, @@ -42,22 +42,22 @@ filterMustBeIsDependency?: boolean, * @returns PagedRelationItemResponseModel Success * @throws ApiError */ - public static getTrackedReferenceDescendantsByParentKey({ -parentKey, -skip, -take, -filterMustBeIsDependency = true, -}: { -parentKey: string, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + public static getTrackedReferenceDescendantsByParentId({ + parentId, + skip, + take, + filterMustBeIsDependency = true, + }: { + parentId: string, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentKey}', + url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentId}', path: { - 'parentKey': parentKey, + 'parentId': parentId, }, query: { 'skip': skip, @@ -72,21 +72,21 @@ filterMustBeIsDependency?: boolean, * @throws ApiError */ public static getTrackedReferenceItem({ -key, -skip, -take = 20, -filterMustBeIsDependency = true, -}: { -key?: Array, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + id, + skip, + take = 20, + filterMustBeIsDependency = true, + }: { + id?: Array, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/item', query: { - 'key': key, + 'id': id, 'skip': skip, 'take': take, 'filterMustBeIsDependency': filterMustBeIsDependency, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts index 4c9f40614a..c161c4e304 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts @@ -17,10 +17,10 @@ export class UserGroupsResource { * @throws ApiError */ public static postUserGroups({ -requestBody, -}: { -requestBody?: SaveUserGroupRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: SaveUserGroupRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/user-groups', @@ -38,12 +38,12 @@ requestBody?: SaveUserGroupRequestModel, * @throws ApiError */ public static getUserGroups({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups', @@ -58,16 +58,16 @@ take?: number, * @returns any Success * @throws ApiError */ - public static getUserGroupsByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getUserGroupsById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -79,16 +79,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteUserGroupsByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteUserGroupsById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -100,18 +100,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putUserGroupsByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateUserGroupRequestModel, -}): CancelablePromise { + public static putUserGroupsById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateUserGroupRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts new file mode 100644 index 0000000000..e2b78bae8a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts @@ -0,0 +1,323 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ChangePasswordUserRequestModel } from '../models/ChangePasswordUserRequestModel'; +import type { CreateUserRequestModel } from '../models/CreateUserRequestModel'; +import type { CreateUserResponseModel } from '../models/CreateUserResponseModel'; +import type { DirectionModel } from '../models/DirectionModel'; +import type { DisableUserRequestModel } from '../models/DisableUserRequestModel'; +import type { EnableUserRequestModel } from '../models/EnableUserRequestModel'; +import type { InviteUserRequestModel } from '../models/InviteUserRequestModel'; +import type { PagedUserResponseModel } from '../models/PagedUserResponseModel'; +import type { SetAvatarRequestModel } from '../models/SetAvatarRequestModel'; +import type { UnlockUsersRequestModel } from '../models/UnlockUsersRequestModel'; +import type { UpdateUserGroupsOnUserRequestModel } from '../models/UpdateUserGroupsOnUserRequestModel'; +import type { UpdateUserRequestModel } from '../models/UpdateUserRequestModel'; +import type { UserOrderModel } from '../models/UserOrderModel'; +import type { UserResponseModel } from '../models/UserResponseModel'; +import type { UserStateModel } from '../models/UserStateModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class UsersResource { + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsers({ + requestBody, + }: { + requestBody?: (CreateUserRequestModel | InviteUserRequestModel), + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns PagedUserResponseModel Success + * @throws ApiError + */ + public static getUsers({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getUsersById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteUsersById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putUsersById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteUsersAvatarById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/users/avatar/{id}', + path: { + 'id': id, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersAvatarById({ + id, + requestBody, + }: { + id: string, + requestBody?: SetAvatarRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/avatar/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersChangePasswordById({ + id, + requestBody, + }: { + id: string, + requestBody?: ChangePasswordUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/change-password/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersDisable({ + requestBody, + }: { + requestBody?: DisableUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/disable', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersEnable({ + requestBody, + }: { + requestBody?: EnableUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/enable', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getUsersFilter({ + skip, + take = 100, + orderBy, + orderDirection, + userGroupIds, + userStates, + filter = '', + }: { + skip?: number, + take?: number, + orderBy?: UserOrderModel, + orderDirection?: DirectionModel, + userGroupIds?: Array, + userStates?: Array, + filter?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users/filter', + query: { + 'skip': skip, + 'take': take, + 'orderBy': orderBy, + 'orderDirection': orderDirection, + 'userGroupIds': userGroupIds, + 'userStates': userStates, + 'filter': filter, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersInvite({ + requestBody, + }: { + requestBody?: InviteUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/invite', + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersSetUserGroups({ + requestBody, + }: { + requestBody?: UpdateUserGroupsOnUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/set-user-groups', + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersUnlock({ + requestBody, + }: { + requestBody?: UnlockUsersRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/unlock', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + +} From f26a3ab7cd02b917d224d573a4fa7650bcc54141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 14:15:23 +0200 Subject: [PATCH 515/550] potential fix of eslint --- src/Umbraco.Web.UI.Client/eslint-local-rules.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index eb0fb35f03..cf5a8913b1 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -116,6 +116,7 @@ module.exports = { category: 'Naming', recommended: true, }, + schema: [], }, create: function (context) { return { From e1c19ab46c257a7a7a736b1b391ab28344564449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 14:17:00 +0200 Subject: [PATCH 516/550] fix eslint rules --- src/Umbraco.Web.UI.Client/.eslintrc.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 62976c7e21..12235e837e 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -2,6 +2,12 @@ "ignorePatterns": ["vite.*.ts"], "root": true, "plugins": ["eslint-plugin-local-rules"], + "parserOptions": { + "ecmaVersion": "latest" + }, + "env": { + "es6": true + }, "overrides": [ { "files": ["**/*.ts"], From 484ca9c6a48dcc5213827d71849a2ccc74164416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 15:04:45 +0200 Subject: [PATCH 517/550] first batch --- ...-workspace-view-edit-properties.element.ts | 2 +- .../src/core/mocks/data/data-type.data.ts | 182 ++++----- .../src/core/mocks/data/document-type.data.ts | 372 +++++++++--------- .../mocks/domains/health-check.handlers.ts | 6 +- .../core/mocks/domains/package.handlers.ts | 32 +- .../domains/redirect-management.handlers.ts | 70 ++-- 6 files changed, 332 insertions(+), 332 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts index 99e55283a7..afc4ae44bc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts @@ -60,7 +60,7 @@ export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitEle if (!property) return; // Take key and parse to modal: - console.log('property key:', property.key!); + console.log('property key:', property.id!); const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index ff90a90a2e..7e9e6efa8a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -12,15 +12,15 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Folder 1', - key: 'dt-folder1', - parentKey: null, + id: 'dt-folder1', + parentId: null, isFolder: true, }, { $type: 'data-type', type: 'data-type', - key: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', - parentKey: null, + id: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + parentId: null, name: 'Textstring', propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', @@ -30,8 +30,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Text', - key: 'dt-textBox', - parentKey: null, + id: 'dt-textBox', + parentId: null, propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', values: [ @@ -45,8 +45,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Text Area', - key: 'dt-textArea', - parentKey: null, + id: 'dt-textArea', + parentId: null, propertyEditorAlias: 'Umbraco.TextArea', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextArea', values: [], @@ -55,8 +55,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'My JS Property Editor', - key: 'dt-custom', - parentKey: null, + id: 'dt-custom', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'My.PropertyEditorUI.Custom', values: [], @@ -65,8 +65,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Color Picker', - key: 'dt-colorPicker', - parentKey: null, + id: 'dt-colorPicker', + parentId: null, propertyEditorAlias: 'Umbraco.ColorPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ColorPicker', values: [ @@ -121,8 +121,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Content Picker', - key: 'dt-contentPicker', - parentKey: null, + id: 'dt-contentPicker', + parentId: null, propertyEditorAlias: 'Umbraco.ContentPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DocumentPicker', values: [ @@ -136,8 +136,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Eye Dropper', - key: 'dt-eyeDropper', - parentKey: null, + id: 'dt-eyeDropper', + parentId: null, propertyEditorAlias: 'Umbraco.ColorPicker.EyeDropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.EyeDropper', values: [ @@ -173,8 +173,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multi URL Picker', - key: 'dt-multiUrlPicker', - parentKey: null, + id: 'dt-multiUrlPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MultiUrlPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultiUrlPicker', values: [ @@ -204,8 +204,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multi Node Tree Picker', - key: 'dt-multiNodeTreePicker', - parentKey: null, + id: 'dt-multiNodeTreePicker', + parentId: null, propertyEditorAlias: 'Umbraco.MultiNodeTreePicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TreePicker', values: [], @@ -214,8 +214,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Date Picker', - key: 'dt-datePicker', - parentKey: null, + id: 'dt-datePicker', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -233,8 +233,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', name: 'Date Picker With Time', type: 'data-type', - key: 'dt-datePicker-time', - parentKey: null, + id: 'dt-datePicker-time', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -252,8 +252,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', name: 'Time', type: 'data-type', - key: 'dt-time', - parentKey: null, + id: 'dt-time', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -271,8 +271,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Email', - key: 'dt-email', - parentKey: null, + id: 'dt-email', + parentId: null, propertyEditorAlias: 'Umbraco.EmailAddress', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Email', values: [], @@ -281,8 +281,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multiple Text String', - key: 'dt-multipleTextString', - parentKey: null, + id: 'dt-multipleTextString', + parentId: null, propertyEditorAlias: 'Umbraco.MultipleTextString', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultipleTextString', values: [ @@ -300,8 +300,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Dropdown', - key: 'dt-dropdown', - parentKey: null, + id: 'dt-dropdown', + parentId: null, propertyEditorAlias: 'Umbraco.DropDown.Flexible', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Dropdown', values: [], @@ -310,8 +310,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Slider', - key: 'dt-slider', - parentKey: null, + id: 'dt-slider', + parentId: null, propertyEditorAlias: 'Umbraco.Slider', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Slider', values: [ @@ -345,8 +345,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Toggle', - key: 'dt-toggle', - parentKey: null, + id: 'dt-toggle', + parentId: null, propertyEditorAlias: 'Umbraco.TrueFalse', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Toggle', values: [ @@ -372,8 +372,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Tags', - key: 'dt-tags', - parentKey: null, + id: 'dt-tags', + parentId: null, propertyEditorAlias: 'Umbraco.Tags', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Tags', values: [], @@ -382,8 +382,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Markdown Editor', - key: 'dt-markdownEditor', - parentKey: null, + id: 'dt-markdownEditor', + parentId: null, propertyEditorAlias: 'Umbraco.MarkdownEditor', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MarkdownEditor', values: [], @@ -392,8 +392,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Radio Button List', - key: 'dt-radioButtonList', - parentKey: null, + id: 'dt-radioButtonList', + parentId: null, propertyEditorAlias: 'Umbraco.RadioButtonList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.RadioButtonList', values: [ @@ -411,8 +411,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Checkbox List', - key: 'dt-checkboxList', - parentKey: null, + id: 'dt-checkboxList', + parentId: null, propertyEditorAlias: 'Umbraco.CheckboxList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CheckboxList', values: [ @@ -430,8 +430,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Block List', - key: 'dt-blockList', - parentKey: null, + id: 'dt-blockList', + parentId: null, propertyEditorAlias: 'Umbraco.BlockList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockList', values: [], @@ -440,8 +440,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Media Picker', - key: 'dt-mediaPicker', - parentKey: null, + id: 'dt-mediaPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MediaPicker3', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MediaPicker', values: [], @@ -450,8 +450,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Image Cropper', - key: 'dt-imageCropper', - parentKey: null, + id: 'dt-imageCropper', + parentId: null, propertyEditorAlias: 'Umbraco.ImageCropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ImageCropper', values: [], @@ -460,8 +460,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Upload Field', - key: 'dt-uploadField', - parentKey: null, + id: 'dt-uploadField', + parentId: null, propertyEditorAlias: 'Umbraco.UploadField', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UploadField', values: [ @@ -475,8 +475,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Block Grid', - key: 'dt-blockGrid', - parentKey: null, + id: 'dt-blockGrid', + parentId: null, propertyEditorAlias: 'Umbraco.BlockGrid', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockGrid', values: [], @@ -485,8 +485,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Collection View', - key: 'dt-collectionView', - parentKey: null, + id: 'dt-collectionView', + parentId: null, propertyEditorAlias: 'Umbraco.ListView', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CollectionView', values: [], @@ -495,8 +495,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Icon Picker', - key: 'dt-iconPicker', - parentKey: null, + id: 'dt-iconPicker', + parentId: null, propertyEditorAlias: 'Umbraco.IconPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.IconPicker', values: [], @@ -505,8 +505,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Number Range', - key: 'dt-numberRange', - parentKey: null, + id: 'dt-numberRange', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.NumberRange', values: [], @@ -515,8 +515,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Order Direction', - key: 'dt-orderDirection', - parentKey: null, + id: 'dt-orderDirection', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OrderDirection', values: [], @@ -525,8 +525,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Overlay Size', - key: 'dt-overlaySize', - parentKey: null, + id: 'dt-overlaySize', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OverlaySize', values: [], @@ -535,8 +535,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Rich Text Editor', - key: 'dt-richTextEditor', - parentKey: null, + id: 'dt-richTextEditor', + parentId: null, propertyEditorAlias: 'Umbraco.TinyMCE', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE', values: [], @@ -545,8 +545,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Label', - key: 'dt-label', - parentKey: null, + id: 'dt-label', + parentId: null, propertyEditorAlias: 'Umbraco.Label', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Label', values: [], @@ -555,8 +555,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Integer', - key: 'dt-integer', - parentKey: null, + id: 'dt-integer', + parentId: null, propertyEditorAlias: 'Umbraco.Integer', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Integer', values: [], @@ -565,8 +565,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Decimal', - key: 'dt-decimal', - parentKey: null, + id: 'dt-decimal', + parentId: null, propertyEditorAlias: 'Umbraco.Decimal', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Decimal', values: [], @@ -575,8 +575,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'User Picker', - key: 'dt-userPicker', - parentKey: null, + id: 'dt-userPicker', + parentId: null, propertyEditorAlias: 'Umbraco.UserPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UserPicker', values: [], @@ -585,8 +585,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Member Picker', - key: 'dt-memberPicker', - parentKey: null, + id: 'dt-memberPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MemberPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberPicker', values: [], @@ -595,8 +595,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Member Group Picker', - key: 'dt-memberGroupPicker', - parentKey: null, + id: 'dt-memberGroupPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MemberGroupPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberGroupPicker', values: [], @@ -613,25 +613,25 @@ class UmbDataTypeData extends UmbEntityData { - const rootItems = this.data.filter((item) => item.parentKey === null); + const rootItems = this.data.filter((item) => item.parentId === null); return rootItems.map((item) => createFolderTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.data.filter((item) => item.parentId === id); return childItems.map((item) => createFolderTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createFolderTreeItem(item)); } - createFolder(folder: CreateFolderRequestModel & { key: string | undefined }) { + createFolder(folder: CreateFolderRequestModel & { id: string | undefined }) { const newFolder: FolderTreeItemResponseModel = { name: folder.name, - key: folder.key, - parentKey: folder.parentKey, + id: folder.id, + parentId: folder.parentId, $type: 'data-type', type: 'data-type', isFolder: true, @@ -642,11 +642,11 @@ class UmbDataTypeData extends UmbEntityData item.key !== key); + deleteFolder(id: string) { + const item = this.getByKey(id) as FolderTreeItemResponseModel; + if (!item) throw new Error(`Item with id ${id} not found`); + if (!item.isFolder) throw new Error(`Item with id ${id} is not a folder`); + this.data = this.data.filter((item) => item.id !== id); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 1df0a4c0ea..0f40b5d37f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -8,9 +8,9 @@ import { export const data: Array = [ { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: 'all-property-editors-document-type-key', + allowedTemplateIds: [], + defaultTemplateId: null, + id: 'all-property-editors-document-type-key', alias: 'blogPost', name: 'Blog Post', description: null, @@ -21,12 +21,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '2', - containerKey: 'all-properties-group-key', + id: '2', + containerId: 'all-properties-group-key', alias: 'colorPicker', name: 'Color Picker', description: '', - dataTypeKey: 'dt-colorPicker', + dataTypeId: 'dt-colorPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -40,12 +40,12 @@ export const data: Array = [ }, }, { - key: '3', - containerKey: 'all-properties-group-key', + id: '3', + containerId: 'all-properties-group-key', alias: 'contentPicker', name: 'Content Picker', description: '', - dataTypeKey: 'dt-contentPicker', + dataTypeId: 'dt-contentPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -59,12 +59,12 @@ export const data: Array = [ }, }, { - key: '4', - containerKey: 'all-properties-group-key', + id: '4', + containerId: 'all-properties-group-key', alias: 'eyeDropper', name: 'Eye Dropper', description: '', - dataTypeKey: 'dt-eyeDropper', + dataTypeId: 'dt-eyeDropper', variesByCulture: false, variesBySegment: false, validation: { @@ -78,12 +78,12 @@ export const data: Array = [ }, }, { - key: '5', - containerKey: 'all-properties-group-key', + id: '5', + containerId: 'all-properties-group-key', alias: 'multiUrlPicker', name: 'Multi URL Picker', description: '', - dataTypeKey: 'dt-multiUrlPicker', + dataTypeId: 'dt-multiUrlPicker', variesByCulture: true, variesBySegment: false, validation: { @@ -97,12 +97,12 @@ export const data: Array = [ }, }, { - key: '6', - containerKey: 'all-properties-group-key', + id: '6', + containerId: 'all-properties-group-key', alias: 'multiNodeTreePicker', name: 'Multi Node Tree Picker', description: '', - dataTypeKey: 'dt-multiNodeTreePicker', + dataTypeId: 'dt-multiNodeTreePicker', variesByCulture: false, variesBySegment: false, validation: { @@ -116,12 +116,12 @@ export const data: Array = [ }, }, { - key: '7', - containerKey: 'all-properties-group-key', + id: '7', + containerId: 'all-properties-group-key', alias: 'datePicker', name: 'Date Picker', description: '', - dataTypeKey: 'dt-datePicker', + dataTypeId: 'dt-datePicker', variesByCulture: false, variesBySegment: false, validation: { @@ -135,12 +135,12 @@ export const data: Array = [ }, }, { - key: '8', - containerKey: 'all-properties-group-key', + id: '8', + containerId: 'all-properties-group-key', alias: 'email', name: 'Email', description: '', - dataTypeKey: 'dt-email', + dataTypeId: 'dt-email', variesByCulture: false, variesBySegment: false, validation: { @@ -154,12 +154,12 @@ export const data: Array = [ }, }, { - key: '9', - containerKey: 'all-properties-group-key', + id: '9', + containerId: 'all-properties-group-key', alias: 'textBox', name: 'Text Box', description: '', - dataTypeKey: 'dt-textBox', + dataTypeId: 'dt-textBox', variesByCulture: false, variesBySegment: false, validation: { @@ -173,12 +173,12 @@ export const data: Array = [ }, }, { - key: '19', - containerKey: 'all-properties-group-key', + id: '19', + containerId: 'all-properties-group-key', alias: 'dropdown', name: 'Dropdown', description: '', - dataTypeKey: 'dt-dropdown', + dataTypeId: 'dt-dropdown', variesByCulture: false, variesBySegment: false, validation: { @@ -192,12 +192,12 @@ export const data: Array = [ }, }, { - key: '11', - containerKey: 'all-properties-group-key', + id: '11', + containerId: 'all-properties-group-key', alias: 'textArea', name: 'Text Area', description: '', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', variesByCulture: false, variesBySegment: false, validation: { @@ -211,12 +211,12 @@ export const data: Array = [ }, }, { - key: '12', - containerKey: 'all-properties-group-key', + id: '12', + containerId: 'all-properties-group-key', alias: 'slider', name: 'Slider', description: '', - dataTypeKey: 'dt-slider', + dataTypeId: 'dt-slider', variesByCulture: false, variesBySegment: false, validation: { @@ -230,12 +230,12 @@ export const data: Array = [ }, }, { - key: '13', - containerKey: 'all-properties-group-key', + id: '13', + containerId: 'all-properties-group-key', alias: 'toggle', name: 'Toggle', description: '', - dataTypeKey: 'dt-toggle', + dataTypeId: 'dt-toggle', variesByCulture: false, variesBySegment: false, validation: { @@ -249,12 +249,12 @@ export const data: Array = [ }, }, { - key: '14', - containerKey: 'all-properties-group-key', + id: '14', + containerId: 'all-properties-group-key', alias: 'tags', name: 'Tags', description: '', - dataTypeKey: 'dt-tags', + dataTypeId: 'dt-tags', variesByCulture: false, variesBySegment: false, validation: { @@ -268,12 +268,12 @@ export const data: Array = [ }, }, { - key: '15', - containerKey: 'all-properties-group-key', + id: '15', + containerId: 'all-properties-group-key', alias: 'markdownEditor', name: 'MarkdownEditor', description: '', - dataTypeKey: 'dt-markdownEditor', + dataTypeId: 'dt-markdownEditor', variesByCulture: false, variesBySegment: false, validation: { @@ -287,12 +287,12 @@ export const data: Array = [ }, }, { - key: '16', - containerKey: 'all-properties-group-key', + id: '16', + containerId: 'all-properties-group-key', alias: 'radioButtonList', name: 'Radio Button List', description: '', - dataTypeKey: 'dt-radioButtonList', + dataTypeId: 'dt-radioButtonList', variesByCulture: false, variesBySegment: false, validation: { @@ -306,12 +306,12 @@ export const data: Array = [ }, }, { - key: '17', - containerKey: 'all-properties-group-key', + id: '17', + containerId: 'all-properties-group-key', alias: 'checkboxList', name: 'Checkbox List', description: '', - dataTypeKey: 'dt-checkboxList', + dataTypeId: 'dt-checkboxList', variesByCulture: false, variesBySegment: false, validation: { @@ -325,12 +325,12 @@ export const data: Array = [ }, }, { - key: '18', - containerKey: 'all-properties-group-key', + id: '18', + containerId: 'all-properties-group-key', alias: 'blockList', name: 'Block List', description: '', - dataTypeKey: 'dt-blockList', + dataTypeId: 'dt-blockList', variesByCulture: false, variesBySegment: false, validation: { @@ -344,12 +344,12 @@ export const data: Array = [ }, }, { - key: '19', - containerKey: 'all-properties-group-key', + id: '19', + containerId: 'all-properties-group-key', alias: 'mediaPicker', name: 'Media Picker', description: '', - dataTypeKey: 'dt-mediaPicker', + dataTypeId: 'dt-mediaPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -363,12 +363,12 @@ export const data: Array = [ }, }, { - key: '20', - containerKey: 'all-properties-group-key', + id: '20', + containerId: 'all-properties-group-key', alias: 'imageCropper', name: 'Image Cropper', description: '', - dataTypeKey: 'dt-imageCropper', + dataTypeId: 'dt-imageCropper', variesByCulture: false, variesBySegment: false, validation: { @@ -382,12 +382,12 @@ export const data: Array = [ }, }, { - key: '21', - containerKey: 'all-properties-group-key', + id: '21', + containerId: 'all-properties-group-key', alias: 'uploadField', name: 'Upload Field', description: '', - dataTypeKey: 'dt-uploadField', + dataTypeId: 'dt-uploadField', variesByCulture: false, variesBySegment: false, validation: { @@ -401,12 +401,12 @@ export const data: Array = [ }, }, { - key: '22', - containerKey: 'all-properties-group-key', + id: '22', + containerId: 'all-properties-group-key', alias: 'blockGrid', name: 'Block Grid', description: '', - dataTypeKey: 'dt-blockGrid', + dataTypeId: 'dt-blockGrid', variesByCulture: false, variesBySegment: false, validation: { @@ -420,12 +420,12 @@ export const data: Array = [ }, }, { - key: '23', - containerKey: 'all-properties-group-key', + id: '23', + containerId: 'all-properties-group-key', alias: 'blockGrid', name: 'Icon Picker', description: '', - dataTypeKey: 'dt-iconPicker', + dataTypeId: 'dt-iconPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -439,12 +439,12 @@ export const data: Array = [ }, }, { - key: '24', - containerKey: 'all-properties-group-key', + id: '24', + containerId: 'all-properties-group-key', alias: 'numberRange', name: 'Number Range', description: '', - dataTypeKey: 'dt-numberRange', + dataTypeId: 'dt-numberRange', variesByCulture: false, variesBySegment: false, validation: { @@ -458,12 +458,12 @@ export const data: Array = [ }, }, { - key: '25', - containerKey: 'all-properties-group-key', + id: '25', + containerId: 'all-properties-group-key', alias: 'orderDirection', name: 'Order Direction', description: '', - dataTypeKey: 'dt-orderDirection', + dataTypeId: 'dt-orderDirection', variesByCulture: false, variesBySegment: false, validation: { @@ -477,12 +477,12 @@ export const data: Array = [ }, }, { - key: '26', - containerKey: 'all-properties-group-key', + id: '26', + containerId: 'all-properties-group-key', alias: 'overlaySize', name: 'Overlay Size', description: '', - dataTypeKey: 'dt-overlaySize', + dataTypeId: 'dt-overlaySize', variesByCulture: false, variesBySegment: false, validation: { @@ -496,12 +496,12 @@ export const data: Array = [ }, }, { - key: '27', - containerKey: 'all-properties-group-key', + id: '27', + containerId: 'all-properties-group-key', alias: 'label', name: 'Label', description: '', - dataTypeKey: 'dt-label', + dataTypeId: 'dt-label', variesByCulture: false, variesBySegment: false, validation: { @@ -515,12 +515,12 @@ export const data: Array = [ }, }, { - key: '28', - containerKey: 'all-properties-group-key', + id: '28', + containerId: 'all-properties-group-key', alias: 'integer', name: 'Integer', description: '', - dataTypeKey: 'dt-integer', + dataTypeId: 'dt-integer', variesByCulture: false, variesBySegment: false, validation: { @@ -534,12 +534,12 @@ export const data: Array = [ }, }, { - key: '29', - containerKey: 'all-properties-group-key', + id: '29', + containerId: 'all-properties-group-key', alias: 'decimal', name: 'Decimal', description: '', - dataTypeKey: 'dt-decimal', + dataTypeId: 'dt-decimal', variesByCulture: false, variesBySegment: false, validation: { @@ -553,12 +553,12 @@ export const data: Array = [ }, }, { - key: '30', - containerKey: 'all-properties-group-key', + id: '30', + containerId: 'all-properties-group-key', alias: 'memberPicker', name: 'Member Picker', description: '', - dataTypeKey: 'dt-memberPicker', + dataTypeId: 'dt-memberPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -572,12 +572,12 @@ export const data: Array = [ }, }, { - key: '31', - containerKey: 'all-properties-group-key', + id: '31', + containerId: 'all-properties-group-key', alias: 'memberGroupPicker', name: 'Member Group Picker', description: '', - dataTypeKey: 'dt-memberGroupPicker', + dataTypeId: 'dt-memberGroupPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -591,12 +591,12 @@ export const data: Array = [ }, }, { - key: '32', - containerKey: 'all-properties-group-key', + id: '32', + containerId: 'all-properties-group-key', alias: 'userPicker', name: 'User Picker', description: '', - dataTypeKey: 'dt-userPicker', + dataTypeId: 'dt-userPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -612,8 +612,8 @@ export const data: Array = [ ], containers: [ { - key: 'all-properties-group-key', - parentKey: null, + id: 'all-properties-group-key', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, @@ -629,9 +629,9 @@ export const data: Array = [ }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: '29643452-cff9-47f2-98cd-7de4b6807681', + allowedTemplateIds: [], + defaultTemplateId: null, + id: '29643452-cff9-47f2-98cd-7de4b6807681', alias: 'blogPost', name: 'Blog Post', description: null, @@ -642,12 +642,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '5b4ca208-134e-4865-b423-06e5e97adf3c', - containerKey: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', + id: '5b4ca208-134e-4865-b423-06e5e97adf3c', + containerId: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', alias: 'blogPostText', name: 'Blog Post Text', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -661,12 +661,12 @@ export const data: Array = [ }, }, { - key: 'ef7096b6-7c9e-49ba-8d49-395111e65ea2', - containerKey: '227d6ed2-e118-4494-b8f2-deb69854a56a', + id: 'ef7096b6-7c9e-49ba-8d49-395111e65ea2', + containerId: '227d6ed2-e118-4494-b8f2-deb69854a56a', alias: 'blogTextStringUnderMasterTab', name: 'Blog text string under master tab', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: true, variesBySegment: false, validation: { @@ -680,12 +680,12 @@ export const data: Array = [ }, }, { - key: 'e010c429-b298-499a-9bfe-79687af8972a', - containerKey: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', + id: 'e010c429-b298-499a-9bfe-79687af8972a', + containerId: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', alias: 'blogTextStringUnderGroupUnderMasterTab', name: 'Blog text string under group under master tab', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: true, variesBySegment: false, validation: { @@ -699,12 +699,12 @@ export const data: Array = [ }, }, { - key: '1a22749a-c7d2-44bb-b36b-c977c2ced6ef', - containerKey: '2c943997-b685-432d-a6c5-601d8e7a298a', + id: '1a22749a-c7d2-44bb-b36b-c977c2ced6ef', + containerId: '2c943997-b685-432d-a6c5-601d8e7a298a', alias: 'localBlogTabString', name: 'Local Blog Tab String', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -718,12 +718,12 @@ export const data: Array = [ }, }, { - key: '22', - containerKey: '2c943997-b685-432d-a6c5-601d8e7a298a', + id: '22', + containerId: '2c943997-b685-432d-a6c5-601d8e7a298a', alias: 'blockGrid', name: 'Block Grid', description: '', - dataTypeKey: 'dt-blockGrid', + dataTypeId: 'dt-blockGrid', variesByCulture: false, variesBySegment: false, validation: { @@ -739,29 +739,29 @@ export const data: Array = [ ], containers: [ { - key: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', - parentKey: null, + id: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', + parentId: null, name: 'Content-group', type: 'Group', sortOrder: 0, }, { - key: '227d6ed2-e118-4494-b8f2-deb69854a56a', - parentKey: null, + id: '227d6ed2-e118-4494-b8f2-deb69854a56a', + parentId: null, name: 'Master Tab', type: 'Tab', sortOrder: 0, }, { - key: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', - parentKey: '227d6ed2-e118-4494-b8f2-deb69854a56a', + id: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', + parentId: '227d6ed2-e118-4494-b8f2-deb69854a56a', name: 'Blog Group under master tab', type: 'Group', sortOrder: 0, }, { - key: '2c943997-b685-432d-a6c5-601d8e7a298a', - parentKey: null, + id: '2c943997-b685-432d-a6c5-601d8e7a298a', + parentId: null, name: 'Local blog tab', type: 'Tab', sortOrder: 1, @@ -769,17 +769,17 @@ export const data: Array = [ ], allowedContentTypes: [ { - key: '29643452-cff9-47f2-98cd-7de4b6807681', + id: '29643452-cff9-47f2-98cd-7de4b6807681', sortOrder: 0, }, ], compositions: [ { - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', compositionType: ContentTypeCompositionTypeModel.INHERITANCE, }, { - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', compositionType: ContentTypeCompositionTypeModel.COMPOSITION, }, ], @@ -790,9 +790,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: ['916cfecc-3295-490c-a16d-c41fa9f72980'], - defaultTemplateKey: '916cfecc-3295-490c-a16d-c41fa9f72980', - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + allowedTemplateIds: ['916cfecc-3295-490c-a16d-c41fa9f72980'], + defaultTemplateId: '916cfecc-3295-490c-a16d-c41fa9f72980', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', alias: 'masterPage', name: 'Master Page', description: null, @@ -803,12 +803,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '5e5f7456-c751-4846-9f2b-47965cc96ec6', - containerKey: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', + id: '5e5f7456-c751-4846-9f2b-47965cc96ec6', + containerId: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', alias: 'masterText', name: 'Master text', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -824,8 +824,8 @@ export const data: Array = [ ], containers: [ { - key: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', - parentKey: null, + id: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', + parentId: null, name: 'Master Tab', type: 'Tab', sortOrder: 0, @@ -840,9 +840,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + allowedTemplateIds: [], + defaultTemplateId: null, + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', alias: 'baseElementType', name: 'Base Element Type', description: null, @@ -853,12 +853,12 @@ export const data: Array = [ isElement: true, properties: [ { - key: 'b92de6ac-1a22-4a45-a481-b6cae1cccbbf', - containerKey: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', + id: 'b92de6ac-1a22-4a45-a481-b6cae1cccbbf', + containerId: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', alias: 'pageTitle', name: 'Page title', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -874,8 +874,8 @@ export const data: Array = [ ], containers: [ { - key: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', - parentKey: null, + id: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', + parentId: null, name: 'Content-group', type: 'Group', sortOrder: 0, @@ -890,13 +890,13 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [ + allowedTemplateIds: [ '2bf464b6-3aca-4388-b043-4eb439cc2643', '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', ], - defaultTemplateKey: '2bf464b6-3aca-4388-b043-4eb439cc2643', - key: 'simple-document-type-key', + defaultTemplateId: '2bf464b6-3aca-4388-b043-4eb439cc2643', + id: 'simple-document-type-key', alias: 'simpleDocumentType', name: 'Simple Document Type', description: null, @@ -907,12 +907,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', - containerKey: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + id: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', + containerId: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', alias: 'prop1', name: 'Prop 1', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -928,16 +928,16 @@ export const data: Array = [ ], containers: [ { - key: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', - parentKey: null, + id: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, }, ], allowedContentTypes: [ - { key: 'simple-document-type-key', sortOrder: 0 }, - { key: 'simple-document-type-2-key', sortOrder: 0 }, + { id: 'simple-document-type-key', sortOrder: 0 }, + { id: 'simple-document-type-2-key', sortOrder: 0 }, ], compositions: [], cleanup: { @@ -947,9 +947,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: 'simple-document-type-2-key', + allowedTemplateIds: [], + defaultTemplateId: null, + id: 'simple-document-type-2-key', alias: 'simpleDocumentType2', name: 'Simple Document Type 2', description: null, @@ -960,12 +960,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '82d4b050-b128-42fe-ac8e-d5586e533592', - containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + id: '82d4b050-b128-42fe-ac8e-d5586e533592', + containerId: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', alias: 'prop1', name: 'Prop 1', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -979,12 +979,12 @@ export const data: Array = [ }, }, { - key: 'beadc69a-d669-4d01-9919-98bafba31e57', - containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + id: 'beadc69a-d669-4d01-9919-98bafba31e57', + containerId: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', alias: 'prop2', name: 'Prop 2', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -1000,14 +1000,14 @@ export const data: Array = [ ], containers: [ { - key: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', - parentKey: null, + id: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, }, ], - allowedContentTypes: [{ key: 'simple-document-type-key', sortOrder: 0 }], + allowedContentTypes: [{ id: 'simple-document-type-key', sortOrder: 0 }], compositions: [], cleanup: { preventCleanup: false, @@ -1023,9 +1023,9 @@ export const treeData: Array = [ name: 'All property editors document type', type: 'document-type', hasChildren: false, - key: 'all-property-editors-document-type-key', + id: 'all-property-editors-document-type-key', isContainer: false, - parentKey: null, + parentId: null, icon: '', }, { @@ -1033,9 +1033,9 @@ export const treeData: Array = [ name: 'Page Document Type', type: 'document-type', hasChildren: false, - key: '29643452-cff9-47f2-98cd-7de4b6807681', + id: '29643452-cff9-47f2-98cd-7de4b6807681', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1043,9 +1043,9 @@ export const treeData: Array = [ name: 'Page Document Type Compositional', type: 'document-type', hasChildren: false, - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1053,9 +1053,9 @@ export const treeData: Array = [ name: 'Page Document Type Inherited', type: 'document-type', hasChildren: false, - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1063,9 +1063,9 @@ export const treeData: Array = [ name: 'Simple Document Type', type: 'document-type', hasChildren: false, - key: 'simple-document-type-key', + id: 'simple-document-type-key', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1073,9 +1073,9 @@ export const treeData: Array = [ name: 'Simple Document Type 2', type: 'document-type', hasChildren: false, - key: 'simple-document-type-2-key', + id: 'simple-document-type-2-key', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, ]; @@ -1092,24 +1092,24 @@ class UmbDocumentTypeData extends UmbEntityData { } getTreeRoot(): Array { - const rootItems = this.treeData.filter((item) => item.parentKey === null); + const rootItems = this.treeData.filter((item) => item.parentId === null); return rootItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.treeData.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.treeData.filter((item) => item.parentId === id); return childItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } - getAllowedTypesOf(key: string): Array { - const documentType = this.getByKey(key); - const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.key) ?? []; - const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.key ?? '')); + getAllowedTypesOf(id: string): Array { + const documentType = this.getByKey(id); + const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.id) ?? []; + const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.id ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts index de8d67686f..a4e075f140 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts @@ -54,9 +54,9 @@ export const handlers = [ rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { const body = await req.json(); - const healthCheckKey = body.healthCheckKey; - // Find the health check based on the healthCheckKey from the healthGroups[].checks - const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.key === healthCheckKey); + const healthCheckId = body.healthCheckId; + // Find the health check based on the healthCheckId from the healthGroups[].checks + const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.id === healthCheckId); if (!healthCheck) { return res(ctx.status(404)); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts index 886d08f5ef..af6f8a9f56 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts @@ -54,40 +54,40 @@ export const handlers = [ rest.post(umbracoPath('/package/created'), async (_req, res, ctx) => { //save const data: PackageMigrationStatusResponseModel = await _req.json(); - const newPackage: PackageDefinitionResponseModel = { ...data, key: uuidv4() }; + const newPackage: PackageDefinitionResponseModel = { ...data, id: uuidv4() }; packageArray.push(newPackage); return res(ctx.status(200), ctx.json(newPackage)); }), - rest.get(umbracoPath('/package/created/:key'), (_req, res, ctx) => { + rest.get(umbracoPath('/package/created/:id'), (_req, res, ctx) => { //read 1 - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - const found = packageArray.find((p) => p.key == key); + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + const found = packageArray.find((p) => p.id == id); if (!found) return res(ctx.status(404)); return res(ctx.status(200), ctx.json(found)); }), - rest.put(umbracoPath('/package/created/:key'), async (_req, res, ctx) => { + rest.put(umbracoPath('/package/created/:id'), async (_req, res, ctx) => { //update const data: PackageDefinitionResponseModel = await _req.json(); - if (!data.key) return; - const index = packageArray.findIndex((x) => x.key === data.key); + if (!data.id) return; + const index = packageArray.findIndex((x) => x.id === data.id); packageArray[index] = data; return res(ctx.status(200)); }), - rest.delete(umbracoPath('/package/created/:key'), (_req, res, ctx) => { + rest.delete(umbracoPath('/package/created/:id'), (_req, res, ctx) => { //delete - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - const index = packageArray.findIndex((p) => p.key == key); + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + const index = packageArray.findIndex((p) => p.id == id); if (index <= -1) return res(ctx.status(404)); packageArray.splice(index, 1); return res(ctx.status(200)); }), - rest.get(umbracoPath('/package/created/:key/download'), (_req, res, ctx) => { + rest.get(umbracoPath('/package/created/:id/download'), (_req, res, ctx) => { //download return res(ctx.status(200)); }), @@ -95,7 +95,7 @@ export const handlers = [ const packageArray: PackageDefinitionResponseModel[] = [ { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', packagePath: undefined, name: 'My Package', //contentNodeId?: string | null; @@ -113,13 +113,13 @@ const packageArray: PackageDefinitionResponseModel[] = [ //dictionaryItems?: Array; }, { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da7', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da7', packagePath: undefined, name: 'My Second Package', }, { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da8', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da8', packagePath: undefined, name: 'My Third Package', }, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts index 0b408a404a..af6d756e80 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts @@ -35,21 +35,21 @@ export const handlers = [ } }), - rest.get(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); + rest.get(umbracoPath('/redirect-management/:id'), async (_req, res, ctx) => { + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + if (id === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); - const PagedRedirectUrlObject = _getRedirectUrlByKey(key); + const PagedRedirectUrlObject = _getRedirectUrlByKey(id); return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), - rest.delete(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); + rest.delete(umbracoPath('/redirect-management/:id'), async (_req, res, ctx) => { + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); - const PagedRedirectUrlObject = _deleteRedirectUrlByKey(key); + const PagedRedirectUrlObject = _deleteRedirectUrlByKey(id); return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), @@ -69,13 +69,13 @@ export const handlers = [ const UrlTracker: RedirectUrlStatusResponseModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; -const _getRedirectUrlByKey = (key: string) => { +const _getRedirectUrlByKey = (id: string) => { const PagedResult: PagedRedirectUrlResponseModel = { total: 0, items: [], }; RedirectUrlData.forEach((data) => { - if (data.key?.includes(key)) { + if (data.id?.includes(id)) { PagedResult.items.push(data); PagedResult.total++; } @@ -83,8 +83,8 @@ const _getRedirectUrlByKey = (key: string) => { return PagedResult; }; -const _deleteRedirectUrlByKey = (key: string) => { - const index = RedirectUrlData.findIndex((data) => data.key === key); +const _deleteRedirectUrlByKey = (id: string) => { + const index = RedirectUrlData.findIndex((data) => data.id === id); if (index > -1) RedirectUrlData.splice(index, 1); const PagedResult: PagedRedirectUrlResponseModel = { items: RedirectUrlData, @@ -95,81 +95,81 @@ const _deleteRedirectUrlByKey = (key: string) => { const RedirectUrlData: RedirectUrlResponseModel[] = [ { - key: '1', + id: '1', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'kitty.com', originalUrl: 'kitty.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2', }, { - key: '2', + id: '2', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'umbraco.com', originalUrl: 'umbraco.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f', }, { - key: '3', + id: '3', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'uui.umbraco.com', originalUrl: 'uui.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f23', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f23', }, { - key: '4', + id: '4', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'umbracoffee.com', originalUrl: 'umbracoffee.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fdsaa', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fdsaa', }, { - key: '5', + id: '5', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'section/settings', originalUrl: 'section/settings/123', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2e23', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2e23', }, { - key: '6', + id: '6', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'dxp.com', originalUrl: 'dxp.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fsafsfd', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fsafsfd', }, { - key: '7', + id: '7', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'google.com', originalUrl: 'google.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2cxza', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2cxza', }, { - key: '8', + id: '8', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'unicorns.com', originalUrl: 'unicorns.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fweds', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fweds', }, { - key: '9', + id: '9', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'h5yr.com', originalUrl: 'h5yr.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31ddsfsdsfadsfdx9f2', + contentId: '7191c911-6747-4824-849e-5208e2b31ddsfsdsfadsfdx9f2', }, { - key: '10', + id: '10', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'our.umbraco.com', originalUrl: 'our.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-52dsacx08e2b31d9dsafdsff', + contentId: '7191c911-6747-4824-849e-52dsacx08e2b31d9dsafdsff', }, { - key: '11', + id: '11', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'your.umbraco.com', originalUrl: 'your.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-52dsacx08e2b31d9fsda', + contentId: '7191c911-6747-4824-849e-52dsacx08e2b31d9fsda', }, ]; From 5b6f3004ca4c2693c6081a8039de988eecb65751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 15:04:52 +0200 Subject: [PATCH 518/550] dictionary corrections --- .../token/import-dictionary-modal.token.ts | 4 +- .../import/import-dictionary-modal.element.ts | 29 ++++++--- .../entity-actions/import/import.action.ts | 6 +- .../translation/dictionary/index.ts | 2 +- .../repository/dictionary.repository.ts | 10 +-- .../sources/dictionary.detail.server.data.ts | 51 ++++++++-------- ...ictionary.details.server.data.interface.ts | 4 +- .../core/mocks/domains/dictionary.handlers.ts | 61 +++++++++---------- 8 files changed, 90 insertions(+), 77 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts index 745279c619..c420afa120 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts @@ -7,8 +7,8 @@ export interface UmbImportDictionaryModalData { } export interface UmbImportDictionaryModalResult { - fileName?: string; - parentKey?: string; + temporaryFileId?: string; + parentId?: string; } export const UMB_IMPORT_DICTIONARY_MODAL = new UmbModalToken< diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts index 92e2e6f507..f92fc6a94b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts @@ -6,7 +6,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '@umbraco-cms/backoffice/modal'; -import { UploadDictionaryResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { DictionaryItemResponseModel, ImportDictionaryRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-import-dictionary-modal') @@ -27,7 +27,7 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< private _form!: HTMLFormElement; @state() - private _uploadedDictionary?: UploadDictionaryResponseModel; + private _uploadedDictionaryTempId?: string; @state() private _showUploadView = true; @@ -44,11 +44,11 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< #detailRepo = new UmbDictionaryRepository(this); async #importDictionary() { - if (!this._uploadedDictionary?.fileName) return; + if (!this._uploadedDictionaryTempId) return; this.modalHandler?.submit({ - fileName: this._uploadedDictionary.fileName, - parentKey: this._selection[0], + temporaryFileId: this._uploadedDictionaryTempId, + parentId: this._selection[0], }); } @@ -66,11 +66,21 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< if (!this._form.checkValidity()) return; const formData = new FormData(this._form); - const { data } = await this.#detailRepo.upload(formData); - this._uploadedDictionary = data; + const uploadData: ImportDictionaryRequestModel = { + temporaryFileId: formData.get('file')?.toString() ?? '', + }; - if (!this._uploadedDictionary) { + // TODO: fix this upload experience. We need to update our form so it gets temporary file id from the server: + const { data } = await this.#detailRepo.upload(uploadData); + + if (!data) return; + + this._uploadedDictionaryTempId = data; + // TODO: We need to find another way to gather the data of the uploaded dictionary, to represent the dictionaryItems? See further below. + //this._uploadedDictionary = data; + + if (!this._uploadedDictionaryTempId) { this._showErrorView = true; this._showImportView = false; return; @@ -113,6 +123,8 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< /// TODO => Tree view needs isolation and single-select option #renderImportView() { + //TODO: gather this data in some other way, we cannot use the feedback from the server anymore. can we use info about the file directly? or is a change to the end point required? + /* if (!this._uploadedDictionary?.dictionaryItems) return; return html` @@ -140,6 +152,7 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< look="primary" @click=${this.#importDictionary}> `; + */ } // TODO => Determine what to display when dictionary import/upload fails 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 0ba63c6352..2ab539bca3 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 @@ -27,10 +27,10 @@ export default class UmbImportDictionaryEntityAction extends UmbEntityActionBase const modalHandler = this.#modalContext?.open(UMB_IMPORT_DICTIONARY_MODAL, { unique: this.unique }); // TODO: get type from modal result - const { fileName, parentKey } = await modalHandler.onSubmit(); - if (!fileName) return; + const { temporaryFileId, parentId } = await modalHandler.onSubmit(); + if (!temporaryFileId) return; - const result = await this.repository?.import(fileName, parentKey); + const result = await this.repository?.import(temporaryFileId, parentId); // TODO => get location header to route to new item console.log(result); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts index 8caa4f12a7..b478fc4193 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts @@ -1,6 +1,6 @@ import { DictionaryItemTranslationModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +// TODO: Can we get rid of this type? I guess it should come from the server? Investigate this. export interface DictionaryDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed translations: DictionaryItemTranslationModel[]; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 925f993f48..1b7729ad15 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -6,7 +6,7 @@ import { DictionaryTreeServerDataSource } from './sources/dictionary.tree.server import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { ImportDictionaryRequestModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepository { @@ -197,18 +197,18 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#detailSource.export(key, includeChildren); } - async import(fileName: string, parentKey?: string) { + async import(temporaryFileId: string, parentId?: string) { await this.#init; - if (!fileName) { + if (!temporaryFileId) { const error: ProblemDetailsModel = { title: 'File is missing' }; return { error }; } - return this.#detailSource.import(fileName, parentKey); + return this.#detailSource.import(temporaryFileId, parentId); } - async upload(formData: FormData) { + async upload(formData: ImportDictionaryRequestModel) { await this.#init; if (!formData) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 109d5a3924..39f2c1456e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -5,6 +5,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { CreateDictionaryItemRequestModel, DictionaryResource, + ImportDictionaryRequestModel, LanguageResource, ProblemDetailsModel, } from '@umbraco-cms/backoffice/backend-api'; @@ -28,23 +29,23 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async createScaffold(parentKey: string) { + async createScaffold(parentId: string) { const data: DictionaryDetails = { name: '', - parentKey, + parentId, } as DictionaryDetails; return { data }; } /** - * @description - Fetches a Dictionary with the given key from the server - * @param {string} key + * @description - Fetches a Dictionary with the given id from the server + * @param {string} id * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - get(key: string) { - return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByKey({ key })) as any; + get(id: string) { + return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryById({ id })) as any; } /** @@ -64,13 +65,13 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @memberof UmbDictionaryDetailServerDataSource */ async update(dictionary: DictionaryDetails) { - if (!dictionary.key) { + if (!dictionary.id) { const error: ProblemDetailsModel = { title: 'Dictionary key is missing' }; return { error }; } - const payload = { key: dictionary.key, requestBody: dictionary }; - return tryExecuteAndNotify(this.#host, DictionaryResource.putDictionaryByKey(payload)); + const payload = { id: dictionary.id, requestBody: dictionary }; + return tryExecuteAndNotify(this.#host, DictionaryResource.putDictionaryById(payload)); } /** @@ -81,7 +82,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData */ async insert(data: DictionaryDetails) { const requestBody: CreateDictionaryItemRequestModel = { - parentKey: data.parentKey, + parentId: data.parentId, name: data.name, }; @@ -91,44 +92,44 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Deletes a Dictionary on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return await tryExecuteAndNotify(this.#host, DictionaryResource.deleteDictionaryByKey({ key })); + return await tryExecuteAndNotify(this.#host, DictionaryResource.deleteDictionaryById({ id })); } /** * @description - Import a dictionary - * @param {string} fileName - * @param {string?} parentKey + * @param {string} temporaryFileId + * @param {string?} parentId * @returns {*} * @memberof UmbDictionaryDetailServerDataSource */ - async import(fileName: string, parentKey?: string) { - // TODO => parentKey will be a guid param once #13786 is merged and API regenerated + async import(temporaryFileId: string, parentId?: string) { + // TODO => parentId will be a guid param once #13786 is merged and API regenerated return await tryExecuteAndNotify( this.#host, - DictionaryResource.postDictionaryImport({ requestBody: { fileName, parentKey } }) + DictionaryResource.postDictionaryImport({ requestBody: { temporaryFileId, parentId } }) ); } /** * @description - Upload a Dictionary - * @param {FormData} formData + * @param {ImportDictionaryRequestModel} formData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async upload(formData: FormData) { + async upload(formData: ImportDictionaryRequestModel) { return await tryExecuteAndNotify( this.#host, - DictionaryResource.postDictionaryUpload({ + DictionaryResource.postDictionaryImport({ requestBody: formData, }) ); @@ -136,13 +137,13 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Export a Dictionary, optionally including child items. - * @param {string} key + * @param {string} id * @param {boolean} includeChildren * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async export(key: string, includeChildren: boolean) { - return await tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByKeyExport({ key, includeChildren })); + async export(id: string, includeChildren: boolean) { + return await tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByIdExport({ id, includeChildren })); } async getLanguages() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index 1b3c74e3b8..c99026273c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -1,9 +1,9 @@ import type { DictionaryDetails } from '../../'; import { DictionaryItemResponseModel, - UploadDictionaryResponseModel, PagedDictionaryOverviewResponseModel, PagedLanguageResponseModel, + ImportDictionaryRequestModel, } from '@umbraco-cms/backoffice/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; @@ -16,7 +16,7 @@ export interface DictionaryDetailDataSource { delete(key: string): Promise; export(key: string, includeChildren: boolean): Promise>; import(fileName: string, parentKey?: string): Promise>; - upload(formData: FormData): Promise>; + upload(formData: ImportDictionaryRequestModel): Promise>; // TODO - temp only getLanguages(): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index 25df97d47a..8c97cbf4ad 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -4,16 +4,16 @@ import { umbDictionaryData } from '../data/dictionary.data'; import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; const uploadResponse: ImportDictionaryRequestModel = { - fileName: 'c:/path/to/tempfilename.udt', - parentKey: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', + temporaryFileId: 'c:/path/to/tempfilename.udt', + parentId: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', }; /// const importResponse: DictionaryDetails = { $type: '', - parentKey: null, + parentId: null, name: 'Uploaded dictionary', - key: 'b7e7d0ab-53ba-485d-dddd-12537f9925cb', + id: 'b7e7d0ab-53ba-485d-dddd-12537f9925cb', hasChildren: false, type: 'dictionary-item', isContainer: false, @@ -34,23 +34,23 @@ const importResponse: DictionaryDetails = { const overviewData: Array = [ { name: 'Hello', - key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', translatedIsoCodes: ['en'], }, { name: 'Hello again', - key: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', + id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', translatedIsoCodes: ['en', 'fr'], }, ]; // TODO: add schema export const handlers = [ - rest.get('/umbraco/management/api/v1/dictionary/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/dictionary/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dictionary = umbDictionaryData.getByKey(key); + const dictionary = umbDictionaryData.getByKey(id); console.log(dictionary); return res(ctx.status(200), ctx.json(dictionary)); }), @@ -77,7 +77,6 @@ export const handlers = [ const data = await req.json(); if (!data) return; - data.parentKey = data.parentId; data.icon = 'umb:book-alt'; data.hasChildren = false; data.type = 'dictionary-item'; @@ -102,12 +101,12 @@ export const handlers = [ return res(ctx.status(200), ctx.json(createdResult)); }), - rest.patch('/umbraco/management/api/v1/dictionary/:key', async (req, res, ctx) => { + rest.patch('/umbraco/management/api/v1/dictionary/:id', async (req, res, ctx) => { const data = await req.json(); if (!data) return; - const key = req.params.key as string; - if (!key) return; + const id = req.params.id as string; + if (!id) return; const dataToSave = JSON.parse(data[0].value); const saved = umbDictionaryData.save(dataToSave); @@ -125,10 +124,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/dictionary/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const items = umbDictionaryData.getTreeItemChildren(parentKey); + const items = umbDictionaryData.getTreeItemChildren(parentId); const response = { total: items.length, @@ -139,30 +138,30 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/dictionary/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDictionaryData.getTreeItem(keys); + const items = umbDictionaryData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.delete('/umbraco/management/api/v1/dictionary/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete('/umbraco/management/api/v1/dictionary/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const deletedKeys = umbDictionaryData.delete([key]); + const deletedKeys = umbDictionaryData.delete([id]); return res(ctx.status(200), ctx.json(deletedKeys)); }), // TODO => handle properly, querystring breaks handler - rest.get('/umbraco/management/api/v1/dictionary/:key/export', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/dictionary/:id/export', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; const includeChildren = req.url.searchParams.get('includeChildren'); - const item = umbDictionaryData.getByKey(key); + const item = umbDictionaryData.getByKey(id); alert( `Downloads file for dictionary "${item?.name}", ${includeChildren === 'true' ? 'with' : 'without'} children.` @@ -181,14 +180,14 @@ export const handlers = [ if (!file) return; - importResponse.parentKey = req.url.searchParams.get('parentId') ?? null; + importResponse.parentId = req.url.searchParams.get('parentId') ?? null; umbDictionaryData.save(importResponse); // build the path to the new item => reflects the expected server response const path = ['-1']; - if (importResponse.parentKey) path.push(importResponse.parentKey); + if (importResponse.parentId) path.push(importResponse.parentId); - path.push(importResponse.key); + path.push(importResponse.id); const contentResult = { content: path.join(','), From d4b369b9c2bac4bbeb1cf378a72d8c6e143d9624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 15:26:29 +0200 Subject: [PATCH 519/550] batch 2 --- .../append-to-frozen-array.function.ts | 4 ++-- .../libs/observable-api/array-state.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts index 1e5c060f00..97ff56848c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts @@ -6,8 +6,8 @@ * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different. * @description - Creates a RxJS Observable from RxJS Subject. * @example Example append new entry for a ArrayState or a part of DeepState/ObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. - * const entry = {key: 'myKey', value: 'myValue'}; - * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.key === key); + * const entry = {id: 'myKey', value: 'myValue'}; + * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id); * mySubject.next(newDataSet); */ export function appendToFrozenArray(data: T[], entry: T, getUniqueMethod?: (entry: T) => unknown): T[] { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts index 04dc42b3bb..7572f89d8b 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts @@ -50,12 +50,12 @@ export class ArrayState extends DeepState { * @param {unknown[]} uniques - The unique values to remove. * @return {ArrayState} Reference to it self. * @description - Remove some new data of this Subject. - * @example Example remove entry with key '1' and '2' + * @example Example remove entry with id '1' and '2' * const data = [ - * { key: 1, value: 'foo'}, - * { key: 2, value: 'bar'} + * { id: 1, value: 'foo'}, + * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new ArrayState(data, (x) => x.id); * myState.remove([1, 2]); */ remove(uniques: unknown[]) { @@ -79,12 +79,12 @@ export class ArrayState extends DeepState { * @param {unknown} unique - The unique value to remove. * @return {ArrayState} Reference to it self. * @description - Remove some new data of this Subject. - * @example Example remove entry with key '1' + * @example Example remove entry with id '1' * const data = [ - * { key: 1, value: 'foo'}, - * { key: 2, value: 'bar'} + * { id: 1, value: 'foo'}, + * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new ArrayState(data, (x) => x.id); * myState.removeOne(1); */ removeOne(unique: unknown) { From 5a2e415cecec92cd246f47ddee21b6605bab354a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 15:26:41 +0200 Subject: [PATCH 520/550] batch 3 --- .../libs/backend-api/src/core/request.ts | 425 +++++++++--------- .../libs/models/index.ts | 4 +- .../data-source/data-source.interface.ts | 2 +- .../folder-data-source.interface.ts | 2 +- .../repository/detail-repository.interface.ts | 2 +- .../repository/folder-repository.interface.ts | 2 +- .../libs/store/entity-tree-store.ts | 30 +- src/Umbraco.Web.UI.Client/libs/store/store.ts | 2 +- .../dashboard-redirect-management.element.ts | 9 +- .../document-blueprint.detail.store.ts | 2 +- .../repository/document-type.repository.ts | 18 +- .../sources/document-type.server.data.ts | 4 +- .../sources/document-type.tree.server.data.ts | 8 +- ...-workspace-view-edit-properties.element.ts | 18 +- .../repository/document.repository.ts | 12 +- .../documents/repository/document.store.ts | 8 +- .../sources/document.server.data.ts | 2 +- .../sources/document.tree.server.data.ts | 8 +- .../workspace/document-workspace.element.ts | 4 +- .../repository/media-type.repository.ts | 12 +- ...edia-type.details.server.data.interface.ts | 2 +- .../sources/media-type.tree.server.data.ts | 8 +- .../workspace/media-type-workspace.context.ts | 2 +- .../media-grid-collection-view.element.ts | 16 +- .../media/repository/media.repository.ts | 18 +- .../sources/media.detail.server.data.ts | 6 +- .../sources/media.tree.server.data.ts | 8 +- .../workspace/media-workspace.context.ts | 12 +- .../repository/member-group.repository.ts | 6 +- .../sources/member-group.tree.server.data.ts | 4 +- .../member-group-workspace.context.ts | 2 +- .../repository/member-type.repository.ts | 12 +- .../sources/member-type.tree.server.data.ts | 4 +- .../member-type-workspace.context.ts | 6 +- .../members/members/member.detail.store.ts | 16 +- .../members/repository/member.repository.ts | 6 +- .../workspace-package-builder.element.ts | 14 +- .../repository/data-type.repository.ts | 28 +- .../sources/data-type-folder.server.data.ts | 4 +- .../sources/data-type.server.data.ts | 6 +- .../sources/data-type.tree.server.data.ts | 8 +- .../workspace/data-type-workspace.context.ts | 4 +- .../workspace/data-type-workspace.element.ts | 6 +- .../repository/relation-type.repository.ts | 12 +- .../sources/relation-type.server.data.ts | 4 +- .../relation-type-workspace.context.ts | 4 +- .../relation-type-workspace.element.ts | 6 +- .../code-editor/code-editor.stories.ts | 4 +- .../shared/components/tree/tree.context.ts | 8 +- .../entity-manager-controller.ts | 6 +- ...rkspace-property-structure-helper.class.ts | 2 +- .../workspace-structure-manager.class.ts | 36 +- .../sources/stylesheet.server.data.ts | 2 +- .../templates/repository/sources/index.ts | 2 +- .../sources/template.detail.server.data.ts | 2 +- .../sources/template.tree.server.data.ts | 8 +- .../repository/template.repository.ts | 16 +- .../workspace/template-workspace.context.ts | 4 +- .../workspace/template-workspace.element.ts | 4 +- ...ashboard-translation-dictionary.element.ts | 2 +- .../entity-actions/create/create.action.ts | 2 +- .../repository/dictionary.repository.ts | 18 +- .../sources/dictionary.detail.server.data.ts | 2 +- ...ictionary.details.server.data.interface.ts | 4 +- .../sources/dictionary.tree.server.data.ts | 8 +- .../workspace/dictionary-workspace.context.ts | 4 +- .../repository/user-group.store.ts | 4 +- .../users/users/repository/user.store.ts | 4 +- .../src/core/mocks/data/dictionary.data.ts | 8 +- .../src/core/mocks/data/document.data.ts | 14 +- .../src/core/mocks/data/entity.data.ts | 2 +- .../src/core/mocks/data/media-type.data.ts | 8 +- .../src/core/mocks/data/media.data.ts | 20 +- .../src/core/mocks/data/member-group.data.ts | 6 +- .../src/core/mocks/data/member-type.data.ts | 6 +- .../src/core/mocks/data/member.data.ts | 6 +- .../src/core/mocks/data/relation-type.data.ts | 12 +- .../src/core/mocks/data/template.data.ts | 12 +- .../src/core/mocks/data/user-groups.data.ts | 10 +- .../src/core/mocks/data/users.data.ts | 200 ++++----- .../src/core/mocks/data/utils.ts | 2 +- .../core/mocks/domains/data-type.handlers.ts | 6 +- .../mocks/domains/document-type.handlers.ts | 6 +- .../core/mocks/domains/document.handlers.ts | 6 +- .../core/mocks/domains/media-type.handlers.ts | 6 +- .../src/core/mocks/domains/media.handlers.ts | 6 +- .../mocks/domains/relation-type.handlers.ts | 6 +- .../core/mocks/domains/template.handlers.ts | 6 +- .../core/mocks/domains/tree-media.handlers.ts | 6 +- .../src/core/mocks/domains/users.handlers.ts | 2 +- 90 files changed, 648 insertions(+), 648 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts index 0a87eb5f1c..1743c2b225 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts @@ -9,262 +9,265 @@ import type { OnCancel } from './CancelablePromise'; import type { OpenAPIConfig } from './OpenAPI'; const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; + return value !== undefined && value !== null; }; const isString = (value: any): value is string => { - return typeof value === 'string'; + return typeof value === 'string'; }; const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; + return isString(value) && value !== ''; }; const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); }; const isFormData = (value: any): value is FormData => { - return value instanceof FormData; + return value instanceof FormData; }; const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } }; const getQueryString = (params: Record): string => { - const qs: string[] = []; + const qs: string[] = []; - const append = (key: string, value: any) => { - qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); - }; + const append = (id: string, value: any) => { + qs.push(`${encodeURIComponent(id)}=${encodeURIComponent(String(value))}`); + }; - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - append(key, value); - } - } - }; + const process = (id: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach((v) => { + process(id, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${id}[${k}]`, v); + }); + } else { + append(id, value); + } + } + }; - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); + Object.entries(params).forEach(([id, value]) => { + process(id, value); + }); - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + if (qs.length > 0) { + return `?${qs.join('&')}`; + } - return ''; + return ''; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = config.ENCODE_PATH || encodeURI; - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; }; const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; + const process = (id: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(id, value); + } else { + formData.append(id, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([id, value]) => { + if (Array.isArray(value)) { + value.forEach((v) => process(id, v)); + } else { + process(id, value); + } + }); - return formData; - } - return undefined; + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; }; const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce( + (headers, [id, value]) => ({ + ...headers, + [id]: String(value), + }), + {} as Record + ); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } + if (options.body) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } - return new Headers(headers); + return new Headers(headers); }; const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body); + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Headers, + onCancel: OnCancel ): Promise => { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + body: body ?? formData, + method: options.method, + signal: controller.signal, + }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } + if (config.WITH_CREDENTIALS) { + request.credentials = config.CREDENTIALS; + } - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); }; const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return undefined; }; const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return undefined; }; const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + }; - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } - if (!result.ok) { - throw new ApiError(options, result, 'Generic Error'); - } + if (!result.ok) { + throw new ApiError(options, result, 'Generic Error'); + } }; /** @@ -275,32 +278,32 @@ const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => * @throws ApiError */ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options); - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(config, options, url, body, formData, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; - catchErrorCodes(options, result); + catchErrorCodes(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); }; diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index f52c407311..07488ce011 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -11,14 +11,14 @@ export type HTMLElementConstructor = new (...args: any[]) => T; export type ClassConstructor = new (...args: any[]) => T; // Users -// TODO: would the right name be Node? as entity is just something with a Key. But node is something in a content structure, aka. with hasChildren and parentKey. +// TODO: would the right name be Node? as entity is just something with a Key. But node is something in a content structure, aka. with hasChildren and parentId. export interface Entity { key: string; name: string; icon: string; type: string; hasChildren: boolean; - parentKey: string | null; + parentId: string | null; } /** Tried to find a common base of our entities — used by Entity Workspace Context */ diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts index 13cfbfe7a5..0a6d922702 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface UmbDataSource { - createScaffold(parentKey: string | null): Promise>; + createScaffold(parentId: string | null): Promise>; get(unique: string): Promise>; insert(data: CreateRequestType): Promise; update(unique: string, data: UpdateRequestType): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts index c07bf208f5..0998583c9f 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts @@ -6,7 +6,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; export interface UmbFolderDataSource { - createScaffold(parentKey: string | null): Promise>; + createScaffold(parentId: string | null): Promise>; get(unique: string): Promise>; insert(data: CreateFolderRequestModel): Promise>; update(unique: string, data: CreateFolderRequestModel): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index 11862c979b..48670bbdb5 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -1,7 +1,7 @@ import type { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbDetailRepository { - createScaffold(parentKey: string | null): Promise<{ + createScaffold(parentId: string | null): Promise<{ data?: DetailType; error?: ProblemDetailsModel; }>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts index 4a021f2bd0..5e1a016fdb 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts @@ -7,7 +7,7 @@ import type { } from '@umbraco-cms/backoffice/backend-api'; export interface UmbFolderRepository { - createFolderScaffold(parentKey: string | null): Promise<{ + createFolderScaffold(parentId: string | null): Promise<{ data?: FolderReponseModel; error?: ProblemDetailsModel; }>; diff --git a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts index 1e82f6acaa..ea94db043a 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts @@ -9,7 +9,7 @@ import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Appends items to the store @@ -22,46 +22,46 @@ export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore} data * @memberof UmbEntityTreeStore */ - updateItem(key: string, data: Partial) { - this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); + updateItem(id: string, data: Partial) { + this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.id === id)); } /** * Removes an item from the store - * @param {string} key + * @param {string} id * @memberof UmbEntityTreeStore */ - removeItem(key: string) { - this.#data.removeOne(key); + removeItem(id: string) { + this.#data.removeOne(id); } /** * An observable to observe the root items * @memberof UmbEntityTreeStore */ - rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); + rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.parentId === null)); /** * Returns an observable to observe the children of a given parent - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbEntityTreeStore */ - childrenOf(parentKey: string | null) { - return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === parentKey)); + childrenOf(parentId: string | null) { + return this.#data.getObservablePart((items) => items.filter((item) => item.parentId === parentId)); } /** - * Returns an observable to observe the items with the given keys - * @param {Array} keys + * Returns an observable to observe the items with the given ids + * @param {Array} ids * @return {*} * @memberof UmbEntityTreeStore */ - items(keys: Array) { - return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); + items(ids: Array) { + return this.#data.getObservablePart((items) => items.filter((item) => ids.includes(item.id ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/libs/store/store.ts b/src/Umbraco.Web.UI.Client/libs/store/store.ts index d4af9c2275..4961162767 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store.ts @@ -16,7 +16,7 @@ export interface UmbEntityDetailStore extends UmbDataStore { * @return {*} {T} * @memberof UmbEntityDetailStore */ - getScaffold: (entityType: string, parentKey: string | null) => T; + getScaffold: (entityType: string, parentId: string | null) => T; /** * @description - Request data by key. The data is added to the store and is returned as an Observable. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 42fa9ae950..04e3e3479e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -154,14 +154,11 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private async _removeRedirect(r: RedirectUrlResponseModel) { - if (!r.key) return; - const res = await tryExecuteAndNotify( - this, - RedirectManagementResource.deleteRedirectManagementByKey({ key: r.key }) - ); + if (!r.id) return; + const res = await tryExecuteAndNotify(this, RedirectManagementResource.deleteRedirectManagementById({ id: r.id })); if (!res.error) { // or just run a this._getRedirectData() again? - this.shadowRoot?.getElementById(`redirect-key-${r.key}`)?.remove(); + this.shadowRoot?.getElementById(`redirect-key-${r.id}`)?.remove(); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index f0efc47b4b..23e2a12bf6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -35,7 +35,7 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key)); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return {} as DocumentBlueprintDetails; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 14494da134..98b2ab40e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -60,21 +60,21 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -95,9 +95,9 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { @@ -107,10 +107,10 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // DETAILS: - async createScaffold(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async createScaffold(parentId: string | null) { + if (!parentId) throw new Error('Parent key is missing'); await this.#init; - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(parentId); } async requestByKey(key: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 561d27c049..95de705f1f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -47,11 +47,11 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource, UmbDe return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -99,9 +99,9 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index f1f3ce7aaf..d53818f95e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbDocumentStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentDetailStore. @@ -36,8 +36,8 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentModel} document * @memberof UmbDocumentStore */ - byKey(key: DocumentResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byKey(id: DocumentResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -45,7 +45,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentDetailStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 83a93a9c1a..4572b4ccca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -53,7 +53,7 @@ export class UmbDocumentServerDataSource /** * Creates a new Document scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDocumentServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 4bb080ab00..68dfbc6645 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -61,12 +61,12 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof DocumentTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -74,7 +74,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DocumentResource.getTreeDocumentChildren({ - parentKey, + parentId, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 062c5edc8d..77f1a3b537 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -17,12 +17,12 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'create/:parentKey/:documentTypeKey', + path: 'create/:parentId/:documentTypeKey', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { // TODO: use parent key: // TODO: Notice the perspective of permissions here, we need to check if the user has access to create a document of this type under this parent? - const parentKey = info.match.params.parentKey; + const parentId = info.match.params.parentId; const documentTypeKey = info.match.params.documentTypeKey; this.#workspaceContext.createScaffold(documentTypeKey); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 769559b402..0ca525fa1a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -56,21 +56,21 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -91,9 +91,9 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts index 8182c5d0f1..e1a682c55e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts @@ -3,7 +3,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; // TODO => Use models when they exist export interface MediaTypeDetailDataSource { - createScaffold(parentKey: string): Promise>; + createScaffold(parentId: string): Promise>; get(key: string): Promise>; insert(data: any): Promise; update(data: any): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index 4fa209600d..1bd4f00cca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -32,12 +32,12 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MediaTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -45,7 +45,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaTypeResource.getTreeMediaTypeChildren({ - parentKey, + parentId, }) ); } 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 04d9a806dd..4c6a6789fc 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 @@ -23,7 +23,7 @@ export class UmbWorkspaceMediaTypeContext } getEntityKey() { - return this.getData()?.key || ''; + return this.getData()?.id || ''; } getEntityType() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts index 50fb77a885..a34369425c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts @@ -118,24 +118,24 @@ export class UmbMediaGridCollectionViewElement extends UmbLitElement { private _handleOpenItem(mediaItem: EntityTreeItemResponseModel) { //TODO: Fix when we have dynamic routing - history.pushState(null, '', 'section/media/media/edit/' + mediaItem.key); + history.pushState(null, '', 'section/media/media/edit/' + mediaItem.id); } private _handleSelect(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - this._collectionContext?.select(mediaItem.key); + if (mediaItem.id) { + this._collectionContext?.select(mediaItem.id); } } private _handleDeselect(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - this._collectionContext?.deselect(mediaItem.key); + if (mediaItem.id) { + this._collectionContext?.deselect(mediaItem.id); } } private _isSelected(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - return this._selection.includes(mediaItem.key); + if (mediaItem.id) { + return this._selection.includes(mediaItem.id); } return false; } @@ -167,7 +167,7 @@ export class UmbMediaGridCollectionViewElement extends UmbLitElement { ${this._mediaItems ? repeat( this._mediaItems, - (file, index) => (file.key || '') + index, + (file, index) => (file.id || '') + index, (file) => this._renderMediaItem(file) ) : ''} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 873e8011d6..9613b81079 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -73,21 +73,21 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -108,9 +108,9 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { @@ -120,14 +120,14 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { throw new Error('Parent key is missing'); } - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(parentId); } async requestByKey(key: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 609a119df6..b8151a109f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -45,11 +45,11 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index ee9a1aa0bc..1112c85a46 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -32,11 +32,11 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MemberGroupTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { + async getChildrenOf(parentId: string | null) { // Not implemented for this tree return {}; } 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 a59fd3ec92..78644ab982 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 @@ -23,7 +23,7 @@ export class UmbWorkspaceMemberGroupContext } getEntityKey() { - return this.getData()?.key || ''; + return this.getData()?.id || ''; } getEntityType() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 81eaa12de2..ed295cee26 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -60,21 +60,21 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -95,9 +95,9 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 6202393162..4d1e28b7fe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -32,11 +32,11 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MemberTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { + async getChildrenOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented for Member Type' }; return { error }; } 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 b20ae7528e..3cd2fb008d 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 @@ -38,7 +38,7 @@ export class UmbMemberTypeWorkspaceContext } getEntityKey() { - return this.getData()?.key || ''; + return this.getData()?.id || ''; } getEntityType() { @@ -64,8 +64,8 @@ export class UmbMemberTypeWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index b110fcfbe8..18cc624687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -13,37 +13,37 @@ import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/stor * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase implements UmbEntityDetailStore { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); public groups = this.#data.asObservable(); constructor(private host: UmbControllerHostElement) { super(host, UMB_MEMBER_STORE_CONTEXT_TOKEN.toString()); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return {} as MemberDetails; } /** - * @description - Request a Member by key. The Member is added to the store and is returned as an Observable. - * @param {string} key + * @description - Request a Member by id. The Member is added to the store and is returned as an Observable. + * @param {string} id * @return {*} {(Observable)} * @memberof UmbMemberStore */ - getByKey(key: string): Observable { - // tryExecuteAndNotify(this.host, MemberResource.getMemberByKey({ key })).then(({ data }) => { + getByKey(id: string): Observable { + // tryExecuteAndNotify(this.host, MemberResource.getMemberByKey({ id })).then(({ data }) => { // if (data) {} // this.#data.appendOne(data); // } // }); // temp until Resource is updated - const member = umbMemberData.getByKey(key); + const member = umbMemberData.getByKey(id); if (member) { this.#data.appendOne(member); } - return createObservablePart(this.#data, (members) => members.find((member) => member.key === key) as MemberDetails); + return createObservablePart(this.#data, (members) => members.find((member) => member.id === id) as MemberDetails); } async save(member: Array): Promise { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts index b0e6c529c6..6cdf2a3ee4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts @@ -53,7 +53,7 @@ export class UmbMemberRepository implements UmbTreeRepository { return { data, error }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented' }; return { data: undefined, error }; } @@ -76,9 +76,9 @@ export class UmbMemberRepository implements UmbTreeRepository { return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 8903993ffb..4458d0f34a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -62,16 +62,16 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #getPackageCreated() { if (!this.entityKey) return; - const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByKey({ key: this.entityKey })); + const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedById({ id: this.entityKey })); if (!data) return; this._package = data as PackageDefinitionResponseModel; } async #download() { - if (!this._package?.key) return; + if (!this._package?.id) return; const response = await tryExecuteAndNotify( this, - PackageResource.getPackageCreatedByKeyDownload({ key: this._package.key }) + PackageResource.getPackageCreatedByIdDownload({ id: this._package.id }) ); } @@ -94,10 +94,10 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #update() { if (!this.#nameDefined()) return; - if (!this._package?.key) return; + if (!this._package?.id) return; const response = await tryExecuteAndNotify( this, - PackageResource.putPackageCreatedByKey({ key: this._package.key, requestBody: this._package }) + PackageResource.putPackageCreatedById({ id: this._package.id, requestBody: this._package }) ); if (response.error) return; @@ -135,13 +135,13 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { #renderActions() { return html`
    - ${this._package?.key + ${this._package?.id ? html` Download ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index d08e01a230..d5eba3ce40 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -77,17 +77,17 @@ export class UmbDataTypeRepository return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async requestTreeItemsOf(parentId: string | null) { + if (!parentId) throw new Error('Parent key is missing'); await this.#init; - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -104,10 +104,10 @@ export class UmbDataTypeRepository return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); + async treeItemsOf(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent key is missing'); await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { @@ -117,11 +117,11 @@ export class UmbDataTypeRepository // DETAILS: - async createScaffold(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); + async createScaffold(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent key is missing'); await this.#init; - return this.#detailSource.createScaffold(parentKey); + return this.#detailSource.createScaffold(parentId); } async requestByKey(key: string) { @@ -210,9 +210,9 @@ export class UmbDataTypeRepository } // folder - async createFolderScaffold(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); - return this.#folderSource.createScaffold(parentKey); + async createFolderScaffold(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent key is missing'); + return this.#folderSource.createScaffold(parentId); } // TODO: temp create type until backend is ready. Remove the key addition when new types are generated. @@ -226,7 +226,7 @@ export class UmbDataTypeRepository if (!error) { const treeItem: FolderTreeItemResponseModel = { $type: 'FolderTreeItemResponseModel', - parentKey: folderRequest.parentKey, + parentId: folderRequest.parentId, name: folderRequest.name, key: folderRequest.key, isFolder: true, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts index ddeea07a1a..4f88bf0dfe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts @@ -33,12 +33,12 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { const scaffold: FolderReponseModel = { $type: 'FolderReponseModel', name: '', key: uuidv4(), - parentKey, + parentId, }; return { data: scaffold }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index aab943d402..8cf3d574ff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -49,14 +49,14 @@ export class UmbDataTypeServerDataSource /** * Creates a new Data Type scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDataTypeServerDataSource */ - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { const data: DataTypeResponseModel = { $type: '', - parentKey: parentKey, + parentId: parentId, key: uuidv4(), }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index c2582f00e8..ae0b619964 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -32,17 +32,17 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDataTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async getChildrenOf(parentId: string | null) { + if (!parentId) throw new Error('Parent key is missing'); return tryExecuteAndNotify( this.#host, DataTypeResource.getTreeDataTypeChildren({ - parentKey, + parentId, }) ); } 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 4ca1a0b7f4..9adc2defd5 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 @@ -26,8 +26,8 @@ export class UmbDataTypeWorkspaceContext } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); this.setIsNew(true); this.#data.next(data); return { data }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 69ddcdeed1..befe9cd105 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -21,11 +21,11 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'create/:parentKey', + path: 'create/:parentId', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - const parentKey = info.match.params.parentKey; - this.#workspaceContext.createScaffold(parentKey); + const parentId = info.match.params.parentId; + this.#workspaceContext.createScaffold(parentId); }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index e098faaefd..0ec94bbbc5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -67,7 +67,7 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { @@ -102,14 +102,14 @@ export class UmbRelationTypeRepository implements UmbTreeRepository this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - const parentKey = info.match.params.parentKey; - this.#workspaceContext.createScaffold(parentKey); + const parentId = info.match.params.parentId; + this.#workspaceContext.createScaffold(parentId); }, }, { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts index 4892950f62..7c334e6c6c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts @@ -145,8 +145,8 @@ const codeSnippets: Record = { } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts index 8f22454e4e..29608b4f11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts @@ -93,9 +93,9 @@ export class UmbTreeContextBase implements UmbTreeContext { return this.repository!.requestRootTreeItems(); } - public async requestChildrenOf(parentKey: string | null) { + public async requestChildrenOf(parentId: string | null) { await this.#init; - return this.repository!.requestTreeItemsOf(parentKey); + return this.repository!.requestTreeItemsOf(parentId); } public async rootItems() { @@ -103,8 +103,8 @@ export class UmbTreeContextBase implements UmbTreeContext { return this.repository!.rootTreeItems(); } - public async childrenOf(parentKey: string | null) { + public async childrenOf(parentId: string | null) { await this.#init; - return this.repository!.treeItemsOf(parentKey); + return this.repository!.treeItemsOf(parentId); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index c1ee25b071..a4b3b363a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -10,7 +10,7 @@ import { ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/obse import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbEntityDetailStore } from '@umbraco-cms/backoffice/store'; -// Extend entityType base type?, so we are sure to have parentKey? +// Extend entityType base type?, so we are sure to have parentId? // TODO: switch to use EntityDetailItem ? if we can have such type? export class UmbEntityWorkspaceManager< StoreType extends UmbEntityDetailStore, @@ -88,10 +88,10 @@ export class UmbEntityWorkspaceManager< this._observeStore(); }; - create = (parentKey: string | null) => { + create = (parentId: string | null) => { this.#isNew = true; this._entityKey = uuidv4(); - this._createAtParentKey = parentKey; + this._createAtParentKey = parentId; }; save = (): Promise => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts index 651e18e549..5bd1de95f9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -77,7 +77,7 @@ export class UmbWorkspacePropertyStructureHelper { this.#workspaceContext.structure.propertyStructuresOf(groupKey), (properties) => { // If this need to be able to remove properties, we need to clean out the ones of this group.key before inserting them: - const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerKey !== groupKey); + const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerId !== groupKey); properties?.forEach((property) => { if (!_propertyStructure.find((x) => x.alias === property.alias)) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index 9b7cb37126..e857a19cef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -70,12 +70,12 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.containers ?? []; - const containers = frozenContainers.filter((x) => x.key !== containerKey); + const containers = frozenContainers.filter((x) => x.key !== containerId); this.#documentTypes.updateOne(documentTypeKey, { containers }); } - async createProperty(documentTypeKey: string | null, containerKey: string | null = null, sortOrder?: number) { + async createProperty(documentTypeKey: string | null, containerId: string | null = null, sortOrder?: number) { await this.#init; documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; const property: PropertyTypeResponseModelBaseModel = { key: generateGuid(), - containerKey: containerKey, + containerId: containerId, //sortOrder: sortOrder ?? 0, }; @@ -242,11 +242,11 @@ export class UmbWorkspacePropertyStructureManager { return ( docTypes.find((docType) => { - return docType.properties?.find((property) => property.containerKey === containerKey); + return docType.properties?.find((property) => property.containerId === containerId); }) !== undefined ); }); @@ -254,12 +254,12 @@ export class UmbWorkspacePropertyStructureManager { const props: DocumentTypePropertyTypeResponseModel[] = []; docTypes.forEach((docType) => { docType.properties?.forEach((property) => { - if (property.containerKey === containerKey) { + if (property.containerId === containerId) { props.push(property); } }); @@ -270,26 +270,26 @@ export class UmbWorkspacePropertyStructureManager { - return data.filter((x) => x.parentKey === null && x.type === containerType); + return data.filter((x) => x.parentId === null && x.type === containerType); }); } hasRootContainers(containerType: PropertyContainerTypes) { return this.#containers.getObservablePart((data) => { - return data.filter((x) => x.parentKey === null && x.type === containerType).length > 0; + return data.filter((x) => x.parentId === null && x.type === containerType).length > 0; }); } containersOfParentKey( - parentKey: PropertyTypeContainerResponseModelBaseModel['parentKey'], + parentId: PropertyTypeContainerResponseModelBaseModel['parentId'], containerType: PropertyContainerTypes ) { return this.#containers.getObservablePart((data) => { - return data.filter((x) => x.parentKey === parentKey && x.type === containerType); + return data.filter((x) => x.parentId === parentId && x.type === containerType); }); } - // TODO: Maybe this must take parentKey into account as well? + // TODO: Maybe this must take parentId into account as well? containersByNameAndType(name: string, containerType: PropertyContainerTypes) { return this.#containers.getObservablePart((data) => { return data.filter((x) => x.name === name && x.type === containerType); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts index 1e29622343..6ce1917236 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.server.data.ts @@ -19,7 +19,7 @@ export class UmbStylesheetServerDataSource implements UmbDataSource> { + createScaffold(parentId: string | null): Promise> { throw new Error('Method not implemented.'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts index b30af84dcf..d5365167d7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts @@ -6,6 +6,6 @@ import type { export interface TemplateTreeDataSource { getRootItems(): Promise>; - getChildrenOf(parentKey: string): Promise>; + getChildrenOf(parentId: string): Promise>; getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts index 7705f1ac6d..48f411710f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts @@ -42,7 +42,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour /** * Creates a new Template scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbTemplateDetailServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index 219e8cc807..da0d30ce88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -32,12 +32,12 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof TemplateTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -45,7 +45,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { return tryExecuteAndNotify( this.#host, TemplateResource.getTreeTemplateChildren({ - parentKey, + parentId, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 5567f76759..4608e50955 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -56,21 +56,21 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeDataSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeDataSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -91,9 +91,9 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { @@ -103,10 +103,10 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { throw new Error('Parent key is missing'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index 8685dbdc5a..a7b528a885 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -46,8 +46,8 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext get location header to route to new item console.log(result); 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 8f7f3eae7e..c249ded701 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 @@ -49,7 +49,7 @@ export default class UmbCreateDictionaryEntityAction extends UmbEntityActionBase const result = await this.repository?.create({ $type: '', name, - parentKey: this.unique, + parentId: this.unique, translations: [], key: '', }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 1b7729ad15..5515ade2e3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -56,21 +56,21 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } async requestTreeItems(keys: Array) { @@ -91,9 +91,9 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } async treeItems(keys: Array) { @@ -103,15 +103,15 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // DETAILS - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - return this.#detailSource.createScaffold(parentKey); + return this.#detailSource.createScaffold(parentId); } async requestByKey(key: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 39f2c1456e..9a0de80937 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -25,7 +25,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Creates a new Dictionary scaffold - * @param {string} parentKey + * @param {string} parentId * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index c99026273c..fba60eaeaf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -8,14 +8,14 @@ import { import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface DictionaryDetailDataSource { - createScaffold(parentKey: string): Promise>; + createScaffold(parentId: string): Promise>; list(skip?: number, take?: number): Promise>; get(key: string): Promise>; insert(data: DictionaryDetails): Promise; update(dictionary: DictionaryItemResponseModel): Promise; delete(key: string): Promise; export(key: string, includeChildren: boolean): Promise>; - import(fileName: string, parentKey?: string): Promise>; + import(fileName: string, parentId?: string): Promise>; upload(formData: ImportDictionaryRequestModel): Promise>; // TODO - temp only getLanguages(): Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index fa073716ed..e4f08ad2cc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -32,12 +32,12 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof DictionaryTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -45,7 +45,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DictionaryResource.getTreeDictionaryChildren({ - parentKey, + parentId, }) ); } 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 054de18f3f..25d0aac0e7 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 @@ -64,8 +64,8 @@ export class UmbDictionaryWorkspaceContext } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts index 2b4fd90559..8c663cbf61 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts @@ -23,14 +23,14 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt super(host, UMB_USER_GROUP_STORE_CONTEXT_TOKEN.toString()); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return { key: '', name: '', icon: '', type: 'user-group', hasChildren: false, - parentKey: '', + parentId: '', sections: [], permissions: [], users: [], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index 4c6791de91..46a378e70b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -25,14 +25,14 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore = [ { $type: '', - parentKey: null, + parentId: null, name: 'Hello', key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', hasChildren: true, @@ -26,7 +26,7 @@ export const data: Array = [ }, { $type: '', - parentKey: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + parentId: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', name: 'Hello again', key: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', hasChildren: false, @@ -56,12 +56,12 @@ class UmbDictionaryData extends UmbEntityData { } getTreeRoot(): Array { - const rootItems = this.data.filter((item) => item.parentKey === null); + const rootItems = this.data.filter((item) => item.parentId === null); return rootItems.map((item) => createEntityTreeItem(item)); } getTreeItemChildren(key: string): Array { - const childItems = this.data.filter((item) => item.parentKey === key); + const childItems = this.data.filter((item) => item.parentId === key); return childItems.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index e1fa80708c..c7978c9fc5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -539,7 +539,7 @@ export const treeData: Array = [ isTrashed: false, key: 'all-property-editors-document-key', isContainer: false, - parentKey: null, + parentId: null, name: 'All property editors', type: 'document', icon: 'document', @@ -554,7 +554,7 @@ export const treeData: Array = [ isTrashed: false, key: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', isContainer: false, - parentKey: null, + parentId: null, name: 'Article in english', type: 'document', icon: 'document', @@ -569,7 +569,7 @@ export const treeData: Array = [ isTrashed: false, key: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', isContainer: false, - parentKey: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + parentId: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', name: 'Blog post B', type: 'document', icon: 'document', @@ -583,7 +583,7 @@ export const treeData: Array = [ hasChildren: false, key: 'f6n7a5b2-e7c1-463a-956bc-6ck5b9bdf447', isContainer: false, - parentKey: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', + parentId: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', noAccess: false, isProtected: false, isPublished: false, @@ -598,7 +598,7 @@ export const treeData: Array = [ hasChildren: false, key: 'simple-document-key', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isProtected: false, isPublished: false, @@ -619,14 +619,14 @@ class UmbDocumentData extends UmbEntityData { } getTreeRoot(): PagedDocumentTreeItemResponseModel { - const items = this.treeData.filter((item) => item.parentKey === null); + const items = this.treeData.filter((item) => item.parentId === null); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedDocumentTreeItemResponseModel { - const items = this.treeData.filter((item) => item.parentKey === key); + const items = this.treeData.filter((item) => item.parentId === key); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index d2e43b9f49..c96e0b21bc 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -38,7 +38,7 @@ export class UmbEntityData extends UmbData { const movedItems = items.map((item) => { return { ...item, - parentKey: destinationKey, + parentId: destinationKey, }; }); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index 151158303a..99fae70851 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -11,7 +11,7 @@ export const data: Array = [ hasChildren: false, key: 'c5159663-eb82-43ee-bd23-e42dc5e71db6', isContainer: false, - parentKey: null, + parentId: null, isFolder: false, icon: '', alias: 'mediaType1', @@ -24,7 +24,7 @@ export const data: Array = [ hasChildren: false, key: '22da1b0b-c310-4730-9912-c30b3eb9802e', isContainer: false, - parentKey: null, + parentId: null, isFolder: false, icon: '', alias: 'mediaType2', @@ -42,14 +42,14 @@ class UmbMediaTypeData extends UmbEntityData { } getTreeRoot(): PagedFolderTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedFolderTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index 82f1c4d25a..226d23aa79 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -12,7 +12,7 @@ export const data: Array = [ hasChildren: false, key: 'f2f81a40-c989-4b6b-84e2-057cecd3adc1', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [ @@ -39,7 +39,7 @@ export const data: Array = [ hasChildren: false, key: '69431027-8867-45bf-a93b-72bbdabfb177', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [ @@ -66,7 +66,7 @@ export const data: Array = [ hasChildren: true, key: '69461027-8867-45bf-a93b-72bbdabfb177', isContainer: true, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [], @@ -81,7 +81,7 @@ export const data: Array = [ hasChildren: true, key: '69461027-8867-45bf-a93b-5224dabfb177', isContainer: true, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [], @@ -96,7 +96,7 @@ export const data: Array = [ hasChildren: false, key: '69431027-8867-45s7-a93b-7uibdabfb177', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-72bbdabfb177', + parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, isTrashed: false, properties: [ @@ -123,7 +123,7 @@ export const data: Array = [ hasChildren: false, key: '69431027-8867-45s7-a93b-7uibdabf2147', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-72bbdabfb177', + parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, isTrashed: false, properties: [ @@ -150,7 +150,7 @@ export const data: Array = [ hasChildren: false, key: '694hdj27-8867-45s7-a93b-7uibdabf2147', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-5224dabfb177', + parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, isTrashed: false, properties: [ @@ -177,7 +177,7 @@ export const data: Array = [ hasChildren: false, key: '694hdj27-1237-45s7-a93b-7uibdabfas47', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-5224dabfb177', + parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, isTrashed: false, properties: [ @@ -208,14 +208,14 @@ class UmbMediaData extends UmbEntityData { } getTreeRoot(): PagedContentTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedContentTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 43dd431745..6c451dadde 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -12,7 +12,7 @@ export const data: Array = [ hasChildren: false, key: '76708ccd-4179-464c-b694-6969149dd9f9', isContainer: false, - parentKey: null, + parentId: null, }, ]; @@ -26,14 +26,14 @@ class UmbMemberGroupData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index 0e548edd1b..48699e8060 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -12,7 +12,7 @@ export const data: Array = [ hasChildren: false, key: 'd59be02f-1df9-4228-aa1e-01917d806cda', isContainer: false, - parentKey: null, + parentId: null, alias: 'memberType1', properties: [], }, @@ -25,14 +25,14 @@ class UmbMemberTypeData extends UmbData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index 5eb713016a..d379a0553c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -15,7 +15,7 @@ export const data: Array = [ hasChildren: false, key: 'aaa08ccd-4179-464c-b634-6969149dd9f9', isContainer: false, - parentKey: null, + parentId: null, }, ]; @@ -29,14 +29,14 @@ class UmbMemberData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 93a7911735..597caa88bc 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -76,7 +76,7 @@ export const treeData: Array = [ key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Document On Copy', icon: 'umb:trafic', type: 'relation-type', @@ -85,7 +85,7 @@ export const treeData: Array = [ key: 'ac68cde6-763f-4231-a751-1101b57defd2', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Parent Document On Delete', icon: 'umb:trafic', type: 'relation-type', @@ -94,7 +94,7 @@ export const treeData: Array = [ key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Parent Media Folder On Delete', icon: 'umb:trafic', type: 'relation-type', @@ -103,7 +103,7 @@ export const treeData: Array = [ key: 'd421727d-43de-4205-b4c6-037404f309ad', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Related Media', icon: 'umb:trafic', type: 'relation-type', @@ -112,7 +112,7 @@ export const treeData: Array = [ key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Related Document', icon: 'umb:trafic', type: 'relation-type', @@ -137,7 +137,7 @@ class UmbRelationTypeData extends UmbEntityData { //TODO Can relation types have children? getTreeItemChildren(key: string): Array { - const childItems = this.treeData.filter((item) => item.parentKey === key); + const childItems = this.treeData.filter((item) => item.parentId === key); return childItems.map((item) => createEntityTreeItem(item)); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index 210f4b48d5..8996295da9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -26,7 +26,7 @@ export const data: Array = [ $type: '', key: '2bf464b6-3aca-4388-b043-4eb439cc2643', isContainer: false, - parentKey: null, + parentId: null, name: 'Doc 1', type: 'template', icon: 'icon-layout', @@ -37,7 +37,7 @@ export const data: Array = [ @{ if (Model?.Areas.Any() != true) { return; } } - +
    @foreach (var area in Model.Areas) @@ -50,7 +50,7 @@ export const data: Array = [ $type: '', key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', isContainer: false, - parentKey: null, + parentId: null, name: 'Test', type: 'template', icon: 'icon-layout', @@ -63,7 +63,7 @@ export const data: Array = [ $type: '', key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', isContainer: false, - parentKey: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', + parentId: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', name: 'Child', type: 'template', icon: 'icon-layout', @@ -114,14 +114,14 @@ class UmbTemplateData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + const items = this.data.filter((item) => item.parentId === key); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts index 4da8dbb21c..8f961ea7a7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts @@ -17,7 +17,7 @@ export const data: Array = [ key: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', name: 'Administrators', icon: 'umb:medal', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: [ @@ -34,7 +34,7 @@ export const data: Array = [ key: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', name: 'Workspaces', icon: 'umb:tools', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Members', 'Umb.Section.Media'], @@ -45,7 +45,7 @@ export const data: Array = [ key: 'b847398a-6875-4d7a-9f6d-231256b81471', name: 'Sensitive Data', icon: 'umb:lock', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Settings', 'Umb.Section.Members', 'Umb.Section.Media', 'Umb.Section.Content'], @@ -56,7 +56,7 @@ export const data: Array = [ key: '2668f09b-320c-48a7-a78a-95047026ec0e', name: 'Translators', icon: 'umb:globe', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Packages', 'Umb.Section.Settings'], @@ -67,7 +67,7 @@ export const data: Array = [ key: '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', name: 'Writers', icon: 'umb:edit', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Content'], diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts index 28440cbc10..da43f71bac 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts @@ -49,7 +49,7 @@ export const data: Array = [ key: 'a953e376-89f8-46d1-bed9-1b47743aa38a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -69,7 +69,7 @@ export const data: Array = [ key: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -93,7 +93,7 @@ export const data: Array = [ key: '9f63996f-71e9-49be-bc21-5a69ea97e72e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -117,7 +117,7 @@ export const data: Array = [ key: 'ff1d1bff-b6d2-444b-950a-68b5eec46277', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -141,7 +141,7 @@ export const data: Array = [ key: 'c9cf849f-0536-4e38-a91a-02c8c45a6f47', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -161,7 +161,7 @@ export const data: Array = [ key: 'd9cbd4cd-6950-42b2-be57-1f5829c6dd19', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -181,7 +181,7 @@ export const data: Array = [ key: '515b2c5c-c195-43f2-8e52-4733572030c7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -207,7 +207,7 @@ export const data: Array = [ key: 'db8a0800-28b3-4f0b-9152-37debea6b8d7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -231,7 +231,7 @@ export const data: Array = [ key: '3fe38c9b-b5a3-4897-8507-3f062a25659e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -251,7 +251,7 @@ export const data: Array = [ key: '09e99152-bc3e-449f-9fa1-322ab3390b7d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -275,7 +275,7 @@ export const data: Array = [ key: '5680bd61-9b58-4ecb-ae06-bdfacebe05f2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -295,7 +295,7 @@ export const data: Array = [ key: '1c2cb6b5-1b96-47c0-a2b7-f5dd6bd3d325', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -319,7 +319,7 @@ export const data: Array = [ key: 'ac6cc4e4-ab38-4920-8646-63c7652fc97a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -339,7 +339,7 @@ export const data: Array = [ key: 'a5e5bbe4-acb4-4c40-b15a-eab510338620', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -363,7 +363,7 @@ export const data: Array = [ key: 'c775af23-4aec-4d24-a2d1-5b0d666c9eb4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -387,7 +387,7 @@ export const data: Array = [ key: '3333e2dc-b8a6-4db3-af00-ac1c1e1d5d9c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -407,7 +407,7 @@ export const data: Array = [ key: '506126e3-2b96-4746-bd0a-1e6b2283021f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -427,7 +427,7 @@ export const data: Array = [ key: 'caf10593-3710-4417-af3d-7015f88f5fe3', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -451,7 +451,7 @@ export const data: Array = [ key: 'e2492eeb-bcc2-4c95-8893-27c45c895c9c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -476,7 +476,7 @@ export const data: Array = [ key: '8c93b359-a719-4453-991c-e2d5bcc965c3', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -500,7 +500,7 @@ export const data: Array = [ key: '4cd22c7c-baeb-463f-89e5-e0a6bb3ea27e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -524,7 +524,7 @@ export const data: Array = [ key: 'ccd03e29-e924-4240-a1e4-b0114c66aae9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -550,7 +550,7 @@ export const data: Array = [ key: '7ffa97ca-0702-4bcf-8e32-751bae9aa156', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -574,7 +574,7 @@ export const data: Array = [ key: 'e139ec4b-b49a-48c0-a1a3-1c2e8e95366d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -598,7 +598,7 @@ export const data: Array = [ key: '30d29d56-cbb2-41fd-9154-94b0f0d9a385', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -622,7 +622,7 @@ export const data: Array = [ key: '3ecac483-c4df-4971-a357-a0be03c520ca', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -642,7 +642,7 @@ export const data: Array = [ key: '2dae8bf8-5fdd-4efa-a493-cbec11b179e2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -666,7 +666,7 @@ export const data: Array = [ key: '0397dd89-72c5-4d0b-a544-dc1c9c0a932d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -691,7 +691,7 @@ export const data: Array = [ key: '4f2f64c1-1b9b-4217-80c7-7760962215af', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -716,7 +716,7 @@ export const data: Array = [ key: '6cefa1e1-4302-4003-81df-3fa4759245a4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -741,7 +741,7 @@ export const data: Array = [ key: '2ba9ae27-7860-42ea-b628-c5484b64b2c6', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -761,7 +761,7 @@ export const data: Array = [ key: 'f4bee7c8-7a94-4937-8e6e-ceb55c9ec8b4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -781,7 +781,7 @@ export const data: Array = [ key: '3ccfeec3-1c96-4205-ae90-3297702d0d59', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -805,7 +805,7 @@ export const data: Array = [ key: 'cb0e3a46-1e99-4dc3-a206-462c3d985916', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -829,7 +829,7 @@ export const data: Array = [ key: 'eb5af046-f2af-490f-a195-b0faff73f538', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -849,7 +849,7 @@ export const data: Array = [ key: '42037971-4e06-41a8-be76-04313571fe54', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -869,7 +869,7 @@ export const data: Array = [ key: 'd71ba775-2920-42de-b5a1-09104e81cf27', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -895,7 +895,7 @@ export const data: Array = [ key: 'ed94e56b-64d5-43d0-9c9c-7149a0b26657', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -919,7 +919,7 @@ export const data: Array = [ key: '8acfe50e-2e15-460d-b368-0510d08fea4c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -944,7 +944,7 @@ export const data: Array = [ key: '73401c00-3b05-465b-ab59-8def5af4ec54', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -968,7 +968,7 @@ export const data: Array = [ key: 'ffed1abb-aee0-45f1-9915-5ea7da165011', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -992,7 +992,7 @@ export const data: Array = [ key: '754fafb2-ec86-4313-8c5a-26a0a460df70', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1016,7 +1016,7 @@ export const data: Array = [ key: 'eae3c035-1b9d-4d1d-b626-89a7c3b3bc39', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1040,7 +1040,7 @@ export const data: Array = [ key: '4bbf5669-99ec-4e60-b159-2198990ee8f1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1060,7 +1060,7 @@ export const data: Array = [ key: 'bc17c986-9869-49f4-baee-d888bf013f27', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1085,7 +1085,7 @@ export const data: Array = [ key: 'f015b8a7-35b7-4859-a506-253ee95f92f4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1110,7 +1110,7 @@ export const data: Array = [ key: 'b5fd8d4f-eecc-4bea-b841-b4ba3621e8ba', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1134,7 +1134,7 @@ export const data: Array = [ key: '0bfe956a-5293-48bf-8c43-fd9be5c8dd19', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1158,7 +1158,7 @@ export const data: Array = [ key: 'f2914aaa-de0a-4285-b820-88d22ae7a566', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1182,7 +1182,7 @@ export const data: Array = [ key: 'f5489ee0-589d-47e5-8c11-b5e2ef027519', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1206,7 +1206,7 @@ export const data: Array = [ key: '293074af-8188-4151-b025-2b43f6aa6c2c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1226,7 +1226,7 @@ export const data: Array = [ key: '93765192-b40f-4bf2-8c06-1d5ffb6989ae', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1246,7 +1246,7 @@ export const data: Array = [ key: '59f1023c-7ce6-4c78-a1ee-dcb4625b9281', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1266,7 +1266,7 @@ export const data: Array = [ key: '42592a81-f584-4b77-b312-b8e268203c22', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1286,7 +1286,7 @@ export const data: Array = [ key: '8ad78a84-8183-4833-9f8b-07b3ea8a881c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1310,7 +1310,7 @@ export const data: Array = [ key: '3f7bc8b5-df8b-4a79-a8bf-f379c63b8d01', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1334,7 +1334,7 @@ export const data: Array = [ key: '09901602-688a-4c83-a977-51c16950a2c1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1358,7 +1358,7 @@ export const data: Array = [ key: '060972c7-9b23-4788-8dc3-c2fcec1d002e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1382,7 +1382,7 @@ export const data: Array = [ key: 'ccf7639c-09d9-4de6-88ec-be51be7f9d69', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1406,7 +1406,7 @@ export const data: Array = [ key: '2c6b24a4-c0d2-4efe-8a09-68b61d2a17ef', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1430,7 +1430,7 @@ export const data: Array = [ key: 'ff7a2003-f8d7-4fbc-96cb-ee221bdc01c9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1450,7 +1450,7 @@ export const data: Array = [ key: 'b7f7b275-f62d-44ba-a6b0-0e7e83fe4e49', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1474,7 +1474,7 @@ export const data: Array = [ key: '18a9a6bc-ae4c-49b0-8afd-43bc214053f4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1498,7 +1498,7 @@ export const data: Array = [ key: '14fa1c36-1252-433e-a1ad-63cf5c9aba62', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1524,7 +1524,7 @@ export const data: Array = [ key: '7cb9327f-6aeb-47af-80b3-4b85abde1f5f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1548,7 +1548,7 @@ export const data: Array = [ key: '0574e903-ba72-49ee-b838-4eb200e68612', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1573,7 +1573,7 @@ export const data: Array = [ key: '6e4515d6-4a67-4f47-8783-1d074c1d1f75', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1597,7 +1597,7 @@ export const data: Array = [ key: '4faa2064-6776-4cc0-8bc1-3ceaa5884a0f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1617,7 +1617,7 @@ export const data: Array = [ key: '0cccec0d-d7c4-47bc-97b0-bd55dca42dd7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1642,7 +1642,7 @@ export const data: Array = [ key: 'd6ffe266-f024-45c2-a1cd-f39bdbc00a5b', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1666,7 +1666,7 @@ export const data: Array = [ key: '72d3047a-8c48-4425-ad11-a4a64281e7e5', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1690,7 +1690,7 @@ export const data: Array = [ key: 'ebfe0335-6926-433d-90de-82f9661955f9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1714,7 +1714,7 @@ export const data: Array = [ key: 'e6e833fb-a872-4364-893c-b6bfc9802043', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1738,7 +1738,7 @@ export const data: Array = [ key: 'abd4d295-9ebb-4a0d-bc07-e2a662671e18', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1762,7 +1762,7 @@ export const data: Array = [ key: '29d42fe1-b465-4dfe-8d29-10286474d625', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1786,7 +1786,7 @@ export const data: Array = [ key: '690535f5-194a-4e32-b569-608fbf279059', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1810,7 +1810,7 @@ export const data: Array = [ key: '13b5e542-e779-48df-b7f9-2c7def0e2e55', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1834,7 +1834,7 @@ export const data: Array = [ key: 'af5bfaaf-1597-4ad1-aa1e-206f78a91674', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1854,7 +1854,7 @@ export const data: Array = [ key: '8f39464a-2e49-498b-b8b8-cf2926978e83', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1879,7 +1879,7 @@ export const data: Array = [ key: 'ac4785f1-b6f5-4d2d-99e6-f62a96947f8c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1899,7 +1899,7 @@ export const data: Array = [ key: 'd89ada67-eca1-475a-9273-0c69b56116da', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1924,7 +1924,7 @@ export const data: Array = [ key: '03ced59c-40b3-482a-8470-b12f56974a0f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1949,7 +1949,7 @@ export const data: Array = [ key: 'dcfba56e-5f3c-446b-a4ef-18da66df8181', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1973,7 +1973,7 @@ export const data: Array = [ key: '63be3c07-9178-4c2e-810a-6bbdbbe16dcb', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1998,7 +1998,7 @@ export const data: Array = [ key: 'c57661ef-8f66-4502-91cb-2069a186ce79', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2022,7 +2022,7 @@ export const data: Array = [ key: 'b5fbd289-2900-4328-8d1f-0a6780be3585', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2046,7 +2046,7 @@ export const data: Array = [ key: '9ca26535-5288-4b37-8e3b-96b3530de3d1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2070,7 +2070,7 @@ export const data: Array = [ key: '19998fc5-2902-4646-9cf2-395404da2b2a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2095,7 +2095,7 @@ export const data: Array = [ key: '468a904c-f87c-4079-920b-74c6aa3a5242', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2120,7 +2120,7 @@ export const data: Array = [ key: '60336828-85ed-4b5a-abf6-869d6902ad93', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2145,7 +2145,7 @@ export const data: Array = [ key: '2b0c8ffe-4bcb-4df6-b519-3358a5c90480', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2169,7 +2169,7 @@ export const data: Array = [ key: 'c967ff49-f967-449b-9aab-e5ca72255a61', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2194,7 +2194,7 @@ export const data: Array = [ key: '594040ce-c6f7-49e7-8f4a-ffa8c42a2102', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2214,7 +2214,7 @@ export const data: Array = [ key: '33806fc1-d4a9-4ddb-8d57-3c087ea1f489', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2238,7 +2238,7 @@ export const data: Array = [ key: 'a59a5259-9393-4c49-a5be-56a475b27640', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2262,7 +2262,7 @@ export const data: Array = [ key: '9e96841c-131d-420a-bdc8-4ba087f0f11c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2286,7 +2286,7 @@ export const data: Array = [ key: '84eaae2a-9aa8-4745-b4c3-fad2f5632e85', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2311,7 +2311,7 @@ export const data: Array = [ key: '6fe86358-f3fd-4f7d-8d28-e867562569f2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2331,7 +2331,7 @@ export const data: Array = [ key: '365fd725-81c7-48f0-be68-4dbcf15f1ca9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2351,7 +2351,7 @@ export const data: Array = [ key: 'b6028623-995e-4eee-8142-723141030692', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 325e8e46b0..09821c2923 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -18,7 +18,7 @@ export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => hasChildren: item.hasChildren, key: item.key, isContainer: item.isContainer, - parentKey: item.parentKey, + parentId: item.parentId, }; }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts index d235482f9a..33adfde1df 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts @@ -16,10 +16,10 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/data-type/children'), (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbDataTypeData.getTreeItemChildren(parentKey); + const children = umbDataTypeData.getTreeItemChildren(parentId); const response = { total: children.length, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index b9ae6eabca..52f160d4a4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -41,10 +41,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbDocumentTypeData.getTreeItemChildren(parentKey); + const children = umbDocumentTypeData.getTreeItemChildren(parentId); const response = { total: children.length, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index b20817747d..77c60de06c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -20,9 +20,9 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbDocumentData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbDocumentData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts index 0b16b0e0a8..b4a9690fc1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const response = umbMediaTypeData.getTreeItemChildren(parentKey); + const response = umbMediaTypeData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts index cd7c2479f4..05051b1545 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts @@ -42,9 +42,9 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbMediaData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbMediaData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts index d1e39b7a1b..9e596c0e7b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -23,10 +23,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbRelationTypeData.getTreeItemChildren(parentKey); + const children = umbRelationTypeData.getTreeItemChildren(parentId); const response = { total: children.length, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index e0bd906f49..8f0685cb62 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -11,10 +11,10 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/template/children'), (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const response = umbTemplateData.getTreeItemChildren(parentKey); + const response = umbTemplateData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts index b61126fa72..b960e381f9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts @@ -9,9 +9,9 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbMediaData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbMediaData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index 298b454273..076ea54e2b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -57,7 +57,7 @@ export const handlers = [ updateDate: new Date().toISOString(), createDate: new Date().toISOString(), failedLoginAttempts: 0, - parentKey: '', + parentId: '', hasChildren: false, type: 'user', icon: 'umb:icon-user', From 925b14e35e26189e6b7d12cf9f7ff8b17ca390fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 16:08:06 +0200 Subject: [PATCH 521/550] tiny correction --- .../workspace/workspace-package-builder.element.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 4458d0f34a..9a8b520dd4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -69,10 +69,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #download() { if (!this._package?.id) return; - const response = await tryExecuteAndNotify( - this, - PackageResource.getPackageCreatedByIdDownload({ id: this._package.id }) - ); + await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByIdDownload({ id: this._package.id })); } #nameDefined() { From 4467ef1a907a34483fe9e4e8826cf35085008491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 16:15:40 +0200 Subject: [PATCH 522/550] batch 4 --- .../libs/modal/token/template-modal.token.ts | 4 +- .../libs/store/store-base.ts | 1 + .../packages-created-overview.element.ts | 12 +-- .../views/health-check-group.element.ts | 12 +-- .../repository/data-type.repository.ts | 2 +- .../data-types/repository/data-type.store.ts | 10 +-- .../workspace/data-type-workspace.context.ts | 12 +-- .../repository/relation-type.store.ts | 10 +-- .../relation-type-workspace.context.ts | 18 ++-- .../input-template-picker.element.ts | 14 +-- .../template-card/template-card.element.ts | 90 +++++++++---------- ...rkspace-property-structure-helper.class.ts | 12 +-- .../workspace-structure-manager.class.ts | 62 ++++++------- .../modals/template/template-modal.element.ts | 16 ++-- .../workspace/template-workspace.context.ts | 2 +- .../workspace/dictionary-workspace.context.ts | 2 +- .../repository/user-group.store.ts | 18 ++-- 17 files changed, 149 insertions(+), 148 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts index e4957c444a..55901ab786 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts @@ -1,12 +1,12 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbTemplateModalData { - key: string; + id: string; language?: 'razor' | 'typescript' | 'javascript' | 'css' | 'markdown' | 'json' | 'html'; } export interface UmbTemplateModalResult { - key: string; + id: string; } export const UMB_TEMPLATE_MODAL = new UmbModalToken( diff --git a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts index a934ab6871..4021307cd6 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts @@ -1,6 +1,7 @@ import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +// TODO: Make a Store interface? export class UmbStoreBase { constructor(protected _host: UmbControllerHostElement, public readonly storeAlias: string) { new UmbContextProviderController(_host, storeAlias, this); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index 11cd97a2fc..ced8c1afc8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -95,7 +95,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { ${repeat( this._createdPackages, - (item) => item.key, + (item) => item.id, (item) => this.#renderPackageItem(item) )} @@ -113,8 +113,8 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { } #packageBuilder(p: PackageDefinitionResponseModel) { - if (!p.key) return; - window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.key}`); + if (!p.id) return; + window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.id}`); } #renderPagination() { @@ -133,7 +133,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { } async #deletePackage(p: PackageDefinitionResponseModel) { - if (!p.key) return; + if (!p.id) return; const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { color: 'danger', headline: `Remove ${p.name}?`, @@ -143,9 +143,9 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { await modalHandler?.onSubmit(); - const { error } = await tryExecuteAndNotify(this, PackageResource.deletePackageCreatedByKey({ key: p.key })); + const { error } = await tryExecuteAndNotify(this, PackageResource.deletePackageCreatedById({ id: p.id })); if (error) return; - const index = this._createdPackages.findIndex((x) => x.key === p.key); + const index = this._createdPackages.findIndex((x) => x.id === p.id); this._createdPackages.splice(index, 1); this.requestUpdate(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts index 97459331cf..8480c9d534 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts @@ -87,7 +87,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _checks?: HealthCheckModel[]; @state() - private _keyResults?: HealthCheckWithResultPresentationModel[]; + private _idResults?: HealthCheckWithResultPresentationModel[]; private _api?: UmbHealthCheckContext; @@ -106,7 +106,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { }); this._api?.results.subscribe((results) => { - this._keyResults = results?.checks; + this._idResults = results?.checks; }); }); } @@ -143,18 +143,18 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { ${this._group?.checks?.map((check) => { return html`

    ${check.description}

    - ${check.key ? this.renderCheckResults(check.key) : nothing} + ${check.id ? this.renderCheckResults(check.id) : nothing}
    `; })}
    `; } - renderCheckResults(key: string) { - if (!this._keyResults) { + renderCheckResults(id: string) { + if (!this._idResults) { return nothing; } - const checkResults = this._keyResults.find((x) => x.key === key); + const checkResults = this._idResults.find((x) => x.id === id); if (!checkResults) { return nothing; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index d5eba3ce40..e3cdede515 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -140,7 +140,7 @@ export class UmbDataTypeRepository async byKey(key: string) { if (!key) throw new Error('Key is missing'); await this.#init; - return this.#detailStore!.byKey(key); + return this.#detailStore!.byId(key); } // Could potentially be general methods: diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index c50fc3644c..71db9b0013 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -13,7 +13,7 @@ export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDataTypeStore. @@ -35,11 +35,11 @@ export class UmbDataTypeStore extends UmbStoreBase { /** * Append a data-type to the store - * @param {key} DataTypeModel key. + * @param {id} DataTypeModel id. * @memberof UmbDataTypeStore */ - byKey(key: DataTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byId(id: DataTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -47,7 +47,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDataTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } 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 9adc2defd5..4bd45f3a37 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 @@ -12,14 +12,14 @@ export class UmbDataTypeWorkspaceContext #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); - key = this.#data.getObservablePart((data) => data?.key); + id = this.#data.getObservablePart((data) => data?.id); constructor(host: UmbControllerHostElement) { super(host, new UmbDataTypeRepository(host)); } - async load(key: string) { - const { data } = await this.repository.requestByKey(key); + async load(id: string) { + const { data } = await this.repository.requestByKey(id); if (data) { this.setIsNew(false); this.#data.update(data); @@ -38,7 +38,7 @@ export class UmbDataTypeWorkspaceContext } getEntityKey() { - return this.getData()?.key || ''; + return this.getData()?.id || ''; } getEntityType() { @@ -79,8 +79,8 @@ export class UmbDataTypeWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts index 9703dd3a41..f8ac1dd072 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts @@ -13,7 +13,7 @@ export const UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbRelationTypeStore. @@ -35,11 +35,11 @@ export class UmbRelationTypeStore extends UmbStoreBase { /** * Append a relation-type to the store - * @param {key} RelationTypeResponseModel key. + * @param {id} RelationTypeResponseModel id. * @memberof UmbRelationTypeStore */ - byKey(key: RelationTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byKey(id: RelationTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -47,7 +47,7 @@ export class UmbRelationTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbRelationTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 35d6abea72..f70b70f141 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -13,14 +13,14 @@ export class UmbRelationTypeWorkspaceContext #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); - key = this.#data.getObservablePart((data) => data?.key); + id = this.#data.getObservablePart((data) => data?.id); constructor(host: UmbControllerHostElement) { super(host, new UmbRelationTypeRepository(host)); } - async load(key: string) { - const { data } = await this.repository.requestByKey(key); + async load(id: string) { + const { data } = await this.repository.requestByKey(id); if (data) { this.setIsNew(false); @@ -40,7 +40,7 @@ export class UmbRelationTypeWorkspaceContext } getEntityKey() { - return this.getData()?.key || ''; + return this.getData()?.id || ''; } getEntityType() { @@ -63,14 +63,14 @@ export class UmbRelationTypeWorkspaceContext this.setIsNew(false); } - update(key: K, value: RelationTypeBaseModel[K]) { - console.log('update', key, value); + update(id: K, value: RelationTypeBaseModel[K]) { + console.log('update', id, value); - this.#data.next({ ...this.#data.value, [key]: value }); + this.#data.next({ ...this.#data.value, [id]: value }); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index 3c7320e1a6..aa47ff72d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -119,7 +119,7 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen }); } - #removeTemplate(key: string) { + #removeTemplate(id: string) { /* TODO: We need to follow up on this experience. Could we test if this document type is in use, if so we should have a dialog notifying the user(Dialog, are you sure...) about that we might will break something? @@ -129,14 +129,14 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen In current backoffice we just prevent deleting a default when there are other templates. But if its the only one its okay. This is a weird experience, so we should make something that makes more sense. BTW. its weird cause the damage of removing the default template is equally bad when there is one or more templates. */ - this.allowedKeys = this.allowedKeys.filter((x) => x !== key); + this.allowedKeys = this.allowedKeys.filter((x) => x !== id); } #openTemplate(e: CustomEvent) { - const key = (e.target as UmbTemplateCardElement).value; + const id = (e.target as UmbTemplateCardElement).value; this._modalContext?.open(UMB_TEMPLATE_MODAL, { - key: key as string, + id: id as string, language: 'razor', }); } @@ -148,14 +148,14 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen + ?default="${template.id === this.defaultKey}"> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts index 50f8cc5484..ec7cbf1f29 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts @@ -15,6 +15,51 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-template-card') export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { + @property({ type: String }) + name = ''; + + @property({ type: Boolean, reflect: true }) + default = false; + + _id = ''; + @property({ type: String }) + public set id(newId: string) { + this._id = newId; + super.value = newId; + } + public get id() { + return this._id; + } + + protected getFormElement() { + return undefined; + } + + #setSelection(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + //this.selected = true; + this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); + } + #openTemplate(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dispatchEvent(new CustomEvent('open', { bubbles: true, composed: true })); + } + + render() { + return html`
    + + + ${this.default ? '(Default template)' : 'Set default'} + + +
    `; + } + static styles = [ UUITextStyles, css` @@ -114,51 +159,6 @@ export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { } `, ]; - - @property({ type: String }) - name = ''; - - @property({ type: Boolean, reflect: true }) - default = false; - - _key = ''; - @property({ type: String }) - public set key(newKey: string) { - this._key = newKey; - super.value = newKey; - } - public get key() { - return this._key; - } - - protected getFormElement() { - return undefined; - } - - #setSelection(e: KeyboardEvent) { - e.preventDefault(); - e.stopPropagation(); - //this.selected = true; - this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); - } - #openTemplate(e: KeyboardEvent) { - e.preventDefault(); - e.stopPropagation(); - this.dispatchEvent(new CustomEvent('open', { bubbles: true, composed: true })); - } - - render() { - return html`
    - - - ${this.default ? '(Default template)' : 'Set default'} - - -
    `; - } } export default UmbTemplateCardElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts index 5bd1de95f9..3be974fbbf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -69,15 +69,15 @@ export class UmbWorkspacePropertyStructureHelper { } } - private _observePropertyStructureOf(groupKey?: string | null) { - if (!this.#workspaceContext || groupKey === undefined) return; + private _observePropertyStructureOf(groupId?: string | null) { + if (!this.#workspaceContext || groupId === undefined) return; new UmbObserverController( this.#host, - this.#workspaceContext.structure.propertyStructuresOf(groupKey), + this.#workspaceContext.structure.propertyStructuresOf(groupId), (properties) => { - // If this need to be able to remove properties, we need to clean out the ones of this group.key before inserting them: - const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerId !== groupKey); + // If this need to be able to remove properties, we need to clean out the ones of this group.id before inserting them: + const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerId !== groupId); properties?.forEach((property) => { if (!_propertyStructure.find((x) => x.alias === property.alias)) { @@ -93,7 +93,7 @@ export class UmbWorkspacePropertyStructureHelper { // Fire update to subscribers: this.#propertyStructure.next(_propertyStructure); }, - '_observePropertyStructureOfGroup' + groupKey + '_observePropertyStructureOfGroup' + groupId ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index e857a19cef..094c4ae9c8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -29,13 +29,13 @@ export class UmbWorkspacePropertyStructureManager(); - #documentTypes = new ArrayState([], (x) => x.key); + #documentTypes = new ArrayState([], (x) => x.id); readonly documentTypes = this.#documentTypes.asObservable(); private readonly _documentTypeContainers = this.#documentTypes.getObservablePart((x) => x.flatMap((x) => x.containers ?? []) ); - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement, typeRepository: R) { this.#host = host; @@ -59,12 +59,12 @@ export class UmbWorkspacePropertyStructureManager x.key === key)) return; - await this._loadType(key); + private async _ensureType(id?: string) { + if (!id) return; + if (this.#documentTypes.getValue().find((x) => x.id === id)) return; + await this._loadType(id); } - private async _loadType(key?: string) { - if (!key) return {}; + private async _loadType(id?: string) { + if (!id) return {}; - const { data } = await this.#documentTypeRepository.requestByKey(key); + const { data } = await this.#documentTypeRepository.requestByKey(id); if (!data) return {}; await this._observeDocumentType(data); @@ -104,13 +104,13 @@ export class UmbWorkspacePropertyStructureManager { + new UmbObserverController(this.#host, await this.#documentTypeRepository.byKey(data.id), (docType) => { if (docType) { // TODO: Handle if there was changes made to the specific document type in this context. /* @@ -124,14 +124,14 @@ export class UmbWorkspacePropertyStructureManager { - this._ensureType(composition.key); + this._ensureType(composition.id); }); } /* private async _initDocumentTypeContainers(documentType: T) { documentType.containers?.forEach((container) => { - this.#containers.appendOne({ ...container, _ownerDocumentTypeKey: documentType.key }); + this.#containers.appendOne({ ...container, _ownerDocumentTypeKey: documentType.id }); }); } */ @@ -139,10 +139,10 @@ export class UmbWorkspacePropertyStructureManager x.find((y) => y.key === this.#rootDocumentTypeKey)); + return this.#documentTypes.getObservablePart((x) => x.find((y) => y.id === this.#rootDocumentTypeKey)); } getRootDocumentType() { - return this.#documentTypes.getValue().find((y) => y.key === this.#rootDocumentTypeKey); + return this.#documentTypes.getValue().find((y) => y.id === this.#rootDocumentTypeKey); } updateRootDocumentType(entry: T) { this.#documentTypes.updateOne(this.#rootDocumentTypeKey, entry); @@ -160,14 +160,14 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.containers ?? [])]; + const containers = [...(this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.containers ?? [])]; containers.push(container); this.#documentTypes.updateOne(documentTypeKey, { containers }); @@ -179,8 +179,8 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.containers ?? []; - const containers = frozenContainers.filter((x) => x.key !== containerId); + const frozenContainers = this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.containers ?? []; + const containers = frozenContainers.filter((x) => x.id !== containerId); this.#documentTypes.updateOne(documentTypeKey, { containers }); } @@ -190,12 +190,12 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.properties ?? [])]; + const properties = [...(this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.properties ?? [])]; properties.push(property); this.#documentTypes.updateOne(documentTypeKey, { properties }); @@ -211,9 +211,9 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.properties ?? []; + const frozenProperties = this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.properties ?? []; - const properties = partialUpdateFrozenArray(frozenProperties, partialUpdate, (x) => x.key === propertyKey!); + const properties = partialUpdateFrozenArray(frozenProperties, partialUpdate, (x) => x.id === propertyKey!); this.#documentTypes.updateOne(documentTypeKey, { properties }); } @@ -221,7 +221,7 @@ export class UmbWorkspacePropertyStructureManager { - const docType = docTypes.find((x) => x.key === this.#rootDocumentTypeKey); + const docType = docTypes.find((x) => x.id === this.#rootDocumentTypeKey); return docType?.name ?? ''; }); } @@ -229,14 +229,14 @@ export class UmbWorkspacePropertyStructureManager(mappingFunction: MappingFunction) { return this.#documentTypes.getObservablePart((docTypes) => { - const docType = docTypes.find((x) => x.key === this.#rootDocumentTypeKey); + const docType = docTypes.find((x) => x.id === this.#rootDocumentTypeKey); return docType ? mappingFunction(docType) : undefined; }); } /* - nameOfDocumentType(key: string) { + nameOfDocumentType(id: string) { return this.#documentTypes.getObservablePart((docTypes) => { - const docType = docTypes.find((x) => x.key === key); + const docType = docTypes.find((x) => x.id === id); return docType?.name ?? ''; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts index 1ad00017e4..8efbffec51 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-template-modal') export class UmbTemplateModalElement extends UmbModalBaseElement { @state() - _key = ''; + _id = ''; @state() _template?: TemplateResponseModel; @@ -26,16 +26,16 @@ export class UmbTemplateModalElement extends UmbModalBaseElement { - #groups = new ArrayState([], (x) => x.key); + #groups = new ArrayState([], (x) => x.id); public groups = this.#groups.asObservable(); constructor(host: UmbControllerHostElement) { @@ -25,7 +25,7 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt getScaffold(entityType: string, parentId: string | null) { return { - key: '', + id: '', name: '', icon: '', type: 'user-group', @@ -49,27 +49,27 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt return this.groups; } - getByKey(key: string) { + getByKey(id: string) { // TODO: use Fetcher API. // TODO: only fetch if the data type is not in the store? - fetch(`/umbraco/backoffice/user-groups/details/${key}`) + fetch(`/umbraco/backoffice/user-groups/details/${id}`) .then((res) => res.json()) .then((data) => { this.#groups.append([data]); }); - return this.#groups.getObservablePart((userGroups) => userGroups.find((userGroup) => userGroup.key === key)); + return this.#groups.getObservablePart((userGroups) => userGroups.find((userGroup) => userGroup.id === id)); } - getByKeys(keys: Array) { - const params = keys.map((key) => `key=${key}`).join('&'); + getByKeys(ids: Array) { + const params = ids.map((id) => `id=${id}`).join('&'); fetch(`/umbraco/backoffice/user-groups/getByKeys?${params}`) .then((res) => res.json()) .then((data) => { this.#groups.append(data); }); - return this.#groups.getObservablePart((items) => items.filter((node) => keys.includes(node.key))); + return this.#groups.getObservablePart((items) => items.filter((node) => ids.includes(node.id))); } async save(userGroups: Array) { @@ -78,7 +78,7 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt // TODO: implement so user group store updates the users, but these needs to save as well..? /* if (this._userStore && userGroup.users) { - await this._userStore.updateUserGroup(userGroup.users, userGroup.key); + await this._userStore.updateUserGroup(userGroup.users, userGroup.id); } */ From bdb5d92e069fe467f581a07b15e6f5da44453846 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 16:18:58 +0200 Subject: [PATCH 523/550] rename key to id internal models --- .../libs/models/index.ts | 14 +- .../document-blueprint.detail.store.ts | 4 +- .../repository/media-type.detail.store.ts | 2 +- .../repository/media-type.repository.ts | 4 +- .../sources/media-type.detail.server.data.ts | 6 +- .../repository/member-group.repository.ts | 4 +- .../repository/member-group.store.ts | 2 +- .../member-group.detail.server.data.ts | 6 +- .../member-group-workspace.stories.ts | 2 +- ...orkspace-view-member-group-info.element.ts | 2 +- .../repository/member-type.store.ts | 2 +- .../sources/member-type.detail.server.data.ts | 6 +- .../members/repository/member.store.ts | 2 +- .../workspace/member-workspace.stories.ts | 2 +- .../input-user-group.element.ts | 2 +- .../input-user/input-user.element.ts | 2 +- .../user-profile-app-profile.element.ts | 2 +- .../user-group-picker-modal.element.ts | 6 +- .../user-group-workspace-edit.element.ts | 2 +- .../workspace-view-user-groups.element.ts | 6 +- .../grid/workspace-view-users-grid.element.ts | 12 +- .../workspace-view-users-table.element.ts | 4 +- .../create-user/create-user-modal.element.ts | 2 +- .../invite-user/invite-user-modal.element.ts | 2 +- .../user-picker/user-picker-modal.element.ts | 6 +- .../users/users/repository/user.store.ts | 18 +- .../workspace/user-workspace-edit.element.ts | 4 +- .../mocks/data/document-blueprint.data.ts | 4 +- .../src/core/mocks/data/entity.data.ts | 12 +- .../src/core/mocks/data/media-type.data.ts | 6 +- .../src/core/mocks/data/member-group.data.ts | 4 +- .../src/core/mocks/data/member-type.data.ts | 4 +- .../src/core/mocks/data/member.data.ts | 4 +- .../src/core/mocks/data/user-groups.data.ts | 10 +- .../src/core/mocks/data/users.data.ts | 212 +++++++++--------- .../src/core/mocks/domains/users.handlers.ts | 2 +- 36 files changed, 192 insertions(+), 192 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index 07488ce011..0d96ea3bff 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -13,7 +13,7 @@ export type ClassConstructor = new (...args: any[]) => T; // Users // TODO: would the right name be Node? as entity is just something with a Key. But node is something in a content structure, aka. with hasChildren and parentId. export interface Entity { - key: string; + id: string; name: string; icon: string; type: string; @@ -23,7 +23,7 @@ export interface Entity { /** Tried to find a common base of our entities — used by Entity Workspace Context */ export type BaseEntity = { - key?: string; + id?: string; //alias?: string; name?: string; //icon?: string; @@ -63,7 +63,7 @@ export interface UserGroupDetails extends UserGroupEntity { // TODO: Make sure Entity Type/interface. export interface MemberTypeDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } @@ -71,23 +71,23 @@ export interface MemberTypeDetails extends EntityTreeItemResponseModel { // Media Types export interface MediaTypeDetails extends FolderTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } // Member Groups export interface MemberGroupDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed } export interface MemberDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed } // Document Blueprint export interface DocumentBlueprintDetails { - key: string; + id: string; name: string; type: 'document-blueprint'; properties: Array; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index 23e2a12bf6..3a668c5b2f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -12,7 +12,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; */ export class UmbDocumentBlueprintStore extends UmbStoreBase { // TODO: use the right type: - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DOCUMENT_BLUEPRINT_STORE_CONTEXT_TOKEN.toString()); @@ -32,7 +32,7 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { this.#data.append(data); }); - return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key)); + return this.#data.getObservablePart((documents) => documents.find((document) => document.id === key)); } getScaffold(entityType: string, parentId: string | null) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts index 884fabf62f..d6ef9c0fa9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts @@ -11,7 +11,7 @@ import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Details Data Store for Media Types */ export class UmbMediaTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 0ca525fa1a..7a7b052afc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -135,7 +135,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { // TODO: should we show a notification if the media type is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!mediaType || !mediaType.key) { + if (!mediaType || !mediaType.id) { const error: ProblemDetailsModel = { title: 'Media Type is missing' }; return { error }; } @@ -151,7 +151,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { // Consider to look up the data before fetching from the server // Consider notify a workspace if a media type is updated in the store while someone is editing it. this.#store?.append(mediaType); - this.#treeStore?.updateItem(mediaType.key, { name: mediaType.name }); + this.#treeStore?.updateItem(mediaType.id, { name: mediaType.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts index fa2481dd0f..f1e92f0202 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts @@ -49,18 +49,18 @@ export class UmbMediaTypeDetailServerDataSource implements MediaTypeDetailDataSo * @memberof UmbMediaTypeDetailServerDataSource */ async update(mediaType: MediaTypeDetails) { - if (!mediaType.key) { + if (!mediaType.id) { const error: ProblemDetailsModel = { title: 'MediaType key is missing' }; return { error }; } - const payload = { key: mediaType.key, requestBody: mediaType }; + const payload = { key: mediaType.id, requestBody: mediaType }; //return tryExecuteAndNotify(this.#host, MediaTypeResource.putMediaTypeByKey(payload)); // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/media-type/${mediaType.key}`, { + fetch(`/umbraco/management/api/v1/media-type/${mediaType.id}`, { method: 'PUT', body: JSON.stringify(payload), headers: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index e4e0266f5f..713f7f6456 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -137,7 +137,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { error }; } - const { error } = await this.#detailSource.update(memberGroup.key, memberGroup); + const { error } = await this.#detailSource.update(memberGroup.id, memberGroup); if (!error) { const notification = { data: { message: `Member group '${memberGroup.name} saved` } }; @@ -145,7 +145,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep } this.#store?.append(memberGroup); - this.#treeStore?.updateItem(memberGroup.key, { name: memberGroup.name }); + this.#treeStore?.updateItem(memberGroup.id, { name: memberGroup.name }); return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts index 5e24666945..38fd8ede11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts @@ -11,7 +11,7 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; * @description - Data Store for Member Groups */ export class UmbMemberGroupStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts index 379268de87..223f4b443a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts @@ -50,17 +50,17 @@ export class UmbMemberGroupDetailServerDataSource implements UmbDataSource = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts index 31f73ba2a1..a8e5d16e0a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts @@ -63,7 +63,7 @@ export class UmbWorkspaceViewMemberGroupInfoElement extends UmbLitElement { return html` -
    ${this._memberGroup?.key}
    +
    ${this._memberGroup?.id}
    `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts index 7624273435..b9afd506a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts @@ -11,7 +11,7 @@ import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Member Types */ export class UmbMemberTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index b0e33984ed..99192f426f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -46,18 +46,18 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< * @memberof UmbMemberTypeDetailServerDataSource */ async save(memberType: MemberTypeDetails) { - if (!memberType.key) { + if (!memberType.id) { const error: ProblemDetailsModel = { title: 'MemberType key is missing' }; return { error }; } - const payload = { key: memberType.key, requestBody: memberType }; + const payload = { key: memberType.id, requestBody: memberType }; //return tryExecuteAndNotify(this.#host, MemberTypeResource.putMemberTypeByKey(payload)); // TODO => use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/member-type/${memberType.key}`, { + fetch(`/umbraco/management/api/v1/member-type/${memberType.id}`, { method: 'PUT', body: JSON.stringify(payload), headers: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts index 518d0b5c47..4b01b1a8d8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts @@ -11,7 +11,7 @@ import type { MemberDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts index ebe1cce2ce..2af3d29bf2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts @@ -14,5 +14,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index ad3a644846..c7ecf36862 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -80,7 +80,7 @@ export class UmbInputPickerUserGroupElement extends UmbInputListBaseElement { ${userGroup.name}
    this.removeFromSelection(userGroup.key)} + @click=${() => this.removeFromSelection(userGroup.id)} label="remove" color="danger"> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts index 636696bfed..762edbc5cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts @@ -76,7 +76,7 @@ export class UmbPickerUserElement extends UmbInputListBaseElement {
    ${user.name}
    - this.removeFromSelection(user.key)} label="remove" color="danger"> + this.removeFromSelection(user.id)} label="remove" color="danger">
    ` )} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts index a08664367d..a1baf152c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts @@ -42,7 +42,7 @@ export class UmbUserProfileAppProfileElement extends UmbLitElement { private _edit() { if (!this._currentUser) return; - history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.key); //TODO Change to a tag with href and make dynamic + history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.id); //TODO Change to a tag with href and make dynamic //TODO Implement modal routing for the current-user-modal, so that the modal closes when navigating to the edit profile page } private _changePassword() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts index 39866a547a..3a06069852 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts @@ -81,9 +81,9 @@ export class UmbUserGroupPickerModalElement extends UmbModalElementPickerBase html`
    this.handleSelection(item.key)} - @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.key)} - class=${this.isSelected(item.key) ? 'item selected' : 'item'}> + @click=${() => this.handleSelection(item.id)} + @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.id)} + class=${this.isSelected(item.id) ? 'item selected' : 'item'}> ${item.name}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts index 53064d9801..a3f435e626 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts @@ -216,7 +216,7 @@ export class UmbUserGroupWorkspaceEditElement extends UmbLitElement { if (!this._userKeys && users.length > 0) { const entityKey = this.#workspaceContext?.getEntityKey(); if (!entityKey) return; - this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); + this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.id); //this._updateProperty('users', this._userKeys); // TODO: make a method on the UmbWorkspaceUserGroupContext: //this._workspaceContext.setUsers(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts index 0fa5dd071d..382c2f3971 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts @@ -31,11 +31,11 @@ export class UmbWorkspaceViewUserGroupsElement extends UmbLitElement { height: 100%; display: flex; flex-direction: column; - margin:var(--uui-size-layout-1); + margin: var(--uui-size-layout-1); } umb-table { - padding:0; + padding: 0; } `, ]; @@ -99,7 +99,7 @@ export class UmbWorkspaceViewUserGroupsElement extends UmbLitElement { private _createTableItems(userGroups: Array) { this._tableItems = userGroups.map((userGroup) => { return { - key: userGroup.key, + key: userGroup.id, icon: userGroup.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts index 99f10ee203..4a703f29f6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts @@ -95,17 +95,17 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { } private _selectRowHandler(user: UserEntity) { - this._usersContext?.select(user.key); + this._usersContext?.select(user.id); } private _deselectRowHandler(user: UserEntity) { - this._usersContext?.deselect(user.key); + this._usersContext?.deselect(user.id); } private _getUserGroupNames(keys: Array) { return keys .map((key: string) => { - return this._userGroups.find((x) => x.key === key)?.name; + return this._userGroups.find((x) => x.id === key)?.name; }) .join(', '); } @@ -120,8 +120,8 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { .name=${user.name} selectable ?select-only=${this._selection.length > 0} - ?selected=${this._isSelected(user.key)} - @open=${() => this._handleOpenCard(user.key)} + ?selected=${this._isSelected(user.id)} + @open=${() => this._handleOpenCard(user.id)} @selected=${() => this._selectRowHandler(user)} @unselected=${() => this._deselectRowHandler(user)}> ${user.status && user.status !== 'enabled' @@ -149,7 +149,7 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement {
    ${repeat( this._users, - (user) => user.key, + (user) => user.id, (user) => this.renderUserCard(user) )}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts index c3c8519b36..e70c4d0ec0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts @@ -122,7 +122,7 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { private _getUserGroupNames(keys: Array) { return keys .map((key: string) => { - return this._userGroups.find((x) => x.key === key)?.name; + return this._userGroups.find((x) => x.id === key)?.name; }) .join(', '); } @@ -130,7 +130,7 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { private _createTableItems(users: Array) { this._tableItems = users.map((user) => { return { - key: user.key, + key: user.id, icon: 'umb:user', data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts index 73dc26085b..d86530ad45 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts @@ -126,7 +126,7 @@ export class UmbCreateUserModalElement extends UmbModalBaseElement { if (!this._createdUser) return; this._closeModal(); - history.pushState(null, '', '/section/users/view/users/user/' + this._createdUser?.key); //TODO: URL Should be dynamic + history.pushState(null, '', '/section/users/view/users/user/' + this._createdUser?.id); //TODO: URL Should be dynamic } private _renderForm() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts index 492590d4ce..2c1eaed271 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts @@ -105,7 +105,7 @@ export class UmbInviteUserModalElement extends UmbModalBaseElement { if (!this._invitedUser) return; this._closeModal(); - history.pushState(null, '', 'section/users/view/users/user/' + this._invitedUser?.key); //TODO: URL Should be dynamic + history.pushState(null, '', 'section/users/view/users/user/' + this._invitedUser?.id); //TODO: URL Should be dynamic } private _renderForm() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts index faa135b3de..a1f18890a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts @@ -86,9 +86,9 @@ export class UmbUserPickerModalElement extends UmbModalElementPickerBase html`
    this.handleSelection(item.key)} - @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.key)} - class=${this.isSelected(item.key) ? 'item selected' : 'item'}> + @click=${() => this.handleSelection(item.id)} + @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.id)} + class=${this.isSelected(item.id) ? 'item selected' : 'item'}> ${item.name}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index 46a378e70b..09e692ab85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -15,7 +15,7 @@ export const UMB_USER_STORE_CONTEXT_TOKEN = new UmbContextToken('U * @description - Data Store for Users */ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore { - #users = new ArrayState([], (x) => x.key); + #users = new ArrayState([], (x) => x.id); public users = this.#users.asObservable(); #totalUsers = new NumberState(0); @@ -27,7 +27,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => - users.find((user: UmbUserStoreItemType) => user.key === key) + users.find((user: UmbUserStoreItemType) => user.id === key) ); } @@ -93,7 +93,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => - users.filter((user: UmbUserStoreItemType) => keys.includes(user.key)) + users.filter((user: UmbUserStoreItemType) => keys.includes(user.id)) ); } @@ -124,7 +124,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.status = 'enabled'; @@ -147,10 +147,10 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { - if (userKeys.includes(user.key)) { + if (userKeys.includes(user.id)) { user.userGroups.push(userGroup); } else { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -174,7 +174,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -197,7 +197,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore disabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => disabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.status = 'disabled'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index 06e603d4d9..c6ba5c46db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -204,7 +204,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { ` ); - if (this._currentUser?.key !== this._user?.key) + if (this._currentUser?.id !== this._user?.id) buttons.push(html`
    Key: - ${this._user.key} + ${this._user.id}
    `; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts index 041417a449..9ac544bffd 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts @@ -5,7 +5,7 @@ export const data: Array = [ { name: 'Document Blueprint 1', type: 'document-blueprint', - key: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', icon: 'umb:blueprint', documentTypeKey: 'd81c7957-153c-4b5a-aa6f-b434a4964624', properties: [], @@ -14,7 +14,7 @@ export const data: Array = [ { name: 'Document Blueprint 2', type: 'document-blueprint', - key: '3fa85f64-5717-4562-b3qc-2c963f66afa6', + id: '3fa85f64-5717-4562-b3qc-2c963f66afa6', icon: 'umb:blueprint', documentTypeKey: 'a99e4018-3ffc-486b-aa76-eecea9593d17', properties: [], diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index c96e0b21bc..8a20d66ef1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -12,15 +12,15 @@ export class UmbEntityData extends UmbData { } getByKey(key: string) { - return this.data.find((item) => item.key === key); + return this.data.find((item) => item.id === key); } getByKeys(keys: Array) { - return this.data.filter((item) => keys.includes(item.key)); + return this.data.filter((item) => keys.includes(item.id)); } save(saveItem: T) { - const foundIndex = this.data.findIndex((item) => item.key === saveItem.key); + const foundIndex = this.data.findIndex((item) => item.id === saveItem.id); if (foundIndex !== -1) { // update this.data[foundIndex] = saveItem; @@ -66,13 +66,13 @@ export class UmbEntityData extends UmbData { } delete(keys: Array) { - const deletedKeys = this.data.filter((item) => keys.includes(item.key)).map((item) => item.key); - this.data = this.data.filter((item) => keys.indexOf(item.key) === -1); + const deletedKeys = this.data.filter((item) => keys.includes(item.id)).map((item) => item.id); + this.data = this.data.filter((item) => keys.indexOf(item.id) === -1); return deletedKeys; } protected updateData(updateItem: T) { - const itemIndex = this.data.findIndex((item) => item.key === updateItem.key); + const itemIndex = this.data.findIndex((item) => item.id === updateItem.id); const item = this.data[itemIndex]; if (!item) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index 99fae70851..21216b5446 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -9,7 +9,7 @@ export const data: Array = [ name: 'Media Type 1', type: 'media-type', hasChildren: false, - key: 'c5159663-eb82-43ee-bd23-e42dc5e71db6', + id: 'c5159663-eb82-43ee-bd23-e42dc5e71db6', isContainer: false, parentId: null, isFolder: false, @@ -22,7 +22,7 @@ export const data: Array = [ name: 'Media Type 2', type: 'media-type', hasChildren: false, - key: '22da1b0b-c310-4730-9912-c30b3eb9802e', + id: '22da1b0b-c310-4730-9912-c30b3eb9802e', isContainer: false, parentId: null, isFolder: false, @@ -56,7 +56,7 @@ class UmbMediaTypeData extends UmbEntityData { } getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + const items = this.data.filter((item) => keys.includes(item.id ?? '')); return items.map((item) => createFolderTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 6c451dadde..9af252a801 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -10,7 +10,7 @@ export const data: Array = [ type: 'member-group', icon: 'umb:document', hasChildren: false, - key: '76708ccd-4179-464c-b694-6969149dd9f9', + id: '76708ccd-4179-464c-b694-6969149dd9f9', isContainer: false, parentId: null, }, @@ -40,7 +40,7 @@ class UmbMemberGroupData extends UmbEntityData { } getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + const items = this.data.filter((item) => keys.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index 48699e8060..aa0afa99b6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -10,7 +10,7 @@ export const data: Array = [ type: 'member-type', icon: 'icon-user', hasChildren: false, - key: 'd59be02f-1df9-4228-aa1e-01917d806cda', + id: 'd59be02f-1df9-4228-aa1e-01917d806cda', isContainer: false, parentId: null, alias: 'memberType1', @@ -39,7 +39,7 @@ class UmbMemberTypeData extends UmbData { } getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + const items = this.data.filter((item) => keys.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index d379a0553c..9cdce3b006 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -13,7 +13,7 @@ export const data: Array = [ type: 'member', icon: 'umb:user', hasChildren: false, - key: 'aaa08ccd-4179-464c-b634-6969149dd9f9', + id: 'aaa08ccd-4179-464c-b634-6969149dd9f9', isContainer: false, parentId: null, }, @@ -43,7 +43,7 @@ class UmbMemberData extends UmbEntityData { } getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + const items = this.data.filter((item) => keys.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts index 8f961ea7a7..3c4b99b1ca 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts @@ -14,7 +14,7 @@ class UmbUserGroupsData extends UmbEntityData { export const data: Array = [ { - key: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', + id: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', name: 'Administrators', icon: 'umb:medal', parentId: '', @@ -31,7 +31,7 @@ export const data: Array = [ permissions: [], }, { - key: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', + id: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', name: 'Workspaces', icon: 'umb:tools', parentId: '', @@ -42,7 +42,7 @@ export const data: Array = [ contentStartNode: '74e4008a-ea4f-4793-b924-15e02fd380d1', }, { - key: 'b847398a-6875-4d7a-9f6d-231256b81471', + id: 'b847398a-6875-4d7a-9f6d-231256b81471', name: 'Sensitive Data', icon: 'umb:lock', parentId: '', @@ -53,7 +53,7 @@ export const data: Array = [ contentStartNode: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', }, { - key: '2668f09b-320c-48a7-a78a-95047026ec0e', + id: '2668f09b-320c-48a7-a78a-95047026ec0e', name: 'Translators', icon: 'umb:globe', parentId: '', @@ -64,7 +64,7 @@ export const data: Array = [ contentStartNode: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', }, { - key: '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', + id: '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', name: 'Writers', icon: 'umb:edit', parentId: '', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts index da43f71bac..25174c9435 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts @@ -13,7 +13,7 @@ class UmbUsersData extends UmbEntityData { updateUserGroup(keys: string[], userGroup: string) { this.data.forEach((user) => { - if (keys.includes(user.key)) { + if (keys.includes(user.id)) { user.userGroups = [...user.userGroups, userGroup]; } else { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -22,31 +22,31 @@ class UmbUsersData extends UmbEntityData { this.updateData(user); }); - return this.data.map((user) => user.key); + return this.data.map((user) => user.id); } enable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.key)); + const users = this.data.filter((user) => keys.includes(user.id)); users.forEach((user) => { user.status = 'enabled'; this.updateData(user); }); - return users.map((user) => user.key); + return users.map((user) => user.id); } disable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.key)); + const users = this.data.filter((user) => keys.includes(user.id)); users.forEach((user) => { user.status = 'disabled'; this.updateData(user); }); - return users.map((user) => user.key); + return users.map((user) => user.id); } } export const data: Array = [ { - key: 'a953e376-89f8-46d1-bed9-1b47743aa38a', + id: 'a953e376-89f8-46d1-bed9-1b47743aa38a', type: 'user', hasChildren: false, parentId: '', @@ -66,7 +66,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'], }, { - key: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd', + id: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd', type: 'user', hasChildren: false, parentId: '', @@ -90,7 +90,7 @@ export const data: Array = [ ], }, { - key: '9f63996f-71e9-49be-bc21-5a69ea97e72e', + id: '9f63996f-71e9-49be-bc21-5a69ea97e72e', type: 'user', hasChildren: false, parentId: '', @@ -114,7 +114,7 @@ export const data: Array = [ ], }, { - key: 'ff1d1bff-b6d2-444b-950a-68b5eec46277', + id: 'ff1d1bff-b6d2-444b-950a-68b5eec46277', type: 'user', hasChildren: false, parentId: '', @@ -138,7 +138,7 @@ export const data: Array = [ ], }, { - key: 'c9cf849f-0536-4e38-a91a-02c8c45a6f47', + id: 'c9cf849f-0536-4e38-a91a-02c8c45a6f47', type: 'user', hasChildren: false, parentId: '', @@ -158,7 +158,7 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'd9cbd4cd-6950-42b2-be57-1f5829c6dd19', + id: 'd9cbd4cd-6950-42b2-be57-1f5829c6dd19', type: 'user', hasChildren: false, parentId: '', @@ -178,7 +178,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '515b2c5c-c195-43f2-8e52-4733572030c7', + id: '515b2c5c-c195-43f2-8e52-4733572030c7', type: 'user', hasChildren: false, parentId: '', @@ -204,7 +204,7 @@ export const data: Array = [ ], }, { - key: 'db8a0800-28b3-4f0b-9152-37debea6b8d7', + id: 'db8a0800-28b3-4f0b-9152-37debea6b8d7', type: 'user', hasChildren: false, parentId: '', @@ -228,7 +228,7 @@ export const data: Array = [ ], }, { - key: '3fe38c9b-b5a3-4897-8507-3f062a25659e', + id: '3fe38c9b-b5a3-4897-8507-3f062a25659e', type: 'user', hasChildren: false, parentId: '', @@ -248,7 +248,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '09e99152-bc3e-449f-9fa1-322ab3390b7d', + id: '09e99152-bc3e-449f-9fa1-322ab3390b7d', type: 'user', hasChildren: false, parentId: '', @@ -272,7 +272,7 @@ export const data: Array = [ ], }, { - key: '5680bd61-9b58-4ecb-ae06-bdfacebe05f2', + id: '5680bd61-9b58-4ecb-ae06-bdfacebe05f2', type: 'user', hasChildren: false, parentId: '', @@ -292,7 +292,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'], }, { - key: '1c2cb6b5-1b96-47c0-a2b7-f5dd6bd3d325', + id: '1c2cb6b5-1b96-47c0-a2b7-f5dd6bd3d325', type: 'user', hasChildren: false, parentId: '', @@ -316,7 +316,7 @@ export const data: Array = [ ], }, { - key: 'ac6cc4e4-ab38-4920-8646-63c7652fc97a', + id: 'ac6cc4e4-ab38-4920-8646-63c7652fc97a', type: 'user', hasChildren: false, parentId: '', @@ -336,7 +336,7 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: 'a5e5bbe4-acb4-4c40-b15a-eab510338620', + id: 'a5e5bbe4-acb4-4c40-b15a-eab510338620', type: 'user', hasChildren: false, parentId: '', @@ -360,7 +360,7 @@ export const data: Array = [ ], }, { - key: 'c775af23-4aec-4d24-a2d1-5b0d666c9eb4', + id: 'c775af23-4aec-4d24-a2d1-5b0d666c9eb4', type: 'user', hasChildren: false, parentId: '', @@ -384,7 +384,7 @@ export const data: Array = [ ], }, { - key: '3333e2dc-b8a6-4db3-af00-ac1c1e1d5d9c', + id: '3333e2dc-b8a6-4db3-af00-ac1c1e1d5d9c', type: 'user', hasChildren: false, parentId: '', @@ -404,7 +404,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '506126e3-2b96-4746-bd0a-1e6b2283021f', + id: '506126e3-2b96-4746-bd0a-1e6b2283021f', type: 'user', hasChildren: false, parentId: '', @@ -424,7 +424,7 @@ export const data: Array = [ userGroups: ['9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'caf10593-3710-4417-af3d-7015f88f5fe3', + id: 'caf10593-3710-4417-af3d-7015f88f5fe3', type: 'user', hasChildren: false, parentId: '', @@ -448,7 +448,7 @@ export const data: Array = [ ], }, { - key: 'e2492eeb-bcc2-4c95-8893-27c45c895c9c', + id: 'e2492eeb-bcc2-4c95-8893-27c45c895c9c', type: 'user', hasChildren: false, parentId: '', @@ -473,7 +473,7 @@ export const data: Array = [ ], }, { - key: '8c93b359-a719-4453-991c-e2d5bcc965c3', + id: '8c93b359-a719-4453-991c-e2d5bcc965c3', type: 'user', hasChildren: false, parentId: '', @@ -497,7 +497,7 @@ export const data: Array = [ ], }, { - key: '4cd22c7c-baeb-463f-89e5-e0a6bb3ea27e', + id: '4cd22c7c-baeb-463f-89e5-e0a6bb3ea27e', type: 'user', hasChildren: false, parentId: '', @@ -521,7 +521,7 @@ export const data: Array = [ ], }, { - key: 'ccd03e29-e924-4240-a1e4-b0114c66aae9', + id: 'ccd03e29-e924-4240-a1e4-b0114c66aae9', type: 'user', hasChildren: false, parentId: '', @@ -547,7 +547,7 @@ export const data: Array = [ ], }, { - key: '7ffa97ca-0702-4bcf-8e32-751bae9aa156', + id: '7ffa97ca-0702-4bcf-8e32-751bae9aa156', type: 'user', hasChildren: false, parentId: '', @@ -571,7 +571,7 @@ export const data: Array = [ ], }, { - key: 'e139ec4b-b49a-48c0-a1a3-1c2e8e95366d', + id: 'e139ec4b-b49a-48c0-a1a3-1c2e8e95366d', type: 'user', hasChildren: false, parentId: '', @@ -595,7 +595,7 @@ export const data: Array = [ ], }, { - key: '30d29d56-cbb2-41fd-9154-94b0f0d9a385', + id: '30d29d56-cbb2-41fd-9154-94b0f0d9a385', type: 'user', hasChildren: false, parentId: '', @@ -619,7 +619,7 @@ export const data: Array = [ ], }, { - key: '3ecac483-c4df-4971-a357-a0be03c520ca', + id: '3ecac483-c4df-4971-a357-a0be03c520ca', type: 'user', hasChildren: false, parentId: '', @@ -639,7 +639,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '2dae8bf8-5fdd-4efa-a493-cbec11b179e2', + id: '2dae8bf8-5fdd-4efa-a493-cbec11b179e2', type: 'user', hasChildren: false, parentId: '', @@ -663,7 +663,7 @@ export const data: Array = [ ], }, { - key: '0397dd89-72c5-4d0b-a544-dc1c9c0a932d', + id: '0397dd89-72c5-4d0b-a544-dc1c9c0a932d', type: 'user', hasChildren: false, parentId: '', @@ -688,7 +688,7 @@ export const data: Array = [ ], }, { - key: '4f2f64c1-1b9b-4217-80c7-7760962215af', + id: '4f2f64c1-1b9b-4217-80c7-7760962215af', type: 'user', hasChildren: false, parentId: '', @@ -713,7 +713,7 @@ export const data: Array = [ ], }, { - key: '6cefa1e1-4302-4003-81df-3fa4759245a4', + id: '6cefa1e1-4302-4003-81df-3fa4759245a4', type: 'user', hasChildren: false, parentId: '', @@ -738,7 +738,7 @@ export const data: Array = [ ], }, { - key: '2ba9ae27-7860-42ea-b628-c5484b64b2c6', + id: '2ba9ae27-7860-42ea-b628-c5484b64b2c6', type: 'user', hasChildren: false, parentId: '', @@ -758,7 +758,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'f4bee7c8-7a94-4937-8e6e-ceb55c9ec8b4', + id: 'f4bee7c8-7a94-4937-8e6e-ceb55c9ec8b4', type: 'user', hasChildren: false, parentId: '', @@ -778,7 +778,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '3ccfeec3-1c96-4205-ae90-3297702d0d59', + id: '3ccfeec3-1c96-4205-ae90-3297702d0d59', type: 'user', hasChildren: false, parentId: '', @@ -802,7 +802,7 @@ export const data: Array = [ ], }, { - key: 'cb0e3a46-1e99-4dc3-a206-462c3d985916', + id: 'cb0e3a46-1e99-4dc3-a206-462c3d985916', type: 'user', hasChildren: false, parentId: '', @@ -826,7 +826,7 @@ export const data: Array = [ ], }, { - key: 'eb5af046-f2af-490f-a195-b0faff73f538', + id: 'eb5af046-f2af-490f-a195-b0faff73f538', type: 'user', hasChildren: false, parentId: '', @@ -846,7 +846,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: '42037971-4e06-41a8-be76-04313571fe54', + id: '42037971-4e06-41a8-be76-04313571fe54', type: 'user', hasChildren: false, parentId: '', @@ -866,7 +866,7 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: 'd71ba775-2920-42de-b5a1-09104e81cf27', + id: 'd71ba775-2920-42de-b5a1-09104e81cf27', type: 'user', hasChildren: false, parentId: '', @@ -892,7 +892,7 @@ export const data: Array = [ ], }, { - key: 'ed94e56b-64d5-43d0-9c9c-7149a0b26657', + id: 'ed94e56b-64d5-43d0-9c9c-7149a0b26657', type: 'user', hasChildren: false, parentId: '', @@ -916,7 +916,7 @@ export const data: Array = [ ], }, { - key: '8acfe50e-2e15-460d-b368-0510d08fea4c', + id: '8acfe50e-2e15-460d-b368-0510d08fea4c', type: 'user', hasChildren: false, parentId: '', @@ -941,7 +941,7 @@ export const data: Array = [ ], }, { - key: '73401c00-3b05-465b-ab59-8def5af4ec54', + id: '73401c00-3b05-465b-ab59-8def5af4ec54', type: 'user', hasChildren: false, parentId: '', @@ -965,7 +965,7 @@ export const data: Array = [ ], }, { - key: 'ffed1abb-aee0-45f1-9915-5ea7da165011', + id: 'ffed1abb-aee0-45f1-9915-5ea7da165011', type: 'user', hasChildren: false, parentId: '', @@ -989,7 +989,7 @@ export const data: Array = [ ], }, { - key: '754fafb2-ec86-4313-8c5a-26a0a460df70', + id: '754fafb2-ec86-4313-8c5a-26a0a460df70', type: 'user', hasChildren: false, parentId: '', @@ -1013,7 +1013,7 @@ export const data: Array = [ ], }, { - key: 'eae3c035-1b9d-4d1d-b626-89a7c3b3bc39', + id: 'eae3c035-1b9d-4d1d-b626-89a7c3b3bc39', type: 'user', hasChildren: false, parentId: '', @@ -1037,7 +1037,7 @@ export const data: Array = [ ], }, { - key: '4bbf5669-99ec-4e60-b159-2198990ee8f1', + id: '4bbf5669-99ec-4e60-b159-2198990ee8f1', type: 'user', hasChildren: false, parentId: '', @@ -1057,7 +1057,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'bc17c986-9869-49f4-baee-d888bf013f27', + id: 'bc17c986-9869-49f4-baee-d888bf013f27', type: 'user', hasChildren: false, parentId: '', @@ -1082,7 +1082,7 @@ export const data: Array = [ ], }, { - key: 'f015b8a7-35b7-4859-a506-253ee95f92f4', + id: 'f015b8a7-35b7-4859-a506-253ee95f92f4', type: 'user', hasChildren: false, parentId: '', @@ -1107,7 +1107,7 @@ export const data: Array = [ ], }, { - key: 'b5fd8d4f-eecc-4bea-b841-b4ba3621e8ba', + id: 'b5fd8d4f-eecc-4bea-b841-b4ba3621e8ba', type: 'user', hasChildren: false, parentId: '', @@ -1131,7 +1131,7 @@ export const data: Array = [ ], }, { - key: '0bfe956a-5293-48bf-8c43-fd9be5c8dd19', + id: '0bfe956a-5293-48bf-8c43-fd9be5c8dd19', type: 'user', hasChildren: false, parentId: '', @@ -1155,7 +1155,7 @@ export const data: Array = [ ], }, { - key: 'f2914aaa-de0a-4285-b820-88d22ae7a566', + id: 'f2914aaa-de0a-4285-b820-88d22ae7a566', type: 'user', hasChildren: false, parentId: '', @@ -1179,7 +1179,7 @@ export const data: Array = [ ], }, { - key: 'f5489ee0-589d-47e5-8c11-b5e2ef027519', + id: 'f5489ee0-589d-47e5-8c11-b5e2ef027519', type: 'user', hasChildren: false, parentId: '', @@ -1203,7 +1203,7 @@ export const data: Array = [ ], }, { - key: '293074af-8188-4151-b025-2b43f6aa6c2c', + id: '293074af-8188-4151-b025-2b43f6aa6c2c', type: 'user', hasChildren: false, parentId: '', @@ -1223,7 +1223,7 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '93765192-b40f-4bf2-8c06-1d5ffb6989ae', + id: '93765192-b40f-4bf2-8c06-1d5ffb6989ae', type: 'user', hasChildren: false, parentId: '', @@ -1243,7 +1243,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '59f1023c-7ce6-4c78-a1ee-dcb4625b9281', + id: '59f1023c-7ce6-4c78-a1ee-dcb4625b9281', type: 'user', hasChildren: false, parentId: '', @@ -1263,7 +1263,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: '42592a81-f584-4b77-b312-b8e268203c22', + id: '42592a81-f584-4b77-b312-b8e268203c22', type: 'user', hasChildren: false, parentId: '', @@ -1283,7 +1283,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '8ad78a84-8183-4833-9f8b-07b3ea8a881c', + id: '8ad78a84-8183-4833-9f8b-07b3ea8a881c', type: 'user', hasChildren: false, parentId: '', @@ -1307,7 +1307,7 @@ export const data: Array = [ ], }, { - key: '3f7bc8b5-df8b-4a79-a8bf-f379c63b8d01', + id: '3f7bc8b5-df8b-4a79-a8bf-f379c63b8d01', type: 'user', hasChildren: false, parentId: '', @@ -1331,7 +1331,7 @@ export const data: Array = [ ], }, { - key: '09901602-688a-4c83-a977-51c16950a2c1', + id: '09901602-688a-4c83-a977-51c16950a2c1', type: 'user', hasChildren: false, parentId: '', @@ -1355,7 +1355,7 @@ export const data: Array = [ ], }, { - key: '060972c7-9b23-4788-8dc3-c2fcec1d002e', + id: '060972c7-9b23-4788-8dc3-c2fcec1d002e', type: 'user', hasChildren: false, parentId: '', @@ -1379,7 +1379,7 @@ export const data: Array = [ ], }, { - key: 'ccf7639c-09d9-4de6-88ec-be51be7f9d69', + id: 'ccf7639c-09d9-4de6-88ec-be51be7f9d69', type: 'user', hasChildren: false, parentId: '', @@ -1403,7 +1403,7 @@ export const data: Array = [ ], }, { - key: '2c6b24a4-c0d2-4efe-8a09-68b61d2a17ef', + id: '2c6b24a4-c0d2-4efe-8a09-68b61d2a17ef', type: 'user', hasChildren: false, parentId: '', @@ -1427,7 +1427,7 @@ export const data: Array = [ ], }, { - key: 'ff7a2003-f8d7-4fbc-96cb-ee221bdc01c9', + id: 'ff7a2003-f8d7-4fbc-96cb-ee221bdc01c9', type: 'user', hasChildren: false, parentId: '', @@ -1447,7 +1447,7 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'b7f7b275-f62d-44ba-a6b0-0e7e83fe4e49', + id: 'b7f7b275-f62d-44ba-a6b0-0e7e83fe4e49', type: 'user', hasChildren: false, parentId: '', @@ -1471,7 +1471,7 @@ export const data: Array = [ ], }, { - key: '18a9a6bc-ae4c-49b0-8afd-43bc214053f4', + id: '18a9a6bc-ae4c-49b0-8afd-43bc214053f4', type: 'user', hasChildren: false, parentId: '', @@ -1495,7 +1495,7 @@ export const data: Array = [ ], }, { - key: '14fa1c36-1252-433e-a1ad-63cf5c9aba62', + id: '14fa1c36-1252-433e-a1ad-63cf5c9aba62', type: 'user', hasChildren: false, parentId: '', @@ -1521,7 +1521,7 @@ export const data: Array = [ ], }, { - key: '7cb9327f-6aeb-47af-80b3-4b85abde1f5f', + id: '7cb9327f-6aeb-47af-80b3-4b85abde1f5f', type: 'user', hasChildren: false, parentId: '', @@ -1545,7 +1545,7 @@ export const data: Array = [ ], }, { - key: '0574e903-ba72-49ee-b838-4eb200e68612', + id: '0574e903-ba72-49ee-b838-4eb200e68612', type: 'user', hasChildren: false, parentId: '', @@ -1570,7 +1570,7 @@ export const data: Array = [ ], }, { - key: '6e4515d6-4a67-4f47-8783-1d074c1d1f75', + id: '6e4515d6-4a67-4f47-8783-1d074c1d1f75', type: 'user', hasChildren: false, parentId: '', @@ -1594,7 +1594,7 @@ export const data: Array = [ ], }, { - key: '4faa2064-6776-4cc0-8bc1-3ceaa5884a0f', + id: '4faa2064-6776-4cc0-8bc1-3ceaa5884a0f', type: 'user', hasChildren: false, parentId: '', @@ -1614,7 +1614,7 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '0cccec0d-d7c4-47bc-97b0-bd55dca42dd7', + id: '0cccec0d-d7c4-47bc-97b0-bd55dca42dd7', type: 'user', hasChildren: false, parentId: '', @@ -1639,7 +1639,7 @@ export const data: Array = [ ], }, { - key: 'd6ffe266-f024-45c2-a1cd-f39bdbc00a5b', + id: 'd6ffe266-f024-45c2-a1cd-f39bdbc00a5b', type: 'user', hasChildren: false, parentId: '', @@ -1663,7 +1663,7 @@ export const data: Array = [ ], }, { - key: '72d3047a-8c48-4425-ad11-a4a64281e7e5', + id: '72d3047a-8c48-4425-ad11-a4a64281e7e5', type: 'user', hasChildren: false, parentId: '', @@ -1687,7 +1687,7 @@ export const data: Array = [ ], }, { - key: 'ebfe0335-6926-433d-90de-82f9661955f9', + id: 'ebfe0335-6926-433d-90de-82f9661955f9', type: 'user', hasChildren: false, parentId: '', @@ -1711,7 +1711,7 @@ export const data: Array = [ ], }, { - key: 'e6e833fb-a872-4364-893c-b6bfc9802043', + id: 'e6e833fb-a872-4364-893c-b6bfc9802043', type: 'user', hasChildren: false, parentId: '', @@ -1735,7 +1735,7 @@ export const data: Array = [ ], }, { - key: 'abd4d295-9ebb-4a0d-bc07-e2a662671e18', + id: 'abd4d295-9ebb-4a0d-bc07-e2a662671e18', type: 'user', hasChildren: false, parentId: '', @@ -1759,7 +1759,7 @@ export const data: Array = [ ], }, { - key: '29d42fe1-b465-4dfe-8d29-10286474d625', + id: '29d42fe1-b465-4dfe-8d29-10286474d625', type: 'user', hasChildren: false, parentId: '', @@ -1783,7 +1783,7 @@ export const data: Array = [ ], }, { - key: '690535f5-194a-4e32-b569-608fbf279059', + id: '690535f5-194a-4e32-b569-608fbf279059', type: 'user', hasChildren: false, parentId: '', @@ -1807,7 +1807,7 @@ export const data: Array = [ ], }, { - key: '13b5e542-e779-48df-b7f9-2c7def0e2e55', + id: '13b5e542-e779-48df-b7f9-2c7def0e2e55', type: 'user', hasChildren: false, parentId: '', @@ -1831,7 +1831,7 @@ export const data: Array = [ ], }, { - key: 'af5bfaaf-1597-4ad1-aa1e-206f78a91674', + id: 'af5bfaaf-1597-4ad1-aa1e-206f78a91674', type: 'user', hasChildren: false, parentId: '', @@ -1851,7 +1851,7 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '8f39464a-2e49-498b-b8b8-cf2926978e83', + id: '8f39464a-2e49-498b-b8b8-cf2926978e83', type: 'user', hasChildren: false, parentId: '', @@ -1876,7 +1876,7 @@ export const data: Array = [ ], }, { - key: 'ac4785f1-b6f5-4d2d-99e6-f62a96947f8c', + id: 'ac4785f1-b6f5-4d2d-99e6-f62a96947f8c', type: 'user', hasChildren: false, parentId: '', @@ -1896,7 +1896,7 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'd89ada67-eca1-475a-9273-0c69b56116da', + id: 'd89ada67-eca1-475a-9273-0c69b56116da', type: 'user', hasChildren: false, parentId: '', @@ -1921,7 +1921,7 @@ export const data: Array = [ ], }, { - key: '03ced59c-40b3-482a-8470-b12f56974a0f', + id: '03ced59c-40b3-482a-8470-b12f56974a0f', type: 'user', hasChildren: false, parentId: '', @@ -1946,7 +1946,7 @@ export const data: Array = [ ], }, { - key: 'dcfba56e-5f3c-446b-a4ef-18da66df8181', + id: 'dcfba56e-5f3c-446b-a4ef-18da66df8181', type: 'user', hasChildren: false, parentId: '', @@ -1970,7 +1970,7 @@ export const data: Array = [ ], }, { - key: '63be3c07-9178-4c2e-810a-6bbdbbe16dcb', + id: '63be3c07-9178-4c2e-810a-6bbdbbe16dcb', type: 'user', hasChildren: false, parentId: '', @@ -1995,7 +1995,7 @@ export const data: Array = [ ], }, { - key: 'c57661ef-8f66-4502-91cb-2069a186ce79', + id: 'c57661ef-8f66-4502-91cb-2069a186ce79', type: 'user', hasChildren: false, parentId: '', @@ -2019,7 +2019,7 @@ export const data: Array = [ ], }, { - key: 'b5fbd289-2900-4328-8d1f-0a6780be3585', + id: 'b5fbd289-2900-4328-8d1f-0a6780be3585', type: 'user', hasChildren: false, parentId: '', @@ -2043,7 +2043,7 @@ export const data: Array = [ ], }, { - key: '9ca26535-5288-4b37-8e3b-96b3530de3d1', + id: '9ca26535-5288-4b37-8e3b-96b3530de3d1', type: 'user', hasChildren: false, parentId: '', @@ -2067,7 +2067,7 @@ export const data: Array = [ ], }, { - key: '19998fc5-2902-4646-9cf2-395404da2b2a', + id: '19998fc5-2902-4646-9cf2-395404da2b2a', type: 'user', hasChildren: false, parentId: '', @@ -2092,7 +2092,7 @@ export const data: Array = [ ], }, { - key: '468a904c-f87c-4079-920b-74c6aa3a5242', + id: '468a904c-f87c-4079-920b-74c6aa3a5242', type: 'user', hasChildren: false, parentId: '', @@ -2117,7 +2117,7 @@ export const data: Array = [ ], }, { - key: '60336828-85ed-4b5a-abf6-869d6902ad93', + id: '60336828-85ed-4b5a-abf6-869d6902ad93', type: 'user', hasChildren: false, parentId: '', @@ -2142,7 +2142,7 @@ export const data: Array = [ ], }, { - key: '2b0c8ffe-4bcb-4df6-b519-3358a5c90480', + id: '2b0c8ffe-4bcb-4df6-b519-3358a5c90480', type: 'user', hasChildren: false, parentId: '', @@ -2166,7 +2166,7 @@ export const data: Array = [ ], }, { - key: 'c967ff49-f967-449b-9aab-e5ca72255a61', + id: 'c967ff49-f967-449b-9aab-e5ca72255a61', type: 'user', hasChildren: false, parentId: '', @@ -2191,7 +2191,7 @@ export const data: Array = [ ], }, { - key: '594040ce-c6f7-49e7-8f4a-ffa8c42a2102', + id: '594040ce-c6f7-49e7-8f4a-ffa8c42a2102', type: 'user', hasChildren: false, parentId: '', @@ -2211,7 +2211,7 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '33806fc1-d4a9-4ddb-8d57-3c087ea1f489', + id: '33806fc1-d4a9-4ddb-8d57-3c087ea1f489', type: 'user', hasChildren: false, parentId: '', @@ -2235,7 +2235,7 @@ export const data: Array = [ ], }, { - key: 'a59a5259-9393-4c49-a5be-56a475b27640', + id: 'a59a5259-9393-4c49-a5be-56a475b27640', type: 'user', hasChildren: false, parentId: '', @@ -2259,7 +2259,7 @@ export const data: Array = [ ], }, { - key: '9e96841c-131d-420a-bdc8-4ba087f0f11c', + id: '9e96841c-131d-420a-bdc8-4ba087f0f11c', type: 'user', hasChildren: false, parentId: '', @@ -2283,7 +2283,7 @@ export const data: Array = [ ], }, { - key: '84eaae2a-9aa8-4745-b4c3-fad2f5632e85', + id: '84eaae2a-9aa8-4745-b4c3-fad2f5632e85', type: 'user', hasChildren: false, parentId: '', @@ -2308,7 +2308,7 @@ export const data: Array = [ ], }, { - key: '6fe86358-f3fd-4f7d-8d28-e867562569f2', + id: '6fe86358-f3fd-4f7d-8d28-e867562569f2', type: 'user', hasChildren: false, parentId: '', @@ -2328,7 +2328,7 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '365fd725-81c7-48f0-be68-4dbcf15f1ca9', + id: '365fd725-81c7-48f0-be68-4dbcf15f1ca9', type: 'user', hasChildren: false, parentId: '', @@ -2348,7 +2348,7 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'b6028623-995e-4eee-8142-723141030692', + id: 'b6028623-995e-4eee-8142-723141030692', type: 'user', hasChildren: false, parentId: '', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index 076ea54e2b..9fddba99aa 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -49,7 +49,7 @@ export const handlers = [ if (!data) return; const newUser: UserDetails = { - key: uuidv4(), + id: uuidv4(), name: data.name, email: data.email, status: 'invited', From cbc6e7b4dba6c9f0dc7dbb6f9591e18a4a20c9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 16:47:46 +0200 Subject: [PATCH 524/550] batch 5 --- .../allowed-document-types-modal.token.ts | 2 +- .../repository/detail-repository.interface.ts | 2 +- .../workspace-entity-context.interface.ts | 2 +- .../allowed-document-types-modal.element.ts | 10 +-- .../repository/document-type.repository.ts | 54 ++++++------- .../repository/document-type.store.ts | 8 +- .../sources/document-type.server.data.ts | 48 ++++++------ .../document-type-workspace.context.ts | 12 +-- .../document-type-workspace.element.ts | 6 +- .../document-type-workspace.stories.ts | 2 +- ...-workspace-view-edit-properties.element.ts | 6 +- ...cument-type-workspace-view-edit.element.ts | 12 +-- ...ent-table-actions-column-layout.element.ts | 2 +- .../document-table-collection-view.element.ts | 6 +- .../entity-actions/create/create.action.ts | 2 +- .../repository/document.repository.ts | 50 ++++++------ .../sources/document.server.data.ts | 46 +++++------ .../tree-item/document-tree-item.context.ts | 2 +- .../workspace/document-workspace.context.ts | 16 ++-- .../workspace/document-workspace.element.ts | 8 +- .../workspace/media-type-workspace.context.ts | 2 +- .../workspace/media-type-workspace.element.ts | 6 +- .../media-table-collection-view.element.ts | 2 +- .../media/repository/media.repository.ts | 52 ++++++------- .../media/media/repository/media.store.ts | 2 +- .../media/repository/media.tree.store.ts | 2 +- .../sources/media.detail.server.data.ts | 40 +++++----- .../workspace/media-workspace-edit.element.ts | 12 +-- .../workspace/media-workspace.context.ts | 4 +- .../workspace/media-workspace.element.ts | 6 +- .../workspace/media-workspace.stories.ts | 3 +- .../repository/member-group.repository.ts | 2 +- .../member-group-workspace.context.ts | 4 +- .../member-group-workspace.element.ts | 6 +- .../repository/member-type.repository.ts | 36 ++++----- .../sources/member-type.detail.server.data.ts | 2 +- .../member-type-workspace.context.ts | 4 +- .../member-type-workspace.element.ts | 6 +- .../members/members/member.detail.store.ts | 2 +- .../workspace/member-workspace.context.ts | 2 +- .../workspace/member-workspace.element.ts | 6 +- .../created-packages-section-view.element.ts | 4 +- .../repository/data-type.repository.ts | 78 +++++++++---------- .../sources/data-type-folder.server.data.ts | 34 ++++---- .../sources/data-type.server.data.ts | 36 ++++----- .../workspace/data-type-workspace.context.ts | 4 +- .../workspace/data-type-workspace.element.ts | 15 +--- .../workspace/data-type-workspace.stories.ts | 3 +- .../language/language-workspace.context.ts | 2 +- .../repository/relation-type.repository.ts | 2 +- .../relation-type-workspace.context.ts | 4 +- .../property-type-based-property.element.ts | 4 +- .../shared/components/table/table.element.ts | 18 ++--- .../shared/components/table/table.stories.ts | 35 ++++----- .../workspace-action-menu.element.ts | 2 +- .../workspace-view-collection.element.ts | 2 +- .../workspace-context/workspace-context.ts | 2 +- .../workspace-structure-manager.class.ts | 4 +- .../workspace/stylesheet-workspace.context.ts | 2 +- .../repository/template.repository.ts | 2 +- .../workspace/template-workspace.context.ts | 4 +- ...ashboard-translation-dictionary.element.ts | 4 +- .../repository/dictionary.repository.ts | 2 +- .../workspace/dictionary-workspace.context.ts | 4 +- .../user-group-workspace-edit.element.ts | 2 +- .../workspace/user-group-workspace.context.ts | 2 +- ...-group-table-name-column-layout.element.ts | 2 +- .../user-table-name-column-layout.element.ts | 2 +- .../users/users/repository/user.store.ts | 28 +++---- .../users/workspace/user-workspace.context.ts | 2 +- .../src/core/mocks/data/data-type.data.ts | 2 +- .../src/core/mocks/data/dictionary.data.ts | 12 +-- .../src/core/mocks/data/document-type.data.ts | 8 +- .../src/core/mocks/data/document.data.ts | 42 +++++----- .../src/core/mocks/data/entity.data.ts | 25 +++--- .../src/core/mocks/data/template.data.ts | 2 +- .../core/mocks/domains/data-type.handlers.ts | 4 +- .../core/mocks/domains/dictionary.handlers.ts | 4 +- .../mocks/domains/document-type.handlers.ts | 4 +- .../core/mocks/domains/document.handlers.ts | 2 +- .../src/core/mocks/domains/media.handlers.ts | 2 +- .../mocks/domains/relation-type.handlers.ts | 2 +- .../core/mocks/domains/template.handlers.ts | 2 +- .../mocks/domains/user-groups.handlers.ts | 4 +- .../src/core/mocks/domains/users.handlers.ts | 4 +- 85 files changed, 458 insertions(+), 463 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts index 74e37ca564..c4f7631758 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts @@ -1,7 +1,7 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbAllowedDocumentTypesModalData { - key: string | null; + id: string | null; } export interface UmbAllowedDocumentTypesModalResult { diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index 48670bbdb5..b228dc0c30 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -6,7 +6,7 @@ export interface UmbDetailRepository { error?: ProblemDetailsModel; }>; - requestByKey(key: string): Promise<{ + requestById(id: string): Promise<{ data?: DetailType; error?: ProblemDetailsModel; }>; diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts index 338e893545..878f050818 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts @@ -2,7 +2,7 @@ import type { UmbWorkspaceContextInterface } from '@umbraco-cms/backoffice/works export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { - getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() + getEntityId(): string | undefined; // COnsider if this should go away now that we have getUnique() getEntityType(): string; // TODO: consider of this should be on the repository because a repo is responsible for one entity type //getData(): EntityType | undefined; save(): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index ff55e6dfc3..41f8b961b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -21,9 +21,9 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< async firstUpdated() { // TODO: show error - if (!this.data?.key) return; + if (!this.data?.id) return; - const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.key); + const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.id); if (data) { this._allowedDocumentTypes = data; @@ -37,8 +37,8 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< #onClick(event: PointerEvent) { event.stopPropagation(); const target = event.target as HTMLButtonElement; - const documentTypeKey = target.dataset.key; - if (!documentTypeKey) throw new Error('No document type key found'); + const documentTypeKey = target.dataset.id; + if (!documentTypeKey) throw new Error('No document type id found'); this.modalHandler?.submit({ documentTypeKey }); } @@ -50,7 +50,7 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< ${this._allowedDocumentTypes.map( (item) => html` - + ${item.icon ? html`` : nothing} ` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 98b2ab40e2..dbf7c841e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -64,7 +64,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -77,17 +77,17 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -100,24 +100,24 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: async createScaffold(parentId: string | null) { - if (!parentId) throw new Error('Parent key is missing'); + if (!parentId) throw new Error('Parent id is missing'); await this.#init; return this.#detailDataSource.createScaffold(parentId); } - async requestByKey(key: string) { - if (!key) throw new Error('Key is missing'); + async requestById(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#detailStore?.append(data); @@ -126,23 +126,23 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { data, error }; } - async byKey(key: string) { - if (!key) throw new Error('Key is missing'); + async byId(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - return this.#detailStore!.byKey(key); + return this.#detailStore!.byId(id); } // TODO: we need to figure out where to put this - async requestAllowedChildTypesOf(key: string) { - if (!key) throw new Error('Key is missing'); + async requestAllowedChildTypesOf(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - return this.#detailDataSource.getAllowedChildrenOf(key); + return this.#detailDataSource.getAllowedChildrenOf(id); } // Could potentially be general methods: async create(template: ItemType) { - if (!template || !template.key) throw new Error('Template is missing'); + if (!template || !template.id) throw new Error('Template is missing'); await this.#init; const { error } = await this.#detailDataSource.insert(template); @@ -161,10 +161,10 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U } async save(item: ItemType) { - if (!item || !item.key) throw new Error('Document-Type is missing'); + if (!item || !item.id) throw new Error('Document-Type is missing'); await this.#init; - const { error } = await this.#detailDataSource.update(item.key, item); + const { error } = await this.#detailDataSource.update(item.id, item); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -174,7 +174,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.key, { name: item.name }); + this.#treeStore?.updateItem(item.id, { name: item.name }); // TODO: would be nice to align the stores on methods/methodNames. } @@ -183,11 +183,11 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // General: - async delete(key: string) { - if (!key) throw new Error('Document key is missing'); + async delete(id: string) { + if (!id) throw new Error('Document id is missing'); await this.#init; - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -196,8 +196,8 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); + this.#detailStore?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index f8b258866d..23b64c0942 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Document Types */ export class UmbDocumentTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentTypeStore. @@ -36,8 +36,8 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - byKey(key: DocumentTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byId(id: DocumentTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -45,7 +45,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 95de705f1f..f6bff744b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -26,21 +26,21 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource( this.#host, - fetch(`/umbraco/management/api/v1/document-type/${document.key}`, { + fetch(`/umbraco/management/api/v1/document-type/${document.id}`, { method: 'PUT', body: body, headers: { @@ -127,13 +127,13 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts index 872198dd8d..bf851ab301 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts @@ -12,5 +12,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts index faf22d6b41..73eea4e334 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts @@ -59,8 +59,8 @@ export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitEle const property = await this._propertyStructureHelper.addProperty(this._containerId); if (!property) return; - // Take key and parse to modal: - console.log('property key:', property.id!); + // Take id and parse to modal: + console.log('property id:', property.id!); const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL); @@ -77,7 +77,7 @@ export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitEle html` { - this._propertyStructureHelper.partialUpdateProperty(property.key, event.detail); + this._propertyStructureHelper.partialUpdateProperty(property.id, event.detail); }}>` )} Add property `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts index 3fb75e1c6f..573d386347 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -92,7 +92,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { component: () => import('./document-type-workspace-view-edit-tab.element'), setup: (component: Promise) => { (component as any).tabName = tabName; - (component as any).ownerTabKey = tab.key; + (component as any).ownerTabKey = tab.id; }, }); }); @@ -118,9 +118,9 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { this._routes = routes; } - #remove(tabKey: string | undefined) { - if (!tabKey) return; - this._workspaceContext?.structure.removeContainer(null, tabKey); + #remove(tabId: string | undefined) { + if (!tabId) return; + this._workspaceContext?.structure.removeContainer(null, tabId); } async #addTab() { this._workspaceContext?.structure.createContainer(null, null, 'Tab'); @@ -140,7 +140,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { : ''} ${repeat( this._tabs, - (tab) => tab.key, + (tab) => tab.id, (tab) => { // TODO: make better url folder name: const path = this._routerPath + '/tab/' + encodeURI(tab.name || ''); @@ -152,7 +152,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { label="Remove tab" class="trash" slot="append" - @click=${() => this.#remove(tab.key)} + @click=${() => this.#remove(tab.id)} compact> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts index c5dd3bac32..a20182afe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts @@ -70,7 +70,7 @@ export class UmbDocumentTableActionColumnLayoutElement extends LitElement { + unique=${ifDefined(this.item.id)}> `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts index 5f63a23d34..ec3eef7b88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts @@ -96,10 +96,10 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { private _createTableItems(items: Array) { this._tableItems = items.map((item) => { - // TODO: use unique instead of key - if (!item.key) throw new Error('Item key is missing.'); + // TODO: use unique instead of id + if (!item.id) throw new Error('Item id is missing.'); return { - key: item.key, + id: item.id, icon: item.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 6994ebcabe..7c198e7a38 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -24,7 +24,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase, UmbDe await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -81,17 +81,17 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -104,29 +104,29 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: async createScaffold(documentTypeKey: string) { - if (!documentTypeKey) throw new Error('Document type key is missing'); + if (!documentTypeKey) throw new Error('Document type id is missing'); await this.#init; return this.#detailDataSource.createScaffold(documentTypeKey); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -137,10 +137,10 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Could potentially be general methods: - async create(item: CreateDocumentRequestModel & { key: string }) { + async create(item: CreateDocumentRequestModel & { id: string }) { await this.#init; - if (!item || !item.key) { + if (!item || !item.id) { throw new Error('Document is missing'); } @@ -162,11 +162,11 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe async save(item: ItemType) { await this.#init; - if (!item || !item.key) { + if (!item || !item.id) { throw new Error('Document is missing'); } - const { error } = await this.#detailDataSource.update(item.key, item); + const { error } = await this.#detailDataSource.update(item.id, item); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -177,7 +177,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Consider to look up the data before fetching from the server // Consider notify a workspace if a document is updated in the store while someone is editing it. this.#store?.append(item); - //this.#treeStore?.updateItem(item.key, { name: item.name });// Port data to tree store. + //this.#treeStore?.updateItem(item.id, { name: item.name });// Port data to tree store. // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -185,14 +185,14 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Document key is missing'); + if (!id) { + throw new Error('Document id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -202,8 +202,8 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a document is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -212,8 +212,8 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Listing all currently known methods we need to implement: // these currently only covers posting data // TODO: find a good way to split these - async trash(keys: Array) { - console.log('document trash: ' + keys); + async trash(ids: Array) { + console.log('document trash: ' + ids); alert('implement trash'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 4572b4ccca..ae6a501479 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -32,21 +32,21 @@ export class UmbDocumentServerDataSource } /** - * Fetches a Document with the given key from the server - * @param {string} key + * Fetches a Document with the given id from the server + * @param {string} id * @return {*} * @memberof UmbDocumentServerDataSource */ - async get(key: string) { - if (!key) { + async get(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, - DocumentResource.getDocumentByKey({ - key, + DocumentResource.getDocumentById({ + id, }) ); } @@ -57,12 +57,12 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async createScaffold(documentTypeKey: string) { + async createScaffold(documentTypeId: string) { const data: DocumentResponseModel = { urls: [], - templateKey: null, - key: uuidv4(), - contentTypeKey: documentTypeKey, + templateId: null, + id: uuidv4(), + contentTypeId: documentTypeId, values: [], variants: [ { @@ -87,8 +87,8 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async insert(document: CreateDocumentRequestModel & { key: string }) { - if (!document.key) throw new Error('Key is missing'); + async insert(document: CreateDocumentRequestModel & { id: string }) { + if (!document.id) throw new Error('Id is missing'); let body: string; @@ -118,12 +118,12 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async update(key: string, document: DocumentResponseModel) { - if (!document.key) { - const error: ProblemDetailsModel = { title: 'Document key is missing' }; + async update(id: string, document: DocumentResponseModel) { + if (!document.id) { + const error: ProblemDetailsModel = { title: 'Document id is missing' }; return { error }; } - //const payload = { key: document.key, requestBody: document }; + //const payload = { id: document.id, requestBody: document }; let body: string; @@ -153,8 +153,8 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async trash(key: string) { - if (!key) { + async trash(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } @@ -164,7 +164,7 @@ export class UmbDocumentServerDataSource this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify([key]), + body: JSON.stringify([id]), headers: { 'Content-Type': 'application/json', }, @@ -174,12 +174,12 @@ export class UmbDocumentServerDataSource /** * Deletes a Document on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDocumentServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } @@ -189,7 +189,7 @@ export class UmbDocumentServerDataSource try { await fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify([key]), + body: JSON.stringify([id]), headers: { 'Content-Type': 'application/json', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts index a9812355db..4fcde2bd4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts @@ -5,6 +5,6 @@ import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-a // TODO get unique method from an document repository static method export class UmbDocumentTreeItemContext extends UmbTreeItemContextBase { constructor(host: UmbControllerHostElement) { - super(host, (x: DocumentTreeItemResponseModel) => x.key); + super(host, (x: DocumentTreeItemResponseModel) => x.id); } } 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 81629020e2..c479ad54a3 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 @@ -28,7 +28,7 @@ export class UmbDocumentWorkspaceContext * The document is the current state/draft version of the document. */ #draft = new ObjectState(undefined); - readonly unique = this.#draft.getObservablePart((data) => data?.key); + readonly unique = this.#draft.getObservablePart((data) => data?.id); readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeKey); readonly variants = this.#draft.getObservablePart((data) => data?.variants || []); @@ -44,7 +44,7 @@ export class UmbDocumentWorkspaceContext this.structure = new UmbWorkspacePropertyStructureManager(this.host, new UmbDocumentTypeRepository(this.host)); this.splitView = new UmbWorkspaceSplitViewManager(this.host); - new UmbObserverController(this.host, this.documentTypeKey, (key) => this.structure.loadType(key)); + new UmbObserverController(this.host, this.documentTypeKey, (id) => this.structure.loadType(id)); /* TODO: Concept for ensure variant values: @@ -60,7 +60,7 @@ export class UmbDocumentWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (!data) return undefined; this.setIsNew(false); @@ -89,8 +89,8 @@ export class UmbDocumentWorkspaceContext } */ - getEntityKey() { - return this.getData().key; + getEntityId() { + return this.getData().id; } getEntityType() { @@ -165,7 +165,7 @@ export class UmbDocumentWorkspaceContext if (!this.#draft.value) return; if (this.getIsNew()) { // TODO: typescript hack until we get the create type - const value = this.#draft.value as CreateDocumentRequestModel & { key: string }; + const value = this.#draft.value as CreateDocumentRequestModel & { id: string }; await this.repository.create(value); } else { await this.repository.save(this.#draft.value); @@ -174,8 +174,8 @@ export class UmbDocumentWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } /* diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 77f1a3b537..67656c3380 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -20,7 +20,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { path: 'create/:parentId/:documentTypeKey', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - // TODO: use parent key: + // TODO: use parent id: // TODO: Notice the perspective of permissions here, we need to check if the user has access to create a document of this type under this parent? const parentId = info.match.params.parentId; const documentTypeKey = info.match.params.documentTypeKey; @@ -28,11 +28,11 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; 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 4c6a6789fc..ace5dcc750 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 @@ -22,7 +22,7 @@ export class UmbWorkspaceMediaTypeContext return this.#data.getValue(); } - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 5b1ef7f277..44b19e7eae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -29,11 +29,11 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts index acacf64c88..7e5a02a213 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts @@ -85,7 +85,7 @@ export class UmbMediaTableCollectionViewElement extends UmbLitElement { // TODO: I guess the type error will go away when we get an entity based MediaDetails model instead of tree based. this._tableItems = mediaItems.map((item) => { return { - key: item.key, + id: item.id, icon: item.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 9613b81079..53ee05be00 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -77,7 +77,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -90,17 +90,17 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -113,9 +113,9 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: @@ -124,22 +124,22 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor await this.#init; if (!parentId) { - throw new Error('Parent key is missing'); + throw new Error('Parent id is missing'); } return this.#detailDataSource.createScaffold(parentId); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -153,7 +153,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor async create(template: ItemDetailType) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -175,11 +175,11 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor async save(document: ItemDetailType) { await this.#init; - if (!document || !document.key) { + if (!document || !document.id) { throw new Error('Template is missing'); } - const { error } = await this.#detailDataSource.update(document.key, document); + const { error } = await this.#detailDataSource.update(document.id, document); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -190,7 +190,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#store?.append(document); - this.#treeStore?.updateItem(document.key, { name: document.name }); + this.#treeStore?.updateItem(document.id, { name: document.name }); // TODO: would be nice to align the stores on methods/methodNames. @@ -198,14 +198,14 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor } // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Document key is missing'); + if (!id) { + throw new Error('Document id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -215,23 +215,23 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; } - async trash(keys: Array) { - console.log('media trash: ' + keys); + async trash(ids: Array) { + console.log('media trash: ' + ids); alert('implement trash'); } - async move(keys: Array, destination: string) { + async move(ids: Array, destination: string) { // TODO: use backend cli when available. const res = await fetch('/umbraco/management/api/v1/media/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts index 647992a1af..ddc1a8b5fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbMediaStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index adc6a920e0..9c63d9c946 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -13,7 +13,7 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaTreeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index b8151a109f..f45d3a4050 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -23,13 +23,13 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource res.json()) .then((res) => res[0] || undefined) ); @@ -52,7 +52,7 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource { this.#umbWorkspaceContext = instance as UmbMediaWorkspaceContext; - this.#observeKey(); + this.#observeId(); }); } - #observeKey() { + #observeId() { if (!this.#umbWorkspaceContext) return; - this.observe(this.#umbWorkspaceContext.data, (data) => (this._key = data?.key)); + this.observe(this.#umbWorkspaceContext.data, (data) => (this._id = data?.id)); } render() { - if (!this._key) return nothing; + if (!this._id) return nothing; return html` + unique="${this._id}"> `; } } 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 e4ea9d2b88..5bd0d9c6e4 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 @@ -23,7 +23,7 @@ export class UmbMediaWorkspaceContext } // TODO: this should be async because it can only return the id if the data is loaded. - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } @@ -47,7 +47,7 @@ export class UmbMediaWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index cc3e954a76..eb12659f04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMediaWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts index 82e5edea53..c294b9dc31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts @@ -1,6 +1,7 @@ import './media-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data as mediaNodes } from '../../../../core/mocks/data/media.data'; import type { UmbMediaWorkspaceElement } from './media-workspace.element'; @@ -11,5 +12,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 713f7f6456..f222c35daf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -94,7 +94,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return this.#detailSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(key: string) { await this.#init; // TODO: should we show a notification if the key is missing? 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 78644ab982..abd0d7d9ba 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 @@ -22,7 +22,7 @@ export class UmbWorkspaceMemberGroupContext return this.#data.getValue(); } - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } @@ -41,7 +41,7 @@ export class UmbWorkspaceMemberGroupContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.#data.next(data); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index 674512ad7f..d97a7067e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -29,11 +29,11 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index ed295cee26..2226ee91ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -64,7 +64,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -77,17 +77,17 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -100,9 +100,9 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS @@ -112,16 +112,16 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return this.#detailSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.requestByKey(key); + const { data, error } = await this.#detailSource.requestById(id); if (data) { this.#store?.append(data); @@ -129,15 +129,15 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { data, error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Member type deleted` } }; @@ -147,8 +147,8 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a member type is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -159,7 +159,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // TODO: should we show a notification if the MemberType is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!detail || !detail.key) { + if (!detail || !detail.id) { const error: ProblemDetailsModel = { title: 'Member type is missing' }; return { error }; } @@ -175,7 +175,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // Consider to look up the data before fetching from the server // Consider notify a workspace if a member type is updated in the store while someone is editing it. this.#store?.append(detail); - this.#treeStore?.updateItem(detail.key, { name: detail.name }); + this.#treeStore?.updateItem(detail.id, { name: detail.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index 99192f426f..6a13f71f39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -33,7 +33,7 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< * @return {*} * @memberof UmbMemberTypeDetailServerDataSource */ - requestByKey(key: string) { + requestById(key: string) { //return tryExecuteAndNotify(this.#host, MemberTypeResource.getMemberTypeByKey({ key })); // TODO => use backend cli when available. return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/member-group/${key}`)) as any; 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 3cd2fb008d..d78226c9b3 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 @@ -19,7 +19,7 @@ export class UmbMemberTypeWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); @@ -37,7 +37,7 @@ export class UmbMemberTypeWorkspaceContext return this.#data.getValue(); } - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index a5e1593549..830a0ff7cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index 18cc624687..973f79f5c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -38,7 +38,7 @@ export class UmbMemberStore extends UmbStoreBase implements UmbEntityDetailStore // }); // temp until Resource is updated - const member = umbMemberData.getByKey(id); + const member = umbMemberData.getById(id); if (member) { this.#data.appendOne(member); } 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 7f7367ced3..3e9ca61b6a 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 @@ -16,7 +16,7 @@ export class UmbMemberWorkspaceContext return 'member'; } - getEntityKey() { + getEntityId() { return '1234'; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index 5b76fa0e97..57e37d3dc3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMemberWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts index 3910947772..8e0b4e8797 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts @@ -33,11 +33,11 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { // TODO: find a way to make this reuseable across: this._workspaces?.map((workspace: ManifestWorkspace) => { routes.push({ - path: `${workspace.meta.entityType}/:key`, + path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.key; + (el as any).entityKey = info.match.params.id; }); }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index e3cdede515..8f93aa9f09 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -78,7 +78,7 @@ export class UmbDataTypeRepository } async requestTreeItemsOf(parentId: string | null) { - if (!parentId) throw new Error('Parent key is missing'); + if (!parentId) throw new Error('Parent id is missing'); await this.#init; const { data, error } = await this.#treeSource.getChildrenOf(parentId); @@ -90,13 +90,13 @@ export class UmbDataTypeRepository return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { - if (!keys) throw new Error('Keys are missing'); + async requestTreeItems(ids: Array) { + if (!ids) throw new Error('Keys are missing'); await this.#init; - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -105,30 +105,30 @@ export class UmbDataTypeRepository } async treeItemsOf(parentId: string | null) { - if (parentId === undefined) throw new Error('Parent key is missing'); + if (parentId === undefined) throw new Error('Parent id is missing'); await this.#init; return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: async createScaffold(parentId: string | null) { - if (parentId === undefined) throw new Error('Parent key is missing'); + if (parentId === undefined) throw new Error('Parent id is missing'); await this.#init; return this.#detailSource.createScaffold(parentId); } - async requestByKey(key: string) { - if (!key) throw new Error('Key is missing'); + async requestById(id: string) { + if (!id) throw new Error('Key is missing'); await this.#init; - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#detailStore?.append(data); @@ -137,16 +137,16 @@ export class UmbDataTypeRepository return { data, error }; } - async byKey(key: string) { - if (!key) throw new Error('Key is missing'); + async byId(id: string) { + if (!id) throw new Error('Key is missing'); await this.#init; - return this.#detailStore!.byId(key); + return this.#detailStore!.byId(id); } // Could potentially be general methods: async create(dataType: ItemType) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type id is missing'); await this.#init; @@ -165,11 +165,11 @@ export class UmbDataTypeRepository async save(dataType: ItemType) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type id is missing'); await this.#init; - const { error } = await this.#detailSource.update(dataType.key, dataType); + const { error } = await this.#detailSource.update(dataType.id, dataType); if (!error) { const notification = { data: { message: `Data Type saved` } }; @@ -180,7 +180,7 @@ export class UmbDataTypeRepository // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#detailStore?.append(dataType); - this.#treeStore?.updateItem(dataType.key, { name: dataType.name }); + this.#treeStore?.updateItem(dataType.id, { name: dataType.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -188,11 +188,11 @@ export class UmbDataTypeRepository // General: - async delete(key: string) { - if (!key) throw new Error('Data Type key is missing'); + async delete(id: string) { + if (!id) throw new Error('Data Type id is missing'); await this.#init; - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Data Type deleted` } }; @@ -202,8 +202,8 @@ export class UmbDataTypeRepository // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); + this.#detailStore?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -211,12 +211,12 @@ export class UmbDataTypeRepository // folder async createFolderScaffold(parentId: string | null) { - if (parentId === undefined) throw new Error('Parent key is missing'); + if (parentId === undefined) throw new Error('Parent id is missing'); return this.#folderSource.createScaffold(parentId); } - // TODO: temp create type until backend is ready. Remove the key addition when new types are generated. - async createFolder(folderRequest: CreateFolderRequestModel & { key?: string | undefined }) { + // TODO: temp create type until backend is ready. Remove the id addition when new types are generated. + async createFolder(folderRequest: CreateFolderRequestModel & { id?: string | undefined }) { if (!folderRequest) throw new Error('folder request is missing'); await this.#init; @@ -228,7 +228,7 @@ export class UmbDataTypeRepository $type: 'FolderTreeItemResponseModel', parentId: folderRequest.parentId, name: folderRequest.name, - key: folderRequest.key, + id: folderRequest.id, isFolder: true, isContainer: false, type: 'data-type', @@ -242,35 +242,35 @@ export class UmbDataTypeRepository return { error }; } - async deleteFolder(key: string) { - if (!key) throw new Error('Key is missing'); + async deleteFolder(id: string) { + if (!id) throw new Error('Key is missing'); - const { error } = await this.#folderSource.delete(key); + const { error } = await this.#folderSource.delete(id); if (!error) { - this.#treeStore?.removeItem(key); + this.#treeStore?.removeItem(id); } return { error }; } - async updateFolder(key: string, folder: FolderModelBaseModel) { - if (!key) throw new Error('Key is missing'); + async updateFolder(id: string, folder: FolderModelBaseModel) { + if (!id) throw new Error('Key is missing'); if (!folder) throw new Error('Folder data is missing'); - const { error } = await this.#folderSource.update(key, folder); + const { error } = await this.#folderSource.update(id, folder); if (!error) { - this.#treeStore?.updateItem(key, { name: folder.name }); + this.#treeStore?.updateItem(id, { name: folder.name }); } return { error }; } - async requestFolder(key: string) { - if (!key) throw new Error('Key is missing'); + async requestFolder(id: string) { + if (!id) throw new Error('Key is missing'); - const { data, error } = await this.#folderSource.get(key); + const { data, error } = await this.#folderSource.get(id); if (data) { this.#treeStore?.appendItems([data]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts index 4f88bf0dfe..880ab05097 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts @@ -29,7 +29,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Creates a Data Type folder with the given key from the server - * @param {string} key + * @param {string} parentId * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ @@ -37,7 +37,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { const scaffold: FolderReponseModel = { $type: 'FolderReponseModel', name: '', - key: uuidv4(), + id: uuidv4(), parentId, }; @@ -46,16 +46,16 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Fetches a Data Type folder with the given key from the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async get(key: string) { - if (!key) throw new Error('Key is missing'); + async get(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getDataTypeFolderByKey({ - key, + DataTypeResource.getDataTypeFolderById({ + id: id, }) ); } @@ -82,13 +82,13 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async update(key: string, folder: FolderModelBaseModel) { - if (!key) throw new Error('Key is missing'); - if (!key) throw new Error('Folder data is missing'); + async update(id: string, folder: FolderModelBaseModel) { + if (!id) throw new Error('Key is missing'); + if (!id) throw new Error('Folder data is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeFolderByKey({ - key, + DataTypeResource.putDataTypeFolderById({ + id: id, requestBody: folder, }) ); @@ -96,16 +96,16 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Deletes a Data Type folder with the given key on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async delete(key: string) { - if (!key) throw new Error('Key is missing'); + async delete(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.deleteDataTypeFolderByKey({ - key, + DataTypeResource.deleteDataTypeFolderById({ + id: id, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 8cf3d574ff..2968de03b3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -18,7 +18,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; */ export class UmbDataTypeServerDataSource implements - UmbDataSource + UmbDataSource { #host: UmbControllerHostElement; @@ -33,16 +33,16 @@ export class UmbDataTypeServerDataSource /** * Fetches a Data Type with the given key from the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async get(key: string) { - if (!key) throw new Error('Key is missing'); + async get(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getDataTypeByKey({ - key, + DataTypeResource.getDataTypeById({ + id: id, }) ); } @@ -57,7 +57,7 @@ export class UmbDataTypeServerDataSource const data: DataTypeResponseModel = { $type: '', parentId: parentId, - key: uuidv4(), + id: uuidv4(), }; return { data }; @@ -69,9 +69,9 @@ export class UmbDataTypeServerDataSource * @return {*} * @memberof UmbDataTypeServerDataSource */ - async insert(dataType: CreateDataTypeRequestModel & { key: string }) { + async insert(dataType: CreateDataTypeRequestModel & { id: string }) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type key is missing'); tryExecuteAndNotify( this.#host, @@ -87,13 +87,13 @@ export class UmbDataTypeServerDataSource * @return {*} * @memberof UmbDataTypeServerDataSource */ - async update(key: string, data: DataTypeModelBaseModel) { - if (!key) throw new Error('Key is missing'); + async update(id: string, data: DataTypeModelBaseModel) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeByKey({ - key, + DataTypeResource.putDataTypeById({ + id: id, requestBody: data, }) ); @@ -101,17 +101,17 @@ export class UmbDataTypeServerDataSource /** * Deletes a Data Type on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async delete(key: string) { - if (!key) throw new Error('Key is missing'); + async delete(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.deleteDataTypeByKey({ - key, + DataTypeResource.deleteDataTypeById({ + id: id, }) ); } 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 4bd45f3a37..a1e6fd139a 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 @@ -19,7 +19,7 @@ export class UmbDataTypeWorkspaceContext } async load(id: string) { - const { data } = await this.repository.requestByKey(id); + const { data } = await this.repository.requestById(id); if (data) { this.setIsNew(false); this.#data.update(data); @@ -37,7 +37,7 @@ export class UmbDataTypeWorkspaceContext return this.#data.getValue(); } - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index befe9cd105..93455e437f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -13,10 +13,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { #workspaceContext = new UmbDataTypeWorkspaceContext(this); - #routerPath? = ''; - #element = document.createElement('umb-data-type-workspace-edit-element'); - #key = ''; @state() _routes: IRoute[] = [ @@ -29,21 +26,17 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; render() { - return html` { - this.#routerPath = event.target.absoluteRouterPath; - }}>`; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts index 3b560f8660..f97b00867b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts @@ -3,6 +3,7 @@ import './data-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/data-type.data'; import type { UmbDataTypeWorkspaceElement } from './data-type-workspace.element'; @@ -14,5 +15,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; 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 af5b2d0fc8..5a7ce69293 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 @@ -45,7 +45,7 @@ export class UmbLanguageWorkspaceContext } // TODO: Convert to uniques: - getEntityKey() { + getEntityId() { return this.#data.getValue()?.isoCode; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 0ec94bbbc5..bbc2ccbdf1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -112,7 +112,7 @@ export class UmbRelationTypeRepository implements UmbTreeRepository { this._dataTypeData = dataType?.values || []; this._propertyEditorUiAlias = dataType?.propertyEditorUiAlias || undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts index 192818c781..0ab0b54030 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, html, LitElement, nothing } from 'lit'; +import { css, html, LitElement } from 'lit'; import { ifDefined } from 'lit/directives/if-defined.js'; import { when } from 'lit/directives/when.js'; import { customElement, property, state } from 'lit/decorators.js'; @@ -7,7 +7,7 @@ import { repeat } from 'lit/directives/repeat.js'; // TODO: move to UI Library - entity actions should NOT be moved to UI Library but stay in an UmbTable element export interface UmbTableItem { - key: string; + id: string; icon?: string; entityType?: string; data: Array; @@ -171,7 +171,7 @@ export class UmbTableElement extends LitElement { private _handleRowCheckboxChange(event: Event, item: UmbTableItem) { const checkboxElement = event.target as HTMLInputElement; - checkboxElement.checked ? this._selectRow(item.key) : this._deselectRow(item.key); + checkboxElement.checked ? this._selectRow(item.id) : this._deselectRow(item.id); } private _handleAllRowsCheckboxChange(event: Event) { @@ -198,7 +198,7 @@ export class UmbTableElement extends LitElement { } private _selectAllRows() { - this.selection = this.items.map((item: UmbTableItem) => item.key); + this.selection = this.items.map((item: UmbTableItem) => item.id); this._selectionMode = true; this.dispatchEvent(new UmbTableSelectedEvent()); } @@ -215,7 +215,7 @@ export class UmbTableElement extends LitElement { ${this._renderHeaderCheckboxCell()} ${this.columns.map((column) => this._renderHeaderCell(column))} - ${repeat(this.items, (item) => item.key, this._renderRow)} + ${repeat(this.items, (item) => item.id, this._renderRow)} `; } @@ -259,9 +259,9 @@ export class UmbTableElement extends LitElement { return html` this._selectRow(item.key)} - @unselected=${() => this._deselectRow(item.key)}> + ?selected=${this._isSelected(item.id)} + @selected=${() => this._selectRow(item.id)} + @unselected=${() => this._deselectRow(item.id)}> ${this._renderRowCheckboxCell(item)} ${this.columns.map((column) => this._renderRowCell(column, item))} `; }; @@ -277,7 +277,7 @@ export class UmbTableElement extends LitElement { label="Select Row" @click=${(e: PointerEvent) => e.stopPropagation()} @change=${(event: Event) => this._handleRowCheckboxChange(event, item)} - ?checked="${this._isSelected(item.key)}"> + ?checked="${this._isSelected(item.id)}"> ` )} `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts index d7ac93c25a..f4da64de01 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts @@ -1,13 +1,13 @@ import { Meta, StoryObj } from '@storybook/web-components'; import './table.element'; import { v4 as uuidv4 } from 'uuid'; -import type { UmbTableElement, UmbTableColumn, UmbTableConfig, UmbTableItem } from './table.element' +import type { UmbTableElement, UmbTableColumn, UmbTableConfig, UmbTableItem } from './table.element'; const meta: Meta = { - title: 'Components/Table', - component: 'umb-table', + title: 'Components/Table', + component: 'umb-table', }; - + export default meta; type Story = StoryObj; @@ -26,7 +26,7 @@ const columns: Array = [ const items: Array = [ { - key: uuidv4(), + id: uuidv4(), icon: 'umb:wand', data: [ { @@ -40,7 +40,7 @@ const items: Array = [ ], }, { - key: uuidv4(), + id: uuidv4(), icon: 'umb:document', data: [ { @@ -54,7 +54,7 @@ const items: Array = [ ], }, { - key: uuidv4(), + id: uuidv4(), icon: 'umb:user', data: [ { @@ -70,35 +70,34 @@ const items: Array = [ ]; export const Overview: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: true, hideIcon: false, - } - } + }, + }, }; - export const WithDisallowedSelections: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: false, hideIcon: false, - } - } + }, + }, }; export const WithHiddenIcons: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: true, hideIcon: true, - } - } -}; \ No newline at end of file + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts index 3f6df583d9..1c02dd2a20 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts @@ -53,7 +53,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { private _observeInfo() { if (!this._workspaceContext) return; - this._entityKey = this._workspaceContext.getEntityKey(); + this._entityKey = this._workspaceContext.getEntityId(); this._entityType = this._workspaceContext.getEntityType(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index e7ff049ce0..7a491c0aee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -42,7 +42,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { } protected _provideWorkspace() { - const entityKey = this._workspaceContext?.getEntityKey(); + const entityKey = this._workspaceContext?.getEntityId(); const entityType = this._workspaceContext?.getEntityType(); if (entityKey != null && entityType != null) { 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 a2c6c169e6..9d6b905264 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 @@ -32,7 +32,7 @@ export abstract class UmbWorkspaceContext this.#isNew.next(isNew); } - abstract getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() + abstract getEntityId(): string | undefined; // COnsider if this should go away now that we have getUnique() abstract getEntityType(): string; // TODO: consider of this should be on the repository because a repo is responsible for one entity type abstract getData(): EntityType | undefined; abstract save(): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index 094c4ae9c8..8a7b24dc23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -94,7 +94,7 @@ export class UmbWorkspacePropertyStructureManager { + new UmbObserverController(this.#host, await this.#documentTypeRepository.byId(data.id), (docType) => { if (docType) { // TODO: Handle if there was changes made to the specific document type in this context. /* diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index 4eb287b166..a973a00a4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -20,7 +20,7 @@ export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext, UmbDetailR return this.#detailDataSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(key: string) { await this.#init; // TODO: should we show a notification if the key is missing? diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index 4c6df85bc3..efb54d7345 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -18,7 +18,7 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { // key is name to allow filtering on the displayed value const tableItem: UmbTableItem = { - key: dictionary.name ?? '', + id: dictionary.name ?? '', icon: 'umb:book-alt', data: [ { @@ -148,7 +148,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { #filter(e: { target: HTMLInputElement }) { this._tableItemsFiltered = e.target.value - ? this.#tableItems.filter((t) => t.key.includes(e.target.value)) + ? this.#tableItems.filter((t) => t.id.includes(e.target.value)) : this.#tableItems; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 5515ade2e3..4d07ae1971 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -114,7 +114,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#detailSource.createScaffold(parentId); } - async requestByKey(key: string) { + async requestById(key: string) { await this.#init; // TODO: should we show a notification if the key is missing? 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 a0f8457a67..56b6eb4706 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 @@ -24,7 +24,7 @@ export class UmbDictionaryWorkspaceContext return this.#data.getValue(); } - getEntityKey() { + getEntityId() { return this.getData()?.id || ''; } @@ -57,7 +57,7 @@ export class UmbDictionaryWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts index a3f435e626..9ca5a52915 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts @@ -214,7 +214,7 @@ export class UmbUserGroupWorkspaceEditElement extends UmbLitElement { this.observe(this._userStore.getAll(), (users) => { // TODO: handle if there is no users. if (!this._userKeys && users.length > 0) { - const entityKey = this.#workspaceContext?.getEntityKey(); + const entityKey = this.#workspaceContext?.getEntityId(); if (!entityKey) return; this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.id); //this._updateProperty('users', this._userKeys); 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 8aa55263d8..19a5fe183b 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 @@ -28,7 +28,7 @@ export class UmbUserGroupWorkspaceContext } getEntityType = this.#manager.getEntityType; getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; + getEntityId = this.#manager.getEntityKey; getStore = this.#manager.getStore; getData = this.#manager.getData as any; // TODO: fix type mismatch, but this will be done when we move to repositories. load = this.#manager.load; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts index 4a1f79127f..b60dc36c88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts @@ -11,7 +11,7 @@ export class UmbUserGroupTableNameColumnLayoutElement extends LitElement { value!: any; render() { - return html` + return html` ${this.value.name} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts index bf6d9fa7af..ed36318416 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts @@ -16,7 +16,7 @@ export class UmbUserTableNameColumnLayoutElement extends LitElement { render() { return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index 09e692ab85..a52581484d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -59,33 +59,33 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore)} * @memberof UmbDataTypeStore */ - getByKey(key: string) { + getByKey(id: string) { // TODO: use Fetcher API. // TODO: only fetch if the data type is not in the store? - fetch(`/umbraco/backoffice/users/details/${key}`) + fetch(`/umbraco/backoffice/users/details/${id}`) .then((res) => res.json()) .then((data) => { this.#users.appendOne(data); }); return this.#users.getObservablePart((users: Array) => - users.find((user: UmbUserStoreItemType) => user.id === key) + users.find((user: UmbUserStoreItemType) => user.id === id) ); } /** - * @description - Request Users by keys. - * @param {string} key + * @description - Request Users by ids. + * @param {string} id * @return {*} {(Observable)} * @memberof UmbDataTypeStore */ - getByKeys(keys: Array) { - const params = keys.map((key) => `key=${key}`).join('&'); + getByKeys(ids: Array) { + const params = ids.map((id) => `id=${id}`).join('&'); fetch(`/umbraco/backoffice/users/getByKeys?${params}`) .then((res) => res.json()) .then((data) => { @@ -93,7 +93,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => - users.filter((user: UmbUserStoreItemType) => keys.includes(user.id)) + users.filter((user: UmbUserStoreItemType) => ids.includes(user.id)) ); } @@ -265,7 +265,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore u.key === user.key); + // const index = users.findIndex((u) => u.id === user.id); // if (index === -1) return; // users[index] = { ...users[index], ...user }; // console.log('updateUser', user, users[index]); @@ -277,7 +277,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore u.key === key); + // const index = users.findIndex((u) => u.id === id); // if (index === -1) return; // users.splice(index, 1); // this._users.next(users); 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 545a9e3c1b..66d6589d2c 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 @@ -31,7 +31,7 @@ export class UmbUserWorkspaceContext } getEntityType = this.#manager.getEntityType; getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; + getEntityId = this.#manager.getEntityKey; getStore = this.#manager.getStore; getData = this.#manager.getData as any; // TODO: fix type mismatch, this will mos likely be handled when switching to repositories. load = this.#manager.load; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index 7e9e6efa8a..fccf52dbfa 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -643,7 +643,7 @@ class UmbDataTypeData extends UmbEntityData item.id !== id); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index 06ad181a21..c25318b39f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -8,7 +8,7 @@ export const data: Array = [ $type: '', parentId: null, name: 'Hello', - key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', hasChildren: true, type: 'dictionary-item', isContainer: false, @@ -28,7 +28,7 @@ export const data: Array = [ $type: '', parentId: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', name: 'Hello again', - key: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', + id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', hasChildren: false, type: 'dictionary-item', isContainer: false, @@ -60,13 +60,13 @@ class UmbDictionaryData extends UmbEntityData { return rootItems.map((item) => createEntityTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): Array { + const childItems = this.data.filter((item) => item.parentId === id); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 0f40b5d37f..532186dde7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -10,7 +10,7 @@ export const data: Array = [ { allowedTemplateIds: [], defaultTemplateId: null, - id: 'all-property-editors-document-type-key', + id: 'all-property-editors-document-type-id', alias: 'blogPost', name: 'Blog Post', description: null, @@ -22,7 +22,7 @@ export const data: Array = [ properties: [ { id: '2', - containerId: 'all-properties-group-key', + containerId: 'all-properties-group-id', alias: 'colorPicker', name: 'Color Picker', description: '', @@ -1023,7 +1023,7 @@ export const treeData: Array = [ name: 'All property editors document type', type: 'document-type', hasChildren: false, - id: 'all-property-editors-document-type-key', + id: 'all-property-editors-document-type-id', isContainer: false, parentId: null, icon: '', @@ -1107,7 +1107,7 @@ class UmbDocumentTypeData extends UmbEntityData { } getAllowedTypesOf(id: string): Array { - const documentType = this.getByKey(id); + const documentType = this.getById(id); const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.id) ?? []; const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.id ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index c7978c9fc5..15224b187d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -15,9 +15,9 @@ export const data: Array = [ url: '/', }, ], - templateKey: null, - key: 'all-property-editors-document-key', - contentTypeKey: 'all-property-editors-document-type-key', + templateId: null, + id: 'all-property-editors-document-id', + contentTypeId: 'all-property-editors-document-type-id', values: [ { $type: '', @@ -305,9 +305,9 @@ export const data: Array = [ url: '/', }, ], - templateKey: null, - key: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', - contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', + templateId: null, + id: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + contentTypeId: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { $type: '', @@ -435,9 +435,9 @@ export const data: Array = [ }, { urls: [], - templateKey: null, - key: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', - contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', + templateId: null, + id: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', + contentTypeId: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { $type: '', @@ -511,9 +511,9 @@ export const data: Array = [ }, { urls: [], - templateKey: null, - key: 'simple-document-key', - contentTypeKey: 'simple-document-type-key', + templateId: null, + id: 'simple-document-id', + contentTypeId: 'simple-document-type-id', variants: [ { $type: '', @@ -537,7 +537,7 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'all-property-editors-document-key', + id: 'all-property-editors-document-id', isContainer: false, parentId: null, name: 'All property editors', @@ -552,7 +552,7 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + id: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', isContainer: false, parentId: null, name: 'Article in english', @@ -567,7 +567,7 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', + id: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', isContainer: false, parentId: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', name: 'Blog post B', @@ -581,7 +581,7 @@ export const treeData: Array = [ type: 'document', icon: 'document', hasChildren: false, - key: 'f6n7a5b2-e7c1-463a-956bc-6ck5b9bdf447', + id: 'f6n7a5b2-e7c1-463a-956bc-6ck5b9bdf447', isContainer: false, parentId: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', noAccess: false, @@ -596,7 +596,7 @@ export const treeData: Array = [ type: 'document', icon: 'document', hasChildren: false, - key: 'simple-document-key', + id: 'simple-document-id', isContainer: false, parentId: null, noAccess: false, @@ -625,15 +625,15 @@ class UmbDocumentData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedDocumentTreeItemResponseModel { - const items = this.treeData.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedDocumentTreeItemResponseModel { + const items = this.treeData.filter((item) => item.parentId === id); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createDocumentTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index 8a20d66ef1..c0fb1ac135 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -11,12 +11,12 @@ export class UmbEntityData extends UmbData { return this.data.slice(skip, skip + take); } - getByKey(key: string) { - return this.data.find((item) => item.id === key); + getById(id: string) { + return this.data.find((item) => item.id === id); } - getByKeys(keys: Array) { - return this.data.filter((item) => keys.includes(item.id)); + getByIds(ids: Array) { + return this.data.filter((item) => ids.includes(item.id)); } save(saveItem: T) { @@ -33,8 +33,8 @@ export class UmbEntityData extends UmbData { return saveItem; } - move(keys: Array, destinationKey: string) { - const items = this.getByKeys(keys); + move(ids: Array, destinationKey: string) { + const items = this.getByIds(ids); const movedItems = items.map((item) => { return { ...item, @@ -46,11 +46,11 @@ export class UmbEntityData extends UmbData { return movedItems; } - trash(keys: Array) { + trash(ids: Array) { const trashedItems: Array = []; - keys.forEach((key) => { - const item = this.getByKey(key); + ids.forEach((key) => { + const item = this.getById(key); if (!item) return; // TODO: how do we handle trashed items? @@ -65,9 +65,9 @@ export class UmbEntityData extends UmbData { return trashedItems; } - delete(keys: Array) { - const deletedKeys = this.data.filter((item) => keys.includes(item.id)).map((item) => item.id); - this.data = this.data.filter((item) => keys.indexOf(item.id) === -1); + delete(ids: Array) { + const deletedKeys = this.data.filter((item) => ids.includes(item.id)).map((item) => item.id); + this.data = this.data.filter((item) => ids.indexOf(item.id) === -1); return deletedKeys; } @@ -76,6 +76,7 @@ export class UmbEntityData extends UmbData { const item = this.data[itemIndex]; if (!item) return; + // TODO: revisit this code, seems like something we can solve smarter/type safer now: const itemKeys = Object.keys(item); const newItem = {}; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index 8996295da9..fc1f17ac77 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -87,7 +87,7 @@ class UmbTemplateData extends UmbEntityData { super(data); } - getByKey(key: string): TemplateResponseModel | undefined { + getById(key: string): TemplateResponseModel | undefined { const item = this.data.find((item) => item.key === key); return item ? createTemplate(item) : undefined; } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts index 33adfde1df..020a390725 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts @@ -50,7 +50,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const dataType = umbDataTypeData.getByKey(key); + const dataType = umbDataTypeData.getById(key); return res(ctx.status(200), ctx.json(dataType)); }), @@ -97,7 +97,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const dataType = umbDataTypeData.getByKey(key); + const dataType = umbDataTypeData.getById(key); return res(ctx.status(200), ctx.json(dataType)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index 8c97cbf4ad..fe92b90a83 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -50,7 +50,7 @@ export const handlers = [ const id = req.params.id as string; if (!id) return; - const dictionary = umbDictionaryData.getByKey(id); + const dictionary = umbDictionaryData.getById(id); console.log(dictionary); return res(ctx.status(200), ctx.json(dictionary)); }), @@ -161,7 +161,7 @@ export const handlers = [ if (!id) return; const includeChildren = req.url.searchParams.get('includeChildren'); - const item = umbDictionaryData.getByKey(id); + const item = umbDictionaryData.getById(id); alert( `Downloads file for dictionary "${item?.name}", ${includeChildren === 'true' ? 'with' : 'without'} children.` diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index 52f160d4a4..473c04fc25 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -17,7 +17,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const document = umbDocumentTypeData.getByKey(key); + const document = umbDocumentTypeData.getById(key); return res(ctx.status(200), ctx.json([document])); }), @@ -67,7 +67,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const documentType = umbDocumentTypeData.getByKey(key); + const documentType = umbDocumentTypeData.getById(key); return res(ctx.status(200), ctx.json(documentType)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index 77c60de06c..cf29d8fc9a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -48,7 +48,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const document = umbDocumentData.getByKey(key); + const document = umbDocumentData.getById(key); return res(ctx.status(200), ctx.json(document)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts index 05051b1545..9256ed2662 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts @@ -9,7 +9,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const media = umbMediaData.getByKey(key); + const media = umbMediaData.getById(key); return res(ctx.status(200), ctx.json([media])); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts index 9e596c0e7b..d507be980e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -47,7 +47,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const RelationType = umbRelationTypeData.getByKey(key); + const RelationType = umbRelationTypeData.getById(key); return res(ctx.status(200), ctx.json(RelationType)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index 8f0685cb62..e75f058596 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -38,7 +38,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const response = umbTemplateData.getByKey(key); + const response = umbTemplateData.getById(key); return res(ctx.status(200), ctx.json(response)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts index e32b063ec5..d2e1bf94e1 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts @@ -18,7 +18,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const userGroup = umbUserGroupsData.getByKey(key); + const userGroup = umbUserGroupsData.getById(key); return res(ctx.status(200), ctx.json(userGroup)); }), @@ -26,7 +26,7 @@ export const handlers = [ rest.get('/umbraco/backoffice/user-groups/getByKeys', (req, res, ctx) => { const keys = req.url.searchParams.getAll('key'); if (keys.length === 0) return; - const userGroups = umbUserGroupsData.getByKeys(keys); + const userGroups = umbUserGroupsData.getByIds(keys); return res(ctx.status(200), ctx.json(userGroups)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index 9fddba99aa..05da53c373 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -20,7 +20,7 @@ export const handlers = [ const key = req.params.key as string; if (!key) return; - const user = umbUsersData.getByKey(key); + const user = umbUsersData.getById(key); return res(ctx.status(200), ctx.json(user)); }), @@ -28,7 +28,7 @@ export const handlers = [ rest.get('/umbraco/backoffice/users/getByKeys', (req, res, ctx) => { const keys = req.url.searchParams.getAll('key'); if (keys.length === 0) return; - const users = umbUsersData.getByKeys(keys); + const users = umbUsersData.getByIds(keys); return res(ctx.status(200), ctx.json(users)); }), From 0c6cf765bf048f290c2010d1a223a813a44e79c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 3 Apr 2023 17:12:06 +0200 Subject: [PATCH 525/550] batch 6 --- .../src/models/LogLevelCountsReponseModel.ts | 11 +- .../src/services/LogViewerResource.ts | 420 +++++++++--------- .../src/backoffice/media/media/index.ts | 2 +- .../workspace-view-data-type-info.element.ts | 4 +- .../log-viewer-log-types-chart.element.ts | 1 + .../repository/relation-type.repository.ts | 46 +- .../sources/relation-type.server.data.ts | 34 +- .../relation-type-workspace.context.ts | 4 +- .../relation-type-workspace.element.ts | 6 +- .../relation-type-workspace.stories.ts | 3 +- ...pe-workspace-view-relation-type.element.ts | 27 +- .../extension-slot/extension-slot.element.ts | 1 + .../input-checkbox-list.element.ts | 5 +- .../input-checkbox-list.stories.ts | 38 +- .../input-document-picker.element.ts | 30 +- .../input-document-type-picker.element.ts | 24 +- .../input-media-picker.element.ts | 28 +- .../entity-tree-item.context.ts | 2 +- ...kspace-container-structure-helper.class.ts | 10 +- ...rkspace-property-structure-helper.class.ts | 4 +- .../sources/template.detail.server.data.ts | 30 +- .../repository/template.repository.ts | 44 +- .../templates/repository/template.store.ts | 2 +- ...ashboard-translation-dictionary.element.ts | 6 +- .../repository/dictionary.repository.ts | 40 +- .../dictionary/repository/dictionary.store.ts | 2 +- .../workspace/dictionary-workspace.element.ts | 6 +- .../workspace/dictionary-workspace.stories.ts | 3 +- .../workspace/user-group-workspace.element.ts | 6 +- .../views/users/section-view-users.element.ts | 16 +- .../workspace/user-workspace-edit.element.ts | 8 +- .../users/workspace/user-workspace.element.ts | 6 +- .../src/core/mocks/data/log-viewer.data.ts | 12 +- .../src/core/mocks/data/media.data.ts | 24 +- .../src/core/mocks/data/relation-type.data.ts | 28 +- .../src/core/mocks/data/template.data.ts | 22 +- .../src/core/mocks/data/utils.ts | 2 +- .../core/mocks/domains/data-type.handlers.ts | 42 +- .../mocks/domains/document-type.handlers.ts | 32 +- .../core/mocks/domains/document.handlers.ts | 20 +- .../core/mocks/domains/language.handlers.ts | 12 +- .../core/mocks/domains/log-viewer.handlers.ts | 21 +- .../src/core/mocks/domains/media.handlers.ts | 20 +- .../mocks/domains/relation-type.handlers.ts | 26 +- .../core/mocks/domains/template.handlers.ts | 20 +- .../mocks/domains/user-groups.handlers.ts | 14 +- .../src/core/mocks/domains/users.handlers.ts | 14 +- .../src/stories/store.mdx | 12 +- 48 files changed, 594 insertions(+), 596 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index a1064cc7a4..d8e5543810 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -3,10 +3,9 @@ /* eslint-disable */ export type LogLevelCountsReponseModel = { - information?: number; - debug?: number; - warning?: number; - error?: number; - fatal?: number; + information?: number; + debug?: number; + warning?: number; + error?: number; + fatal?: number; }; - diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index dc8cf7baa1..d045304473 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ import type { DirectionModel } from '../models/DirectionModel'; -import type { LogLevelCountsReponseModel } from '../models/LogLevelCountsReponseModel'; +import type { LogLevelCountsResponseModel } from '../models/LogLevelCountsReponseModel'; import type { LogLevelModel } from '../models/LogLevelModel'; import type { PagedLoggerResponseModel } from '../models/PagedLoggerResponseModel'; import type { PagedLogMessageResponseModel } from '../models/PagedLogMessageResponseModel'; @@ -16,224 +16,218 @@ import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; export class LogViewerResource { + /** + * @returns PagedLoggerResponseModel Success + * @throws ApiError + */ + public static getLogViewerLevel({ + skip, + take = 100, + }: { + skip?: number; + take?: number; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level', + query: { + skip: skip, + take: take, + }, + }); + } - /** - * @returns PagedLoggerResponseModel Success - * @throws ApiError - */ - public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level', - query: { - 'skip': skip, - 'take': take, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerLevelCount({ + startDate, + endDate, + }: { + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level-count', + query: { + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level-count', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedLogMessageResponseModel Success + * @throws ApiError + */ + public static getLogViewerLog({ + skip, + take = 100, + orderDirection, + filterExpression, + logLevel, + startDate, + endDate, + }: { + skip?: number; + take?: number; + orderDirection?: DirectionModel; + filterExpression?: string; + logLevel?: Array; + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/log', + query: { + skip: skip, + take: take, + orderDirection: orderDirection, + filterExpression: filterExpression, + logLevel: logLevel, + startDate: startDate, + endDate: endDate, + }, + }); + } - /** - * @returns PagedLogMessageResponseModel Success - * @throws ApiError - */ - public static getLogViewerLog({ - skip, - take = 100, - orderDirection, - filterExpression, - logLevel, - startDate, - endDate, - }: { - skip?: number, - take?: number, - orderDirection?: DirectionModel, - filterExpression?: string, - logLevel?: Array, - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/log', - query: { - 'skip': skip, - 'take': take, - 'orderDirection': orderDirection, - 'filterExpression': filterExpression, - 'logLevel': logLevel, - 'startDate': startDate, - 'endDate': endDate, - }, - }); - } + /** + * @returns PagedLogTemplateResponseModel Success + * @throws ApiError + */ + public static getLogViewerMessageTemplate({ + skip, + take = 100, + startDate, + endDate, + }: { + skip?: number; + take?: number; + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/message-template', + query: { + skip: skip, + take: take, + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns PagedLogTemplateResponseModel Success - * @throws ApiError - */ - public static getLogViewerMessageTemplate({ - skip, - take = 100, - startDate, - endDate, - }: { - skip?: number, - take?: number, - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/message-template', - query: { - 'skip': skip, - 'take': take, - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedSavedLogSearchResponseModel Success + * @throws ApiError + */ + public static getLogViewerSavedSearch({ + skip, + take = 100, + }: { + skip?: number; + take?: number; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + query: { + skip: skip, + take: take, + }, + }); + } - /** - * @returns PagedSavedLogSearchResponseModel Success - * @throws ApiError - */ - public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number, - take?: number, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - query: { - 'skip': skip, - 'take': take, - }, - }); - } + /** + * @returns string Created + * @throws ApiError + */ + public static postLogViewerSavedSearch({ + requestBody, + }: { + requestBody?: SavedLogSearchRequestModel; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns string Created - * @throws ApiError - */ - public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchRequestModel, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Location', - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerSavedSearchByName({ + name, + }: { + name: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name: name, + }, + errors: { + 404: `Not Found`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - errors: { - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static deleteLogViewerSavedSearchByName({ - name, - }: { - name: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - errors: { - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string, - endDate?: string, - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static deleteLogViewerSavedSearchByName({ name }: { name: string }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name: name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerValidateLogsSize({ + startDate, + endDate, + }: { + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', + query: { + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts index d76d6bef9e..be986971e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts @@ -15,7 +15,7 @@ export interface ContentPropertyData { // Media export interface MediaDetails extends ContentTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; data: Array; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index 6e88882dd4..0bd1802687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -42,8 +42,8 @@ export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { private _renderGeneralInfo() { return html` - -
    ${this._dataType?.key}
    + +
    ${this._dataType?.id}
    ${this._dataType?.propertyEditorAlias}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts index e0b286c9a6..922c84f72b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts @@ -116,6 +116,7 @@ export class UmbLogViewerLogTypesChartElement extends UmbLitElement { }); } + // TODO: Stop using this complex code in render methods, instead changes to _logLevelCount should trigger a state prop containing the keys. And then try to make use of the repeat LIT method: render() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index bbc2ccbdf1..86e30adfbf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -72,17 +72,17 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -95,9 +95,9 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: @@ -106,22 +106,22 @@ export class UmbRelationTypeRepository implements UmbTreeRepository(id: K, value: RelationTypeBaseModel[K]) { - console.log('update', id, value); - + update(id: K, value: RelationTypeBaseModel[K]) { this.#data.next({ ...this.#data.value, [id]: value }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index bf80f5c341..3827c75a7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -33,11 +33,11 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts index 0a95080b53..edeb4ef6db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -3,6 +3,7 @@ import './relation-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/relation-type.data'; import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element'; @@ -14,5 +15,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index cb700784c9..934f15d8f2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -10,16 +10,6 @@ import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-ap @customElement('umb-relation-type-workspace-view-relation-type') export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - margin: var(--uui-size-layout-1); - } - `, - ]; - @state() private _relationType?: RelationTypeResponseModel; @@ -39,10 +29,7 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme return; } - console.log('this._workspaceContext.data', this.#workspaceContext); - this.observe(this.#workspaceContext.data, (relationType) => { - console.log('relationType', relationType); if (!relationType) return; this._relationType = relationType; @@ -86,16 +73,26 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme } #renderParentProperty() { - if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.id) return html`
    ${this._relationType.parentObjectTypeName}
    `; return html``; } #renderChildProperty() { - if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.id) return html`
    ${this._relationType.parentObjectTypeName}
    `; return html``; } + + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-layout-1); + } + `, + ]; } export default UmbRelationTypeWorkspaceViewRelationTypeElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index e75fe7d3dc..d690fb3091 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -45,6 +45,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { } set props(newVal) { this._props = newVal; + // TODO: we could optimize this so we only re-set the updated props. this.#assignPropsToAllComponents(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts index 5285262242..ea56adb1c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts @@ -20,8 +20,9 @@ export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) /** * List of items. */ + // TODO: Could this use a type that we export to ensure TS failure, or hook this up with a type coming from backend? @property() - public list: Array<{ key: string; checked: boolean; value: string }> = []; + public list: Array<{ id: string; checked: boolean; value: string }> = []; #selected: Array = []; public get selected(): Array { @@ -62,7 +63,7 @@ export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) if (!this.list) return nothing; return html`
    - ${repeat(this.list, (item) => item.key, this.renderCheckbox)} + ${repeat(this.list, (item) => item.id, this.renderCheckbox)}
    `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts index d3ed1de046..3df54c0c96 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts @@ -3,26 +3,26 @@ import './input-checkbox-list.element'; import type { UmbInputCheckboxListElement } from './input-checkbox-list.element'; const meta: Meta = { - title: 'Components/Inputs/Checkbox List', - component: 'umb-input-checkbox-list' + title: 'Components/Inputs/Checkbox List', + component: 'umb-input-checkbox-list', }; - + export default meta; type Story = StoryObj; - + export const Overview: Story = { - args: { - list: [ - { - key: "isAwesome", - value: "Umbraco is awesome?", - checked: true - }, - { - key: "attendingCodeGarden", - value: "Attending CodeGarden?", - checked: false - }, - ] - } -}; \ No newline at end of file + args: { + list: [ + { + id: 'isAwesome', + value: 'Umbraco is awesome?', + checked: true, + }, + { + id: 'attendingCodeGarden', + value: 'Attending CodeGarden?', + checked: false, + }, + ], + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index cf5bd39230..60477769a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -62,20 +62,20 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen maxMessage = 'This field exceeds the allowed amount of items'; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedDocuments(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -92,12 +92,12 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen this.addValidator( 'rangeUnderflow', () => this.minMessage, - () => !!this.min && this._selectedKeys.length < this.min + () => !!this.min && this._selectedIds.length < this.min ); this.addValidator( 'rangeOverflow', () => this.maxMessage, - () => !!this.max && this._selectedKeys.length > this.max + () => !!this.max && this._selectedIds.length > this.max ); this.consumeContext(UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN, (instance) => { @@ -119,16 +119,16 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen if (!this._documentStore) return; // TODO: consider changing this to the list data endpoint when it is available - this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedKeys), (items) => { + this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedIds), (items) => { this._items = items; }); } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL, { multiple: this.max === 1 ? false : true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -145,7 +145,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen }); await modalHandler?.onSubmit(); - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); } @@ -166,7 +166,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` - + ${tempItem.isTrashed ? html` Trashed ` : nothing} this._removeItem(item)} label="Remove document ${item.name}">Remove diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index 1ab2fc05c7..ef1b4b96d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -29,20 +29,20 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl ]; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedDocuments(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -74,7 +74,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl if (!this._documentTypeStore) return; // TODO: consider changing this to the list data endpoint when it is available - this._pickedItemsObserver = this.observe(this._documentTypeStore.items(this._selectedKeys), (items) => { + this._pickedItemsObserver = this.observe(this._documentTypeStore.items(this._selectedIds), (items) => { this._items = items; }); } @@ -83,7 +83,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_TYPE_PICKER_MODAL, { multiple: true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -100,7 +100,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl }); await modalHandler?.onSubmit(); - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); } @@ -121,7 +121,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl const tempItem = item as DocumentTypeResponseModel & { isTrashed: boolean }; return html` - + ${tempItem.isTrashed ? html` Trashed ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index d14afe852b..1a0960c72b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -73,20 +73,20 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) maxMessage = 'This field exceeds the allowed amount of items'; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedMedias(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -103,12 +103,12 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) this.addValidator( 'rangeUnderflow', () => this.minMessage, - () => !!this.min && this._selectedKeys.length < this.min + () => !!this.min && this._selectedIds.length < this.min ); this.addValidator( 'rangeOverflow', () => this.maxMessage, - () => !!this.max && this._selectedKeys.length > this.max + () => !!this.max && this._selectedIds.length > this.max ); this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { @@ -129,7 +129,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) this._pickedItemsObserver?.destroy(); // TODO: consider changing this to the list data endpoint when it is available - const { asObservable } = await this._repository.requestTreeItems(this._selectedKeys); + const { asObservable } = await this._repository.requestTreeItems(this._selectedIds); if (!asObservable) return; @@ -142,7 +142,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_MEDIA_PICKER_MODAL, { multiple: this.max === 1 ? false : true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -159,7 +159,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) }); modalHandler?.onSubmit().then(() => { - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); }); } @@ -187,7 +187,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) return html` ${tempItem.isTrashed ? html` Trashed ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts index 6472a47207..62db8e957c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts @@ -5,6 +5,6 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api // TODO get unique method from an entity repository static method export class UmbEntityTreeItemContext extends UmbTreeItemContextBase { constructor(host: UmbControllerHostElement) { - super(host, (x: EntityTreeItemResponseModel) => x.key); + super(host, (x: EntityTreeItemResponseModel) => x.id); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts index c7b52f83f7..25b756dfbf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts @@ -20,7 +20,7 @@ export class UmbWorkspaceContainerStructureHelper { private _ownerContainers: PropertyTypeContainerResponseModelBaseModel[] = []; // State containing the merged containers (only one pr. name): - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.id); readonly containers = this.#containers.asObservable(); #hasProperties = new BooleanState(false); @@ -104,11 +104,11 @@ export class UmbWorkspaceContainerStructureHelper { this._ownerContainers.forEach((container) => { new UmbObserverController( this.#host, - this.#workspaceContext!.structure.hasPropertyStructuresOf(container.key!), + this.#workspaceContext!.structure.hasPropertyStructuresOf(container.id!), (hasProperties) => { this.#hasProperties.next(hasProperties); }, - '_observeOwnerHasProperties_' + container.key + '_observeOwnerHasProperties_' + container.id ); }); } @@ -119,9 +119,9 @@ export class UmbWorkspaceContainerStructureHelper { this._ownerContainers.forEach((container) => { new UmbObserverController( this.#host, - this.#workspaceContext!.structure.containersOfParentKey(container.key, this._childType!), + this.#workspaceContext!.structure.containersOfParentKey(container.id, this._childType!), this._insertGroupContainers, - '_observeGroupsOf_' + container.key + '_observeGroupsOf_' + container.id ); }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts index 3be974fbbf..6941cd3daa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -14,7 +14,7 @@ export class UmbWorkspacePropertyStructureHelper { private _isRoot?: boolean; private _containerName?: string; - #propertyStructure = new ArrayState([], (x) => x.key); + #propertyStructure = new ArrayState([], (x) => x.id); readonly propertyStructure = this.#propertyStructure.asObservable(); constructor(host: UmbControllerHostElement) { @@ -62,7 +62,7 @@ export class UmbWorkspacePropertyStructureHelper { this.#host, this.#workspaceContext!.structure.containersByNameAndType(this._containerName, this._containerType), (groupContainers) => { - groupContainers.forEach((group) => this._observePropertyStructureOf(group.key)); + groupContainers.forEach((group) => this._observePropertyStructureOf(group.id)); }, '_observeGroupContainers' ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts index 48f411710f..974f0f4cfd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts @@ -6,10 +6,10 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface TemplateDetailDataSource { createScaffold(): Promise>; - get(key: string): Promise>; + get(id: string): Promise>; insert(template: TemplateResponseModel): Promise; update(template: TemplateResponseModel): Promise; - delete(key: string): Promise; + delete(id: string): Promise; } /** @@ -31,13 +31,13 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour } /** - * Fetches a Template with the given key from the server - * @param {string} key + * Fetches a Template with the given id from the server + * @param {string} id * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - get(key: string) { - return tryExecuteAndNotify(this.#host, TemplateResource.getTemplateByKey({ key })); + get(id: string) { + return tryExecuteAndNotify(this.#host, TemplateResource.getTemplateById({ id })); } /** @@ -50,7 +50,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour const error = undefined; const data: TemplateResponseModel = { $type: '', - key: uuid(), + id: uuid(), name: '', alias: '', content: '', @@ -93,27 +93,27 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @memberof UmbTemplateDetailServerDataSource */ async update(template: TemplateResponseModel) { - if (!template.key) { - const error: ProblemDetailsModel = { title: 'Template key is missing' }; + if (!template.id) { + const error: ProblemDetailsModel = { title: 'Template id is missing' }; return { error }; } - const payload = { key: template.key, requestBody: template }; - return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateByKey(payload)); + const payload = { id: template.id, requestBody: template }; + return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateById(payload)); } /** * Deletes a Template on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return await tryExecuteAndNotify(this.#host, TemplateResource.deleteTemplateByKey({ key })); + return await tryExecuteAndNotify(this.#host, TemplateResource.deleteTemplateById({ id })); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 71fd9835aa..a41048ff2a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -60,7 +60,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -73,17 +73,17 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeDataSource.getItems(keys); + const { data, error } = await this.#treeDataSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -96,9 +96,9 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: @@ -107,23 +107,23 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR await this.#init; if (!parentId) { - throw new Error('Parent key is missing'); + throw new Error('Parent id is missing'); } - // TODO: add parent key to create scaffold + // TODO: add parent id to create scaffold return this.#detailDataSource.createScaffold(); } - async requestById(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -137,7 +137,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR async create(template: TemplateResponseModel) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -159,7 +159,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR async save(template: TemplateResponseModel) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -174,7 +174,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#store?.append(template); - this.#treeStore?.updateItem(template.key, { name: template.name }); + this.#treeStore?.updateItem(template.id, { name: template.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -182,14 +182,14 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Template key is missing'); + if (!id) { + throw new Error('Template id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Template deleted` } }; @@ -199,8 +199,8 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts index bda7548eb7..edebf64d61 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts @@ -11,7 +11,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle * @description - Data Store for Templates */ export class UmbTemplateStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbTemplateStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 297aa7560f..e07b391e1f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -109,14 +109,14 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { #setTableItems() { this.#tableItems = this.#dictionaryItems.map((dictionary) => { - // key is name to allow filtering on the displayed value + // id is set to name to allow filtering on the displayed value const tableItem: UmbTableItem = { id: dictionary.name ?? '', icon: 'umb:book-alt', data: [ { columnAlias: 'name', - value: html` + value: html` ${dictionary.name} `, }, @@ -162,7 +162,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { const { name } = await modalHandler.onSubmit(); if (!name) return; - const result = await this.#repo?.create({ $type: '', name, parentId: null, translations: [], key: '' }); + const result = await this.#repo?.create({ $type: '', name, parentId: null, translations: [], id: '' }); // TODO => get location header to route to new item console.log(result); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 4d07ae1971..aeba6365eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -60,7 +60,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -73,17 +73,17 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -96,9 +96,9 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS @@ -107,23 +107,23 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } return this.#detailSource.createScaffold(parentId); } - async requestById(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + if (!id) { + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#detailStore?.append(data); @@ -136,9 +136,9 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#detailSource.list(skip, take); } - async delete(key: string) { + async delete(id: string) { await this.#init; - return this.#detailSource.delete(key); + return this.#detailSource.delete(id); } async save(dictionary: DictionaryDetails) { @@ -146,7 +146,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // TODO: should we show a notification if the dictionary is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!dictionary || !dictionary.key) { + if (!dictionary || !dictionary.id) { const error: ProblemDetailsModel = { title: 'Dictionary is missing' }; return { error }; } @@ -162,7 +162,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // Consider to look up the data before fetching from the server // Consider notify a workspace if a dictionary is updated in the store while someone is editing it. this.#detailStore?.append(dictionary); - this.#treeStore?.updateItem(dictionary.key, { name: dictionary.name }); + this.#treeStore?.updateItem(dictionary.id, { name: dictionary.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -186,15 +186,15 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return { data, error }; } - async export(key: string, includeChildren = false) { + async export(id: string, includeChildren = false) { await this.#init; - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return this.#detailSource.export(key, includeChildren); + return this.#detailSource.export(id, includeChildren); } async import(temporaryFileId: string, parentId?: string) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts index 45ec7a5f5f..a9907ca76a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts @@ -11,7 +11,7 @@ import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; * @description - Data Store for Dictionary */ export class UmbDictionaryStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DICTIONARY_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts index e73ac5b743..22303e180b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts @@ -16,11 +16,11 @@ export class UmbWorkspaceDictionaryElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts index 3c1afd4dad..48b78c2954 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts @@ -1,6 +1,7 @@ import './dictionary-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/dictionary.data'; import type { UmbWorkspaceDictionaryElement } from './dictionary-workspace.element'; @@ -11,6 +12,6 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; 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 e232947181..aae4ff5fe6 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 @@ -49,11 +49,11 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index d84ed8a6c1..6f65167fd5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts @@ -21,7 +21,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement { css` :host { height: 100%; - } + } #router-slot { height: calc(100% - var(--umb-header-layout-height)); @@ -75,11 +75,11 @@ export class UmbSectionViewUsersElement extends UmbLitElement { // TODO: find a way to make this reuseable across: this._workspaces?.map((workspace: ManifestWorkspace) => { routes.push({ - path: `${workspace.meta.entityType}/:key`, + path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.key; + (el as any).entityKey = info.match.params.id; }); }, }); @@ -118,17 +118,17 @@ export class UmbSectionViewUsersElement extends UmbLitElement { this.requestUpdate('selection'); } - public select(key: string) { + public select(id: string) { const oldSelection = this.#selection.getValue(); - if (oldSelection.indexOf(key) !== -1) return; + if (oldSelection.indexOf(id) !== -1) return; - this.#selection.next([...oldSelection, key]); + this.#selection.next([...oldSelection, id]); this.requestUpdate('selection'); } - public deselect(key: string) { + public deselect(id: string) { const selection = this.#selection.getValue(); - this.#selection.next(selection.filter((k) => k !== key)); + this.#selection.next(selection.filter((k) => k !== id)); this.requestUpdate('selection'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index c6ba5c46db..c0a9430280 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -127,8 +127,8 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { // TODO: make sure we use the workspace for this: /* isDisabled - ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) - : this._workspaceContext.getStore()?.disableUsers([this._user.key]); + ? this._workspaceContext.getStore()?.enableUsers([this._user.id]) + : this._workspaceContext.getStore()?.disableUsers([this._user.id]); */ } @@ -136,7 +136,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { if (!this._user || !this._workspaceContext) return; // TODO: make sure we use the workspace for this: - //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); + //this._workspaceContext.getStore()?.deleteUsers([this._user.id]); history.pushState(null, '', 'section/users/view/users/overview'); } @@ -166,7 +166,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { `; - //TODO Render the name of the content start node instead of it's key. + //TODO Render the name of the content start node instead of it's id. return repeat( this._user.contentStartNodes, (node) => node, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts index 1a531ae058..29f5f99569 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts @@ -20,11 +20,11 @@ export class UmbUserWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts index fcf544de4b..30ea41f140 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts @@ -1,9 +1,13 @@ import { logs } from './logs.data'; import { UmbData } from './data'; -import { LogMessageResponseModel, LogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + LogMessageResponseModel, + LogTemplateResponseModel, + SavedLogSearchResponseModel, +} from '@umbraco-cms/backoffice/backend-api'; // Temp mocked database -class UmbLogviewerSearchesData extends UmbData { +class UmbLogViewerSearchesData extends UmbData { constructor(data: SavedLogSearchResponseModel[]) { super(data); } @@ -405,8 +409,8 @@ export const logLevels = { ], }; -export const umbLogviewerData = { - searches: new UmbLogviewerSearchesData(savedSearches), +export const umbLogViewerData = { + searches: new UmbLogViewerSearchesData(savedSearches), templates: new UmbLogviewerTemplatesData(messageTemplates), logs: new UmbLogviewerMessagesData(logs), logLevels: logLevels, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index 226d23aa79..d8e0a5ecff 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -10,7 +10,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: 'f2f81a40-c989-4b6b-84e2-057cecd3adc1', + id: 'f2f81a40-c989-4b6b-84e2-057cecd3adc1', isContainer: false, parentId: null, noAccess: false, @@ -37,7 +37,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45bf-a93b-72bbdabfb177', + id: '69431027-8867-45bf-a93b-72bbdabfb177', isContainer: false, parentId: null, noAccess: false, @@ -64,7 +64,7 @@ export const data: Array = [ type: 'media', icon: 'folder', hasChildren: true, - key: '69461027-8867-45bf-a93b-72bbdabfb177', + id: '69461027-8867-45bf-a93b-72bbdabfb177', isContainer: true, parentId: null, noAccess: false, @@ -79,7 +79,7 @@ export const data: Array = [ type: 'media', icon: 'folder', hasChildren: true, - key: '69461027-8867-45bf-a93b-5224dabfb177', + id: '69461027-8867-45bf-a93b-5224dabfb177', isContainer: true, parentId: null, noAccess: false, @@ -94,7 +94,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45s7-a93b-7uibdabfb177', + id: '69431027-8867-45s7-a93b-7uibdabfb177', isContainer: false, parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, @@ -121,7 +121,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45s7-a93b-7uibdabf2147', + id: '69431027-8867-45s7-a93b-7uibdabf2147', isContainer: false, parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, @@ -148,7 +148,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '694hdj27-8867-45s7-a93b-7uibdabf2147', + id: '694hdj27-8867-45s7-a93b-7uibdabf2147', isContainer: false, parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, @@ -175,7 +175,7 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '694hdj27-1237-45s7-a93b-7uibdabfas47', + id: '694hdj27-1237-45s7-a93b-7uibdabfas47', isContainer: false, parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, @@ -214,15 +214,15 @@ class UmbMediaData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedContentTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedContentTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key)); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id)); return items.map((item) => createContentTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 597caa88bc..c39f9dc2e4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -5,7 +5,7 @@ import type { EntityTreeItemResponseModel, RelationTypeResponseModel } from '@um // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel export const data: Array = [ { - key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + id: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', alias: 'relateDocumentOnCopy', name: 'Relate Document On Copy', path: '', @@ -18,7 +18,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'ac68cde6-763f-4231-a751-1101b57defd2', + id: 'ac68cde6-763f-4231-a751-1101b57defd2', alias: 'relateParentDocumentOnDelete', name: 'Relate Parent Document On Delete', path: '', @@ -31,7 +31,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + id: '6f9b800c-762c-42d4-85d9-bf40a77d689e', alias: 'relateParentMediaFolderOnDelete', name: 'Relate Parent Media Folder On Delete', path: '', @@ -44,7 +44,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'd421727d-43de-4205-b4c6-037404f309ad', + id: 'd421727d-43de-4205-b4c6-037404f309ad', alias: 'relatedMedia', name: 'Related Media', path: '', @@ -57,7 +57,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + id: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', alias: 'relatedDocument', name: 'Related Document', path: '', @@ -73,7 +73,7 @@ export const data: Array = [ export const treeData: Array = [ { - key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + id: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', $type: 'EntityTreeItemViewModel', isContainer: false, parentId: null, @@ -82,7 +82,7 @@ export const treeData: Array = [ type: 'relation-type', }, { - key: 'ac68cde6-763f-4231-a751-1101b57defd2', + id: 'ac68cde6-763f-4231-a751-1101b57defd2', $type: 'EntityTreeItemViewModel', isContainer: false, parentId: null, @@ -91,7 +91,7 @@ export const treeData: Array = [ type: 'relation-type', }, { - key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + id: '6f9b800c-762c-42d4-85d9-bf40a77d689e', $type: 'EntityTreeItemViewModel', isContainer: false, parentId: null, @@ -100,7 +100,7 @@ export const treeData: Array = [ type: 'relation-type', }, { - key: 'd421727d-43de-4205-b4c6-037404f309ad', + id: 'd421727d-43de-4205-b4c6-037404f309ad', $type: 'EntityTreeItemViewModel', isContainer: false, parentId: null, @@ -109,7 +109,7 @@ export const treeData: Array = [ type: 'relation-type', }, { - key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + id: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', $type: 'EntityTreeItemViewModel', isContainer: false, parentId: null, @@ -136,13 +136,13 @@ class UmbRelationTypeData extends UmbEntityData { } //TODO Can relation types have children? - getTreeItemChildren(key: string): Array { - const childItems = this.treeData.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): Array { + const childItems = this.treeData.filter((item) => item.parentId === id); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index fc1f17ac77..70a5fc11f8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -14,7 +14,7 @@ type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel; const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { return { $type: '', - key: dbItem.key, + id: dbItem.id, name: dbItem.name, alias: dbItem.alias, content: dbItem.content, @@ -24,7 +24,7 @@ const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { export const data: Array = [ { $type: '', - key: '2bf464b6-3aca-4388-b043-4eb439cc2643', + id: '2bf464b6-3aca-4388-b043-4eb439cc2643', isContainer: false, parentId: null, name: 'Doc 1', @@ -48,7 +48,7 @@ export const data: Array = [ }, { $type: '', - key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', + id: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', isContainer: false, parentId: null, name: 'Test', @@ -61,7 +61,7 @@ export const data: Array = [ }, { $type: '', - key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', + id: '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', isContainer: false, parentId: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', name: 'Child', @@ -87,8 +87,8 @@ class UmbTemplateData extends UmbEntityData { super(data); } - getById(key: string): TemplateResponseModel | undefined { - const item = this.data.find((item) => item.key === key); + getById(id: string): TemplateResponseModel | undefined { + const item = this.data.find((item) => item.id === id); return item ? createTemplate(item) : undefined; } @@ -101,7 +101,7 @@ class UmbTemplateData extends UmbEntityData { create(templateData: TemplateModelBaseModel) { const template = { $type: '', - key: uuid(), + id: uuid(), ...templateData, }; this.data.push(template); @@ -120,15 +120,15 @@ class UmbTemplateData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 09821c2923..5c847f47e8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -16,7 +16,7 @@ export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => type: item.type, icon: item.icon, hasChildren: item.hasChildren, - key: item.key, + id: item.id, isContainer: item.isContainer, parentId: item.parentId, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts index 020a390725..0c3c6f75e5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts @@ -30,9 +30,9 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/data-type/item'), (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; - const items = umbDataTypeData.getTreeItem(keys); + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbDataTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), @@ -46,16 +46,16 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.get(umbracoPath('/data-type/folder/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/data-type/folder/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dataType = umbDataTypeData.getById(key); + const dataType = umbDataTypeData.getById(id); return res(ctx.status(200), ctx.json(dataType)); }), - rest.put(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -64,12 +64,12 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.delete(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; try { - umbDataTypeData.deleteFolder(key); + umbDataTypeData.deleteFolder(id); return res(ctx.status(200)); } catch (error) { return res( @@ -93,16 +93,16 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get(umbracoPath('/data-type/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/data-type/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dataType = umbDataTypeData.getById(key); + const dataType = umbDataTypeData.getById(id); return res(ctx.status(200), ctx.json(dataType)); }), - rest.put(umbracoPath('/data-type/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/data-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -111,11 +111,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.delete(umbracoPath('/data-type/:key'), async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete(umbracoPath('/data-type/:id'), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - umbDataTypeData.delete([key]); + umbDataTypeData.delete([id]); return res(ctx.status(200)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index 473c04fc25..1daea0ba0f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -4,7 +4,7 @@ import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend- // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:id', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -13,11 +13,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get('/umbraco/management/api/v1/document-type/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const document = umbDocumentTypeData.getById(key); + const document = umbDocumentTypeData.getById(id); return res(ctx.status(200), ctx.json([document])); }), @@ -55,28 +55,28 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDocumentTypeData.getTreeItem(keys); + const items = umbDocumentTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.get('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const documentType = umbDocumentTypeData.getById(key); + const documentType = umbDocumentTypeData.getById(id); return res(ctx.status(200), ctx.json(documentType)); }), - rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const items = umbDocumentTypeData.getAllowedTypesOf(key); + const items = umbDocumentTypeData.getAllowedTypesOf(id); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index cf29d8fc9a..44c3eb41da 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -7,9 +7,9 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const handlers = [ rest.post('/umbraco/management/api/v1/document/trash', async (req, res, ctx) => { console.warn('Please move to schema'); - const keys = await req.json(); + const ids = await req.json(); - const trashed = umbDocumentData.trash(keys); + const trashed = umbDocumentData.trash(ids); return res(ctx.status(200), ctx.json(trashed)); }), @@ -27,15 +27,15 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDocumentData.getTreeItem(keys); + const items = umbDocumentData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document/:id', async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -44,11 +44,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get(umbracoPath('/document/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/document/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const document = umbDocumentData.getById(key); + const document = umbDocumentData.getById(id); return res(ctx.status(200), ctx.json(document)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts index 4759c1d423..41158abe5b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts @@ -21,12 +21,12 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get(umbracoPath('/language/:key'), (req, res, ctx) => { - const key = req.params.key as string; + rest.get(umbracoPath('/language/:id'), (req, res, ctx) => { + const id = req.params.id as string; - if (!key) return; + if (!id) return; - const item = umbLanguagesData.getByKey(key); + const item = umbLanguagesData.getByKey(id); return res(ctx.status(200), ctx.json(item)); }), @@ -53,7 +53,7 @@ export const handlers = [ } }), - rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/language/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -63,7 +63,7 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.delete(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.delete(umbracoPath('/language/:id'), async (req, res, ctx) => { return res(ctx.status(200)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts index 39d9fe9422..03491bbf88 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts @@ -1,5 +1,5 @@ import { rest } from 'msw'; -import { umbLogviewerData } from '../data/log-viewer.data'; +import { umbLogViewerData } from '../data/log-viewer.data'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; import { SavedLogSearchRequestModel } from '@umbraco-cms/backoffice/backend-api'; @@ -11,7 +11,7 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.searches.getSavedSearches(skipNumber, takeNumber); + const items = umbLogViewerData.searches.getSavedSearches(skipNumber, takeNumber); const response = { total: items.length, @@ -22,11 +22,11 @@ export const handlers = [ }), rest.get(umbracoPath('/log-viewer/saved-search/:name'), (req, res, ctx) => { - const name = req.params.key as string; + const name = req.params.name as string; if (!name) return; - const item = umbLogviewerData.searches.getByName(name); + const item = umbLogViewerData.searches.getByName(name); return res(ctx.delay(), ctx.status(200), ctx.json(item)); }), @@ -35,6 +35,7 @@ export const handlers = [ }), rest.delete(umbracoPath('/log-viewer/saved-search/:name'), async (req, res, ctx) => { + // TODO: implement this return res(ctx.status(200)); }), //#endregion @@ -46,10 +47,10 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.templates.getTemplates(skipNumber, takeNumber); + const items = umbLogViewerData.templates.getTemplates(skipNumber, takeNumber); const response = { - total: umbLogviewerData.templates.total, + total: umbLogViewerData.templates.total, items, }; @@ -58,11 +59,11 @@ export const handlers = [ //#endregion //#region Logs rest.get(umbracoPath('/log-viewer/level'), (req, res, ctx) => { - return res(ctx.delay(), ctx.status(200), ctx.json(umbLogviewerData.logLevels)); + return res(ctx.delay(), ctx.status(200), ctx.json(umbLogViewerData.logLevels)); }), rest.get(umbracoPath('/log-viewer/level-count'), (req, res, ctx) => { - return res(ctx.delay(), ctx.status(200), ctx.json(umbLogviewerData.logs.getLevelCount())); + return res(ctx.delay(), ctx.status(200), ctx.json(umbLogViewerData.logs.getLevelCount())); }), rest.get(umbracoPath('/log-viewer/validate-logs-size'), (req, res, ctx) => { @@ -75,9 +76,9 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.logs.getLogs(skipNumber, takeNumber); + const items = umbLogViewerData.logs.getLogs(skipNumber, takeNumber); const response = { - total: umbLogviewerData.logs.total, + total: umbLogViewerData.logs.total, items, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts index 9256ed2662..efb5a91845 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts @@ -4,12 +4,12 @@ import type { MediaDetails } from '../../../backoffice/media/media'; // TODO: add schema export const handlers = [ - rest.get('/umbraco/management/api/v1/media/details/:key', (req, res, ctx) => { + rest.get('/umbraco/management/api/v1/media/details/:id', (req, res, ctx) => { console.warn('Please move to schema'); - const key = req.params.key as string; - if (!key) return; + const id = req.params.id as string; + if (!id) return; - const media = umbMediaData.getById(key); + const media = umbMediaData.getById(id); return res(ctx.status(200), ctx.json([media])); }), @@ -26,13 +26,13 @@ export const handlers = [ rest.post('/umbraco/management/api/v1/media/move', async (req, res, ctx) => { const data = await req.json(); if (!data) return; - const moved = umbMediaData.move(data.keys, data.destination); + const moved = umbMediaData.move(data.ids, data.destination); return res(ctx.status(200), ctx.json(moved)); }), rest.post('/umbraco/management/api/v1/media/trash', async (req, res, ctx) => { - const keys = await req.json(); - const trashed = umbMediaData.trash(keys); + const ids = await req.json(); + const trashed = umbMediaData.trash(ids); return res(ctx.status(200), ctx.json(trashed)); }), @@ -49,10 +49,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbMediaData.getTreeItem(keys); + const items = umbMediaData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts index d507be980e..0e4c1d4ea6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -4,11 +4,11 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils'; // TODO: add schema export const handlers = [ - rest.delete('/umbraco/backoffice/relation-type/:key', async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete('/umbraco/backoffice/relation-type/:id', async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - umbRelationTypeData.delete([key]); + umbRelationTypeData.delete([id]); return res(ctx.status(200)); }), @@ -37,22 +37,22 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; - const items = umbRelationTypeData.getTreeItem(keys); + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbRelationTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.get(umbracoPath('/relation-type/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/relation-type/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const RelationType = umbRelationTypeData.getById(key); + const RelationType = umbRelationTypeData.getById(id); return res(ctx.status(200), ctx.json(RelationType)); }), - rest.post(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + rest.post(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -61,7 +61,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.put(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index e75f058596..55e73ea95b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -19,10 +19,10 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/template/item'), (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbTemplateData.getTreeItem(keys); + const items = umbTemplateData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), @@ -34,18 +34,18 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get(umbracoPath('/template/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/template/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const response = umbTemplateData.getById(key); + const response = umbTemplateData.getById(id); return res(ctx.status(200), ctx.json(response)); }), - rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { - const key = req.params.key as string; + rest.put(umbracoPath('/template/:id'), async (req, res, ctx) => { + const id = req.params.id as string; const data = await req.json(); - if (!key) return; + if (!id) return; umbTemplateData.update(data); return res(ctx.status(200)); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts index d2e1bf94e1..929979ba43 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts @@ -14,19 +14,19 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/backoffice/user-groups/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/backoffice/user-groups/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const userGroup = umbUserGroupsData.getById(key); + const userGroup = umbUserGroupsData.getById(id); return res(ctx.status(200), ctx.json(userGroup)); }), rest.get('/umbraco/backoffice/user-groups/getByKeys', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (keys.length === 0) return; - const userGroups = umbUserGroupsData.getByIds(keys); + const ids = req.url.searchParams.getAll('id'); + if (ids.length === 0) return; + const userGroups = umbUserGroupsData.getByIds(ids); return res(ctx.status(200), ctx.json(userGroups)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index 05da53c373..e56784f793 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -16,19 +16,19 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/backoffice/users/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/backoffice/users/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const user = umbUsersData.getById(key); + const user = umbUsersData.getById(id); return res(ctx.status(200), ctx.json(user)); }), rest.get('/umbraco/backoffice/users/getByKeys', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (keys.length === 0) return; - const users = umbUsersData.getByIds(keys); + const ids = req.url.searchParams.getAll('id'); + if (ids.length === 0) return; + const users = umbUsersData.getByIds(ids); return res(ctx.status(200), ctx.json(users)); }), diff --git a/src/Umbraco.Web.UI.Client/src/stories/store.mdx b/src/Umbraco.Web.UI.Client/src/stories/store.mdx index 667afd9124..1140ee8e40 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/store.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/store.mdx @@ -11,7 +11,7 @@ Generally a Store will be holding one or more RxJS Subjects, each Subject is mad ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.key); + #products = new ArrayState(>[], (product) => product.id); public readonly products = this.#products.asObservable(); @@ -65,10 +65,10 @@ class MyProductStore { ... - getByKey(key: string) { + getByKey(id: string) { // Request data via a Resource to then take part of this state when recieved. - tryExecuteAndNotify(this.host, ProductResource.getByKey({key})).then(({ data }) => { + tryExecuteAndNotify(this.host, ProductResource.getByKey({id})).then(({ data }) => { if (data) { this.#products.append(data.items); } @@ -76,7 +76,7 @@ class MyProductStore { // Return a Observable part, to listen for this specific product and the future changes of it. return this.#data.getObservablePart((documents) => - documents.find((document) => document.key === key) + documents.find((document) => document.id === id) ); } } @@ -134,11 +134,11 @@ With this we can make a high performant application, only triggering the parts t ### Ensure unique data: For incoming data to replace existing data, we need to clarify what makes a entry of the array unique. -In the examples of this guide each product has a key, and we have clarified this to the State by giving it the little method `(product) => product.key` as part of the its creation: +In the examples of this guide each product has a id, and we have clarified this to the State by giving it the little method `(product) => product.id` as part of the its creation: ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.key); + #products = new ArrayState(>[], (product) => product.id); ... } ``` From 9359d818bb5ca824aaafbe3fdc6465be2a493871 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Tue, 4 Apr 2023 10:43:32 +1000 Subject: [PATCH 526/550] remove logging, update mock --- .../dictionary/dashboard-translation-dictionary.element.ts | 1 - .../src/core/mocks/domains/dictionary.handlers.ts | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index d324fb3b32..ed37d699d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -165,7 +165,6 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { const result = await this.#repo?.create({ $type: '', name, parentKey: null, translations: [], key: '' }); // TODO => get location header to route to new item - console.log(result); } render() { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index 25df97d47a..036d063c59 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -51,7 +51,6 @@ export const handlers = [ if (!key) return; const dictionary = umbDictionaryData.getByKey(key); - console.log(dictionary); return res(ctx.status(200), ctx.json(dictionary)); }), @@ -77,7 +76,6 @@ export const handlers = [ const data = await req.json(); if (!data) return; - data.parentKey = data.parentId; data.icon = 'umb:book-alt'; data.hasChildren = false; data.type = 'dictionary-item'; @@ -181,7 +179,7 @@ export const handlers = [ if (!file) return; - importResponse.parentKey = req.url.searchParams.get('parentId') ?? null; + importResponse.parentKey = req.url.searchParams.get('parentKey') ?? null; umbDictionaryData.save(importResponse); // build the path to the new item => reflects the expected server response From 81242f4096d51e021067b8b3f9a503373eb047b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:20:20 +0200 Subject: [PATCH 527/550] correct LogLevelCountsReponseModel --- .../libs/backend-api/src/services/LogViewerResource.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index d045304473..e3d16d571b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -2,7 +2,7 @@ /* tslint:disable */ /* eslint-disable */ import type { DirectionModel } from '../models/DirectionModel'; -import type { LogLevelCountsResponseModel } from '../models/LogLevelCountsReponseModel'; +import type { LogLevelCountsReponseModel } from '../models/LogLevelCountsReponseModel'; import type { LogLevelModel } from '../models/LogLevelModel'; import type { PagedLoggerResponseModel } from '../models/PagedLoggerResponseModel'; import type { PagedLogMessageResponseModel } from '../models/PagedLogMessageResponseModel'; @@ -47,7 +47,7 @@ export class LogViewerResource { }: { startDate?: string; endDate?: string; - }): CancelablePromise { + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/log-viewer/level-count', From 4ac084f0a4f0111610b1e3f17253c8550e096862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:33:15 +0200 Subject: [PATCH 528/550] batch 7 --- .../grid/workspace-view-users-grid.element.ts | 4 ++-- .../src/core/mocks/domains/tree-media.handlers.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts index 4a703f29f6..3ed1b5d986 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts @@ -102,8 +102,8 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { this._usersContext?.deselect(user.id); } - private _getUserGroupNames(keys: Array) { - return keys + private _getUserGroupNames(ids: Array) { + return ids .map((key: string) => { return this._userGroups.find((x) => x.id === key)?.name; }) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts index b960e381f9..3a0b3b4e29 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts @@ -16,10 +16,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMediaData.getTreeItem(keys); + const items = umbMediaData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), From 06e5f3058adcd670f00250f324dde7629d45b3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:33:21 +0200 Subject: [PATCH 529/550] batch 8 --- .../dashboard-redirect-management.element.ts | 11 +++++-- .../document-blueprint.detail.store.ts | 6 ++-- .../sources/document-type.tree.server.data.ts | 16 +++++----- .../sources/document.tree.server.data.ts | 18 +++++------ .../repository/media-type.repository.ts | 22 +++++++------- .../sources/media-type.tree.server.data.ts | 6 ++-- .../sources/media.tree.server.data.ts | 18 +++++------ .../repository/member-group.repository.ts | 30 +++++++++---------- .../sources/member-group.tree.server.data.ts | 6 ++-- .../sources/member-type.tree.server.data.ts | 8 ++--- .../members/repository/member.repository.ts | 10 +++---- .../sources/member.tree.server.data.ts | 8 ++--- .../sources/data-type.tree.server.data.ts | 8 ++--- .../sources/relation-type.tree.server.data.ts | 22 +++++++------- .../sources/template.tree.server.data.ts | 16 +++++----- .../sources/dictionary.tree.server.data.ts | 12 ++++---- .../workspace-view-users-table.element.ts | 10 +++---- .../src/core/mocks/data/languages.data.ts | 8 ++--- .../src/core/mocks/data/media-type.data.ts | 8 ++--- .../src/core/mocks/data/member-group.data.ts | 8 ++--- .../src/core/mocks/data/member-type.data.ts | 8 ++--- .../src/core/mocks/data/member.data.ts | 8 ++--- .../src/core/mocks/data/users.data.ts | 12 ++++---- .../core/mocks/domains/media-type.handlers.ts | 6 ++-- .../mocks/domains/member-group.handlers.ts | 6 ++-- .../mocks/domains/member-type.handlers.ts | 6 ++-- .../src/core/mocks/domains/member.handlers.ts | 6 ++-- 27 files changed, 154 insertions(+), 149 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 04e3e3479e..5f7fcff78e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -158,7 +158,9 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { const res = await tryExecuteAndNotify(this, RedirectManagementResource.deleteRedirectManagementById({ id: r.id })); if (!res.error) { // or just run a this._getRedirectData() again? - this.shadowRoot?.getElementById(`redirect-key-${r.id}`)?.remove(); + //this.shadowRoot?.getElementById(`redirect-key-${r.id}`)?.remove(); + // No no, never manipulate DOM manipulate the data for the DOM: + this._redirectData = this._redirectData?.filter((x) => x.id !== r.id); } } @@ -214,7 +216,9 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { if (data) { this._total = data?.total; this._redirectData = data?.items; - if (this._filter?.length) this._buttonState = 'success'; + if (this._filter?.length) { + this._buttonState = 'success'; + } } } @@ -278,6 +282,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private renderTable() { + // TODO: Instead of map, use repeat lit util: return html` @@ -288,7 +293,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { Actions ${this._redirectData?.map((data) => { - return html` + return html` ${data.culture || '*'} ${data.originalUrl} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index 3a668c5b2f..411f7d7768 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -79,17 +79,17 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { * @memberof UmbDocumentBlueprintStore * @return {*} {Promise} */ - async delete(keys: string[]) { + async delete(ids: string[]) { // TODO: use backend cli when available. await fetch('/umbraco/backoffice/document-blueprint/delete', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, }); - this.#data.remove(keys); + this.#data.remove(ids); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 05345a0a70..7ea0b4bb81 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -13,13 +13,13 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ keys: ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -81,12 +81,12 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the items for the given keys from the server - * @param {Array} keys + * @param {Array} ids * @return {*} * @memberof DocumentTreeServerDataSource */ - async getItems(keys: Array) { - if (keys) { + async getItems(ids: Array) { + if (ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -94,7 +94,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DocumentTypeResource.getTreeDocumentTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 68dfbc6645..73ab968e2a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -13,13 +13,13 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -67,7 +67,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } @@ -85,16 +85,16 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof DocumentTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, DocumentResource.getTreeDocumentItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 7a7b052afc..9d697ec22f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -73,17 +73,17 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -96,9 +96,9 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS @@ -108,16 +108,16 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return this.#detailSource.createScaffold(); } - async requestDetails(key: string) { + async requestDetails(id: string) { await this.#init; // TODO: should we show a notification if the key is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#store?.append(data); @@ -125,9 +125,9 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return { data, error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - return this.#detailSource.delete(key); + return this.#detailSource.delete(id); } async save(mediaType: MediaTypeDetails) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index 1bd4f00cca..5cfcd81ab2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -56,8 +56,8 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof MediaTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { + async getItems(ids: Array) { + if (!ids || ids.length === 0) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -65,7 +65,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaTypeResource.getTreeMediaTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts index 035fa7c2cd..e88386baf2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts @@ -13,13 +13,13 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/media/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/media/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -80,13 +80,13 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MediaTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { + async getItems(ids: Array) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -94,7 +94,7 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaResource.getTreeMediaItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index f222c35daf..9a463fa34f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -59,15 +59,15 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { data: undefined, error }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); return { data, error }; } @@ -82,9 +82,9 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAIL @@ -94,16 +94,16 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return this.#detailSource.createScaffold(); } - async requestById(key: string) { + async requestById(id: string) { await this.#init; // TODO: should we show a notification if the key is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#store?.append(data); @@ -150,15 +150,15 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + if (!id) { + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -168,8 +168,8 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index 1112c85a46..3c147f33f8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -47,8 +47,8 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof MemberGroupTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { + async getItems(ids: Array) { + if (!ids || ids.length === 0) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -56,7 +56,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MemberGroupResource.getTreeMemberGroupItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 4d1e28b7fe..a8e5ae1e6e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -47,16 +47,16 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof MemberTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids || ids.length === 0) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, MemberTypeResource.getTreeMemberTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts index 6cdf2a3ee4..cf91bf0bf9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts @@ -58,15 +58,15 @@ export class UmbMemberRepository implements UmbTreeRepository { return { data: undefined, error }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#dataSource.getItems(keys); + const { data, error } = await this.#dataSource.getItems(ids); return { data, error }; } @@ -81,8 +81,8 @@ export class UmbMemberRepository implements UmbTreeRepository { return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts index b22acf103c..b61ee911bf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts @@ -38,21 +38,21 @@ export class MemberTreeServerDataSource implements MemberTreeDataSource { * @return {*} * @memberof MemberTreeServerDataSource */ - async getItems(keys: Array) { + async getItems(ids: Array) { const response = await fetch('/umbraco/management/api/v1/tree/member/item'); const data = await response.json(); return { data, error: undefined }; - // if (keys) { - // const error: ProblemDetailsModel = { title: 'Keys are missing' }; + // if (ids) { + // const error: ProblemDetailsModel = { title: 'Ids are missing' }; // return { error }; // } // return tryExecuteAndNotify( // this.#host, // MemberResource.getTreeMemberItem({ - // key: keys, + // id: ids, // }) // ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index ae0b619964..1930d90f4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -37,7 +37,7 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { * @memberof UmbDataTypeTreeServerDataSource */ async getChildrenOf(parentId: string | null) { - if (!parentId) throw new Error('Parent key is missing'); + if (!parentId) throw new Error('Parent id is missing'); return tryExecuteAndNotify( this.#host, @@ -53,12 +53,12 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof UmbDataTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) throw new Error('Keys are missing'); + async getItems(ids: Array) { + if (!ids) throw new Error('Ids are missing'); return tryExecuteAndNotify( this.#host, DataTypeResource.getTreeDataTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 75a1243816..bb9b460799 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -14,9 +14,9 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'RelationType keys is missing' }; + async trashItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'RelationType ids is missing' }; return { error }; } @@ -25,20 +25,20 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou return tryExecuteAndNotify( this.#host, RelationTypeResource.deleteRelationTypeByKey({ - key: keys, + id: ids, }) ); */ return Promise.resolve({ error: null, data: null }); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/relation-type/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -66,20 +66,20 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou /** * Fetches the items for the given keys from the server - * @param {Array} keys + * @param {Array} ids * @return {*} * @memberof RelationTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, RelationTypeResource.getTreeRelationTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index da0d30ce88..cdc77d176b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -31,14 +31,14 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof TemplateTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } @@ -51,21 +51,21 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} id * @return {*} * @memberof TemplateTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, TemplateResource.getTreeTemplateItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index e4f08ad2cc..c2a2c5ca3e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -51,21 +51,21 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof DictionaryTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids || ids.length === 0) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, DictionaryResource.getTreeDictionaryItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts index e70c4d0ec0..33b8e1aa1e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts @@ -119,10 +119,10 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { }); } - private _getUserGroupNames(keys: Array) { - return keys - .map((key: string) => { - return this._userGroups.find((x) => x.id === key)?.name; + private _getUserGroupNames(ids: Array) { + return ids + .map((id: string) => { + return this._userGroups.find((x) => x.id === id)?.name; }) .join(', '); } @@ -130,7 +130,7 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { private _createTableItems(users: Array) { this._tableItems = users.map((user) => { return { - key: user.id, + id: user.id, icon: 'umb:user', data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts index eae4f7b7d3..c43cc33406 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts @@ -49,15 +49,15 @@ class UmbLanguagesData extends UmbData { return this.data; } - delete(keys: Array) { - keys.forEach((key) => { - const foundIndex = this.data.findIndex((item) => item.isoCode === key); + delete(isoCodes: Array) { + isoCodes.forEach((isoCode) => { + const foundIndex = this.data.findIndex((item) => item.isoCode === isoCode); if (foundIndex !== -1) { this.data.splice(foundIndex, 1); } }); - return keys; + return isoCodes; } updateData(updateItem: LanguageResponseModel) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index 21216b5446..601f5fc6c3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -48,15 +48,15 @@ class UmbMediaTypeData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedFolderTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedFolderTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.id ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createFolderTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 9af252a801..db2d57d5e7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -32,15 +32,15 @@ class UmbMemberGroupData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.id ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index aa0afa99b6..7200916cb4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -31,15 +31,15 @@ class UmbMemberTypeData extends UmbData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.id ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index 9cdce3b006..75faed9860 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -35,15 +35,15 @@ class UmbMemberData extends UmbEntityData { return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentId === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.id ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts index 25174c9435..740b6a1957 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts @@ -11,9 +11,9 @@ class UmbUsersData extends UmbEntityData { return this.data; } - updateUserGroup(keys: string[], userGroup: string) { + updateUserGroup(ids: string[], userGroup: string) { this.data.forEach((user) => { - if (keys.includes(user.id)) { + if (ids.includes(user.id)) { user.userGroups = [...user.userGroups, userGroup]; } else { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -25,8 +25,8 @@ class UmbUsersData extends UmbEntityData { return this.data.map((user) => user.id); } - enable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.id)); + enable(ids: string[]) { + const users = this.data.filter((user) => ids.includes(user.id)); users.forEach((user) => { user.status = 'enabled'; this.updateData(user); @@ -34,8 +34,8 @@ class UmbUsersData extends UmbEntityData { return users.map((user) => user.id); } - disable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.id)); + disable(ids: string[]) { + const users = this.data.filter((user) => ids.includes(user.id)); users.forEach((user) => { user.status = 'disabled'; this.updateData(user); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts index b4a9690fc1..59e3c212c9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts @@ -17,10 +17,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMediaTypeData.getTreeItem(keys); + const items = umbMediaTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts index 04f3c6817b..db4ce18195 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-group/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberGroupData.getTreeItem(keys); + const items = umbMemberGroupData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts index 9411d8a2aa..694a7f9bef 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberTypeData.getTreeItem(keys); + const items = umbMemberTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts index 41555f9b2f..aa4d404356 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberData.getTreeItem(keys); + const items = umbMemberData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), From 6fa403414a1f9d6629009ae3c4fbad1011d8b163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:34:57 +0200 Subject: [PATCH 530/550] batch 9 --- .../workspace/document-type-workspace.context.ts | 4 ++-- .../document-type-workspace-view-templates.element.ts | 2 +- .../documents/entity-actions/create/create.action.ts | 4 ++-- .../documents/workspace/document-workspace.context.ts | 4 ++-- 4 files changed, 7 insertions(+), 7 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 3e6643bbb7..0c555f60ca 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 @@ -28,7 +28,7 @@ export class UmbDocumentTypeWorkspaceContext readonly compositions; // Document type specific: - readonly allowedTemplateKeys; + readonly allowedTemplateIds; readonly defaultTemplateKey; readonly cleanup; @@ -53,7 +53,7 @@ export class UmbDocumentTypeWorkspaceContext this.compositions = this.structure.rootDocumentTypeObservablePart((data) => data?.compositions); // Document type specific: - this.allowedTemplateKeys = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateKeys); + this.allowedTemplateIds = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateIds); this.defaultTemplateKey = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 32f96d6687..1963448239 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -66,7 +66,7 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 7c198e7a38..81d40bf7b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -26,9 +26,9 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase(undefined); readonly unique = this.#draft.getObservablePart((data) => data?.id); - readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeKey); + readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeId); readonly variants = this.#draft.getObservablePart((data) => data?.variants || []); readonly urls = this.#draft.getObservablePart((data) => data?.urls || []); - readonly templateKey = this.#draft.getObservablePart((data) => data?.templateKey || null); + readonly templateId = this.#draft.getObservablePart((data) => data?.templateId || null); readonly structure; readonly splitView; From 783883b8bd2c0e20940f95556afecd284fa6674d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:35:46 +0200 Subject: [PATCH 531/550] health check data --- .../src/core/mocks/data/health-check.data.ts | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts index d0afe79a92..b21934a28f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts @@ -25,7 +25,7 @@ export const healthGroups: Arrayyour@email.here.`, @@ -51,7 +51,7 @@ export const healthGroups: Array Date: Tue, 4 Apr 2023 11:36:03 +0200 Subject: [PATCH 532/550] _createTableItems --- .../views/user-groups/workspace-view-user-groups.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts index 382c2f3971..61ae8d8384 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts @@ -99,7 +99,7 @@ export class UmbWorkspaceViewUserGroupsElement extends UmbLitElement { private _createTableItems(userGroups: Array) { this._tableItems = userGroups.map((userGroup) => { return { - key: userGroup.id, + id: userGroup.id, icon: userGroup.icon, data: [ { From bb2e98ab841ab8334b7c24645601720719a3f524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:41:27 +0200 Subject: [PATCH 533/550] revert to key for checkbox list --- .../input-checkbox-list/input-checkbox-list.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts index ea56adb1c5..e70a5fc6b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts @@ -22,7 +22,7 @@ export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) */ // TODO: Could this use a type that we export to ensure TS failure, or hook this up with a type coming from backend? @property() - public list: Array<{ id: string; checked: boolean; value: string }> = []; + public list: Array<{ key: string; checked: boolean; value: string }> = []; #selected: Array = []; public get selected(): Array { @@ -63,7 +63,7 @@ export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) if (!this.list) return nothing; return html`
    - ${repeat(this.list, (item) => item.id, this.renderCheckbox)} + ${repeat(this.list, (item) => item.key, this.renderCheckbox)}
    `; } From 9da3be0d1a4dfbb2156c299221be5e23934899b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 11:47:32 +0200 Subject: [PATCH 534/550] batch 9 --- .../workspace/document-type-workspace.context.ts | 6 +++--- ...document-type-workspace-view-templates.element.ts | 2 +- .../documents/entity-actions/create/create.action.ts | 2 +- .../src/backoffice/media/media/index.ts | 2 +- .../repository/sources/media.detail.server.data.ts | 2 +- .../workspace/workspace-package-builder.element.ts | 6 ++---- .../language-root/language-root-workspace.element.ts | 2 +- .../input-checkbox-list.stories.ts | 4 ++-- .../property-type-based-property.element.ts | 12 ++++++------ .../shared/modals/template/template-modal.element.ts | 4 ++-- .../entity-actions/create/create.action.ts | 2 +- .../src/core/mocks/data/media.data.ts | 12 ++++++------ .../src/core/mocks/domains/dictionary.handlers.ts | 2 +- .../src/core/mocks/domains/package.handlers.ts | 2 +- 14 files changed, 29 insertions(+), 31 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 0c555f60ca..da264b5ff0 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 @@ -29,7 +29,7 @@ export class UmbDocumentTypeWorkspaceContext // Document type specific: readonly allowedTemplateIds; - readonly defaultTemplateKey; + readonly defaultTemplateId; readonly cleanup; readonly structure; @@ -54,8 +54,8 @@ export class UmbDocumentTypeWorkspaceContext // Document type specific: this.allowedTemplateIds = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateIds); - this.defaultTemplateKey = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); - this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); + this.defaultTemplateId = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateId); + this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateId); } public setPropertyValue(alias: string, value: unknown) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 1963448239..02f97109c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -65,7 +65,7 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement
    Choose which templates editors are allowed to use on content of this type
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 81d40bf7b6..7a5b8b3e31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -28,7 +28,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase + (this._package.mediaIds = (e.target as UmbInputMediaPickerElement).selectedKeys)}"> ) { this._tableItems = languages.map((language) => { return { - key: language.isoCode ?? '', + id: language.isoCode ?? '', icon: 'umb:globe', data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts index 3df54c0c96..cee98bed08 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts @@ -14,12 +14,12 @@ export const Overview: Story = { args: { list: [ { - id: 'isAwesome', + key: 'isAwesome', value: 'Umbraco is awesome?', checked: true, }, { - id: 'attendingCodeGarden', + key: 'attendingCodeGarden', value: 'Attending CodeGarden?', checked: false, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts index f664999806..588e861041 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts @@ -33,8 +33,8 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { public set property(value: PropertyTypeResponseModelBaseModel | undefined) { const oldProperty = this._property; this._property = value; - if (this._property?.dataTypeKey !== oldProperty?.dataTypeKey) { - this._observeDataType(this._property?.dataTypeKey); + if (this._property?.dataTypeId !== oldProperty?.dataTypeId) { + this._observeDataType(this._property?.dataTypeId); this._observeProperty(); } } @@ -95,13 +95,13 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { ); } - private async _observeDataType(dataTypeKey?: string) { + private async _observeDataType(dataTypeId?: string) { this._dataTypeObserver?.destroy(); - if (dataTypeKey) { + if (dataTypeId) { // Its not technically needed to have await here, this is only to ensure that the data is loaded before we observe it, and thereby only updating the DOM with the latest data. - await this._dataTypeRepository.requestById(dataTypeKey); + await this._dataTypeRepository.requestById(dataTypeId); this._dataTypeObserver = this.observe( - await this._dataTypeRepository.byId(dataTypeKey), + await this._dataTypeRepository.byId(dataTypeId), (dataType) => { this._dataTypeData = dataType?.values || []; this._propertyEditorUiAlias = dataType?.propertyEditorUiAlias || undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts index 8efbffec51..f1771e6a34 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -35,7 +35,7 @@ export class UmbTemplateModalElement extends UmbModalBaseElement get location header to route to new item diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index d8e0a5ecff..31a930b596 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -20,7 +20,7 @@ export const data: Array = [ alias: 'myMediaHeadline', label: 'Media Headline', description: 'Text string property', - dataTypeKey: 'dt-textBox', + dataTypeId: 'dt-textBox', }, ], data: [ @@ -47,7 +47,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -104,7 +104,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -131,7 +131,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -158,7 +158,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -185,7 +185,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index fe92b90a83..ef8b5ae2f7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -178,7 +178,7 @@ export const handlers = [ rest.post('/umbraco/management/api/v1/dictionary/import', async (req, res, ctx) => { const file = req.url.searchParams.get('file'); - if (!file) return; + if (!file || !importResponse.id) return; importResponse.parentId = req.url.searchParams.get('parentId') ?? null; umbDictionaryData.save(importResponse); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts index af6f8a9f56..840dbc0371 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts @@ -100,7 +100,7 @@ const packageArray: PackageDefinitionResponseModel[] = [ name: 'My Package', //contentNodeId?: string | null; //contentLoadChildNodes?: boolean; - //mediaKeys?: Array; + //mediaIds?: Array; //mediaLoadChildNodes?: boolean; //documentTypes?: Array; //mediaTypes?: Array; From f8b8f2c259b2d9109d87c54b65a0e1337b2ec0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 13:19:19 +0200 Subject: [PATCH 535/550] updated models (#639) * updated models * potential fix of eslint * fix eslint rules * first batch * dictionary corrections * batch 2 * batch 3 * tiny correction * batch 4 * rename key to id internal models * batch 5 * batch 6 * correct LogLevelCountsReponseModel * batch 7 * batch 8 * batch 9 * health check data * _createTableItems * revert to key for checkbox list * batch 9 --- src/Umbraco.Web.UI.Client/.eslintrc.json | 6 + .../eslint-local-rules.cjs | 1 + .../libs/backend-api/src/core/request.ts | 425 +++++++++--------- .../libs/backend-api/src/index.ts | 22 +- .../src/models/AuditLogBaseModel.ts | 5 +- .../src/models/AuditLogResponseModel.ts | 1 + .../AuditLogWithUsernameResponseModel.ts | 5 +- .../models/ChangePasswordUserRequestModel.ts | 9 + .../models/ConsentLevelPresentationModel.ts | 1 + ...tValueModelDocumentVariantResponseModel.ts | 5 +- .../models/ContentTreeItemResponseModel.ts | 7 +- .../src/models/ContentTypeCleanupModel.ts | 1 + .../src/models/ContentTypeCompositionModel.ts | 3 +- ...tTypePropertyTypeContainerResponseModel.ts | 3 +- ...aTypePropertyTypeContainerResponseModel.ts | 3 +- .../src/models/ContentTypeSortModel.ts | 3 +- .../src/models/ContentUrlInfoModel.ts | 1 + .../src/models/CopyDataTypeRequestModel.ts | 3 +- ...ntValueModelDocumentVariantRequestModel.ts | 3 +- ...MediaValueModelMediaVariantRequestModel.ts | 3 +- .../src/models/CreateDataTypeRequestModel.ts | 4 +- .../CreateDictionaryItemRequestModel.ts | 3 +- .../src/models/CreateDocumentRequestModel.ts | 5 +- .../src/models/CreateFolderRequestModel.ts | 4 +- .../src/models/CreateLanguageRequestModel.ts | 3 +- .../src/models/CreateMediaRequestModel.ts | 3 +- .../src/models/CreatePackageRequestModel.ts | 1 + .../models/CreateRelationTypeRequestModel.ts | 3 +- .../src/models/CreateTemplateRequestModel.ts | 1 + .../src/models/CreateUserRequestModel.ts | 8 + .../src/models/CreateUserResponseModel.ts | 9 + .../src/models/CultureReponseModel.ts | 1 + .../src/models/DataTypeModelBaseModel.ts | 1 + .../DataTypePropertyPresentationModel.ts | 1 + .../models/DataTypePropertyReferenceModel.ts | 1 + .../models/DataTypeReferenceResponseModel.ts | 3 +- .../src/models/DataTypeResponseModel.ts | 7 +- .../models/DatabaseInstallResponseModel.ts | 1 + .../DatabaseSettingsPresentationModel.ts | 1 + .../models/DictionaryItemModelBaseModel.ts | 1 + .../src/models/DictionaryItemResponseModel.ts | 5 +- .../models/DictionaryItemTranslationModel.ts | 1 + .../models/DictionaryOverviewResponseModel.ts | 5 +- .../src/models/DisableUserRequestModel.ts | 8 + .../DocumentBlueprintTreeItemResponseModel.ts | 9 +- .../DocumentNotificationResponseModel.ts | 9 + .../src/models/DocumentResponseModel.ts | 5 +- .../models/DocumentTreeItemResponseModel.ts | 9 +- ...tTypePropertyTypeContainerResponseModel.ts | 1 + .../DocumentTypePropertyTypeResponseModel.ts | 1 + .../src/models/DocumentTypeResponseModel.ts | 7 +- .../DocumentTypeTreeItemResponseModel.ts | 5 +- .../src/models/DocumentValueModel.ts | 3 +- .../src/models/DocumentVariantRequestModel.ts | 3 +- .../models/DocumentVariantResponseModel.ts | 7 +- .../src/models/DomainPresentationModel.ts | 1 + .../DomainsPresentationModelBaseModel.ts | 1 + .../src/models/DomainsResponseModel.ts | 1 + .../src/models/EnableUserRequestModel.ts | 8 + .../src/models/EntityTreeItemResponseModel.ts | 9 +- .../src/models/FieldPresentationModel.ts | 1 + .../FileSystemTreeItemPresentationModel.ts | 5 +- .../src/models/FolderModelBaseModel.ts | 1 + .../src/models/FolderReponseModel.ts | 7 +- .../src/models/FolderTreeItemResponseModel.ts | 5 +- .../models/HealthCheckActionRequestModel.ts | 3 +- .../HealthCheckGroupPresentationBaseModel.ts | 1 + .../HealthCheckGroupPresentationModel.ts | 3 +- .../models/HealthCheckGroupResponseModel.ts | 1 + ...HealthCheckGroupWithResultResponseModel.ts | 1 + .../src/models/HealthCheckModel.ts | 5 +- .../src/models/HealthCheckModelBaseModel.ts | 3 +- .../models/HealthCheckResultResponseModel.ts | 1 + .../HealthCheckWithResultPresentationModel.ts | 3 +- .../src/models/HelpPageResponseModel.ts | 1 + .../ImportDictionaryItemsPresentationModel.ts | 9 - .../models/ImportDictionaryRequestModel.ts | 5 +- .../src/models/IndexResponseModel.ts | 1 + .../models/InstallSettingsResponseModel.ts | 1 + .../src/models/InstallVResponseModel.ts | 1 + .../src/models/InviteUserRequestModel.ts | 10 + .../src/models/LanguageModelBaseModel.ts | 1 + .../src/models/LanguageResponseModel.ts | 3 +- .../src/models/LogLevelCountsReponseModel.ts | 10 +- .../LogMessagePropertyPresentationModel.ts | 1 + .../src/models/LogMessageResponseModel.ts | 1 + .../src/models/LogTemplateResponseModel.ts | 1 + .../src/models/LoggerResponseModel.ts | 1 + ...aTypePropertyTypeContainerResponseModel.ts | 1 + .../MediaTypePropertyTypeResponseModel.ts | 1 + .../src/models/MediaTypeResponseModel.ts | 1 + .../backend-api/src/models/MediaValueModel.ts | 3 +- .../src/models/MediaVariantRequestModel.ts | 3 +- .../src/models/MediaVariantResponseModel.ts | 3 +- .../src/models/ModelsBuilderResponseModel.ts | 1 + .../src/models/MoveDataTypeRequestModel.ts | 3 +- .../src/models/MoveDictionaryRequestModel.ts | 3 +- .../src/models/ObjectTypeResponseModel.ts | 1 + .../backend-api/src/models/OkResultModel.ts | 1 + .../models/OutOfDateStatusResponseModel.ts | 1 + .../models/PackageDefinitionResponseModel.ts | 5 +- .../models/PackageManifestResponseModel.ts | 1 + .../PackageMigrationStatusResponseModel.ts | 1 + .../src/models/PackageModelBaseModel.ts | 3 +- .../src/models/PagedAuditLogResponseModel.ts | 1 + .../PagedAuditLogWithUsernameResponseModel.ts | 1 + .../PagedContentTreeItemResponseModel.ts | 1 + .../src/models/PagedCultureReponseModel.ts | 1 + .../PagedDictionaryOverviewResponseModel.ts | 1 + ...dDocumentBlueprintTreeItemResponseModel.ts | 1 + .../PagedDocumentTreeItemResponseModel.ts | 1 + .../PagedDocumentTypeTreeItemResponseModel.ts | 1 + .../PagedEntityTreeItemResponseModel.ts | 1 + ...agedFileSystemTreeItemPresentationModel.ts | 1 + .../PagedFolderTreeItemResponseModel.ts | 1 + .../PagedHealthCheckGroupResponseModel.ts | 1 + .../src/models/PagedHelpPageResponseModel.ts | 1 + .../src/models/PagedIndexResponseModel.ts | 1 + .../src/models/PagedLanguageResponseModel.ts | 1 + .../models/PagedLogMessageResponseModel.ts | 1 + .../models/PagedLogTemplateResponseModel.ts | 1 + .../src/models/PagedLoggerResponseModel.ts | 1 + .../models/PagedObjectTypeResponseModel.ts | 1 + .../PagedPackageDefinitionResponseModel.ts | 1 + ...agedPackageMigrationStatusResponseModel.ts | 1 + .../PagedRecycleBinItemResponseModel.ts | 1 + .../models/PagedRedirectUrlResponseModel.ts | 1 + .../models/PagedRelationItemResponseModel.ts | 1 + .../src/models/PagedRelationResponseModel.ts | 1 + .../PagedSavedLogSearchResponseModel.ts | 1 + .../models/PagedSearchResultResponseModel.ts | 1 + .../src/models/PagedSearcherResponseModel.ts | 1 + .../src/models/PagedTelemetryResponseModel.ts | 1 + .../models/PagedUserGroupPresentationModel.ts | 1 + .../src/models/PagedUserResponseModel.ts | 11 + .../src/models/ProfilingStatusRequestModel.ts | 1 + .../models/ProfilingStatusResponseModel.ts | 1 + .../src/models/PropertyTypeAppearanceModel.ts | 1 + ...ertyTypeContainerResponseModelBaseModel.ts | 5 +- .../PropertyTypeResponseModelBaseModel.ts | 7 +- .../src/models/PropertyTypeValidationModel.ts | 1 + .../src/models/RecycleBinItemResponseModel.ts | 5 +- .../src/models/RedirectUrlResponseModel.ts | 5 +- .../models/RedirectUrlStatusResponseModel.ts | 1 + .../src/models/RelationItemResponseModel.ts | 3 +- .../src/models/RelationResponseModel.ts | 1 + .../src/models/RelationTypeBaseModel.ts | 1 + .../src/models/RelationTypeResponseModel.ts | 13 +- .../src/models/SaveUserGroupRequestModel.ts | 1 + .../SavedLogSearchPresenationBaseModel.ts | 1 + .../src/models/SavedLogSearchRequestModel.ts | 1 + .../src/models/SavedLogSearchResponseModel.ts | 1 + .../src/models/SearchResultResponseModel.ts | 1 + .../src/models/SearcherResponseModel.ts | 1 + .../src/models/ServerStatusResponseModel.ts | 1 + .../src/models/SetAvatarRequestModel.ts | 8 + .../TelemetryRepresentationBaseModel.ts | 1 + .../src/models/TelemetryRequestModel.ts | 1 + .../src/models/TelemetryResponseModel.ts | 1 + .../src/models/TemplateModelBaseModel.ts | 1 + ...lateQueryExecuteFilterPresentationModel.ts | 1 + .../src/models/TemplateQueryExecuteModel.ts | 3 +- .../models/TemplateQueryExecuteSortModel.ts | 1 + .../src/models/TemplateQueryOperatorModel.ts | 1 + .../TemplateQueryPropertyPresentationModel.ts | 1 + ...emplateQueryResultItemPresentationModel.ts | 1 + .../TemplateQueryResultResponseModel.ts | 1 + .../TemplateQuerySettingsResponseModel.ts | 1 + .../src/models/TemplateResponseModel.ts | 5 +- .../models/TemplateScaffoldResponseModel.ts | 1 + .../src/models/TemporaryFileResponseModel.ts | 10 + .../src/models/TreeItemPresentationModel.ts | 1 + .../src/models/UnlockUsersRequestModel.ts | 8 + ...ntValueModelDocumentVariantRequestModel.ts | 1 + ...MediaValueModelMediaVariantRequestModel.ts | 1 + .../src/models/UpdateDataTypeRequestModel.ts | 1 + .../UpdateDictionaryItemRequestModel.ts | 1 + ...UpdateDocumentNotificationsRequestModel.ts | 8 + .../src/models/UpdateDocumentRequestModel.ts | 3 +- .../src/models/UpdateDomainsRequestModel.ts | 1 + .../src/models/UpdateFolderReponseModel.ts | 1 + .../src/models/UpdateLanguageRequestModel.ts | 1 + .../src/models/UpdateMediaRequestModel.ts | 1 + .../src/models/UpdatePackageRequestModel.ts | 3 +- .../models/UpdateRelationTypeRequestModel.ts | 1 + .../src/models/UpdateTemplateRequestModel.ts | 1 + .../src/models/UpdateUserGroupRequestModel.ts | 1 + .../UpdateUserGroupsOnUserRequestModel.ts | 9 + .../src/models/UpdateUserRequestModel.ts | 12 + .../models/UpgradeSettingsResponseModel.ts | 1 + .../models/UploadDictionaryResponseModel.ts | 10 - .../src/models/UserGroupBaseModel.ts | 5 +- .../src/models/UserGroupPresentationModel.ts | 5 +- .../src/models/UserInstallResponseModel.ts | 1 + .../backend-api/src/models/UserOrderModel.ts | 16 + .../src/models/UserPresentationBaseModel.ts | 11 + .../src/models/UserResponseModel.ts | 23 + .../src/models/UserSettingsModel.ts | 1 + .../backend-api/src/models/UserStateModel.ts | 12 + .../src/models/ValueModelBaseModel.ts | 1 + .../src/models/VariantModelBaseModel.ts | 1 + .../models/VariantResponseModelBaseModel.ts | 1 + .../src/models/VersionResponseModel.ts | 1 + .../src/services/AuditLogResource.ts | 70 +-- .../src/services/CultureResource.ts | 12 +- .../src/services/DataTypeResource.ts | 206 ++++----- .../src/services/DictionaryResource.ts | 170 ++++--- .../src/services/DocumentBlueprintResource.ts | 22 +- .../src/services/DocumentResource.ts | 234 ++++++---- .../src/services/DocumentTypeResource.ts | 62 +-- .../src/services/HealthCheckResource.ts | 36 +- .../backend-api/src/services/HelpResource.ts | 24 +- .../src/services/IndexerResource.ts | 28 +- .../src/services/InstallResource.ts | 16 +- .../src/services/LanguageResource.ts | 48 +- .../src/services/LogViewerResource.ts | 418 +++++++++-------- .../backend-api/src/services/MediaResource.ts | 142 +++--- .../src/services/MediaTypeResource.ts | 62 +-- .../src/services/MemberGroupResource.ts | 22 +- .../src/services/MemberTypeResource.ts | 22 +- .../src/services/ObjectTypesResource.ts | 12 +- .../src/services/PackageResource.ts | 100 ++--- .../src/services/PartialViewResource.ts | 36 +- .../src/services/ProfilingResource.ts | 8 +- .../services/RedirectManagementResource.ts | 60 +-- .../src/services/RelationResource.ts | 50 +-- .../src/services/RelationTypeResource.ts | 76 ++-- .../src/services/ScriptResource.ts | 36 +- .../src/services/SearcherResource.ts | 32 +- .../src/services/StaticFileResource.ts | 36 +- .../src/services/StylesheetResource.ts | 36 +- .../src/services/TelemetryResource.ts | 20 +- .../src/services/TemplateResource.ts | 102 ++--- .../src/services/TemporaryFileResource.ts | 80 ++++ .../src/services/TrackedReferenceResource.ts | 74 +-- .../src/services/UserGroupsResource.ts | 66 +-- .../backend-api/src/services/UsersResource.ts | 323 +++++++++++++ .../allowed-document-types-modal.token.ts | 2 +- .../token/import-dictionary-modal.token.ts | 4 +- .../libs/modal/token/template-modal.token.ts | 4 +- .../libs/models/index.ts | 18 +- .../append-to-frozen-array.function.ts | 4 +- .../libs/observable-api/array-state.ts | 16 +- .../data-source/data-source.interface.ts | 2 +- .../folder-data-source.interface.ts | 2 +- .../repository/detail-repository.interface.ts | 4 +- .../repository/folder-repository.interface.ts | 2 +- .../libs/store/entity-tree-store.ts | 30 +- .../libs/store/store-base.ts | 1 + src/Umbraco.Web.UI.Client/libs/store/store.ts | 2 +- .../workspace-entity-context.interface.ts | 2 +- .../dashboard-redirect-management.element.ts | 18 +- .../document-blueprint.detail.store.ts | 12 +- .../allowed-document-types-modal.element.ts | 10 +- .../repository/document-type.repository.ts | 70 +-- .../repository/document-type.store.ts | 8 +- .../sources/document-type.server.data.ts | 52 +-- .../sources/document-type.tree.server.data.ts | 24 +- .../document-type-workspace.context.ts | 22 +- .../document-type-workspace.element.ts | 6 +- .../document-type-workspace.stories.ts | 2 +- ...-workspace-view-edit-properties.element.ts | 24 +- ...cument-type-workspace-view-edit.element.ts | 12 +- ...t-type-workspace-view-templates.element.ts | 4 +- ...ent-table-actions-column-layout.element.ts | 2 +- .../document-table-collection-view.element.ts | 6 +- .../entity-actions/create/create.action.ts | 6 +- .../repository/document.repository.ts | 62 +-- .../documents/repository/document.store.ts | 8 +- .../sources/document.server.data.ts | 48 +- .../sources/document.tree.server.data.ts | 26 +- .../tree-item/document-tree-item.context.ts | 2 +- .../workspace/document-workspace.context.ts | 20 +- .../workspace/document-workspace.element.ts | 12 +- .../repository/media-type.detail.store.ts | 2 +- .../repository/media-type.repository.ts | 38 +- .../sources/media-type.detail.server.data.ts | 6 +- ...edia-type.details.server.data.interface.ts | 2 +- .../sources/media-type.tree.server.data.ts | 14 +- .../workspace/media-type-workspace.context.ts | 4 +- .../workspace/media-type-workspace.element.ts | 6 +- .../media-grid-collection-view.element.ts | 16 +- .../media-table-collection-view.element.ts | 2 +- .../src/backoffice/media/media/index.ts | 4 +- .../media/repository/media.repository.ts | 70 +-- .../media/media/repository/media.store.ts | 2 +- .../media/repository/media.tree.store.ts | 2 +- .../sources/media.detail.server.data.ts | 48 +- .../sources/media.tree.server.data.ts | 26 +- .../workspace/media-workspace-edit.element.ts | 12 +- .../workspace/media-workspace.context.ts | 16 +- .../workspace/media-workspace.element.ts | 6 +- .../workspace/media-workspace.stories.ts | 3 +- .../repository/member-group.repository.ts | 40 +- .../repository/member-group.store.ts | 2 +- .../member-group.detail.server.data.ts | 6 +- .../sources/member-group.tree.server.data.ts | 10 +- .../member-group-workspace.context.ts | 6 +- .../member-group-workspace.element.ts | 6 +- .../member-group-workspace.stories.ts | 2 +- ...orkspace-view-member-group-info.element.ts | 2 +- .../repository/member-type.repository.ts | 48 +- .../repository/member-type.store.ts | 2 +- .../sources/member-type.detail.server.data.ts | 8 +- .../sources/member-type.tree.server.data.ts | 12 +- .../member-type-workspace.context.ts | 10 +- .../member-type-workspace.element.ts | 6 +- .../members/members/member.detail.store.ts | 16 +- .../members/repository/member.repository.ts | 16 +- .../members/repository/member.store.ts | 2 +- .../sources/member.tree.server.data.ts | 8 +- .../workspace/member-workspace.context.ts | 2 +- .../workspace/member-workspace.element.ts | 6 +- .../workspace/member-workspace.stories.ts | 2 +- .../workspace-package-builder.element.ts | 23 +- .../created-packages-section-view.element.ts | 4 +- .../packages-created-overview.element.ts | 12 +- .../views/health-check-group.element.ts | 12 +- .../repository/data-type.repository.ts | 98 ++-- .../data-types/repository/data-type.store.ts | 10 +- .../sources/data-type-folder.server.data.ts | 38 +- .../sources/data-type.server.data.ts | 42 +- .../sources/data-type.tree.server.data.ts | 14 +- .../workspace/data-type-workspace.context.ts | 18 +- .../workspace/data-type-workspace.element.ts | 21 +- .../workspace/data-type-workspace.stories.ts | 3 +- .../workspace-view-data-type-info.element.ts | 4 +- .../language-root-workspace.element.ts | 2 +- .../language/language-workspace.context.ts | 2 +- .../log-viewer-log-types-chart.element.ts | 1 + .../repository/relation-type.repository.ts | 58 +-- .../repository/relation-type.store.ts | 10 +- .../sources/relation-type.server.data.ts | 38 +- .../sources/relation-type.tree.server.data.ts | 22 +- .../relation-type-workspace.context.ts | 24 +- .../relation-type-workspace.element.ts | 12 +- .../relation-type-workspace.stories.ts | 3 +- ...pe-workspace-view-relation-type.element.ts | 27 +- .../code-editor/code-editor.stories.ts | 4 +- .../extension-slot/extension-slot.element.ts | 1 + .../input-checkbox-list.element.ts | 1 + .../input-checkbox-list.stories.ts | 38 +- .../input-document-picker.element.ts | 30 +- .../input-document-type-picker.element.ts | 24 +- .../input-media-picker.element.ts | 28 +- .../input-template-picker.element.ts | 14 +- .../input-user-group.element.ts | 2 +- .../input-user/input-user.element.ts | 2 +- .../property-type-based-property.element.ts | 12 +- .../shared/components/table/table.element.ts | 18 +- .../shared/components/table/table.stories.ts | 35 +- .../template-card/template-card.element.ts | 90 ++-- .../entity-tree-item.context.ts | 2 +- .../shared/components/tree/tree.context.ts | 8 +- .../workspace-action-menu.element.ts | 2 +- .../workspace-view-collection.element.ts | 2 +- .../entity-manager-controller.ts | 6 +- ...kspace-container-structure-helper.class.ts | 10 +- .../workspace-context/workspace-context.ts | 2 +- ...rkspace-property-structure-helper.class.ts | 16 +- .../workspace-structure-manager.class.ts | 96 ++-- .../modals/template/template-modal.element.ts | 16 +- .../sources/stylesheet.server.data.ts | 2 +- .../workspace/stylesheet-workspace.context.ts | 2 +- .../templates/repository/sources/index.ts | 2 +- .../sources/template.detail.server.data.ts | 32 +- .../sources/template.tree.server.data.ts | 24 +- .../repository/template.repository.ts | 60 +-- .../templates/repository/template.store.ts | 2 +- .../workspace/template-workspace.context.ts | 10 +- .../workspace/template-workspace.element.ts | 4 +- ...ashboard-translation-dictionary.element.ts | 10 +- .../entity-actions/create/create.action.ts | 4 +- .../import/import-dictionary-modal.element.ts | 29 +- .../entity-actions/import/import.action.ts | 6 +- .../translation/dictionary/index.ts | 2 +- .../repository/dictionary.repository.ts | 68 +-- .../dictionary/repository/dictionary.store.ts | 2 +- .../sources/dictionary.detail.server.data.ts | 53 +-- ...ictionary.details.server.data.interface.ts | 8 +- .../sources/dictionary.tree.server.data.ts | 20 +- .../workspace/dictionary-workspace.context.ts | 10 +- .../workspace/dictionary-workspace.element.ts | 6 +- .../workspace/dictionary-workspace.stories.ts | 3 +- .../user-profile-app-profile.element.ts | 2 +- .../user-group-picker-modal.element.ts | 6 +- .../repository/user-group.store.ts | 22 +- .../user-group-workspace-edit.element.ts | 4 +- .../workspace/user-group-workspace.context.ts | 2 +- .../workspace/user-group-workspace.element.ts | 6 +- ...-group-table-name-column-layout.element.ts | 2 +- .../workspace-view-user-groups.element.ts | 6 +- .../grid/workspace-view-users-grid.element.ts | 16 +- .../user-table-name-column-layout.element.ts | 2 +- .../workspace-view-users-table.element.ts | 10 +- .../views/users/section-view-users.element.ts | 16 +- .../create-user/create-user-modal.element.ts | 2 +- .../invite-user/invite-user-modal.element.ts | 2 +- .../user-picker/user-picker-modal.element.ts | 6 +- .../users/users/repository/user.store.ts | 46 +- .../workspace/user-workspace-edit.element.ts | 12 +- .../users/workspace/user-workspace.context.ts | 2 +- .../users/workspace/user-workspace.element.ts | 6 +- .../src/core/mocks/data/data-type.data.ts | 182 ++++---- .../src/core/mocks/data/dictionary.data.ts | 18 +- .../mocks/data/document-blueprint.data.ts | 4 +- .../src/core/mocks/data/document-type.data.ts | 372 +++++++-------- .../src/core/mocks/data/document.data.ts | 54 +-- .../src/core/mocks/data/entity.data.ts | 31 +- .../src/core/mocks/data/health-check.data.ts | 52 +-- .../src/core/mocks/data/languages.data.ts | 8 +- .../src/core/mocks/data/log-viewer.data.ts | 12 +- .../src/core/mocks/data/media-type.data.ts | 18 +- .../src/core/mocks/data/media.data.ts | 54 +-- .../src/core/mocks/data/member-group.data.ts | 14 +- .../src/core/mocks/data/member-type.data.ts | 14 +- .../src/core/mocks/data/member.data.ts | 14 +- .../src/core/mocks/data/relation-type.data.ts | 38 +- .../src/core/mocks/data/template.data.ts | 32 +- .../src/core/mocks/data/user-groups.data.ts | 20 +- .../src/core/mocks/data/users.data.ts | 418 ++++++++--------- .../src/core/mocks/data/utils.ts | 4 +- .../core/mocks/domains/data-type.handlers.ts | 48 +- .../core/mocks/domains/dictionary.handlers.ts | 62 +-- .../mocks/domains/document-type.handlers.ts | 38 +- .../core/mocks/domains/document.handlers.ts | 26 +- .../mocks/domains/health-check.handlers.ts | 6 +- .../core/mocks/domains/language.handlers.ts | 12 +- .../core/mocks/domains/log-viewer.handlers.ts | 21 +- .../core/mocks/domains/media-type.handlers.ts | 12 +- .../src/core/mocks/domains/media.handlers.ts | 26 +- .../mocks/domains/member-group.handlers.ts | 6 +- .../mocks/domains/member-type.handlers.ts | 6 +- .../src/core/mocks/domains/member.handlers.ts | 6 +- .../core/mocks/domains/package.handlers.ts | 34 +- .../domains/redirect-management.handlers.ts | 70 +-- .../mocks/domains/relation-type.handlers.ts | 32 +- .../core/mocks/domains/template.handlers.ts | 26 +- .../core/mocks/domains/tree-media.handlers.ts | 12 +- .../mocks/domains/user-groups.handlers.ts | 14 +- .../src/core/mocks/domains/users.handlers.ts | 18 +- .../src/stories/store.mdx | 12 +- 442 files changed, 4495 insertions(+), 3680 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts delete mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 62976c7e21..12235e837e 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -2,6 +2,12 @@ "ignorePatterns": ["vite.*.ts"], "root": true, "plugins": ["eslint-plugin-local-rules"], + "parserOptions": { + "ecmaVersion": "latest" + }, + "env": { + "es6": true + }, "overrides": [ { "files": ["**/*.ts"], diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index eb0fb35f03..cf5a8913b1 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -116,6 +116,7 @@ module.exports = { category: 'Naming', recommended: true, }, + schema: [], }, create: function (context) { return { diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts index 0a87eb5f1c..1743c2b225 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts @@ -9,262 +9,265 @@ import type { OnCancel } from './CancelablePromise'; import type { OpenAPIConfig } from './OpenAPI'; const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; + return value !== undefined && value !== null; }; const isString = (value: any): value is string => { - return typeof value === 'string'; + return typeof value === 'string'; }; const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; + return isString(value) && value !== ''; }; const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); }; const isFormData = (value: any): value is FormData => { - return value instanceof FormData; + return value instanceof FormData; }; const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } }; const getQueryString = (params: Record): string => { - const qs: string[] = []; + const qs: string[] = []; - const append = (key: string, value: any) => { - qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); - }; + const append = (id: string, value: any) => { + qs.push(`${encodeURIComponent(id)}=${encodeURIComponent(String(value))}`); + }; - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - append(key, value); - } - } - }; + const process = (id: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach((v) => { + process(id, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${id}[${k}]`, v); + }); + } else { + append(id, value); + } + } + }; - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); + Object.entries(params).forEach(([id, value]) => { + process(id, value); + }); - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + if (qs.length > 0) { + return `?${qs.join('&')}`; + } - return ''; + return ''; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = config.ENCODE_PATH || encodeURI; - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; }; const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; + const process = (id: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(id, value); + } else { + formData.append(id, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([id, value]) => { + if (Array.isArray(value)) { + value.forEach((v) => process(id, v)); + } else { + process(id, value); + } + }); - return formData; - } - return undefined; + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; }; const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce( + (headers, [id, value]) => ({ + ...headers, + [id]: String(value), + }), + {} as Record + ); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } + if (options.body) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } - return new Headers(headers); + return new Headers(headers); }; const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body); + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Headers, + onCancel: OnCancel ): Promise => { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + body: body ?? formData, + method: options.method, + signal: controller.signal, + }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } + if (config.WITH_CREDENTIALS) { + request.credentials = config.CREDENTIALS; + } - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); }; const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return undefined; }; const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return undefined; }; const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + }; - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } - if (!result.ok) { - throw new ApiError(options, result, 'Generic Error'); - } + if (!result.ok) { + throw new ApiError(options, result, 'Generic Error'); + } }; /** @@ -275,32 +278,32 @@ const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => * @throws ApiError */ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options); - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(config, options, url, body, formData, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; - catchErrorCodes(options, result); + catchErrorCodes(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); }; 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 5e9a463517..326b993f2f 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 @@ -10,6 +10,7 @@ export type { AuditLogBaseModel } from './models/AuditLogBaseModel'; export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; export { AuditTypeModel } from './models/AuditTypeModel'; +export type { ChangePasswordUserRequestModel } from './models/ChangePasswordUserRequestModel'; export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; export type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; export { ContentStateModel } from './models/ContentStateModel'; @@ -33,6 +34,8 @@ export type { CreateMediaRequestModel } from './models/CreateMediaRequestModel'; export type { CreatePackageRequestModel } from './models/CreatePackageRequestModel'; export type { CreateRelationTypeRequestModel } from './models/CreateRelationTypeRequestModel'; export type { CreateTemplateRequestModel } from './models/CreateTemplateRequestModel'; +export type { CreateUserRequestModel } from './models/CreateUserRequestModel'; +export type { CreateUserResponseModel } from './models/CreateUserResponseModel'; export type { CultureReponseModel } from './models/CultureReponseModel'; export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; @@ -46,7 +49,9 @@ export type { DictionaryItemResponseModel } from './models/DictionaryItemRespons export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; +export type { DisableUserRequestModel } from './models/DisableUserRequestModel'; export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentNotificationResponseModel } from './models/DocumentNotificationResponseModel'; export type { DocumentResponseModel } from './models/DocumentResponseModel'; export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; @@ -59,6 +64,7 @@ export type { DocumentVariantResponseModel } from './models/DocumentVariantRespo export type { DomainPresentationModel } from './models/DomainPresentationModel'; export type { DomainsPresentationModelBaseModel } from './models/DomainsPresentationModelBaseModel'; export type { DomainsResponseModel } from './models/DomainsResponseModel'; +export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; export type { FieldPresentationModel } from './models/FieldPresentationModel'; export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; @@ -76,11 +82,11 @@ export type { HealthCheckResultResponseModel } from './models/HealthCheckResultR export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; export { HealthStatusModel } from './models/HealthStatusModel'; export type { HelpPageResponseModel } from './models/HelpPageResponseModel'; -export type { ImportDictionaryItemsPresentationModel } from './models/ImportDictionaryItemsPresentationModel'; export type { ImportDictionaryRequestModel } from './models/ImportDictionaryRequestModel'; export type { IndexResponseModel } from './models/IndexResponseModel'; export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; export type { InstallVResponseModel } from './models/InstallVResponseModel'; +export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; export type { LanguageResponseModel } from './models/LanguageResponseModel'; export type { LoggerResponseModel } from './models/LoggerResponseModel'; @@ -138,6 +144,7 @@ export type { PagedSearcherResponseModel } from './models/PagedSearcherResponseM export type { PagedSearchResultResponseModel } from './models/PagedSearchResultResponseModel'; export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; +export type { PagedUserResponseModel } from './models/PagedUserResponseModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; @@ -161,6 +168,7 @@ export type { SaveUserGroupRequestModel } from './models/SaveUserGroupRequestMod export type { SearcherResponseModel } from './models/SearcherResponseModel'; export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; +export type { SetAvatarRequestModel } from './models/SetAvatarRequestModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; @@ -178,11 +186,14 @@ export type { TemplateQueryResultResponseModel } from './models/TemplateQueryRes export type { TemplateQuerySettingsResponseModel } from './models/TemplateQuerySettingsResponseModel'; export type { TemplateResponseModel } from './models/TemplateResponseModel'; export type { TemplateScaffoldResponseModel } from './models/TemplateScaffoldResponseModel'; +export type { TemporaryFileResponseModel } from './models/TemporaryFileResponseModel'; export type { TreeItemPresentationModel } from './models/TreeItemPresentationModel'; +export type { UnlockUsersRequestModel } from './models/UnlockUsersRequestModel'; export type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; +export type { UpdateDocumentNotificationsRequestModel } from './models/UpdateDocumentNotificationsRequestModel'; export type { UpdateDocumentRequestModel } from './models/UpdateDocumentRequestModel'; export type { UpdateDomainsRequestModel } from './models/UpdateDomainsRequestModel'; export type { UpdateFolderReponseModel } from './models/UpdateFolderReponseModel'; @@ -192,12 +203,17 @@ export type { UpdatePackageRequestModel } from './models/UpdatePackageRequestMod export type { UpdateRelationTypeRequestModel } from './models/UpdateRelationTypeRequestModel'; export type { UpdateTemplateRequestModel } from './models/UpdateTemplateRequestModel'; export type { UpdateUserGroupRequestModel } from './models/UpdateUserGroupRequestModel'; +export type { UpdateUserGroupsOnUserRequestModel } from './models/UpdateUserGroupsOnUserRequestModel'; +export type { UpdateUserRequestModel } from './models/UpdateUserRequestModel'; export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; -export type { UploadDictionaryResponseModel } from './models/UploadDictionaryResponseModel'; export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; export type { UserGroupPresentationModel } from './models/UserGroupPresentationModel'; export type { UserInstallResponseModel } from './models/UserInstallResponseModel'; +export { UserOrderModel } from './models/UserOrderModel'; +export type { UserPresentationBaseModel } from './models/UserPresentationBaseModel'; +export type { UserResponseModel } from './models/UserResponseModel'; export type { UserSettingsModel } from './models/UserSettingsModel'; +export { UserStateModel } from './models/UserStateModel'; export type { ValueModelBaseModel } from './models/ValueModelBaseModel'; export type { VariantModelBaseModel } from './models/VariantModelBaseModel'; export type { VariantResponseModelBaseModel } from './models/VariantResponseModelBaseModel'; @@ -237,6 +253,8 @@ export { StaticFileResource } from './services/StaticFileResource'; export { StylesheetResource } from './services/StylesheetResource'; export { TelemetryResource } from './services/TelemetryResource'; export { TemplateResource } from './services/TemplateResource'; +export { TemporaryFileResource } from './services/TemporaryFileResource'; export { TrackedReferenceResource } from './services/TrackedReferenceResource'; export { UpgradeResource } from './services/UpgradeResource'; export { UserGroupsResource } from './services/UserGroupsResource'; +export { UsersResource } from './services/UsersResource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts index 1e56192c01..92a6024151 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogBaseModel.ts @@ -5,11 +5,12 @@ import type { AuditTypeModel } from './AuditTypeModel'; export type AuditLogBaseModel = { - userKey?: string; - entityKey?: string | null; + userId?: string; + entityId?: string | null; timestamp?: string; logType?: AuditTypeModel; entityType?: string | null; comment?: string | null; parameters?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts index 150aed42b7..53aaafdb87 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogResponseModel.ts @@ -5,3 +5,4 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogResponseModel = AuditLogBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts index 3cc6f615f3..eb768a7c43 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/AuditLogWithUsernameResponseModel.ts @@ -5,6 +5,7 @@ import type { AuditLogBaseModel } from './AuditLogBaseModel'; export type AuditLogWithUsernameResponseModel = (AuditLogBaseModel & { -userName?: string | null; -userAvatars?: Array | null; + userName?: string | null; + userAvatars?: Array | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts new file mode 100644 index 0000000000..450bc06538 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ChangePasswordUserRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ChangePasswordUserRequestModel = { + newPassword?: string; + oldPassword?: string | null; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts index f8481a3c36..b9a1283ad5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ConsentLevelPresentationModel.ts @@ -8,3 +8,4 @@ export type ConsentLevelPresentationModel = { level?: TelemetryLevelModel; description?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts index ed77830467..7ad34d5e3e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts @@ -8,6 +8,7 @@ import type { DocumentVariantResponseModel } from './DocumentVariantResponseMode export type ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel = { values?: Array; variants?: Array; - key?: string; - contentTypeKey?: string; + id?: string; + contentTypeId?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts index d87dbd5e82..630fb6ae84 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTreeItemResponseModel.ts @@ -5,7 +5,8 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type ContentTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -noAccess?: boolean; -isTrashed?: boolean; + $type: string; + noAccess?: boolean; + isTrashed?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts index 6d5a4bdf54..7ea186e255 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCleanupModel.ts @@ -7,3 +7,4 @@ export type ContentTypeCleanupModel = { keepAllVersionsNewerThanDays?: number | null; keepLatestVersionPerDayForDays?: number | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts index 55cd2c0c03..d704a9fcf9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeCompositionModel.ts @@ -5,6 +5,7 @@ import type { ContentTypeCompositionTypeModel } from './ContentTypeCompositionTypeModel'; export type ContentTypeCompositionModel = { - key?: string; + id?: string; compositionType?: ContentTypeCompositionTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts index 34a78a67b9..8427bc56c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel.ts @@ -8,7 +8,7 @@ import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentT import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel = { - key?: string; + id?: string; alias?: string; name?: string; description?: string | null; @@ -22,3 +22,4 @@ export type ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDoc allowedContentTypes?: Array; compositions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts index 0cae4423f3..c8285cef7b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel.ts @@ -8,7 +8,7 @@ import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePro import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel = { - key?: string; + id?: string; alias?: string; name?: string; description?: string | null; @@ -22,3 +22,4 @@ export type ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaT allowedContentTypes?: Array; compositions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts index bf4f78b7d6..02c537079a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentTypeSortModel.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type ContentTypeSortModel = { - key?: string; + id?: string; sortOrder?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts index 0afeb120d3..aabc5314c5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ContentUrlInfoModel.ts @@ -6,3 +6,4 @@ export type ContentUrlInfoModel = { culture?: string | null; url?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts index d15502deef..eb76506716 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CopyDataTypeRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type CopyDataTypeRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts index 6e7608eca4..bb5147ecc2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -8,5 +8,6 @@ import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel' export type CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel = { values?: Array; variants?: Array; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts index a8ecb5c7bb..3a0e270428 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -8,5 +8,6 @@ import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; export type CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel = { values?: Array; variants?: Array; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts index df4380d8ad..a3b6c50157 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDataTypeRequestModel.ts @@ -5,5 +5,7 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type CreateDataTypeRequestModel = (DataTypeModelBaseModel & { -parentKey?: string | null; + id?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts index fb32c43da5..95b723fb43 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDictionaryItemRequestModel.ts @@ -5,5 +5,6 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type CreateDictionaryItemRequestModel = (DictionaryItemModelBaseModel & { -parentKey?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts index a789b2c4fa..645d204832 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateDocumentRequestModel.ts @@ -5,6 +5,7 @@ import type { CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type CreateDocumentRequestModel = (CreateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { -contentTypeKey?: string; -templateKey?: string | null; + contentTypeId?: string; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts index 6f23857001..e4af10670e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateFolderRequestModel.ts @@ -5,5 +5,7 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type CreateFolderRequestModel = (FolderModelBaseModel & { -parentKey?: string | null; + id?: string | null; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts index 4eed24634f..16326ad62f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateLanguageRequestModel.ts @@ -5,5 +5,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type CreateLanguageRequestModel = (LanguageModelBaseModel & { -isoCode?: string; + isoCode?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts index bf4333b9da..723fe2ecfc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateMediaRequestModel.ts @@ -5,5 +5,6 @@ import type { CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type CreateMediaRequestModel = (CreateContentRequestModelBaseMediaValueModelMediaVariantRequestModel & { -contentTypeKey?: string; + contentTypeId?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts index 2cfedb1c03..a88367acca 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreatePackageRequestModel.ts @@ -5,3 +5,4 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type CreatePackageRequestModel = PackageModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts index de6232ee5c..fb75ae7736 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateRelationTypeRequestModel.ts @@ -5,5 +5,6 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type CreateRelationTypeRequestModel = (RelationTypeBaseModel & { -key?: string | null; + id?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts index e2d8afb847..e5aa227ac5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateTemplateRequestModel.ts @@ -5,3 +5,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type CreateTemplateRequestModel = TemplateModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts new file mode 100644 index 0000000000..0166c949fa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; + +export type CreateUserRequestModel = UserPresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts new file mode 100644 index 0000000000..0d3678436e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CreateUserResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type CreateUserResponseModel = { + userId?: string; + initialPassword?: string | null; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts index 3b17cfc739..cf18c8883e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/CultureReponseModel.ts @@ -6,3 +6,4 @@ export type CultureReponseModel = { name?: string; englishName?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts index 9c8b59ed42..c7fa61f661 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeModelBaseModel.ts @@ -10,3 +10,4 @@ export type DataTypeModelBaseModel = { propertyEditorUiAlias?: string | null; values?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts index 10ca3bc30c..30bcddd9a3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyPresentationModel.ts @@ -6,3 +6,4 @@ export type DataTypePropertyPresentationModel = { alias?: string; value?: any; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts index d78ee8d9f8..f891dd3af0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypePropertyReferenceModel.ts @@ -6,3 +6,4 @@ export type DataTypePropertyReferenceModel = { name?: string; alias?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts index 4586e124d8..9855622b89 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeReferenceResponseModel.ts @@ -5,7 +5,8 @@ import type { DataTypePropertyReferenceModel } from './DataTypePropertyReferenceModel'; export type DataTypeReferenceResponseModel = { - key?: string; + id?: string; type?: string; properties?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts index ab8d3cef09..5fa2a1085c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts @@ -5,7 +5,8 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type DataTypeResponseModel = (DataTypeModelBaseModel & { -$type: string; -key?: string; -parentKey?: string | null; + $type: string; + id?: string; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts index 48dac68577..233df53325 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseInstallResponseModel.ts @@ -12,3 +12,4 @@ export type DatabaseInstallResponseModel = { useIntegratedAuthentication?: boolean; connectionString?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts index ed0057f69f..8046700e30 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DatabaseSettingsPresentationModel.ts @@ -15,3 +15,4 @@ export type DatabaseSettingsPresentationModel = { supportsIntegratedAuthentication?: boolean; requiresConnectionTest?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts index 1ffac7af64..cd1a89d95a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemModelBaseModel.ts @@ -8,3 +8,4 @@ export type DictionaryItemModelBaseModel = { name?: string; translations?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts index b691fd7c96..f5da8949f1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemResponseModel.ts @@ -5,6 +5,7 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type DictionaryItemResponseModel = (DictionaryItemModelBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts index 37e5189a01..9bc10a302f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemTranslationModel.ts @@ -6,3 +6,4 @@ export type DictionaryItemTranslationModel = { isoCode?: string; translation?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts index f0744047dc..abc3190425 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryOverviewResponseModel.ts @@ -4,7 +4,8 @@ export type DictionaryOverviewResponseModel = { name?: string | null; - key?: string; - parentKey?: string | null; + id?: string; + parentId?: string | null; translatedIsoCodes?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts new file mode 100644 index 0000000000..1074d06b75 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DisableUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DisableUserRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts index 6821ca9675..0dc6c99953 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type DocumentBlueprintTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -documentTypeKey?: string; -documentTypeAlias?: string; -documentTypeName?: string | null; + $type: string; + documentTypeId?: string; + documentTypeAlias?: string; + documentTypeName?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts new file mode 100644 index 0000000000..e898c96eda --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentNotificationResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type DocumentNotificationResponseModel = { + actionId?: string; + subscribed?: boolean; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts index af1dbfa151..ce053d9297 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentResponseModel.ts @@ -6,6 +6,7 @@ import type { ContentResponseModelBaseDocumentValueModelDocumentVariantResponseM import type { ContentUrlInfoModel } from './ContentUrlInfoModel'; export type DocumentResponseModel = (ContentResponseModelBaseDocumentValueModelDocumentVariantResponseModel & { -urls?: Array; -templateKey?: string | null; + urls?: Array; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts index 2f49967d81..d9d187c704 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; export type DocumentTreeItemResponseModel = (ContentTreeItemResponseModel & { -$type: string; -isProtected?: boolean; -isPublished?: boolean; -isEdited?: boolean; + $type: string; + isProtected?: boolean; + isPublished?: boolean; + isEdited?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts index 0aa23dce56..83aa9e6459 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; export type DocumentTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts index 2cd2e32d6e..c74873bb1b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; export type DocumentTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts index 7e0adcb071..8712b46d1f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeResponseModel.ts @@ -6,7 +6,8 @@ import type { ContentTypeCleanupModel } from './ContentTypeCleanupModel'; import type { ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel'; export type DocumentTypeResponseModel = (ContentTypeResponseModelBaseDocumentTypePropertyTypeResponseModelDocumentTypePropertyTypeContainerResponseModel & { -allowedTemplateKeys?: Array; -defaultTemplateKey?: string | null; -cleanup?: ContentTypeCleanupModel; + allowedTemplateIds?: Array; + defaultTemplateId?: string | null; + cleanup?: ContentTypeCleanupModel; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts index f6737ab3af..d211b01020 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts @@ -5,6 +5,7 @@ import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; export type DocumentTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { -$type: string; -isElement?: boolean; + $type: string; + isElement?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts index 3f856dc060..497bb7255a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentValueModel.ts @@ -5,5 +5,6 @@ import type { ValueModelBaseModel } from './ValueModelBaseModel'; export type DocumentValueModel = (ValueModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts index a362a5d53c..8377863391 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantRequestModel.ts @@ -5,5 +5,6 @@ import type { VariantModelBaseModel } from './VariantModelBaseModel'; export type DocumentVariantRequestModel = (VariantModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts index 1ec48739e2..2c19f50dd9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentVariantResponseModel.ts @@ -6,7 +6,8 @@ import type { ContentStateModel } from './ContentStateModel'; import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; export type DocumentVariantResponseModel = (VariantResponseModelBaseModel & { -$type: string; -state?: ContentStateModel; -publishDate?: string | null; + $type: string; + state?: ContentStateModel; + publishDate?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts index 05f340dbb8..237c3037f4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainPresentationModel.ts @@ -6,3 +6,4 @@ export type DomainPresentationModel = { domainName?: string; isoCode?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts index 0109e12809..597b473ad7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsPresentationModelBaseModel.ts @@ -8,3 +8,4 @@ export type DomainsPresentationModelBaseModel = { defaultIsoCode?: string | null; domains?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts index 4ef04f4c24..aeec02fb3d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DomainsResponseModel.ts @@ -5,3 +5,4 @@ import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; export type DomainsResponseModel = DomainsPresentationModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts new file mode 100644 index 0000000000..6230b2469f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EnableUserRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type EnableUserRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts index 7efeefad1e..6cff369186 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/EntityTreeItemResponseModel.ts @@ -5,8 +5,9 @@ import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; export type EntityTreeItemResponseModel = (TreeItemPresentationModel & { -$type: string; -key?: string; -isContainer?: boolean; -parentKey?: string | null; + $type: string; + id?: string; + isContainer?: boolean; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts index 14255377d9..73dd10d3b0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FieldPresentationModel.ts @@ -6,3 +6,4 @@ export type FieldPresentationModel = { name?: string; values?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts index 98c014b13c..9b82bc2e4a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileSystemTreeItemPresentationModel.ts @@ -5,6 +5,7 @@ import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; export type FileSystemTreeItemPresentationModel = (TreeItemPresentationModel & { -path?: string; -isFolder?: boolean; + path?: string; + isFolder?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts index f4fa285d6a..bb5a9dab5b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderModelBaseModel.ts @@ -5,3 +5,4 @@ export type FolderModelBaseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts index c3606779e5..dede400904 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderReponseModel.ts @@ -5,7 +5,8 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type FolderReponseModel = (FolderModelBaseModel & { -$type: string; -key?: string; -parentKey?: string | null; + $type: string; + id?: string; + parentId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts index 25c0f50fd2..207186fdc1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FolderTreeItemResponseModel.ts @@ -5,6 +5,7 @@ import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; export type FolderTreeItemResponseModel = (EntityTreeItemResponseModel & { -$type: string; -isFolder?: boolean; + $type: string; + isFolder?: boolean; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts index 0a64ed3f60..05f50ef3c6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckActionRequestModel.ts @@ -3,7 +3,7 @@ /* eslint-disable */ export type HealthCheckActionRequestModel = { - healthCheckKey?: string; + healthCheckId?: string; alias?: string | null; name?: string | null; description?: string | null; @@ -12,3 +12,4 @@ export type HealthCheckActionRequestModel = { providedValueValidation?: string | null; providedValueValidationRegex?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts index fbc62be4ff..22073b3a22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts @@ -5,3 +5,4 @@ export type HealthCheckGroupPresentationBaseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts index dfdf778e12..8029327431 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupPresentationModel.ts @@ -6,5 +6,6 @@ import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPr import type { HealthCheckModel } from './HealthCheckModel'; export type HealthCheckGroupPresentationModel = (HealthCheckGroupPresentationBaseModel & { -checks?: Array; + checks?: Array; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts index 5a038bd74e..46704d9f25 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupResponseModel.ts @@ -5,3 +5,4 @@ import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; export type HealthCheckGroupResponseModel = HealthCheckGroupPresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts index 45f3b948df..e3a7841939 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckGroupWithResultResponseModel.ts @@ -7,3 +7,4 @@ import type { HealthCheckWithResultPresentationModel } from './HealthCheckWithRe export type HealthCheckGroupWithResultResponseModel = { checks?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts index 56ca3e0121..9a85add96d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModel.ts @@ -5,6 +5,7 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; export type HealthCheckModel = (HealthCheckModelBaseModel & { -name?: string; -description?: string | null; + name?: string; + description?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts index 55f41c4618..0cee4aca31 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckModelBaseModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type HealthCheckModelBaseModel = { - key?: string; + id?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts index d5a99706b5..c0c237a43c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckResultResponseModel.ts @@ -11,3 +11,4 @@ export type HealthCheckResultResponseModel = { actions?: Array | null; readMoreLink?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts index 12929e62f8..5028107875 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HealthCheckWithResultPresentationModel.ts @@ -6,5 +6,6 @@ import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; export type HealthCheckWithResultPresentationModel = (HealthCheckModelBaseModel & { -results?: Array | null; + results?: Array | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts index 43a41c82c6..a3cb83ead7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/HelpPageResponseModel.ts @@ -8,3 +8,4 @@ export type HelpPageResponseModel = { url?: string | null; type?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts deleted file mode 100644 index ae77e85dbc..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryItemsPresentationModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ImportDictionaryItemsPresentationModel = { - key?: string; - name?: string | null; - parentKey?: string | null; -}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts index f08dd2599a..4e29abf47a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ImportDictionaryRequestModel.ts @@ -3,6 +3,7 @@ /* eslint-disable */ export type ImportDictionaryRequestModel = { - fileName?: string; - parentKey?: string | null; + temporaryFileId?: string; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts index befb90a467..68c87f9aa0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/IndexResponseModel.ts @@ -13,3 +13,4 @@ export type IndexResponseModel = { fieldCount: number; providerProperties?: Record | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts index 2b432cb901..100bb5b12f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallSettingsResponseModel.ts @@ -9,3 +9,4 @@ export type InstallSettingsResponseModel = { user?: UserSettingsModel; databases?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts index 0754a817a4..ada168bb74 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InstallVResponseModel.ts @@ -11,3 +11,4 @@ export type InstallVResponseModel = { database: DatabaseInstallResponseModel; telemetryLevel?: TelemetryLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts new file mode 100644 index 0000000000..e0e7e9ad62 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/InviteUserRequestModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CreateUserRequestModel } from './CreateUserRequestModel'; + +export type InviteUserRequestModel = (CreateUserRequestModel & { + message?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts index b7dd8054d4..eaff3e8d4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageModelBaseModel.ts @@ -8,3 +8,4 @@ export type LanguageModelBaseModel = { isMandatory?: boolean; fallbackIsoCode?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts index 77993ea4ae..5d17bf3842 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageResponseModel.ts @@ -5,5 +5,6 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type LanguageResponseModel = (LanguageModelBaseModel & { -isoCode?: string; + isoCode?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index 8a423396d7..d8e5543810 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -3,9 +3,9 @@ /* eslint-disable */ export type LogLevelCountsReponseModel = { - information?: number; - debug?: number; - warning?: number; - error?: number; - fatal?: number; + information?: number; + debug?: number; + warning?: number; + error?: number; + fatal?: number; }; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts index 51a22a6a2b..dd9be7aa49 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessagePropertyPresentationModel.ts @@ -6,3 +6,4 @@ export type LogMessagePropertyPresentationModel = { name?: string; value?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts index 38e9321909..ad67dd8483 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogMessageResponseModel.ts @@ -13,3 +13,4 @@ export type LogMessageResponseModel = { properties?: Array; exception?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts index 2731cd2df8..1aeece3a0a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogTemplateResponseModel.ts @@ -6,3 +6,4 @@ export type LogTemplateResponseModel = { messageTemplate?: string | null; count?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts index 6615168857..552470c462 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LoggerResponseModel.ts @@ -8,3 +8,4 @@ export type LoggerResponseModel = { name?: string; level?: LogLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts index dea0899aee..f8a0b7ba60 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeContainerResponseModelBaseModel } from './PropertyTypeContainerResponseModelBaseModel'; export type MediaTypePropertyTypeContainerResponseModel = PropertyTypeContainerResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts index 30de030f1a..a4d992c86a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { PropertyTypeResponseModelBaseModel } from './PropertyTypeResponseModelBaseModel'; export type MediaTypePropertyTypeResponseModel = PropertyTypeResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts index ba0ca6251c..71d255850e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeResponseModel.ts @@ -5,3 +5,4 @@ import type { ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel } from './ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel'; export type MediaTypeResponseModel = ContentTypeResponseModelBaseMediaTypePropertyTypeResponseModelMediaTypePropertyTypeContainerResponseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts index 3df317dfed..a8ba985e23 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaValueModel.ts @@ -5,5 +5,6 @@ import type { ValueModelBaseModel } from './ValueModelBaseModel'; export type MediaValueModel = (ValueModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts index 49b8b7b4e6..66baded663 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantRequestModel.ts @@ -5,5 +5,6 @@ import type { VariantModelBaseModel } from './VariantModelBaseModel'; export type MediaVariantRequestModel = (VariantModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts index b76e970304..739ae9bd33 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaVariantResponseModel.ts @@ -5,5 +5,6 @@ import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; export type MediaVariantResponseModel = (VariantResponseModelBaseModel & { -$type: string; + $type: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts index cb7477ebdf..5f9962c2fa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ModelsBuilderResponseModel.ts @@ -13,3 +13,4 @@ export type ModelsBuilderResponseModel = { modelsNamespace?: string | null; trackingOutOfDateModels?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts index 2470cac98c..3e318c9479 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDataTypeRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type MoveDataTypeRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts index 742605cfcc..0973241bc6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MoveDictionaryRequestModel.ts @@ -3,5 +3,6 @@ /* eslint-disable */ export type MoveDictionaryRequestModel = { - targetKey?: string | null; + targetId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts index 4b5b44cb19..d160dfceb5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ObjectTypeResponseModel.ts @@ -6,3 +6,4 @@ export type ObjectTypeResponseModel = { name?: string | null; id?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts index 0b041f81ee..886e643b17 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OkResultModel.ts @@ -5,3 +5,4 @@ export type OkResultModel = { statusCode?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts index 3525c5b9a3..6d527b9a78 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/OutOfDateStatusResponseModel.ts @@ -7,3 +7,4 @@ import type { OutOfDateTypeModel } from './OutOfDateTypeModel'; export type OutOfDateStatusResponseModel = { status?: OutOfDateTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts index 1e40334b1d..d86f8ba651 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageDefinitionResponseModel.ts @@ -5,6 +5,7 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type PackageDefinitionResponseModel = (PackageModelBaseModel & { -key?: string; -packagePath?: string; + id?: string; + packagePath?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts index 1ac843ab9b..269793340b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageManifestResponseModel.ts @@ -7,3 +7,4 @@ export type PackageManifestResponseModel = { version?: string | null; extensions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts index f2aa442a61..d003e467e2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PackageMigrationStatusResponseModel.ts @@ -6,3 +6,4 @@ export type PackageMigrationStatusResponseModel = { 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 index 4ccfb1eacf..fa68538ec2 100644 --- 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 @@ -6,7 +6,7 @@ export type PackageModelBaseModel = { name?: string; contentNodeId?: string | null; contentLoadChildNodes?: boolean; - mediaKeys?: Array; + mediaIds?: Array; mediaLoadChildNodes?: boolean; documentTypes?: Array; mediaTypes?: Array; @@ -18,3 +18,4 @@ export type PackageModelBaseModel = { languages?: Array; dictionaryItems?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts index 4d8cbdd238..28e4883e9d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogResponseModel.ts @@ -8,3 +8,4 @@ export type PagedAuditLogResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts index 32531185f4..2faa8a352c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedAuditLogWithUsernameResponseModel.ts @@ -8,3 +8,4 @@ export type PagedAuditLogWithUsernameResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts index baa7dc3c36..9b01050dc0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedContentTreeItemResponseModel.ts @@ -9,3 +9,4 @@ export type PagedContentTreeItemResponseModel = { total: number; items: Array<(ContentTreeItemResponseModel | DocumentTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts index 266daa8cd2..b75368444a 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedCultureReponseModel.ts @@ -8,3 +8,4 @@ export type PagedCultureReponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts index 990d186c40..416064523d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDictionaryOverviewResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDictionaryOverviewResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts index 8dc4a5165e..f5fb88fbf5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentBlueprintTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentBlueprintTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts index d8dd2f0fc6..3364678fac 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts index ba0f93c358..cfa8e9eb1d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedDocumentTypeTreeItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedDocumentTypeTreeItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts index 9df2b4b601..ac8b646854 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedEntityTreeItemResponseModel.ts @@ -13,3 +13,4 @@ export type PagedEntityTreeItemResponseModel = { total: number; items: Array<(EntityTreeItemResponseModel | ContentTreeItemResponseModel | DocumentBlueprintTreeItemResponseModel | DocumentTreeItemResponseModel | DocumentTypeTreeItemResponseModel | FolderTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts index be96ca744e..3297c3ab40 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFileSystemTreeItemPresentationModel.ts @@ -8,3 +8,4 @@ export type PagedFileSystemTreeItemPresentationModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts index 3543ba5636..deafb5c398 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedFolderTreeItemResponseModel.ts @@ -9,3 +9,4 @@ export type PagedFolderTreeItemResponseModel = { total: number; items: Array<(FolderTreeItemResponseModel | DocumentTypeTreeItemResponseModel)>; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts index 8bcb42c1d8..bcd0a47ba7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHealthCheckGroupResponseModel.ts @@ -8,3 +8,4 @@ export type PagedHealthCheckGroupResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts index fb379bf641..963dcbbc72 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedHelpPageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedHelpPageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts index a84e061c7c..7798b6b5a2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedIndexResponseModel.ts @@ -8,3 +8,4 @@ export type PagedIndexResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts index d749a241cb..0fba24b689 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLanguageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLanguageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts index 88457e9701..0a9e2324f3 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogMessageResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLogMessageResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts index 801c440db4..0118ef7d9b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLogTemplateResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLogTemplateResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts index 273205e323..18d7c7d708 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedLoggerResponseModel.ts @@ -8,3 +8,4 @@ export type PagedLoggerResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts index e72657d180..c8eaf672f7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedObjectTypeResponseModel.ts @@ -8,3 +8,4 @@ export type PagedObjectTypeResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts index 8582af874a..af37046ae9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageDefinitionResponseModel.ts @@ -8,3 +8,4 @@ export type PagedPackageDefinitionResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts index 114244e919..759633f03b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedPackageMigrationStatusResponseModel.ts @@ -8,3 +8,4 @@ export type PagedPackageMigrationStatusResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts index 4077e2d0d5..de0221c66d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRecycleBinItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRecycleBinItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts index 3026d71af4..efa56add27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRedirectUrlResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRedirectUrlResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts index 4ad8badc22..2340e59dbc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationItemResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRelationItemResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts index 5a4d95e4c1..a93d16ea07 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedRelationResponseModel.ts @@ -8,3 +8,4 @@ export type PagedRelationResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts index 6f5b02d4f3..994d6a2f99 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSavedLogSearchResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSavedLogSearchResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts index 2a95a2d85b..faaad892f6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearchResultResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSearchResultResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts index b8c9c60dab..f59af076ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedSearcherResponseModel.ts @@ -8,3 +8,4 @@ export type PagedSearcherResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts index 6a8ddbabfd..dfff74e1ff 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedTelemetryResponseModel.ts @@ -8,3 +8,4 @@ export type PagedTelemetryResponseModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts index 8a01377edf..7000915e7e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserGroupPresentationModel.ts @@ -8,3 +8,4 @@ export type PagedUserGroupPresentationModel = { total: number; items: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts new file mode 100644 index 0000000000..0b658bd8df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PagedUserResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserResponseModel } from './UserResponseModel'; + +export type PagedUserResponseModel = { + total: number; + items: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts index cc933cc8d4..c1998e149e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusRequestModel.ts @@ -5,3 +5,4 @@ export type ProfilingStatusRequestModel = { enabled?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts index 98b69d1149..b78df9baf7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ProfilingStatusResponseModel.ts @@ -5,3 +5,4 @@ export type ProfilingStatusResponseModel = { enabled?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts index cdbf7325af..e8138d4992 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeAppearanceModel.ts @@ -5,3 +5,4 @@ export type PropertyTypeAppearanceModel = { labelOnTop?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts index 44c151e3a4..e57942bc53 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeContainerResponseModelBaseModel.ts @@ -3,9 +3,10 @@ /* eslint-disable */ export type PropertyTypeContainerResponseModelBaseModel = { - key?: string; - parentKey?: string | null; + id?: string; + parentId?: string | null; name?: string | null; type?: string; sortOrder?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts index 57f4f6c6dd..ad3a59bbbf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeResponseModelBaseModel.ts @@ -6,14 +6,15 @@ import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel' import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; export type PropertyTypeResponseModelBaseModel = { - key?: string; - containerKey?: string | null; + id?: string; + containerId?: string | null; alias?: string; name?: string; description?: string | null; - dataTypeKey?: string; + dataTypeId?: string; variesByCulture?: boolean; variesBySegment?: boolean; validation?: PropertyTypeValidationModel; appearance?: PropertyTypeAppearanceModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts index efdc5b51ec..6966054e27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PropertyTypeValidationModel.ts @@ -8,3 +8,4 @@ export type PropertyTypeValidationModel = { regEx?: string | null; regExMessage?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts index 203b715fb4..baa8488713 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RecycleBinItemResponseModel.ts @@ -4,11 +4,12 @@ export type RecycleBinItemResponseModel = { $type: string; - key?: string; + id?: string; name?: string; type?: string; icon?: string; hasChildren?: boolean; isContainer?: boolean; - parentKey?: string | null; + parentId?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts index d2c743ba79..7e50854125 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlResponseModel.ts @@ -3,10 +3,11 @@ /* eslint-disable */ export type RedirectUrlResponseModel = { - key?: string; + id?: string; originalUrl?: string; destinationUrl?: string; created?: string; - contentKey?: string; + contentId?: string; culture?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts index 6ef9f24316..3c24019ae5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RedirectUrlStatusResponseModel.ts @@ -8,3 +8,4 @@ export type RedirectUrlStatusResponseModel = { status?: RedirectStatusModel; userIsAdmin?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts index 2b261d21d2..544ea5831d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationItemResponseModel.ts @@ -3,7 +3,7 @@ /* eslint-disable */ export type RelationItemResponseModel = { - nodeKey?: string; + nodeId?: string; nodeName?: string | null; nodeType?: string | null; nodePublished?: boolean | null; @@ -14,3 +14,4 @@ export type RelationItemResponseModel = { relationTypeIsBidirectional?: boolean; relationTypeIsDependency?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts index 4fe5555e69..7e6546465f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationResponseModel.ts @@ -10,3 +10,4 @@ export type RelationResponseModel = { createDate?: string; comment?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts index e7de6f1945..0213197525 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeBaseModel.ts @@ -9,3 +9,4 @@ export type RelationTypeBaseModel = { childObjectType?: string | null; isDependency?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts index dab718bbf1..cc2461d0ce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeResponseModel.ts @@ -5,10 +5,11 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type RelationTypeResponseModel = (RelationTypeBaseModel & { -key?: string; -alias?: string | null; -path?: string; -isSystemRelationType?: boolean; -parentObjectTypeName?: string | null; -childObjectTypeName?: string | null; + id?: string; + alias?: string | null; + path?: string; + isSystemRelationType?: boolean; + parentObjectTypeName?: string | null; + childObjectTypeName?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts index 14466b644d..33d58dc4aa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SaveUserGroupRequestModel.ts @@ -5,3 +5,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type SaveUserGroupRequestModel = UserGroupBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts index 2cc7b02658..c187d78876 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts @@ -6,3 +6,4 @@ export type SavedLogSearchPresenationBaseModel = { name?: string; query?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts index e2e7aecf61..3ef1732e4e 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchRequestModel.ts @@ -5,3 +5,4 @@ import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; export type SavedLogSearchRequestModel = SavedLogSearchPresenationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts index 1a89ce91c6..54f039e1b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SavedLogSearchResponseModel.ts @@ -5,3 +5,4 @@ import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; export type SavedLogSearchResponseModel = SavedLogSearchPresenationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts index 9706011ad7..3d84badc22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearchResultResponseModel.ts @@ -10,3 +10,4 @@ export type SearchResultResponseModel = { readonly fieldCount?: number; fields?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts index 898a4172a8..bf0ec4ed22 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SearcherResponseModel.ts @@ -5,3 +5,4 @@ export type SearcherResponseModel = { name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts index 5ba10b5849..a93b8e36ac 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ServerStatusResponseModel.ts @@ -7,3 +7,4 @@ import type { RuntimeLevelModel } from './RuntimeLevelModel'; export type ServerStatusResponseModel = { serverStatus?: RuntimeLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts new file mode 100644 index 0000000000..ccf61568d0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/SetAvatarRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type SetAvatarRequestModel = { + fileId?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts index 1734020f3e..e1040f19bb 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRepresentationBaseModel.ts @@ -7,3 +7,4 @@ import type { TelemetryLevelModel } from './TelemetryLevelModel'; export type TelemetryRepresentationBaseModel = { telemetryLevel?: TelemetryLevelModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts index 08f54adf7c..ed7ed14981 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryRequestModel.ts @@ -5,3 +5,4 @@ import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; export type TelemetryRequestModel = TelemetryRepresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts index 3ddf37ec02..2ab7ab6087 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TelemetryResponseModel.ts @@ -5,3 +5,4 @@ import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; export type TelemetryResponseModel = TelemetryRepresentationBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts index 11e0260809..7471d8b826 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateModelBaseModel.ts @@ -7,3 +7,4 @@ export type TemplateModelBaseModel = { alias?: string; content?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts index 83a2625447..336c8dcc51 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteFilterPresentationModel.ts @@ -9,3 +9,4 @@ export type TemplateQueryExecuteFilterPresentationModel = { constraintValue?: string; operator?: OperatorModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts index 29ad0c52ae..a1711fce8f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteModel.ts @@ -6,9 +6,10 @@ import type { TemplateQueryExecuteFilterPresentationModel } from './TemplateQuer import type { TemplateQueryExecuteSortModel } from './TemplateQueryExecuteSortModel'; export type TemplateQueryExecuteModel = { - rootContentKey?: string | null; + rootContentId?: string | null; contentTypeAlias?: string | null; filters?: Array | null; sort?: TemplateQueryExecuteSortModel | null; take?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts index a733632dcc..d3a1b6cf56 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryExecuteSortModel.ts @@ -6,3 +6,4 @@ export type TemplateQueryExecuteSortModel = { propertyAlias?: string; direction?: string | null; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts index df264e1646..5b24f440a5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryOperatorModel.ts @@ -9,3 +9,4 @@ export type TemplateQueryOperatorModel = { operator?: OperatorModel; applicableTypes?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts index dfd201f49e..63f89b6fbd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryPropertyPresentationModel.ts @@ -8,3 +8,4 @@ export type TemplateQueryPropertyPresentationModel = { alias?: string; type?: TemplateQueryPropertyTypeModel; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts index a2082853e0..101a71f87f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultItemPresentationModel.ts @@ -6,3 +6,4 @@ export type TemplateQueryResultItemPresentationModel = { icon?: string; name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts index c32ff1d249..128ba29cd6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQueryResultResponseModel.ts @@ -10,3 +10,4 @@ export type TemplateQueryResultResponseModel = { resultCount?: number; executionTime?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts index b49bbae056..724e4113eb 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateQuerySettingsResponseModel.ts @@ -10,3 +10,4 @@ export type TemplateQuerySettingsResponseModel = { properties?: Array; operators?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts index 1044f35131..4163616f8f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateResponseModel.ts @@ -5,6 +5,7 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type TemplateResponseModel = (TemplateModelBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts index d616c8c655..78ea2b296d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateScaffoldResponseModel.ts @@ -5,3 +5,4 @@ export type TemplateScaffoldResponseModel = { content?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts new file mode 100644 index 0000000000..117d1376ea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemporaryFileResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type TemporaryFileResponseModel = { + id?: string; + availableUntil?: string | null; + fileName?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts index e62a6043a5..385278eba9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TreeItemPresentationModel.ts @@ -8,3 +8,4 @@ export type TreeItemPresentationModel = { icon?: string; hasChildren?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts new file mode 100644 index 0000000000..78c63357bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UnlockUsersRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UnlockUsersRequestModel = { + userIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts index c2d856a916..be30b01b27 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel.ts @@ -9,3 +9,4 @@ export type UpdateContentRequestModelBaseDocumentValueModelDocumentVariantReques values?: Array; variants?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts index 5c95019eb1..303415adef 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel.ts @@ -9,3 +9,4 @@ export type UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel values?: Array; variants?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts index fce11fbc4e..b221f60b1f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDataTypeRequestModel.ts @@ -5,3 +5,4 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; export type UpdateDataTypeRequestModel = DataTypeModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts index 2c4af9822a..e145ccd319 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDictionaryItemRequestModel.ts @@ -5,3 +5,4 @@ import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; export type UpdateDictionaryItemRequestModel = DictionaryItemModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts new file mode 100644 index 0000000000..37066167b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentNotificationsRequestModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UpdateDocumentNotificationsRequestModel = { + subscribedActionIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts index 2b10730abb..6382ef989d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDocumentRequestModel.ts @@ -5,5 +5,6 @@ import type { UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel } from './UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel'; export type UpdateDocumentRequestModel = (UpdateContentRequestModelBaseDocumentValueModelDocumentVariantRequestModel & { -templateKey?: string | null; + templateId?: string | null; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts index 06caa5c458..a2cb1b6fe4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateDomainsRequestModel.ts @@ -5,3 +5,4 @@ import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; export type UpdateDomainsRequestModel = DomainsPresentationModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts index 1644854933..cc79576144 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateFolderReponseModel.ts @@ -5,3 +5,4 @@ import type { FolderModelBaseModel } from './FolderModelBaseModel'; export type UpdateFolderReponseModel = FolderModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts index 45f9f1a76c..dd2e81b5f5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateLanguageRequestModel.ts @@ -5,3 +5,4 @@ import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; export type UpdateLanguageRequestModel = LanguageModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts index 8363477f55..3214fd055c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateMediaRequestModel.ts @@ -5,3 +5,4 @@ import type { UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel } from './UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel'; export type UpdateMediaRequestModel = UpdateContentRequestModelBaseMediaValueModelMediaVariantRequestModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts index ab91b916f3..95e1518519 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdatePackageRequestModel.ts @@ -5,5 +5,6 @@ import type { PackageModelBaseModel } from './PackageModelBaseModel'; export type UpdatePackageRequestModel = (PackageModelBaseModel & { -packagePath?: string; + packagePath?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts index df64f4fb41..d4ec475f57 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateRelationTypeRequestModel.ts @@ -5,3 +5,4 @@ import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; export type UpdateRelationTypeRequestModel = RelationTypeBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts index a95046e2f9..6011f0a108 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateTemplateRequestModel.ts @@ -5,3 +5,4 @@ import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; export type UpdateTemplateRequestModel = TemplateModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts index 7e357408c1..f1810a85c5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupRequestModel.ts @@ -5,3 +5,4 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type UpdateUserGroupRequestModel = UserGroupBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts new file mode 100644 index 0000000000..0e552a780b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserGroupsOnUserRequestModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UpdateUserGroupsOnUserRequestModel = { + userIds?: Array; + userGroupIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts new file mode 100644 index 0000000000..928742c00d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpdateUserRequestModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; + +export type UpdateUserRequestModel = (UserPresentationBaseModel & { + languageIsoCode?: string; + contentStartNodeIds?: Array; + mediaStartNodeIds?: Array; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts index 8331fa652a..c59279f453 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UpgradeSettingsResponseModel.ts @@ -9,3 +9,4 @@ export type UpgradeSettingsResponseModel = { oldVersion?: string; readonly reportUrl?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts deleted file mode 100644 index 3394ac66c7..0000000000 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UploadDictionaryResponseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ImportDictionaryItemsPresentationModel } from './ImportDictionaryItemsPresentationModel'; - -export type UploadDictionaryResponseModel = { - dictionaryItems?: Array; - fileName?: string | null; -}; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts index 5da0876910..eaf8e83aa0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupBaseModel.ts @@ -8,7 +8,8 @@ export type UserGroupBaseModel = { sections?: Array; languages?: Array; hasAccessToAllLanguages?: boolean; - documentStartNodeKey?: string | null; - mediaStartNodeKey?: string | null; + documentStartNodeId?: string | null; + mediaStartNodeId?: string | null; permissions?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts index e812fc9384..ee3a34c477 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserGroupPresentationModel.ts @@ -5,6 +5,7 @@ import type { UserGroupBaseModel } from './UserGroupBaseModel'; export type UserGroupPresentationModel = (UserGroupBaseModel & { -$type: string; -key?: string; + $type: string; + id?: string; }); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts index c107963227..a1807e8bcd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserInstallResponseModel.ts @@ -8,3 +8,4 @@ export type UserInstallResponseModel = { password: string; readonly subscribeToNewsletter?: boolean; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts new file mode 100644 index 0000000000..3c668a8c97 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserOrderModel.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum UserOrderModel { + USER_NAME = 'UserName', + LANGUAGE = 'Language', + NAME = 'Name', + EMAIL = 'Email', + ID = 'Id', + CREATE_DATE = 'CreateDate', + UPDATE_DATE = 'UpdateDate', + IS_APPROVED = 'IsApproved', + IS_LOCKED_OUT = 'IsLockedOut', + LAST_LOGIN_DATE = 'LastLoginDate', +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts new file mode 100644 index 0000000000..687e34bde7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserPresentationBaseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type UserPresentationBaseModel = { + email?: string; + userName?: string; + name?: string; + userGroupIds?: Array; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts new file mode 100644 index 0000000000..69fabaf972 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserResponseModel.ts @@ -0,0 +1,23 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; +import type { UserStateModel } from './UserStateModel'; + +export type UserResponseModel = (UserPresentationBaseModel & { + $type: string; + id?: string; + languageIsoCode?: string | null; + contentStartNodeIds?: Array; + mediaStartNodeIds?: Array; + avatarUrls?: Array; + state?: UserStateModel; + failedLoginAttempts?: number; + createDate?: string; + updateDate?: string; + lastLoginDate?: string | null; + lastlockoutDate?: string | null; + lastPasswordChangeDate?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts index e5837a651d..0179397099 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserSettingsModel.ts @@ -9,3 +9,4 @@ export type UserSettingsModel = { minNonAlphaNumericLength?: number; consentLevels?: Array; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts new file mode 100644 index 0000000000..7e1858868f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/UserStateModel.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum UserStateModel { + ACTIVE = 'Active', + DISABLED = 'Disabled', + LOCKED_OUT = 'LockedOut', + INVITED = 'Invited', + INACTIVE = 'Inactive', + ALL = 'All', +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts index ef9d722992..8167e5e124 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ValueModelBaseModel.ts @@ -9,3 +9,4 @@ export type ValueModelBaseModel = { alias?: string; value?: any; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts index b2227d9a71..599a5fd749 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantModelBaseModel.ts @@ -8,3 +8,4 @@ export type VariantModelBaseModel = { segment?: string | null; name?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts index a0b2fa88a5..8add15bf08 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VariantResponseModelBaseModel.ts @@ -10,3 +10,4 @@ export type VariantResponseModelBaseModel = { createDate?: string; updateDate?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts index b454174231..e545e2d0d9 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/VersionResponseModel.ts @@ -5,3 +5,4 @@ export type VersionResponseModel = { version?: string; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts index f1c3b47e92..96065a5663 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/AuditLogResource.ts @@ -17,16 +17,16 @@ export class AuditLogResource { * @throws ApiError */ public static getAuditLog({ -orderDirection, -sinceDate, -skip, -take = 100, -}: { -orderDirection?: DirectionModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + orderDirection, + sinceDate, + skip, + take = 100, + }: { + orderDirection?: DirectionModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log', @@ -43,24 +43,24 @@ take?: number, * @returns PagedAuditLogResponseModel Success * @throws ApiError */ - public static getAuditLogByKey({ -key, -orderDirection, -sinceDate, -skip, -take = 100, -}: { -key: string, -orderDirection?: DirectionModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getAuditLogById({ + id, + orderDirection, + sinceDate, + skip, + take = 100, + }: { + id: string, + orderDirection?: DirectionModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/audit-log/{key}', + url: '/umbraco/management/api/v1/audit-log/{id}', path: { - 'key': key, + 'id': id, }, query: { 'orderDirection': orderDirection, @@ -76,16 +76,16 @@ take?: number, * @throws ApiError */ public static getAuditLogTypeByLogType({ -logType, -sinceDate, -skip, -take = 100, -}: { -logType: AuditTypeModel, -sinceDate?: string, -skip?: number, -take?: number, -}): CancelablePromise { + logType, + sinceDate, + skip, + take = 100, + }: { + logType: AuditTypeModel, + sinceDate?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/audit-log/type/{logType}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts index 16fe49b915..4e357c7e3f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/CultureResource.ts @@ -14,12 +14,12 @@ export class CultureResource { * @throws ApiError */ public static getCulture({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/culture', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts index dddb4cd14f..fec4ff09e8 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts @@ -25,10 +25,10 @@ export class DataTypeResource { * @throws ApiError */ public static postDataType({ -requestBody, -}: { -requestBody?: CreateDataTypeRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type', @@ -46,16 +46,16 @@ requestBody?: CreateDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDataTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -67,16 +67,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDataTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDataTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -89,18 +89,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDataTypeByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDataTypeRequestModel, -}): CancelablePromise { + public static putDataTypeById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/data-type/{key}', + url: '/umbraco/management/api/v1/data-type/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -115,18 +115,18 @@ requestBody?: UpdateDataTypeRequestModel, * @returns string Created * @throws ApiError */ - public static postDataTypeByKeyCopy({ -key, -requestBody, -}: { -key: string, -requestBody?: CopyDataTypeRequestModel, -}): CancelablePromise { + public static postDataTypeByIdCopy({ + id, + requestBody, + }: { + id: string, + requestBody?: CopyDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/data-type/{key}/copy', + url: '/umbraco/management/api/v1/data-type/{id}/copy', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -141,18 +141,18 @@ requestBody?: CopyDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static postDataTypeByKeyMove({ -key, -requestBody, -}: { -key: string, -requestBody?: MoveDataTypeRequestModel, -}): CancelablePromise { + public static postDataTypeByIdMove({ + id, + requestBody, + }: { + id: string, + requestBody?: MoveDataTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/data-type/{key}/move', + url: '/umbraco/management/api/v1/data-type/{id}/move', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -166,16 +166,16 @@ requestBody?: MoveDataTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeByKeyReferences({ -key, -}: { -key: string, -}): CancelablePromise> { + public static getDataTypeByIdReferences({ + id, + }: { + id: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/{key}/references', + url: '/umbraco/management/api/v1/data-type/{id}/references', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -188,10 +188,10 @@ key: string, * @throws ApiError */ public static postDataTypeFolder({ -requestBody, -}: { -requestBody?: CreateFolderRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateFolderRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/data-type/folder', @@ -205,16 +205,16 @@ requestBody?: CreateFolderRequestModel, * @returns any Success * @throws ApiError */ - public static getDataTypeFolderByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDataTypeFolderById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -226,16 +226,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDataTypeFolderByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDataTypeFolderById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -247,18 +247,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDataTypeFolderByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateFolderReponseModel, -}): CancelablePromise { + public static putDataTypeFolderById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateFolderReponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/data-type/folder/{key}', + url: '/umbraco/management/api/v1/data-type/folder/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -273,21 +273,21 @@ requestBody?: UpdateFolderReponseModel, * @throws ApiError */ public static getTreeDataTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -300,15 +300,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeDataTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -318,14 +318,14 @@ key?: Array, * @throws ApiError */ public static getTreeDataTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/data-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts index b2a18ac44d..74af557479 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts @@ -10,7 +10,6 @@ import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequest import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; -import type { UploadDictionaryResponseModel } from '../models/UploadDictionaryResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -23,12 +22,12 @@ export class DictionaryResource { * @throws ApiError */ public static getDictionary({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/dictionary', @@ -44,10 +43,10 @@ take?: number, * @throws ApiError */ public static postDictionary({ -requestBody, -}: { -requestBody?: CreateDictionaryItemRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDictionaryItemRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary', @@ -66,16 +65,16 @@ requestBody?: CreateDictionaryItemRequestModel, * @returns any Success * @throws ApiError */ - public static getDictionaryByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDictionaryById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -87,16 +86,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDictionaryByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDictionaryById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -109,18 +108,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDictionaryByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDictionaryItemRequestModel, -}): CancelablePromise { + public static putDictionaryById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDictionaryItemRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/dictionary/{key}', + url: '/umbraco/management/api/v1/dictionary/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -135,18 +134,18 @@ requestBody?: UpdateDictionaryItemRequestModel, * @returns binary Success * @throws ApiError */ - public static getDictionaryByKeyExport({ -key, -includeChildren = false, -}: { -key: string, -includeChildren?: boolean, -}): CancelablePromise { + public static getDictionaryByIdExport({ + id, + includeChildren = false, + }: { + id: string, + includeChildren?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/dictionary/{key}/export', + url: '/umbraco/management/api/v1/dictionary/{id}/export', path: { - 'key': key, + 'id': id, }, query: { 'includeChildren': includeChildren, @@ -161,18 +160,18 @@ includeChildren?: boolean, * @returns any Success * @throws ApiError */ - public static postDictionaryByKeyMove({ -key, -requestBody, -}: { -key: string, -requestBody?: MoveDictionaryRequestModel, -}): CancelablePromise { + public static postDictionaryByIdMove({ + id, + requestBody, + }: { + id: string, + requestBody?: MoveDictionaryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', - url: '/umbraco/management/api/v1/dictionary/{key}/move', + url: '/umbraco/management/api/v1/dictionary/{id}/move', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -188,10 +187,10 @@ requestBody?: MoveDictionaryRequestModel, * @throws ApiError */ public static postDictionaryImport({ -requestBody, -}: { -requestBody?: ImportDictionaryRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: ImportDictionaryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/dictionary/import', @@ -205,43 +204,24 @@ requestBody?: ImportDictionaryRequestModel, }); } - /** - * @returns any Success - * @throws ApiError - */ - public static postDictionaryUpload({ -requestBody, -}: { -requestBody?: any, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/dictionary/upload', - body: requestBody, - errors: { - 400: `Bad Request`, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError */ public static getTreeDictionaryChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -253,15 +233,15 @@ take?: number, * @throws ApiError */ public static getTreeDictionaryItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/item', query: { - 'key': key, + 'id': id, }, }); } @@ -271,12 +251,12 @@ key?: Array, * @throws ApiError */ public static getTreeDictionaryRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts index 5a31940e98..61330ba056 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts @@ -15,15 +15,15 @@ export class DocumentBlueprintResource { * @throws ApiError */ public static getTreeDocumentBlueprintItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/item', query: { - 'key': key, + 'id': id, }, }); } @@ -33,12 +33,12 @@ key?: Array, * @throws ApiError */ public static getTreeDocumentBlueprintRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-blueprint/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts index 8d30863d05..0ab286ae37 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts @@ -2,10 +2,12 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentNotificationResponseModel } from '../models/DocumentNotificationResponseModel'; import type { DocumentResponseModel } from '../models/DocumentResponseModel'; import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; +import type { UpdateDocumentNotificationsRequestModel } from '../models/UpdateDocumentNotificationsRequestModel'; import type { UpdateDocumentRequestModel } from '../models/UpdateDocumentRequestModel'; import type { UpdateDomainsRequestModel } from '../models/UpdateDomainsRequestModel'; @@ -20,10 +22,10 @@ export class DocumentResource { * @throws ApiError */ public static postDocument({ -requestBody, -}: { -requestBody?: CreateDocumentRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateDocumentRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/document', @@ -41,16 +43,16 @@ requestBody?: CreateDocumentRequestModel, * @returns any Success * @throws ApiError */ - public static getDocumentByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -62,16 +64,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteDocumentByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteDocumentById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -84,18 +86,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDocumentByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDocumentRequestModel, -}): CancelablePromise { + public static putDocumentById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDocumentRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/document/{key}', + url: '/umbraco/management/api/v1/document/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -110,16 +112,16 @@ requestBody?: UpdateDocumentRequestModel, * @returns any Success * @throws ApiError */ - public static getDocumentByKeyDomains({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentByIdDomains({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document/{key}/domains', + url: '/umbraco/management/api/v1/document/{id}/domains', path: { - 'key': key, + 'id': id, }, }); } @@ -128,42 +130,88 @@ key: string, * @returns any Success * @throws ApiError */ - public static putDocumentByKeyDomains({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateDomainsRequestModel, -}): CancelablePromise { + public static putDocumentByIdDomains({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDomainsRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/document/{key}/domains', + url: '/umbraco/management/api/v1/document/{id}/domains', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentByIdNotifications({ + id, + }: { + id: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + 'id': id, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putDocumentByIdNotifications({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateDocumentNotificationsRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document/{id}/notifications', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 404: `Not Found`, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError */ public static getRecycleBinDocumentChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -178,12 +226,12 @@ take?: number, * @throws ApiError */ public static getRecycleBinDocumentRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/document/root', @@ -202,26 +250,26 @@ take?: number, * @throws ApiError */ public static getTreeDocumentChildren({ -parentKey, -skip, -take = 100, -dataTypeKey, -culture, -}: { -parentKey?: string, -skip?: number, -take?: number, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise { + parentId, + skip, + take = 100, + dataTypeId, + culture, + }: { + parentId?: string, + skip?: number, + take?: number, + dataTypeId?: string, + culture?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); @@ -232,20 +280,20 @@ culture?: string, * @throws ApiError */ public static getTreeDocumentItem({ -key, -dataTypeKey, -culture, -}: { -key?: Array, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise> { + id, + dataTypeId, + culture, + }: { + id?: Array, + dataTypeId?: string, + culture?: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/item', query: { - 'key': key, - 'dataTypeKey': dataTypeKey, + 'id': id, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); @@ -256,23 +304,23 @@ culture?: string, * @throws ApiError */ public static getTreeDocumentRoot({ -skip, -take = 100, -dataTypeKey, -culture, -}: { -skip?: number, -take?: number, -dataTypeKey?: string, -culture?: string, -}): CancelablePromise { + skip, + take = 100, + dataTypeId, + culture, + }: { + skip?: number, + take?: number, + dataTypeId?: string, + culture?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document/root', query: { 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, 'culture': culture, }, }); diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts index 5d034deb83..5c908b4ccf 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts @@ -15,16 +15,16 @@ export class DocumentTypeResource { * @returns any Success * @throws ApiError */ - public static getDocumentTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getDocumentTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/document-type/{key}', + url: '/umbraco/management/api/v1/document-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -37,21 +37,21 @@ key: string, * @throws ApiError */ public static getTreeDocumentTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -64,15 +64,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeDocumentTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -82,14 +82,14 @@ key?: Array, * @throws ApiError */ public static getTreeDocumentTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/document-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts index d7100791c1..6ec8cf2917 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HealthCheckResource.ts @@ -18,12 +18,12 @@ export class HealthCheckResource { * @throws ApiError */ public static getHealthCheckGroup({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getHealthCheckGroupByName({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/health-check-group/{name}', @@ -60,10 +60,10 @@ name: string, * @throws ApiError */ public static postHealthCheckGroupByNameCheck({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check-group/{name}/check', @@ -81,10 +81,10 @@ name: string, * @throws ApiError */ public static postHealthCheckExecuteAction({ -requestBody, -}: { -requestBody?: HealthCheckActionRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: HealthCheckActionRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/health-check/execute-action', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts index c9377a09fc..e3a76d04ae 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/HelpResource.ts @@ -14,18 +14,18 @@ export class HelpResource { * @throws ApiError */ public static getHelp({ -section, -tree, -skip, -take, -baseUrl = 'https://our.umbraco.com', -}: { -section?: string, -tree?: string, -skip?: number, -take?: number, -baseUrl?: string, -}): CancelablePromise { + section, + tree, + skip, + take, + baseUrl = 'https://our.umbraco.com', + }: { + section?: string, + tree?: string, + skip?: number, + take?: number, + baseUrl?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/help', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts index 0ba53cc918..3b8485e122 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/IndexerResource.ts @@ -16,12 +16,12 @@ export class IndexerResource { * @throws ApiError */ public static getIndexer({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer', @@ -37,10 +37,10 @@ take?: number, * @throws ApiError */ public static getIndexerByIndexName({ -indexName, -}: { -indexName: string, -}): CancelablePromise { + indexName, + }: { + indexName: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/indexer/{indexName}', @@ -58,10 +58,10 @@ indexName: string, * @throws ApiError */ public static postIndexerByIndexNameRebuild({ -indexName, -}: { -indexName: string, -}): CancelablePromise { + indexName, + }: { + indexName: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts index dcf826bbcf..927209fa7d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/InstallResource.ts @@ -31,10 +31,10 @@ export class InstallResource { * @throws ApiError */ public static postInstallSetup({ -requestBody, -}: { -requestBody?: InstallVResponseModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: InstallVResponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/setup', @@ -52,10 +52,10 @@ requestBody?: InstallVResponseModel, * @throws ApiError */ public static postInstallValidateDatabase({ -requestBody, -}: { -requestBody?: DatabaseInstallResponseModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: DatabaseInstallResponseModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/install/validate-database', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts index 51967f3fce..56e3f9b7c7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts @@ -17,12 +17,12 @@ export class LanguageResource { * @throws ApiError */ public static getLanguage({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language', @@ -38,10 +38,10 @@ take?: number, * @throws ApiError */ public static postLanguage({ -requestBody, -}: { -requestBody?: CreateLanguageRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateLanguageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/language', @@ -60,10 +60,10 @@ requestBody?: CreateLanguageRequestModel, * @throws ApiError */ public static getLanguageByIsoCode({ -isoCode, -}: { -isoCode: string, -}): CancelablePromise { + isoCode, + }: { + isoCode: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -81,10 +81,10 @@ isoCode: string, * @throws ApiError */ public static deleteLanguageByIsoCode({ -isoCode, -}: { -isoCode: string, -}): CancelablePromise { + isoCode, + }: { + isoCode: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', url: '/umbraco/management/api/v1/language/{isoCode}', @@ -103,12 +103,12 @@ isoCode: string, * @throws ApiError */ public static putLanguageByIsoCode({ -isoCode, -requestBody, -}: { -isoCode: string, -requestBody?: UpdateLanguageRequestModel, -}): CancelablePromise { + isoCode, + requestBody, + }: { + isoCode: string, + requestBody?: UpdateLanguageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/language/{isoCode}', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index ef9b3cbf79..e3d16d571b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -16,224 +16,218 @@ import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; export class LogViewerResource { + /** + * @returns PagedLoggerResponseModel Success + * @throws ApiError + */ + public static getLogViewerLevel({ + skip, + take = 100, + }: { + skip?: number; + take?: number; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level', + query: { + skip: skip, + take: take, + }, + }); + } - /** - * @returns PagedLoggerResponseModel Success - * @throws ApiError - */ - public static getLogViewerLevel({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level', - query: { - 'skip': skip, - 'take': take, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerLevelCount({ + startDate, + endDate, + }: { + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level-count', + query: { + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevelCount({ -startDate, -endDate, -}: { -startDate?: string, -endDate?: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level-count', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedLogMessageResponseModel Success + * @throws ApiError + */ + public static getLogViewerLog({ + skip, + take = 100, + orderDirection, + filterExpression, + logLevel, + startDate, + endDate, + }: { + skip?: number; + take?: number; + orderDirection?: DirectionModel; + filterExpression?: string; + logLevel?: Array; + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/log', + query: { + skip: skip, + take: take, + orderDirection: orderDirection, + filterExpression: filterExpression, + logLevel: logLevel, + startDate: startDate, + endDate: endDate, + }, + }); + } - /** - * @returns PagedLogMessageResponseModel Success - * @throws ApiError - */ - public static getLogViewerLog({ -skip, -take = 100, -orderDirection, -filterExpression, -logLevel, -startDate, -endDate, -}: { -skip?: number, -take?: number, -orderDirection?: DirectionModel, -filterExpression?: string, -logLevel?: Array, -startDate?: string, -endDate?: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/log', - query: { - 'skip': skip, - 'take': take, - 'orderDirection': orderDirection, - 'filterExpression': filterExpression, - 'logLevel': logLevel, - 'startDate': startDate, - 'endDate': endDate, - }, - }); - } + /** + * @returns PagedLogTemplateResponseModel Success + * @throws ApiError + */ + public static getLogViewerMessageTemplate({ + skip, + take = 100, + startDate, + endDate, + }: { + skip?: number; + take?: number; + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/message-template', + query: { + skip: skip, + take: take, + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns PagedLogTemplateResponseModel Success - * @throws ApiError - */ - public static getLogViewerMessageTemplate({ -skip, -take = 100, -startDate, -endDate, -}: { -skip?: number, -take?: number, -startDate?: string, -endDate?: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/message-template', - query: { - 'skip': skip, - 'take': take, - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedSavedLogSearchResponseModel Success + * @throws ApiError + */ + public static getLogViewerSavedSearch({ + skip, + take = 100, + }: { + skip?: number; + take?: number; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + query: { + skip: skip, + take: take, + }, + }); + } - /** - * @returns PagedSavedLogSearchResponseModel Success - * @throws ApiError - */ - public static getLogViewerSavedSearch({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - query: { - 'skip': skip, - 'take': take, - }, - }); - } + /** + * @returns string Created + * @throws ApiError + */ + public static postLogViewerSavedSearch({ + requestBody, + }: { + requestBody?: SavedLogSearchRequestModel; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns string Created - * @throws ApiError - */ - public static postLogViewerSavedSearch({ -requestBody, -}: { -requestBody?: SavedLogSearchRequestModel, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Location', - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerSavedSearchByName({ + name, + }: { + name: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name: name, + }, + errors: { + 404: `Not Found`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearchByName({ -name, -}: { -name: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - errors: { - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static deleteLogViewerSavedSearchByName({ -name, -}: { -name: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - 'name': name, - }, - errors: { - 404: `Not Found`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerValidateLogsSize({ -startDate, -endDate, -}: { -startDate?: string, -endDate?: string, -}): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', - query: { - 'startDate': startDate, - 'endDate': endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static deleteLogViewerSavedSearchByName({ name }: { name: string }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + name: name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerValidateLogsSize({ + startDate, + endDate, + }: { + startDate?: string; + endDate?: string; + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', + query: { + startDate: startDate, + endDate: endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts index bd2f3e59d6..27690e5cf2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts @@ -20,10 +20,10 @@ export class MediaResource { * @throws ApiError */ public static postMedia({ -requestBody, -}: { -requestBody?: CreateMediaRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateMediaRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/media', @@ -41,16 +41,16 @@ requestBody?: CreateMediaRequestModel, * @returns any Success * @throws ApiError */ - public static getMediaByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getMediaById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -62,16 +62,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteMediaByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteMediaById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -84,18 +84,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putMediaByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateMediaRequestModel, -}): CancelablePromise { + public static putMediaById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateMediaRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/media/{key}', + url: '/umbraco/management/api/v1/media/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -111,19 +111,19 @@ requestBody?: UpdateMediaRequestModel, * @throws ApiError */ public static getRecycleBinMediaChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -138,12 +138,12 @@ take?: number, * @throws ApiError */ public static getRecycleBinMediaRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/recycle-bin/media/root', @@ -162,24 +162,24 @@ take?: number, * @throws ApiError */ public static getTreeMediaChildren({ -parentKey, -skip, -take = 100, -dataTypeKey, -}: { -parentKey?: string, -skip?: number, -take?: number, -dataTypeKey?: string, -}): CancelablePromise { + parentId, + skip, + take = 100, + dataTypeId, + }: { + parentId?: string, + skip?: number, + take?: number, + dataTypeId?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, }, }); } @@ -189,18 +189,18 @@ dataTypeKey?: string, * @throws ApiError */ public static getTreeMediaItem({ -key, -dataTypeKey, -}: { -key?: Array, -dataTypeKey?: string, -}): CancelablePromise> { + id, + dataTypeId, + }: { + id?: Array, + dataTypeId?: string, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/item', query: { - 'key': key, - 'dataTypeKey': dataTypeKey, + 'id': id, + 'dataTypeId': dataTypeId, }, }); } @@ -210,21 +210,21 @@ dataTypeKey?: string, * @throws ApiError */ public static getTreeMediaRoot({ -skip, -take = 100, -dataTypeKey, -}: { -skip?: number, -take?: number, -dataTypeKey?: string, -}): CancelablePromise { + skip, + take = 100, + dataTypeId, + }: { + skip?: number, + take?: number, + dataTypeId?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media/root', query: { 'skip': skip, 'take': take, - 'dataTypeKey': dataTypeKey, + 'dataTypeId': dataTypeId, }, }); } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts index e8cd962868..8d583f4fd4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts @@ -16,16 +16,16 @@ export class MediaTypeResource { * @returns any Success * @throws ApiError */ - public static getMediaTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getMediaTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/media-type/{key}', + url: '/umbraco/management/api/v1/media-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -38,21 +38,21 @@ key: string, * @throws ApiError */ public static getTreeMediaTypeChildren({ -parentKey, -skip, -take = 100, -foldersOnly = false, -}: { -parentKey?: string, -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, 'foldersOnly': foldersOnly, @@ -65,15 +65,15 @@ foldersOnly?: boolean, * @throws ApiError */ public static getTreeMediaTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -83,14 +83,14 @@ key?: Array, * @throws ApiError */ public static getTreeMediaTypeRoot({ -skip, -take = 100, -foldersOnly = false, -}: { -skip?: number, -take?: number, -foldersOnly?: boolean, -}): CancelablePromise { + skip, + take = 100, + foldersOnly = false, + }: { + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/media-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts index d0845c8968..7144009cb1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts @@ -20,15 +20,15 @@ export class MemberGroupResource { * @throws ApiError */ public static getTreeMemberGroupItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/item', query: { - 'key': key, + 'id': id, }, }); } @@ -38,12 +38,12 @@ key?: Array, * @throws ApiError */ public static getTreeMemberGroupRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-group/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts index 3336953d5a..df77ec68fd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts @@ -20,15 +20,15 @@ export class MemberTypeResource { * @throws ApiError */ public static getTreeMemberTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -38,12 +38,12 @@ key?: Array, * @throws ApiError */ public static getTreeMemberTypeRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/member-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts index c87823f5aa..b25a8644ce 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ObjectTypesResource.ts @@ -14,12 +14,12 @@ export class ObjectTypesResource { * @throws ApiError */ public static getObjectTypes({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/object-types', 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 index d33c63d582..0d64af3fd7 100644 --- 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 @@ -19,10 +19,10 @@ export class PackageResource { * @throws ApiError */ public static postPackageByNameRunMigration({ -name, -}: { -name: string, -}): CancelablePromise { + name, + }: { + name: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/{name}/run-migration', @@ -41,12 +41,12 @@ name: string, * @throws ApiError */ public static getPackageCreated({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/created', @@ -62,10 +62,10 @@ take?: number, * @throws ApiError */ public static postPackageCreated({ -requestBody, -}: { -requestBody?: CreatePackageRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreatePackageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/package/created', @@ -83,16 +83,16 @@ requestBody?: CreatePackageRequestModel, * @returns any Success * @throws ApiError */ - public static getPackageCreatedByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getPackageCreatedById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -104,16 +104,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deletePackageCreatedByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deletePackageCreatedById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -125,18 +125,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putPackageCreatedByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdatePackageRequestModel, -}): CancelablePromise { + public static putPackageCreatedById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdatePackageRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/package/created/{key}', + url: '/umbraco/management/api/v1/package/created/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -150,16 +150,16 @@ requestBody?: UpdatePackageRequestModel, * @returns binary Success * @throws ApiError */ - public static getPackageCreatedByKeyDownload({ -key, -}: { -key: string, -}): CancelablePromise { + public static getPackageCreatedByIdDownload({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/package/created/{key}/download', + url: '/umbraco/management/api/v1/package/created/{id}/download', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -183,12 +183,12 @@ key: string, * @throws ApiError */ public static getPackageMigrationStatus({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/package/migration-status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts index f249b42346..4f44e0cf12 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts @@ -15,14 +15,14 @@ export class PartialViewResource { * @throws ApiError */ public static getTreePartialViewChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreePartialViewItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreePartialViewRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/partial-view/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts index ddd5d31988..81422ff13b 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ProfilingResource.ts @@ -26,10 +26,10 @@ export class ProfilingResource { * @throws ApiError */ public static putProfilingStatus({ -requestBody, -}: { -requestBody?: ProfilingStatusRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: ProfilingStatusRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/profiling/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts index 2c82d24fcd..2d12b27858 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RedirectManagementResource.ts @@ -16,14 +16,14 @@ export class RedirectManagementResource { * @throws ApiError */ public static getRedirectManagement({ -filter, -skip, -take, -}: { -filter?: string, -skip?: number, -take?: number, -}): CancelablePromise { + filter, + skip, + take, + }: { + filter?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/redirect-management', @@ -42,20 +42,20 @@ take?: number, * @returns PagedRedirectUrlResponseModel Success * @throws ApiError */ - public static getRedirectManagementByKey({ -key, -skip, -take, -}: { -key: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getRedirectManagementById({ + id, + skip, + take, + }: { + id: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/redirect-management/{key}', + url: '/umbraco/management/api/v1/redirect-management/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, @@ -68,16 +68,16 @@ take?: number, * @returns any Success * @throws ApiError */ - public static deleteRedirectManagementByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteRedirectManagementById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/redirect-management/{key}', + url: '/umbraco/management/api/v1/redirect-management/{id}', path: { - 'key': key, + 'id': id, }, }); } @@ -98,10 +98,10 @@ key: string, * @throws ApiError */ public static postRedirectManagementStatus({ -status, -}: { -status?: RedirectStatusModel, -}): CancelablePromise { + status, + }: { + status?: RedirectStatusModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/redirect-management/status', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts index 69d6c06860..3c5ef6f3c7 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationResource.ts @@ -15,10 +15,10 @@ export class RelationResource { * @throws ApiError */ public static getRelationById({ -id, -}: { -id: number, -}): CancelablePromise { + id, + }: { + id: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/{id}', @@ -36,16 +36,16 @@ id: number, * @throws ApiError */ public static getRelationChildRelationByChildId({ -childId, -skip, -take, -relationTypeAlias = '', -}: { -childId: number, -skip?: number, -take?: number, -relationTypeAlias?: string, -}): CancelablePromise { + childId, + skip, + take, + relationTypeAlias = '', + }: { + childId: number, + skip?: number, + take?: number, + relationTypeAlias?: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/relation/child-relation/{childId}', @@ -64,20 +64,20 @@ relationTypeAlias?: string, * @returns PagedRelationResponseModel Success * @throws ApiError */ - public static getRelationTypeByKey({ -key, -skip, -take = 100, -}: { -key: string, -skip?: number, -take?: number, -}): CancelablePromise { + public static getRelationTypeById({ + id, + skip, + take = 100, + }: { + id: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/relation/type/{key}', + url: '/umbraco/management/api/v1/relation/type/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index 1c9c7bb266..ae5d2ffd04 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -19,10 +19,10 @@ export class RelationTypeResource { * @throws ApiError */ public static postRelationType({ -requestBody, -}: { -requestBody?: CreateRelationTypeRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateRelationTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/relation-type', @@ -39,16 +39,16 @@ requestBody?: CreateRelationTypeRequestModel, * @returns any Success * @throws ApiError */ - public static getRelationTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getRelationTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -60,16 +60,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteRelationTypeByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteRelationTypeById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -81,18 +81,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putRelationTypeByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateRelationTypeRequestModel, -}): CancelablePromise { + public static putRelationTypeById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateRelationTypeRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/relation-type/{key}', + url: '/umbraco/management/api/v1/relation-type/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -108,15 +108,15 @@ requestBody?: UpdateRelationTypeRequestModel, * @throws ApiError */ public static getTreeRelationTypeItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/item', query: { - 'key': key, + 'id': id, }, }); } @@ -126,12 +126,12 @@ key?: Array, * @throws ApiError */ public static getTreeRelationTypeRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/relation-type/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts index db3cb6e256..573b19912c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts @@ -15,14 +15,14 @@ export class ScriptResource { * @throws ApiError */ public static getTreeScriptChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeScriptItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeScriptRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/script/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts index b284454529..68b20fe3ee 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/SearcherResource.ts @@ -15,12 +15,12 @@ export class SearcherResource { * @throws ApiError */ public static getSearcher({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher', @@ -36,16 +36,16 @@ take?: number, * @throws ApiError */ public static getSearcherBySearcherNameQuery({ -searcherName, -term, -skip, -take, -}: { -searcherName: string, -term?: string, -skip?: number, -take?: number, -}): CancelablePromise { + searcherName, + term, + skip, + take, + }: { + searcherName: string, + term?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/searcher/{searcherName}/query', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts index 240af80ee8..4379b0aafa 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts @@ -15,14 +15,14 @@ export class StaticFileResource { * @throws ApiError */ public static getTreeStaticFileChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeStaticFileItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeStaticFileRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/static-file/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts index b504ba6aab..5d85a44b41 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts @@ -15,14 +15,14 @@ export class StylesheetResource { * @throws ApiError */ public static getTreeStylesheetChildren({ -path, -skip, -take = 100, -}: { -path?: string, -skip?: number, -take?: number, -}): CancelablePromise { + path, + skip, + take = 100, + }: { + path?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/children', @@ -39,10 +39,10 @@ take?: number, * @throws ApiError */ public static getTreeStylesheetItem({ -path, -}: { -path?: Array, -}): CancelablePromise> { + path, + }: { + path?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/item', @@ -57,12 +57,12 @@ path?: Array, * @throws ApiError */ public static getTreeStylesheetRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/stylesheet/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts index 289f0f8e46..19975410d0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TelemetryResource.ts @@ -16,12 +16,12 @@ export class TelemetryResource { * @throws ApiError */ public static getTelemetry({ -skip, -take, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/telemetry', @@ -48,10 +48,10 @@ take?: number, * @throws ApiError */ public static postTelemetryLevel({ -requestBody, -}: { -requestBody?: TelemetryRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: TelemetryRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/telemetry/level', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts index d5133dc6a7..ab2c55cccd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts @@ -27,10 +27,10 @@ export class TemplateResource { * @throws ApiError */ public static postTemplate({ -requestBody, -}: { -requestBody?: CreateTemplateRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: CreateTemplateRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template', @@ -48,16 +48,16 @@ requestBody?: CreateTemplateRequestModel, * @returns any Success * @throws ApiError */ - public static getTemplateByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getTemplateById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -69,16 +69,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteTemplateByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteTemplateById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, errors: { 400: `Bad Request`, @@ -91,18 +91,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putTemplateByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateTemplateRequestModel, -}): CancelablePromise { + public static putTemplateById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateTemplateRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/template/{key}', + url: '/umbraco/management/api/v1/template/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', @@ -118,10 +118,10 @@ requestBody?: UpdateTemplateRequestModel, * @throws ApiError */ public static postTemplateQueryExecute({ -requestBody, -}: { -requestBody?: TemplateQueryExecuteModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: TemplateQueryExecuteModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/template/query/execute', @@ -160,19 +160,19 @@ requestBody?: TemplateQueryExecuteModel, * @throws ApiError */ public static getTreeTemplateChildren({ -parentKey, -skip, -take = 100, -}: { -parentKey?: string, -skip?: number, -take?: number, -}): CancelablePromise { + parentId, + skip, + take = 100, + }: { + parentId?: string, + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/children', query: { - 'parentKey': parentKey, + 'parentId': parentId, 'skip': skip, 'take': take, }, @@ -184,15 +184,15 @@ take?: number, * @throws ApiError */ public static getTreeTemplateItem({ -key, -}: { -key?: Array, -}): CancelablePromise> { + id, + }: { + id?: Array, + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/item', query: { - 'key': key, + 'id': id, }, }); } @@ -202,12 +202,12 @@ key?: Array, * @throws ApiError */ public static getTreeTemplateRoot({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/root', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts new file mode 100644 index 0000000000..44dc7b5f19 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemporaryFileResource.ts @@ -0,0 +1,80 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { TemporaryFileResponseModel } from '../models/TemporaryFileResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class TemporaryFileResource { + + /** + * @returns string Created + * @throws ApiError + */ + public static postTemporaryfile({ + formData, + }: { + formData?: { + Id?: string; + File?: Blob; + }, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/temporaryfile', + formData: formData, + mediaType: 'multipart/form-data', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getTemporaryfileById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/temporaryfile/{id}', + path: { + 'id': id, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteTemporaryfileById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/temporaryfile/{id}', + path: { + 'id': id, + }, + errors: { + 400: `Bad Request`, + 404: `Not Found`, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts index 3c1a145658..2ba114f3a2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TrackedReferenceResource.ts @@ -13,22 +13,22 @@ export class TrackedReferenceResource { * @returns PagedRelationItemResponseModel Success * @throws ApiError */ - public static getTrackedReferenceByKey({ -key, -skip, -take = 20, -filterMustBeIsDependency = false, -}: { -key: string, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + public static getTrackedReferenceById({ + id, + skip, + take = 20, + filterMustBeIsDependency = false, + }: { + id: string, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tracked-reference/{key}', + url: '/umbraco/management/api/v1/tracked-reference/{id}', path: { - 'key': key, + 'id': id, }, query: { 'skip': skip, @@ -42,22 +42,22 @@ filterMustBeIsDependency?: boolean, * @returns PagedRelationItemResponseModel Success * @throws ApiError */ - public static getTrackedReferenceDescendantsByParentKey({ -parentKey, -skip, -take, -filterMustBeIsDependency = true, -}: { -parentKey: string, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + public static getTrackedReferenceDescendantsByParentId({ + parentId, + skip, + take, + filterMustBeIsDependency = true, + }: { + parentId: string, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentKey}', + url: '/umbraco/management/api/v1/tracked-reference/descendants/{parentId}', path: { - 'parentKey': parentKey, + 'parentId': parentId, }, query: { 'skip': skip, @@ -72,21 +72,21 @@ filterMustBeIsDependency?: boolean, * @throws ApiError */ public static getTrackedReferenceItem({ -key, -skip, -take = 20, -filterMustBeIsDependency = true, -}: { -key?: Array, -skip?: number, -take?: number, -filterMustBeIsDependency?: boolean, -}): CancelablePromise { + id, + skip, + take = 20, + filterMustBeIsDependency = true, + }: { + id?: Array, + skip?: number, + take?: number, + filterMustBeIsDependency?: boolean, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tracked-reference/item', query: { - 'key': key, + 'id': id, 'skip': skip, 'take': take, 'filterMustBeIsDependency': filterMustBeIsDependency, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts index 4c9f40614a..c161c4e304 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UserGroupsResource.ts @@ -17,10 +17,10 @@ export class UserGroupsResource { * @throws ApiError */ public static postUserGroups({ -requestBody, -}: { -requestBody?: SaveUserGroupRequestModel, -}): CancelablePromise { + requestBody, + }: { + requestBody?: SaveUserGroupRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/user-groups', @@ -38,12 +38,12 @@ requestBody?: SaveUserGroupRequestModel, * @throws ApiError */ public static getUserGroups({ -skip, -take = 100, -}: { -skip?: number, -take?: number, -}): CancelablePromise { + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/user-groups', @@ -58,16 +58,16 @@ take?: number, * @returns any Success * @throws ApiError */ - public static getUserGroupsByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static getUserGroupsById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -79,16 +79,16 @@ key: string, * @returns any Success * @throws ApiError */ - public static deleteUserGroupsByKey({ -key, -}: { -key: string, -}): CancelablePromise { + public static deleteUserGroupsById({ + id, + }: { + id: string, + }): CancelablePromise { return __request(OpenAPI, { method: 'DELETE', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, errors: { 404: `Not Found`, @@ -100,18 +100,18 @@ key: string, * @returns any Success * @throws ApiError */ - public static putUserGroupsByKey({ -key, -requestBody, -}: { -key: string, -requestBody?: UpdateUserGroupRequestModel, -}): CancelablePromise { + public static putUserGroupsById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateUserGroupRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', - url: '/umbraco/management/api/v1/user-groups/{key}', + url: '/umbraco/management/api/v1/user-groups/{id}', path: { - 'key': key, + 'id': id, }, body: requestBody, mediaType: 'application/json', diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts new file mode 100644 index 0000000000..e2b78bae8a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/UsersResource.ts @@ -0,0 +1,323 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ChangePasswordUserRequestModel } from '../models/ChangePasswordUserRequestModel'; +import type { CreateUserRequestModel } from '../models/CreateUserRequestModel'; +import type { CreateUserResponseModel } from '../models/CreateUserResponseModel'; +import type { DirectionModel } from '../models/DirectionModel'; +import type { DisableUserRequestModel } from '../models/DisableUserRequestModel'; +import type { EnableUserRequestModel } from '../models/EnableUserRequestModel'; +import type { InviteUserRequestModel } from '../models/InviteUserRequestModel'; +import type { PagedUserResponseModel } from '../models/PagedUserResponseModel'; +import type { SetAvatarRequestModel } from '../models/SetAvatarRequestModel'; +import type { UnlockUsersRequestModel } from '../models/UnlockUsersRequestModel'; +import type { UpdateUserGroupsOnUserRequestModel } from '../models/UpdateUserGroupsOnUserRequestModel'; +import type { UpdateUserRequestModel } from '../models/UpdateUserRequestModel'; +import type { UserOrderModel } from '../models/UserOrderModel'; +import type { UserResponseModel } from '../models/UserResponseModel'; +import type { UserStateModel } from '../models/UserStateModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class UsersResource { + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsers({ + requestBody, + }: { + requestBody?: (CreateUserRequestModel | InviteUserRequestModel), + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns PagedUserResponseModel Success + * @throws ApiError + */ + public static getUsers({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users', + query: { + 'skip': skip, + 'take': take, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getUsersById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteUsersById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static putUsersById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/users/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteUsersAvatarById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/users/avatar/{id}', + path: { + 'id': id, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersAvatarById({ + id, + requestBody, + }: { + id: string, + requestBody?: SetAvatarRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/avatar/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersChangePasswordById({ + id, + requestBody, + }: { + id: string, + requestBody?: ChangePasswordUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/change-password/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersDisable({ + requestBody, + }: { + requestBody?: DisableUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/disable', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersEnable({ + requestBody, + }: { + requestBody?: EnableUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/enable', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getUsersFilter({ + skip, + take = 100, + orderBy, + orderDirection, + userGroupIds, + userStates, + filter = '', + }: { + skip?: number, + take?: number, + orderBy?: UserOrderModel, + orderDirection?: DirectionModel, + userGroupIds?: Array, + userStates?: Array, + filter?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/users/filter', + query: { + 'skip': skip, + 'take': take, + 'orderBy': orderBy, + 'orderDirection': orderDirection, + 'userGroupIds': userGroupIds, + 'userStates': userStates, + 'filter': filter, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersInvite({ + requestBody, + }: { + requestBody?: InviteUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/invite', + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersSetUserGroups({ + requestBody, + }: { + requestBody?: UpdateUserGroupsOnUserRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/set-user-groups', + body: requestBody, + mediaType: 'application/json', + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static postUsersUnlock({ + requestBody, + }: { + requestBody?: UnlockUsersRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/users/unlock', + body: requestBody, + mediaType: 'application/json', + errors: { + 400: `Bad Request`, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts index 74e37ca564..c4f7631758 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/allowed-document-types-modal.token.ts @@ -1,7 +1,7 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbAllowedDocumentTypesModalData { - key: string | null; + id: string | null; } export interface UmbAllowedDocumentTypesModalResult { diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts index 745279c619..c420afa120 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/import-dictionary-modal.token.ts @@ -7,8 +7,8 @@ export interface UmbImportDictionaryModalData { } export interface UmbImportDictionaryModalResult { - fileName?: string; - parentKey?: string; + temporaryFileId?: string; + parentId?: string; } export const UMB_IMPORT_DICTIONARY_MODAL = new UmbModalToken< diff --git a/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts b/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts index e4957c444a..55901ab786 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/token/template-modal.token.ts @@ -1,12 +1,12 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbTemplateModalData { - key: string; + id: string; language?: 'razor' | 'typescript' | 'javascript' | 'css' | 'markdown' | 'json' | 'html'; } export interface UmbTemplateModalResult { - key: string; + id: string; } export const UMB_TEMPLATE_MODAL = new UmbModalToken( diff --git a/src/Umbraco.Web.UI.Client/libs/models/index.ts b/src/Umbraco.Web.UI.Client/libs/models/index.ts index f52c407311..0d96ea3bff 100644 --- a/src/Umbraco.Web.UI.Client/libs/models/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/models/index.ts @@ -11,19 +11,19 @@ export type HTMLElementConstructor = new (...args: any[]) => T; export type ClassConstructor = new (...args: any[]) => T; // Users -// TODO: would the right name be Node? as entity is just something with a Key. But node is something in a content structure, aka. with hasChildren and parentKey. +// TODO: would the right name be Node? as entity is just something with a Key. But node is something in a content structure, aka. with hasChildren and parentId. export interface Entity { - key: string; + id: string; name: string; icon: string; type: string; hasChildren: boolean; - parentKey: string | null; + parentId: string | null; } /** Tried to find a common base of our entities — used by Entity Workspace Context */ export type BaseEntity = { - key?: string; + id?: string; //alias?: string; name?: string; //icon?: string; @@ -63,7 +63,7 @@ export interface UserGroupDetails extends UserGroupEntity { // TODO: Make sure Entity Type/interface. export interface MemberTypeDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } @@ -71,23 +71,23 @@ export interface MemberTypeDetails extends EntityTreeItemResponseModel { // Media Types export interface MediaTypeDetails extends FolderTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed alias: string; properties: []; } // Member Groups export interface MemberGroupDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed } export interface MemberDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed } // Document Blueprint export interface DocumentBlueprintDetails { - key: string; + id: string; name: string; type: 'document-blueprint'; properties: Array; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts index 1e5c060f00..97ff56848c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts @@ -6,8 +6,8 @@ * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different. * @description - Creates a RxJS Observable from RxJS Subject. * @example Example append new entry for a ArrayState or a part of DeepState/ObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. - * const entry = {key: 'myKey', value: 'myValue'}; - * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.key === key); + * const entry = {id: 'myKey', value: 'myValue'}; + * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id); * mySubject.next(newDataSet); */ export function appendToFrozenArray(data: T[], entry: T, getUniqueMethod?: (entry: T) => unknown): T[] { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts index 04dc42b3bb..7572f89d8b 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts @@ -50,12 +50,12 @@ export class ArrayState extends DeepState { * @param {unknown[]} uniques - The unique values to remove. * @return {ArrayState} Reference to it self. * @description - Remove some new data of this Subject. - * @example Example remove entry with key '1' and '2' + * @example Example remove entry with id '1' and '2' * const data = [ - * { key: 1, value: 'foo'}, - * { key: 2, value: 'bar'} + * { id: 1, value: 'foo'}, + * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new ArrayState(data, (x) => x.id); * myState.remove([1, 2]); */ remove(uniques: unknown[]) { @@ -79,12 +79,12 @@ export class ArrayState extends DeepState { * @param {unknown} unique - The unique value to remove. * @return {ArrayState} Reference to it self. * @description - Remove some new data of this Subject. - * @example Example remove entry with key '1' + * @example Example remove entry with id '1' * const data = [ - * { key: 1, value: 'foo'}, - * { key: 2, value: 'bar'} + * { id: 1, value: 'foo'}, + * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new ArrayState(data, (x) => x.id); * myState.removeOne(1); */ removeOne(unique: unknown) { diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts index 13cfbfe7a5..0a6d922702 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface UmbDataSource { - createScaffold(parentKey: string | null): Promise>; + createScaffold(parentId: string | null): Promise>; get(unique: string): Promise>; insert(data: CreateRequestType): Promise; update(unique: string, data: UpdateRequestType): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts index c07bf208f5..0998583c9f 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/folder-data-source.interface.ts @@ -6,7 +6,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; export interface UmbFolderDataSource { - createScaffold(parentKey: string | null): Promise>; + createScaffold(parentId: string | null): Promise>; get(unique: string): Promise>; insert(data: CreateFolderRequestModel): Promise>; update(unique: string, data: CreateFolderRequestModel): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index 11862c979b..b228dc0c30 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -1,12 +1,12 @@ import type { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export interface UmbDetailRepository { - createScaffold(parentKey: string | null): Promise<{ + createScaffold(parentId: string | null): Promise<{ data?: DetailType; error?: ProblemDetailsModel; }>; - requestByKey(key: string): Promise<{ + requestById(id: string): Promise<{ data?: DetailType; error?: ProblemDetailsModel; }>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts index 4a021f2bd0..5e1a016fdb 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts @@ -7,7 +7,7 @@ import type { } from '@umbraco-cms/backoffice/backend-api'; export interface UmbFolderRepository { - createFolderScaffold(parentKey: string | null): Promise<{ + createFolderScaffold(parentId: string | null): Promise<{ data?: FolderReponseModel; error?: ProblemDetailsModel; }>; diff --git a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts index 1e82f6acaa..ea94db043a 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts @@ -9,7 +9,7 @@ import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Appends items to the store @@ -22,46 +22,46 @@ export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore} data * @memberof UmbEntityTreeStore */ - updateItem(key: string, data: Partial) { - this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.key === key)); + updateItem(id: string, data: Partial) { + this.#data.next(partialUpdateFrozenArray(this.#data.getValue(), data, (entry) => entry.id === id)); } /** * Removes an item from the store - * @param {string} key + * @param {string} id * @memberof UmbEntityTreeStore */ - removeItem(key: string) { - this.#data.removeOne(key); + removeItem(id: string) { + this.#data.removeOne(id); } /** * An observable to observe the root items * @memberof UmbEntityTreeStore */ - rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === null)); + rootItems = this.#data.getObservablePart((items) => items.filter((item) => item.parentId === null)); /** * Returns an observable to observe the children of a given parent - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbEntityTreeStore */ - childrenOf(parentKey: string | null) { - return this.#data.getObservablePart((items) => items.filter((item) => item.parentKey === parentKey)); + childrenOf(parentId: string | null) { + return this.#data.getObservablePart((items) => items.filter((item) => item.parentId === parentId)); } /** - * Returns an observable to observe the items with the given keys - * @param {Array} keys + * Returns an observable to observe the items with the given ids + * @param {Array} ids * @return {*} * @memberof UmbEntityTreeStore */ - items(keys: Array) { - return this.#data.getObservablePart((items) => items.filter((item) => keys.includes(item.key ?? ''))); + items(ids: Array) { + return this.#data.getObservablePart((items) => items.filter((item) => ids.includes(item.id ?? ''))); } } diff --git a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts index a934ab6871..4021307cd6 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store-base.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store-base.ts @@ -1,6 +1,7 @@ import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +// TODO: Make a Store interface? export class UmbStoreBase { constructor(protected _host: UmbControllerHostElement, public readonly storeAlias: string) { new UmbContextProviderController(_host, storeAlias, this); diff --git a/src/Umbraco.Web.UI.Client/libs/store/store.ts b/src/Umbraco.Web.UI.Client/libs/store/store.ts index d4af9c2275..4961162767 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/store.ts @@ -16,7 +16,7 @@ export interface UmbEntityDetailStore extends UmbDataStore { * @return {*} {T} * @memberof UmbEntityDetailStore */ - getScaffold: (entityType: string, parentKey: string | null) => T; + getScaffold: (entityType: string, parentId: string | null) => T; /** * @description - Request data by key. The data is added to the store and is returned as an Observable. diff --git a/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts b/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts index 338e893545..878f050818 100644 --- a/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/workspace/context/workspace-entity-context.interface.ts @@ -2,7 +2,7 @@ import type { UmbWorkspaceContextInterface } from '@umbraco-cms/backoffice/works export interface UmbEntityWorkspaceContextInterface extends UmbWorkspaceContextInterface { - getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() + getEntityId(): string | undefined; // COnsider if this should go away now that we have getUnique() getEntityType(): string; // TODO: consider of this should be on the repository because a repo is responsible for one entity type //getData(): EntityType | undefined; save(): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 42fa9ae950..5f7fcff78e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -154,14 +154,13 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private async _removeRedirect(r: RedirectUrlResponseModel) { - if (!r.key) return; - const res = await tryExecuteAndNotify( - this, - RedirectManagementResource.deleteRedirectManagementByKey({ key: r.key }) - ); + if (!r.id) return; + const res = await tryExecuteAndNotify(this, RedirectManagementResource.deleteRedirectManagementById({ id: r.id })); if (!res.error) { // or just run a this._getRedirectData() again? - this.shadowRoot?.getElementById(`redirect-key-${r.key}`)?.remove(); + //this.shadowRoot?.getElementById(`redirect-key-${r.id}`)?.remove(); + // No no, never manipulate DOM manipulate the data for the DOM: + this._redirectData = this._redirectData?.filter((x) => x.id !== r.id); } } @@ -217,7 +216,9 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { if (data) { this._total = data?.total; this._redirectData = data?.items; - if (this._filter?.length) this._buttonState = 'success'; + if (this._filter?.length) { + this._buttonState = 'success'; + } } } @@ -281,6 +282,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { } private renderTable() { + // TODO: Instead of map, use repeat lit util: return html` @@ -291,7 +293,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { Actions ${this._redirectData?.map((data) => { - return html` + return html` ${data.culture || '*'} ${data.originalUrl} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index f0efc47b4b..411f7d7768 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -12,7 +12,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; */ export class UmbDocumentBlueprintStore extends UmbStoreBase { // TODO: use the right type: - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DOCUMENT_BLUEPRINT_STORE_CONTEXT_TOKEN.toString()); @@ -32,10 +32,10 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { this.#data.append(data); }); - return this.#data.getObservablePart((documents) => documents.find((document) => document.key === key)); + return this.#data.getObservablePart((documents) => documents.find((document) => document.id === key)); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return {} as DocumentBlueprintDetails; } @@ -79,17 +79,17 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { * @memberof UmbDocumentBlueprintStore * @return {*} {Promise} */ - async delete(keys: string[]) { + async delete(ids: string[]) { // TODO: use backend cli when available. await fetch('/umbraco/backoffice/document-blueprint/delete', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, }); - this.#data.remove(keys); + this.#data.remove(ids); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts index ff55e6dfc3..41f8b961b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/modals/allowed-document-types/allowed-document-types-modal.element.ts @@ -21,9 +21,9 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< async firstUpdated() { // TODO: show error - if (!this.data?.key) return; + if (!this.data?.id) return; - const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.key); + const { data } = await this.#documentTypeRepository.requestAllowedChildTypesOf(this.data.id); if (data) { this._allowedDocumentTypes = data; @@ -37,8 +37,8 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< #onClick(event: PointerEvent) { event.stopPropagation(); const target = event.target as HTMLButtonElement; - const documentTypeKey = target.dataset.key; - if (!documentTypeKey) throw new Error('No document type key found'); + const documentTypeKey = target.dataset.id; + if (!documentTypeKey) throw new Error('No document type id found'); this.modalHandler?.submit({ documentTypeKey }); } @@ -50,7 +50,7 @@ export class UmbAllowedDocumentTypesModalElement extends UmbModalBaseElement< ${this._allowedDocumentTypes.map( (item) => html` - + ${item.icon ? html`` : nothing} ` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 14494da134..dbf7c841e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -60,34 +60,34 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -95,29 +95,29 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: - async createScaffold(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async createScaffold(parentId: string | null) { + if (!parentId) throw new Error('Parent id is missing'); await this.#init; - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(parentId); } - async requestByKey(key: string) { - if (!key) throw new Error('Key is missing'); + async requestById(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#detailStore?.append(data); @@ -126,23 +126,23 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { data, error }; } - async byKey(key: string) { - if (!key) throw new Error('Key is missing'); + async byId(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - return this.#detailStore!.byKey(key); + return this.#detailStore!.byId(id); } // TODO: we need to figure out where to put this - async requestAllowedChildTypesOf(key: string) { - if (!key) throw new Error('Key is missing'); + async requestAllowedChildTypesOf(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - return this.#detailDataSource.getAllowedChildrenOf(key); + return this.#detailDataSource.getAllowedChildrenOf(id); } // Could potentially be general methods: async create(template: ItemType) { - if (!template || !template.key) throw new Error('Template is missing'); + if (!template || !template.id) throw new Error('Template is missing'); await this.#init; const { error } = await this.#detailDataSource.insert(template); @@ -161,10 +161,10 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U } async save(item: ItemType) { - if (!item || !item.key) throw new Error('Document-Type is missing'); + if (!item || !item.id) throw new Error('Document-Type is missing'); await this.#init; - const { error } = await this.#detailDataSource.update(item.key, item); + const { error } = await this.#detailDataSource.update(item.id, item); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -174,7 +174,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.key, { name: item.name }); + this.#treeStore?.updateItem(item.id, { name: item.name }); // TODO: would be nice to align the stores on methods/methodNames. } @@ -183,11 +183,11 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // General: - async delete(key: string) { - if (!key) throw new Error('Document key is missing'); + async delete(id: string) { + if (!id) throw new Error('Document id is missing'); await this.#init; - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -196,8 +196,8 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); + this.#detailStore?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index f8b258866d..23b64c0942 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Document Types */ export class UmbDocumentTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentTypeStore. @@ -36,8 +36,8 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {DocumentTypeModel} document * @memberof UmbDocumentTypeStore */ - byKey(key: DocumentTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byId(id: DocumentTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -45,7 +45,7 @@ export class UmbDocumentTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts index 561d27c049..f6bff744b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.server.data.ts @@ -26,32 +26,32 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource( this.#host, - fetch(`/umbraco/management/api/v1/document-type/${document.key}`, { + fetch(`/umbraco/management/api/v1/document-type/${document.id}`, { method: 'PUT', body: body, headers: { @@ -127,13 +127,13 @@ export class UmbDocumentTypeServerDataSource implements UmbDataSource) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document-type/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ keys: ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -61,12 +61,12 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof DocumentTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -74,19 +74,19 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DocumentTypeResource.getTreeDocumentTypeChildren({ - parentKey, + parentId, }) ); } /** * Fetches the items for the given keys from the server - * @param {Array} keys + * @param {Array} ids * @return {*} * @memberof DocumentTreeServerDataSource */ - async getItems(keys: Array) { - if (keys) { + async getItems(ids: Array) { + if (ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -94,7 +94,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DocumentTypeResource.getTreeDocumentTypeItem({ - key: keys, + id: ids, }) ); } 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 18df653f8a..da264b5ff0 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 @@ -28,8 +28,8 @@ export class UmbDocumentTypeWorkspaceContext readonly compositions; // Document type specific: - readonly allowedTemplateKeys; - readonly defaultTemplateKey; + readonly allowedTemplateIds; + readonly defaultTemplateId; readonly cleanup; readonly structure; @@ -53,9 +53,9 @@ export class UmbDocumentTypeWorkspaceContext this.compositions = this.structure.rootDocumentTypeObservablePart((data) => data?.compositions); // Document type specific: - this.allowedTemplateKeys = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateKeys); - this.defaultTemplateKey = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); - this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateKey); + this.allowedTemplateIds = this.structure.rootDocumentTypeObservablePart((data) => data?.allowedTemplateIds); + this.defaultTemplateId = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateId); + this.cleanup = this.structure.rootDocumentTypeObservablePart((data) => data?.defaultTemplateId); } public setPropertyValue(alias: string, value: unknown) { @@ -66,8 +66,8 @@ export class UmbDocumentTypeWorkspaceContext return this.structure.getRootDocumentType() || {}; } - getEntityKey() { - return this.getData().key; + getEntityId() { + return this.getData().id; } getEntityType() { @@ -86,8 +86,8 @@ export class UmbDocumentTypeWorkspaceContext this.structure.updateRootDocumentType({ icon }); } - async createScaffold(documentTypeKey: string) { - const { data } = await this.structure.createScaffold(documentTypeKey); + async createScaffold(parentId: string) { + const { data } = await this.structure.createScaffold(parentId); if (!data) return undefined; this.setIsNew(true); @@ -95,8 +95,8 @@ export class UmbDocumentTypeWorkspaceContext return data || undefined; } - async load(entityKey: string) { - const { data } = await this.structure.loadType(entityKey); + async load(entityId: string) { + const { data } = await this.structure.loadType(entityId); if (!data) return undefined; this.setIsNew(false); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 54086efee8..73abc9e6ef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -16,11 +16,11 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { @state() _routes = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts index 872198dd8d..bf851ab301 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.stories.ts @@ -12,5 +12,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts index 99e55283a7..73eea4e334 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.ts @@ -11,16 +11,16 @@ import './document-type-workspace-view-edit-property.element'; @customElement('umb-document-type-workspace-view-edit-properties') export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitElement { - private _containerKey: string | undefined; + private _containerId: string | undefined; - public get containerKey(): string | undefined { - return this._containerKey; + public get containerId(): string | undefined { + return this._containerId; } - public set containerKey(value: string | undefined) { - if (value === this._containerKey) return; - const oldValue = this._containerKey; - this._containerKey = value; - this.requestUpdate('containerKey', oldValue); + public set containerId(value: string | undefined) { + if (value === this._containerId) return; + const oldValue = this._containerId; + this._containerId = value; + this.requestUpdate('containerId', oldValue); } @property({ type: String, attribute: 'container-name', reflect: false }) @@ -56,11 +56,11 @@ export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitEle } async #onAddProperty() { - const property = await this._propertyStructureHelper.addProperty(this._containerKey); + const property = await this._propertyStructureHelper.addProperty(this._containerId); if (!property) return; - // Take key and parse to modal: - console.log('property key:', property.key!); + // Take id and parse to modal: + console.log('property id:', property.id!); const modalHandler = this.#modalContext?.open(UMB_PROPERTY_SETTINGS_MODAL); @@ -77,7 +77,7 @@ export class UmbDocumentTypeWorkspaceViewEditPropertiesElement extends UmbLitEle html` { - this._propertyStructureHelper.partialUpdateProperty(property.key, event.detail); + this._propertyStructureHelper.partialUpdateProperty(property.id, event.detail); }}>` )} Add property `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts index 3fb75e1c6f..573d386347 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -92,7 +92,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { component: () => import('./document-type-workspace-view-edit-tab.element'), setup: (component: Promise) => { (component as any).tabName = tabName; - (component as any).ownerTabKey = tab.key; + (component as any).ownerTabKey = tab.id; }, }); }); @@ -118,9 +118,9 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { this._routes = routes; } - #remove(tabKey: string | undefined) { - if (!tabKey) return; - this._workspaceContext?.structure.removeContainer(null, tabKey); + #remove(tabId: string | undefined) { + if (!tabId) return; + this._workspaceContext?.structure.removeContainer(null, tabId); } async #addTab() { this._workspaceContext?.structure.createContainer(null, null, 'Tab'); @@ -140,7 +140,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { : ''} ${repeat( this._tabs, - (tab) => tab.key, + (tab) => tab.id, (tab) => { // TODO: make better url folder name: const path = this._routerPath + '/tab/' + encodeURI(tab.name || ''); @@ -152,7 +152,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { label="Remove tab" class="trash" slot="append" - @click=${() => this.#remove(tab.key)} + @click=${() => this.#remove(tab.id)} compact> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 32f96d6687..02f97109c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -65,8 +65,8 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement
    Choose which templates editors are allowed to use on content of this type
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts index c5dd3bac32..a20182afe1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.ts @@ -70,7 +70,7 @@ export class UmbDocumentTableActionColumnLayoutElement extends LitElement { + unique=${ifDefined(this.item.id)}>
    `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts index 5f63a23d34..ec3eef7b88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/collection/views/table/document-table-collection-view.element.ts @@ -96,10 +96,10 @@ export class UmbDocumentTableCollectionViewElement extends UmbLitElement { private _createTableItems(items: Array) { this._tableItems = items.map((item) => { - // TODO: use unique instead of key - if (!item.key) throw new Error('Item key is missing.'); + // TODO: use unique instead of id + if (!item.id) throw new Error('Item id is missing.'); return { - key: item.key, + id: item.id, icon: item.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 6994ebcabe..7a5b8b3e31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -24,11 +24,11 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase, UmbDe return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -99,34 +99,34 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: async createScaffold(documentTypeKey: string) { - if (!documentTypeKey) throw new Error('Document type key is missing'); + if (!documentTypeKey) throw new Error('Document type id is missing'); await this.#init; return this.#detailDataSource.createScaffold(documentTypeKey); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -137,10 +137,10 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Could potentially be general methods: - async create(item: CreateDocumentRequestModel & { key: string }) { + async create(item: CreateDocumentRequestModel & { id: string }) { await this.#init; - if (!item || !item.key) { + if (!item || !item.id) { throw new Error('Document is missing'); } @@ -162,11 +162,11 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe async save(item: ItemType) { await this.#init; - if (!item || !item.key) { + if (!item || !item.id) { throw new Error('Document is missing'); } - const { error } = await this.#detailDataSource.update(item.key, item); + const { error } = await this.#detailDataSource.update(item.id, item); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -177,7 +177,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Consider to look up the data before fetching from the server // Consider notify a workspace if a document is updated in the store while someone is editing it. this.#store?.append(item); - //this.#treeStore?.updateItem(item.key, { name: item.name });// Port data to tree store. + //this.#treeStore?.updateItem(item.id, { name: item.name });// Port data to tree store. // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -185,14 +185,14 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Document key is missing'); + if (!id) { + throw new Error('Document id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -202,8 +202,8 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a document is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -212,8 +212,8 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe // Listing all currently known methods we need to implement: // these currently only covers posting data // TODO: find a good way to split these - async trash(keys: Array) { - console.log('document trash: ' + keys); + async trash(ids: Array) { + console.log('document trash: ' + ids); alert('implement trash'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index f1f3ce7aaf..d53818f95e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbDocumentStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentDetailStore. @@ -36,8 +36,8 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {DocumentModel} document * @memberof UmbDocumentStore */ - byKey(key: DocumentResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byKey(id: DocumentResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -45,7 +45,7 @@ export class UmbDocumentStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDocumentDetailStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts index 83a93a9c1a..ae6a501479 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.server.data.ts @@ -32,37 +32,37 @@ export class UmbDocumentServerDataSource } /** - * Fetches a Document with the given key from the server - * @param {string} key + * Fetches a Document with the given id from the server + * @param {string} id * @return {*} * @memberof UmbDocumentServerDataSource */ - async get(key: string) { - if (!key) { + async get(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, - DocumentResource.getDocumentByKey({ - key, + DocumentResource.getDocumentById({ + id, }) ); } /** * Creates a new Document scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDocumentServerDataSource */ - async createScaffold(documentTypeKey: string) { + async createScaffold(documentTypeId: string) { const data: DocumentResponseModel = { urls: [], - templateKey: null, - key: uuidv4(), - contentTypeKey: documentTypeKey, + templateId: null, + id: uuidv4(), + contentTypeId: documentTypeId, values: [], variants: [ { @@ -87,8 +87,8 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async insert(document: CreateDocumentRequestModel & { key: string }) { - if (!document.key) throw new Error('Key is missing'); + async insert(document: CreateDocumentRequestModel & { id: string }) { + if (!document.id) throw new Error('Id is missing'); let body: string; @@ -118,12 +118,12 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async update(key: string, document: DocumentResponseModel) { - if (!document.key) { - const error: ProblemDetailsModel = { title: 'Document key is missing' }; + async update(id: string, document: DocumentResponseModel) { + if (!document.id) { + const error: ProblemDetailsModel = { title: 'Document id is missing' }; return { error }; } - //const payload = { key: document.key, requestBody: document }; + //const payload = { id: document.id, requestBody: document }; let body: string; @@ -153,8 +153,8 @@ export class UmbDocumentServerDataSource * @return {*} * @memberof UmbDocumentServerDataSource */ - async trash(key: string) { - if (!key) { + async trash(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } @@ -164,7 +164,7 @@ export class UmbDocumentServerDataSource this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify([key]), + body: JSON.stringify([id]), headers: { 'Content-Type': 'application/json', }, @@ -174,12 +174,12 @@ export class UmbDocumentServerDataSource /** * Deletes a Document on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDocumentServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } @@ -189,7 +189,7 @@ export class UmbDocumentServerDataSource try { await fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify([key]), + body: JSON.stringify([id]), headers: { 'Content-Type': 'application/json', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 4bb080ab00..73ab968e2a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -13,13 +13,13 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/document/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -61,20 +61,20 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof DocumentTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + async getChildrenOf(parentId: string | null) { + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, DocumentResource.getTreeDocumentChildren({ - parentKey, + parentId, }) ); } @@ -85,16 +85,16 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof DocumentTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, DocumentResource.getTreeDocumentItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts index a9812355db..4fcde2bd4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/tree/tree-item/document-tree-item.context.ts @@ -5,6 +5,6 @@ import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-a // TODO get unique method from an document repository static method export class UmbDocumentTreeItemContext extends UmbTreeItemContextBase { constructor(host: UmbControllerHostElement) { - super(host, (x: DocumentTreeItemResponseModel) => x.key); + super(host, (x: DocumentTreeItemResponseModel) => x.id); } } 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 81629020e2..ff96898cb0 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 @@ -28,12 +28,12 @@ export class UmbDocumentWorkspaceContext * The document is the current state/draft version of the document. */ #draft = new ObjectState(undefined); - readonly unique = this.#draft.getObservablePart((data) => data?.key); - readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeKey); + readonly unique = this.#draft.getObservablePart((data) => data?.id); + readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeId); readonly variants = this.#draft.getObservablePart((data) => data?.variants || []); readonly urls = this.#draft.getObservablePart((data) => data?.urls || []); - readonly templateKey = this.#draft.getObservablePart((data) => data?.templateKey || null); + readonly templateId = this.#draft.getObservablePart((data) => data?.templateId || null); readonly structure; readonly splitView; @@ -44,7 +44,7 @@ export class UmbDocumentWorkspaceContext this.structure = new UmbWorkspacePropertyStructureManager(this.host, new UmbDocumentTypeRepository(this.host)); this.splitView = new UmbWorkspaceSplitViewManager(this.host); - new UmbObserverController(this.host, this.documentTypeKey, (key) => this.structure.loadType(key)); + new UmbObserverController(this.host, this.documentTypeKey, (id) => this.structure.loadType(id)); /* TODO: Concept for ensure variant values: @@ -60,7 +60,7 @@ export class UmbDocumentWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (!data) return undefined; this.setIsNew(false); @@ -89,8 +89,8 @@ export class UmbDocumentWorkspaceContext } */ - getEntityKey() { - return this.getData().key; + getEntityId() { + return this.getData().id; } getEntityType() { @@ -165,7 +165,7 @@ export class UmbDocumentWorkspaceContext if (!this.#draft.value) return; if (this.getIsNew()) { // TODO: typescript hack until we get the create type - const value = this.#draft.value as CreateDocumentRequestModel & { key: string }; + const value = this.#draft.value as CreateDocumentRequestModel & { id: string }; await this.repository.create(value); } else { await this.repository.save(this.#draft.value); @@ -174,8 +174,8 @@ export class UmbDocumentWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } /* diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 062c5edc8d..67656c3380 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -17,22 +17,22 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'create/:parentKey/:documentTypeKey', + path: 'create/:parentId/:documentTypeKey', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - // TODO: use parent key: + // TODO: use parent id: // TODO: Notice the perspective of permissions here, we need to check if the user has access to create a document of this type under this parent? - const parentKey = info.match.params.parentKey; + const parentId = info.match.params.parentId; const documentTypeKey = info.match.params.documentTypeKey; this.#workspaceContext.createScaffold(documentTypeKey); }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts index 884fabf62f..d6ef9c0fa9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts @@ -11,7 +11,7 @@ import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Details Data Store for Media Types */ export class UmbMediaTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 769559b402..9d697ec22f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -56,34 +56,34 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -91,14 +91,14 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS @@ -108,16 +108,16 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return this.#detailSource.createScaffold(); } - async requestDetails(key: string) { + async requestDetails(id: string) { await this.#init; // TODO: should we show a notification if the key is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#store?.append(data); @@ -125,9 +125,9 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { return { data, error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - return this.#detailSource.delete(key); + return this.#detailSource.delete(id); } async save(mediaType: MediaTypeDetails) { @@ -135,7 +135,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { // TODO: should we show a notification if the media type is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!mediaType || !mediaType.key) { + if (!mediaType || !mediaType.id) { const error: ProblemDetailsModel = { title: 'Media Type is missing' }; return { error }; } @@ -151,7 +151,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { // Consider to look up the data before fetching from the server // Consider notify a workspace if a media type is updated in the store while someone is editing it. this.#store?.append(mediaType); - this.#treeStore?.updateItem(mediaType.key, { name: mediaType.name }); + this.#treeStore?.updateItem(mediaType.id, { name: mediaType.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts index fa2481dd0f..f1e92f0202 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts @@ -49,18 +49,18 @@ export class UmbMediaTypeDetailServerDataSource implements MediaTypeDetailDataSo * @memberof UmbMediaTypeDetailServerDataSource */ async update(mediaType: MediaTypeDetails) { - if (!mediaType.key) { + if (!mediaType.id) { const error: ProblemDetailsModel = { title: 'MediaType key is missing' }; return { error }; } - const payload = { key: mediaType.key, requestBody: mediaType }; + const payload = { key: mediaType.id, requestBody: mediaType }; //return tryExecuteAndNotify(this.#host, MediaTypeResource.putMediaTypeByKey(payload)); // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/media-type/${mediaType.key}`, { + fetch(`/umbraco/management/api/v1/media-type/${mediaType.id}`, { method: 'PUT', body: JSON.stringify(payload), headers: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts index 8182c5d0f1..e1a682c55e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts @@ -3,7 +3,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; // TODO => Use models when they exist export interface MediaTypeDetailDataSource { - createScaffold(parentKey: string): Promise>; + createScaffold(parentId: string): Promise>; get(key: string): Promise>; insert(data: any): Promise; update(data: any): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index 4fa209600d..5cfcd81ab2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -32,12 +32,12 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MediaTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -45,7 +45,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaTypeResource.getTreeMediaTypeChildren({ - parentKey, + parentId, }) ); } @@ -56,8 +56,8 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof MediaTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { + async getItems(ids: Array) { + if (!ids || ids.length === 0) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -65,7 +65,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaTypeResource.getTreeMediaTypeItem({ - key: keys, + id: ids, }) ); } 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 04d9a806dd..ace5dcc750 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 @@ -22,8 +22,8 @@ export class UmbWorkspaceMediaTypeContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 5b1ef7f277..44b19e7eae 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -29,11 +29,11 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts index 50fb77a885..a34369425c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-grid-collection-view.element.ts @@ -118,24 +118,24 @@ export class UmbMediaGridCollectionViewElement extends UmbLitElement { private _handleOpenItem(mediaItem: EntityTreeItemResponseModel) { //TODO: Fix when we have dynamic routing - history.pushState(null, '', 'section/media/media/edit/' + mediaItem.key); + history.pushState(null, '', 'section/media/media/edit/' + mediaItem.id); } private _handleSelect(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - this._collectionContext?.select(mediaItem.key); + if (mediaItem.id) { + this._collectionContext?.select(mediaItem.id); } } private _handleDeselect(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - this._collectionContext?.deselect(mediaItem.key); + if (mediaItem.id) { + this._collectionContext?.deselect(mediaItem.id); } } private _isSelected(mediaItem: EntityTreeItemResponseModel) { - if (mediaItem.key) { - return this._selection.includes(mediaItem.key); + if (mediaItem.id) { + return this._selection.includes(mediaItem.id); } return false; } @@ -167,7 +167,7 @@ export class UmbMediaGridCollectionViewElement extends UmbLitElement { ${this._mediaItems ? repeat( this._mediaItems, - (file, index) => (file.key || '') + index, + (file, index) => (file.id || '') + index, (file) => this._renderMediaItem(file) ) : ''} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts index acacf64c88..7e5a02a213 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/collection-view/media-table-collection-view.element.ts @@ -85,7 +85,7 @@ export class UmbMediaTableCollectionViewElement extends UmbLitElement { // TODO: I guess the type error will go away when we get an entity based MediaDetails model instead of tree based. this._tableItems = mediaItems.map((item) => { return { - key: item.key, + id: item.id, icon: item.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts index d76d6bef9e..203cdbb451 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/index.ts @@ -5,7 +5,7 @@ export interface ContentProperty { alias: string; label: string; description: string; - dataTypeKey: string; + dataTypeId: string; } export interface ContentPropertyData { @@ -15,7 +15,7 @@ export interface ContentPropertyData { // Media export interface MediaDetails extends ContentTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed + id: string; // TODO: Remove this when the backend is fixed isTrashed: boolean; // TODO: remove only temp part of refactor properties: Array; data: Array; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 873e8011d6..53ee05be00 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -73,34 +73,34 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -108,38 +108,38 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { - throw new Error('Parent key is missing'); + if (!parentId) { + throw new Error('Parent id is missing'); } - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(parentId); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -153,7 +153,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor async create(template: ItemDetailType) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -175,11 +175,11 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor async save(document: ItemDetailType) { await this.#init; - if (!document || !document.key) { + if (!document || !document.id) { throw new Error('Template is missing'); } - const { error } = await this.#detailDataSource.update(document.key, document); + const { error } = await this.#detailDataSource.update(document.id, document); if (!error) { const notification = { data: { message: `Document saved` } }; @@ -190,7 +190,7 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#store?.append(document); - this.#treeStore?.updateItem(document.key, { name: document.name }); + this.#treeStore?.updateItem(document.id, { name: document.name }); // TODO: would be nice to align the stores on methods/methodNames. @@ -198,14 +198,14 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor } // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Document key is missing'); + if (!id) { + throw new Error('Document id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -215,23 +215,23 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; } - async trash(keys: Array) { - console.log('media trash: ' + keys); + async trash(ids: Array) { + console.log('media trash: ' + ids); alert('implement trash'); } - async move(keys: Array, destination: string) { + async move(ids: Array, destination: string) { // TODO: use backend cli when available. const res = await fetch('/umbraco/management/api/v1/media/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts index 647992a1af..ddc1a8b5fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbMediaStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index adc6a920e0..9c63d9c946 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -13,7 +13,7 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaTreeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 609a119df6..1621d5628c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -23,13 +23,13 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource res.json()) .then((res) => res[0] || undefined) ); @@ -45,26 +45,26 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource) { + async trashItems(ids: Array) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/media/trash', { method: 'POST', - body: JSON.stringify(keys), + body: JSON.stringify(ids), headers: { 'Content-Type': 'application/json', }, @@ -27,13 +27,13 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { ); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/media/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -61,12 +61,12 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MediaTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -74,19 +74,19 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaResource.getTreeMediaChildren({ - parentKey, + parentId, }) ); } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MediaTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { + async getItems(ids: Array) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -94,7 +94,7 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MediaResource.getTreeMediaItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts index 66676ea129..81224bde73 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace-edit.element.ts @@ -28,7 +28,7 @@ export class UmbMediaWorkspaceEditElement extends UmbLitElement { ]; @state() - _key?: string; + _id?: string; #umbWorkspaceContext?: UmbMediaWorkspaceContext; @@ -37,23 +37,23 @@ export class UmbMediaWorkspaceEditElement extends UmbLitElement { this.consumeContext(UMB_ENTITY_WORKSPACE_CONTEXT, (instance) => { this.#umbWorkspaceContext = instance as UmbMediaWorkspaceContext; - this.#observeKey(); + this.#observeId(); }); } - #observeKey() { + #observeId() { if (!this.#umbWorkspaceContext) return; - this.observe(this.#umbWorkspaceContext.data, (data) => (this._key = data?.key)); + this.observe(this.#umbWorkspaceContext.data, (data) => (this._id = data?.id)); } render() { - if (!this._key) return nothing; + if (!this._id) return nothing; return html` + unique="${this._id}"> `; } } 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 9b689787aa..5bd0d9c6e4 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 @@ -22,9 +22,9 @@ export class UmbMediaWorkspaceContext return this.#data.getValue(); } - // TODO: this should be async because it can only return the key if the data is loaded. - getEntityKey() { - return this.getData()?.key || ''; + // TODO: this should be async because it can only return the id if the data is loaded. + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -47,15 +47,15 @@ export class UmbMediaWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -72,8 +72,8 @@ export class UmbMediaWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index cc3e954a76..eb12659f04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMediaWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts index 82e5edea53..c294b9dc31 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts @@ -1,6 +1,7 @@ import './media-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data as mediaNodes } from '../../../../core/mocks/data/media.data'; import type { UmbMediaWorkspaceElement } from './media-workspace.element'; @@ -11,5 +12,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 70b5f760b5..9a463fa34f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -54,20 +54,20 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { data, error }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented' }; return { data: undefined, error }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); return { data, error }; } @@ -77,14 +77,14 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAIL @@ -94,16 +94,16 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return this.#detailSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; // TODO: should we show a notification if the key is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#store?.append(data); @@ -137,7 +137,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { error }; } - const { error } = await this.#detailSource.update(memberGroup.key, memberGroup); + const { error } = await this.#detailSource.update(memberGroup.id, memberGroup); if (!error) { const notification = { data: { message: `Member group '${memberGroup.name} saved` } }; @@ -145,20 +145,20 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep } this.#store?.append(memberGroup); - this.#treeStore?.updateItem(memberGroup.key, { name: memberGroup.name }); + this.#treeStore?.updateItem(memberGroup.id, { name: memberGroup.name }); return { error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + if (!id) { + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Document deleted` } }; @@ -168,8 +168,8 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts index 5e24666945..38fd8ede11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts @@ -11,7 +11,7 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; * @description - Data Store for Member Groups */ export class UmbMemberGroupStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts index 379268de87..223f4b443a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts @@ -50,17 +50,17 @@ export class UmbMemberGroupDetailServerDataSource implements UmbDataSource) { - if (!keys || keys.length === 0) { + async getItems(ids: Array) { + if (!ids || ids.length === 0) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { error }; } @@ -56,7 +56,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, MemberGroupResource.getTreeMemberGroupItem({ - key: keys, + id: ids, }) ); } 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 a59fd3ec92..abd0d7d9ba 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 @@ -22,8 +22,8 @@ export class UmbWorkspaceMemberGroupContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -41,7 +41,7 @@ export class UmbWorkspaceMemberGroupContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.#data.next(data); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index 674512ad7f..d97a7067e1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -29,11 +29,11 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts index ac44105f27..404d9313ca 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.stories.ts @@ -14,5 +14,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts index 31f73ba2a1..a8e5d16e0a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/views/info/workspace-view-member-group-info.element.ts @@ -63,7 +63,7 @@ export class UmbWorkspaceViewMemberGroupInfoElement extends UmbLitElement { return html` -
    ${this._memberGroup?.key}
    +
    ${this._memberGroup?.id}
    `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 81eaa12de2..2226ee91ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -60,34 +60,34 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -95,14 +95,14 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS @@ -112,16 +112,16 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return this.#detailSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailSource.requestByKey(key); + const { data, error } = await this.#detailSource.requestById(id); if (data) { this.#store?.append(data); @@ -129,15 +129,15 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { data, error }; } - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Member type deleted` } }; @@ -147,8 +147,8 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a member type is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -159,7 +159,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // TODO: should we show a notification if the MemberType is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!detail || !detail.key) { + if (!detail || !detail.id) { const error: ProblemDetailsModel = { title: 'Member type is missing' }; return { error }; } @@ -175,7 +175,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, // Consider to look up the data before fetching from the server // Consider notify a workspace if a member type is updated in the store while someone is editing it. this.#store?.append(detail); - this.#treeStore?.updateItem(detail.key, { name: detail.name }); + this.#treeStore?.updateItem(detail.id, { name: detail.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts index 7624273435..b9afd506a2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts @@ -11,7 +11,7 @@ import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Member Types */ export class UmbMemberTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index b0e33984ed..6a13f71f39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -33,7 +33,7 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< * @return {*} * @memberof UmbMemberTypeDetailServerDataSource */ - requestByKey(key: string) { + requestById(key: string) { //return tryExecuteAndNotify(this.#host, MemberTypeResource.getMemberTypeByKey({ key })); // TODO => use backend cli when available. return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/member-group/${key}`)) as any; @@ -46,18 +46,18 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< * @memberof UmbMemberTypeDetailServerDataSource */ async save(memberType: MemberTypeDetails) { - if (!memberType.key) { + if (!memberType.id) { const error: ProblemDetailsModel = { title: 'MemberType key is missing' }; return { error }; } - const payload = { key: memberType.key, requestBody: memberType }; + const payload = { key: memberType.id, requestBody: memberType }; //return tryExecuteAndNotify(this.#host, MemberTypeResource.putMemberTypeByKey(payload)); // TODO => use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/member-type/${memberType.key}`, { + fetch(`/umbraco/management/api/v1/member-type/${memberType.id}`, { method: 'PUT', body: JSON.stringify(payload), headers: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 6202393162..a8e5ae1e6e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -32,11 +32,11 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof MemberTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { + async getChildrenOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented for Member Type' }; return { error }; } @@ -47,16 +47,16 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof MemberTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids || ids.length === 0) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, MemberTypeResource.getTreeMemberTypeItem({ - key: keys, + id: ids, }) ); } 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 b20ae7528e..d78226c9b3 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 @@ -19,7 +19,7 @@ export class UmbMemberTypeWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); @@ -37,8 +37,8 @@ export class UmbMemberTypeWorkspaceContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -64,8 +64,8 @@ export class UmbMemberTypeWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index a5e1593549..830a0ff7cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index b110fcfbe8..973f79f5c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -13,37 +13,37 @@ import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/stor * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase implements UmbEntityDetailStore { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); public groups = this.#data.asObservable(); constructor(private host: UmbControllerHostElement) { super(host, UMB_MEMBER_STORE_CONTEXT_TOKEN.toString()); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return {} as MemberDetails; } /** - * @description - Request a Member by key. The Member is added to the store and is returned as an Observable. - * @param {string} key + * @description - Request a Member by id. The Member is added to the store and is returned as an Observable. + * @param {string} id * @return {*} {(Observable)} * @memberof UmbMemberStore */ - getByKey(key: string): Observable { - // tryExecuteAndNotify(this.host, MemberResource.getMemberByKey({ key })).then(({ data }) => { + getByKey(id: string): Observable { + // tryExecuteAndNotify(this.host, MemberResource.getMemberByKey({ id })).then(({ data }) => { // if (data) {} // this.#data.appendOne(data); // } // }); // temp until Resource is updated - const member = umbMemberData.getByKey(key); + const member = umbMemberData.getById(id); if (member) { this.#data.appendOne(member); } - return createObservablePart(this.#data, (members) => members.find((member) => member.key === key) as MemberDetails); + return createObservablePart(this.#data, (members) => members.find((member) => member.id === id) as MemberDetails); } async save(member: Array): Promise { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts index b0e6c529c6..cf91bf0bf9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts @@ -53,20 +53,20 @@ export class UmbMemberRepository implements UmbTreeRepository { return { data, error }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented' }; return { data: undefined, error }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#dataSource.getItems(keys); + const { data, error } = await this.#dataSource.getItems(ids); return { data, error }; } @@ -76,13 +76,13 @@ export class UmbMemberRepository implements UmbTreeRepository { return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts index 518d0b5c47..4b01b1a8d8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts @@ -11,7 +11,7 @@ import type { MemberDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts index b22acf103c..b61ee911bf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts @@ -38,21 +38,21 @@ export class MemberTreeServerDataSource implements MemberTreeDataSource { * @return {*} * @memberof MemberTreeServerDataSource */ - async getItems(keys: Array) { + async getItems(ids: Array) { const response = await fetch('/umbraco/management/api/v1/tree/member/item'); const data = await response.json(); return { data, error: undefined }; - // if (keys) { - // const error: ProblemDetailsModel = { title: 'Keys are missing' }; + // if (ids) { + // const error: ProblemDetailsModel = { title: 'Ids are missing' }; // return { error }; // } // return tryExecuteAndNotify( // this.#host, // MemberResource.getTreeMemberItem({ - // key: keys, + // id: ids, // }) // ); } 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 7f7367ced3..3e9ca61b6a 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 @@ -16,7 +16,7 @@ export class UmbMemberWorkspaceContext return 'member'; } - getEntityKey() { + getEntityId() { return '1234'; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index 5b76fa0e97..57e37d3dc3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -25,11 +25,11 @@ export class UmbMemberWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts index ebe1cce2ce..2af3d29bf2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.stories.ts @@ -14,5 +14,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 8903993ffb..218a18b67d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -62,17 +62,14 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #getPackageCreated() { if (!this.entityKey) return; - const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByKey({ key: this.entityKey })); + const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedById({ id: this.entityKey })); if (!data) return; this._package = data as PackageDefinitionResponseModel; } async #download() { - if (!this._package?.key) return; - const response = await tryExecuteAndNotify( - this, - PackageResource.getPackageCreatedByKeyDownload({ key: this._package.key }) - ); + if (!this._package?.id) return; + await tryExecuteAndNotify(this, PackageResource.getPackageCreatedByIdDownload({ id: this._package.id })); } #nameDefined() { @@ -94,10 +91,10 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { async #update() { if (!this.#nameDefined()) return; - if (!this._package?.key) return; + if (!this._package?.id) return; const response = await tryExecuteAndNotify( this, - PackageResource.putPackageCreatedByKey({ key: this._package.key, requestBody: this._package }) + PackageResource.putPackageCreatedById({ id: this._package.id, requestBody: this._package }) ); if (response.error) return; @@ -135,13 +132,13 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { #renderActions() { return html`
    - ${this._package?.key + ${this._package?.id ? html` Download ` : nothing} @@ -219,11 +216,9 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { return html`
    + (this._package.mediaIds = (e.target as UmbInputMediaPickerElement).selectedKeys)}"> { routes.push({ - path: `${workspace.meta.entityType}/:key`, + path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.key; + (el as any).entityKey = info.match.params.id; }); }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts index 11cd97a2fc..ced8c1afc8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/packages-created-overview.element.ts @@ -95,7 +95,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { ${repeat( this._createdPackages, - (item) => item.key, + (item) => item.id, (item) => this.#renderPackageItem(item) )} @@ -113,8 +113,8 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { } #packageBuilder(p: PackageDefinitionResponseModel) { - if (!p.key) return; - window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.key}`); + if (!p.id) return; + window.history.pushState({}, '', `/section/packages/view/created/package-builder/${p.id}`); } #renderPagination() { @@ -133,7 +133,7 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { } async #deletePackage(p: PackageDefinitionResponseModel) { - if (!p.key) return; + if (!p.id) return; const modalHandler = this._modalContext?.open(UMB_CONFIRM_MODAL, { color: 'danger', headline: `Remove ${p.name}?`, @@ -143,9 +143,9 @@ export class UmbPackagesCreatedOverviewElement extends UmbLitElement { await modalHandler?.onSubmit(); - const { error } = await tryExecuteAndNotify(this, PackageResource.deletePackageCreatedByKey({ key: p.key })); + const { error } = await tryExecuteAndNotify(this, PackageResource.deletePackageCreatedById({ id: p.id })); if (error) return; - const index = this._createdPackages.findIndex((x) => x.key === p.key); + const index = this._createdPackages.findIndex((x) => x.id === p.id); this._createdPackages.splice(index, 1); this.requestUpdate(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts index 97459331cf..8480c9d534 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group.element.ts @@ -87,7 +87,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { private _checks?: HealthCheckModel[]; @state() - private _keyResults?: HealthCheckWithResultPresentationModel[]; + private _idResults?: HealthCheckWithResultPresentationModel[]; private _api?: UmbHealthCheckContext; @@ -106,7 +106,7 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { }); this._api?.results.subscribe((results) => { - this._keyResults = results?.checks; + this._idResults = results?.checks; }); }); } @@ -143,18 +143,18 @@ export class UmbDashboardHealthCheckGroupElement extends UmbLitElement { ${this._group?.checks?.map((check) => { return html`

    ${check.description}

    - ${check.key ? this.renderCheckResults(check.key) : nothing} + ${check.id ? this.renderCheckResults(check.id) : nothing}
    `; })}
    `; } - renderCheckResults(key: string) { - if (!this._keyResults) { + renderCheckResults(id: string) { + if (!this._idResults) { return nothing; } - const checkResults = this._keyResults.find((x) => x.key === key); + const checkResults = this._idResults.find((x) => x.id === id); if (!checkResults) { return nothing; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index d08e01a230..8f93aa9f09 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -77,26 +77,26 @@ export class UmbDataTypeRepository return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async requestTreeItemsOf(parentId: string | null) { + if (!parentId) throw new Error('Parent id is missing'); await this.#init; - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { - if (!keys) throw new Error('Keys are missing'); + async requestTreeItems(ids: Array) { + if (!ids) throw new Error('Keys are missing'); await this.#init; - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -104,31 +104,31 @@ export class UmbDataTypeRepository return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); + async treeItemsOf(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent id is missing'); await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: - async createScaffold(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); + async createScaffold(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent id is missing'); await this.#init; - return this.#detailSource.createScaffold(parentKey); + return this.#detailSource.createScaffold(parentId); } - async requestByKey(key: string) { - if (!key) throw new Error('Key is missing'); + async requestById(id: string) { + if (!id) throw new Error('Key is missing'); await this.#init; - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#detailStore?.append(data); @@ -137,16 +137,16 @@ export class UmbDataTypeRepository return { data, error }; } - async byKey(key: string) { - if (!key) throw new Error('Key is missing'); + async byId(id: string) { + if (!id) throw new Error('Key is missing'); await this.#init; - return this.#detailStore!.byKey(key); + return this.#detailStore!.byId(id); } // Could potentially be general methods: async create(dataType: ItemType) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type id is missing'); await this.#init; @@ -165,11 +165,11 @@ export class UmbDataTypeRepository async save(dataType: ItemType) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type id is missing'); await this.#init; - const { error } = await this.#detailSource.update(dataType.key, dataType); + const { error } = await this.#detailSource.update(dataType.id, dataType); if (!error) { const notification = { data: { message: `Data Type saved` } }; @@ -180,7 +180,7 @@ export class UmbDataTypeRepository // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#detailStore?.append(dataType); - this.#treeStore?.updateItem(dataType.key, { name: dataType.name }); + this.#treeStore?.updateItem(dataType.id, { name: dataType.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -188,11 +188,11 @@ export class UmbDataTypeRepository // General: - async delete(key: string) { - if (!key) throw new Error('Data Type key is missing'); + async delete(id: string) { + if (!id) throw new Error('Data Type id is missing'); await this.#init; - const { error } = await this.#detailSource.delete(key); + const { error } = await this.#detailSource.delete(id); if (!error) { const notification = { data: { message: `Data Type deleted` } }; @@ -202,21 +202,21 @@ export class UmbDataTypeRepository // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([key]); - this.#treeStore?.removeItem(key); + this.#detailStore?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; } // folder - async createFolderScaffold(parentKey: string | null) { - if (parentKey === undefined) throw new Error('Parent key is missing'); - return this.#folderSource.createScaffold(parentKey); + async createFolderScaffold(parentId: string | null) { + if (parentId === undefined) throw new Error('Parent id is missing'); + return this.#folderSource.createScaffold(parentId); } - // TODO: temp create type until backend is ready. Remove the key addition when new types are generated. - async createFolder(folderRequest: CreateFolderRequestModel & { key?: string | undefined }) { + // TODO: temp create type until backend is ready. Remove the id addition when new types are generated. + async createFolder(folderRequest: CreateFolderRequestModel & { id?: string | undefined }) { if (!folderRequest) throw new Error('folder request is missing'); await this.#init; @@ -226,9 +226,9 @@ export class UmbDataTypeRepository if (!error) { const treeItem: FolderTreeItemResponseModel = { $type: 'FolderTreeItemResponseModel', - parentKey: folderRequest.parentKey, + parentId: folderRequest.parentId, name: folderRequest.name, - key: folderRequest.key, + id: folderRequest.id, isFolder: true, isContainer: false, type: 'data-type', @@ -242,35 +242,35 @@ export class UmbDataTypeRepository return { error }; } - async deleteFolder(key: string) { - if (!key) throw new Error('Key is missing'); + async deleteFolder(id: string) { + if (!id) throw new Error('Key is missing'); - const { error } = await this.#folderSource.delete(key); + const { error } = await this.#folderSource.delete(id); if (!error) { - this.#treeStore?.removeItem(key); + this.#treeStore?.removeItem(id); } return { error }; } - async updateFolder(key: string, folder: FolderModelBaseModel) { - if (!key) throw new Error('Key is missing'); + async updateFolder(id: string, folder: FolderModelBaseModel) { + if (!id) throw new Error('Key is missing'); if (!folder) throw new Error('Folder data is missing'); - const { error } = await this.#folderSource.update(key, folder); + const { error } = await this.#folderSource.update(id, folder); if (!error) { - this.#treeStore?.updateItem(key, { name: folder.name }); + this.#treeStore?.updateItem(id, { name: folder.name }); } return { error }; } - async requestFolder(key: string) { - if (!key) throw new Error('Key is missing'); + async requestFolder(id: string) { + if (!id) throw new Error('Key is missing'); - const { data, error } = await this.#folderSource.get(key); + const { data, error } = await this.#folderSource.get(id); if (data) { this.#treeStore?.appendItems([data]); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index c50fc3644c..71db9b0013 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -13,7 +13,7 @@ export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbDataTypeStore. @@ -35,11 +35,11 @@ export class UmbDataTypeStore extends UmbStoreBase { /** * Append a data-type to the store - * @param {key} DataTypeModel key. + * @param {id} DataTypeModel id. * @memberof UmbDataTypeStore */ - byKey(key: DataTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byId(id: DataTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -47,7 +47,7 @@ export class UmbDataTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbDataTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts index ddeea07a1a..880ab05097 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts @@ -29,16 +29,16 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Creates a Data Type folder with the given key from the server - * @param {string} key + * @param {string} parentId * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { const scaffold: FolderReponseModel = { $type: 'FolderReponseModel', name: '', - key: uuidv4(), - parentKey, + id: uuidv4(), + parentId, }; return { data: scaffold }; @@ -46,16 +46,16 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Fetches a Data Type folder with the given key from the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async get(key: string) { - if (!key) throw new Error('Key is missing'); + async get(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getDataTypeFolderByKey({ - key, + DataTypeResource.getDataTypeFolderById({ + id: id, }) ); } @@ -82,13 +82,13 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { * @return {*} * @memberof UmbDataTypeFolderServerDataSource */ - async update(key: string, folder: FolderModelBaseModel) { - if (!key) throw new Error('Key is missing'); - if (!key) throw new Error('Folder data is missing'); + async update(id: string, folder: FolderModelBaseModel) { + if (!id) throw new Error('Key is missing'); + if (!id) throw new Error('Folder data is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeFolderByKey({ - key, + DataTypeResource.putDataTypeFolderById({ + id: id, requestBody: folder, }) ); @@ -96,16 +96,16 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { /** * Deletes a Data Type folder with the given key on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async delete(key: string) { - if (!key) throw new Error('Key is missing'); + async delete(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.deleteDataTypeFolderByKey({ - key, + DataTypeResource.deleteDataTypeFolderById({ + id: id, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index aab943d402..2968de03b3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -18,7 +18,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; */ export class UmbDataTypeServerDataSource implements - UmbDataSource + UmbDataSource { #host: UmbControllerHostElement; @@ -33,31 +33,31 @@ export class UmbDataTypeServerDataSource /** * Fetches a Data Type with the given key from the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async get(key: string) { - if (!key) throw new Error('Key is missing'); + async get(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getDataTypeByKey({ - key, + DataTypeResource.getDataTypeById({ + id: id, }) ); } /** * Creates a new Data Type scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDataTypeServerDataSource */ - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { const data: DataTypeResponseModel = { $type: '', - parentKey: parentKey, - key: uuidv4(), + parentId: parentId, + id: uuidv4(), }; return { data }; @@ -69,9 +69,9 @@ export class UmbDataTypeServerDataSource * @return {*} * @memberof UmbDataTypeServerDataSource */ - async insert(dataType: CreateDataTypeRequestModel & { key: string }) { + async insert(dataType: CreateDataTypeRequestModel & { id: string }) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.key) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type key is missing'); tryExecuteAndNotify( this.#host, @@ -87,13 +87,13 @@ export class UmbDataTypeServerDataSource * @return {*} * @memberof UmbDataTypeServerDataSource */ - async update(key: string, data: DataTypeModelBaseModel) { - if (!key) throw new Error('Key is missing'); + async update(id: string, data: DataTypeModelBaseModel) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.putDataTypeByKey({ - key, + DataTypeResource.putDataTypeById({ + id: id, requestBody: data, }) ); @@ -101,17 +101,17 @@ export class UmbDataTypeServerDataSource /** * Deletes a Data Type on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource */ - async delete(key: string) { - if (!key) throw new Error('Key is missing'); + async delete(id: string) { + if (!id) throw new Error('Key is missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.deleteDataTypeByKey({ - key, + DataTypeResource.deleteDataTypeById({ + id: id, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index c2582f00e8..1930d90f4c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -32,17 +32,17 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbDataTypeTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) throw new Error('Parent key is missing'); + async getChildrenOf(parentId: string | null) { + if (!parentId) throw new Error('Parent id is missing'); return tryExecuteAndNotify( this.#host, DataTypeResource.getTreeDataTypeChildren({ - parentKey, + parentId, }) ); } @@ -53,12 +53,12 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { * @return {*} * @memberof UmbDataTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) throw new Error('Keys are missing'); + async getItems(ids: Array) { + if (!ids) throw new Error('Ids are missing'); return tryExecuteAndNotify( this.#host, DataTypeResource.getTreeDataTypeItem({ - key: keys, + id: ids, }) ); } 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 4ca1a0b7f4..a1e6fd139a 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 @@ -12,22 +12,22 @@ export class UmbDataTypeWorkspaceContext #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); - key = this.#data.getObservablePart((data) => data?.key); + id = this.#data.getObservablePart((data) => data?.id); constructor(host: UmbControllerHostElement) { super(host, new UmbDataTypeRepository(host)); } - async load(key: string) { - const { data } = await this.repository.requestByKey(key); + async load(id: string) { + const { data } = await this.repository.requestById(id); if (data) { this.setIsNew(false); this.#data.update(data); } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); this.setIsNew(true); this.#data.next(data); return { data }; @@ -37,8 +37,8 @@ export class UmbDataTypeWorkspaceContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -79,8 +79,8 @@ export class UmbDataTypeWorkspaceContext this.setIsNew(false); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 69ddcdeed1..93455e437f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -13,37 +13,30 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { #workspaceContext = new UmbDataTypeWorkspaceContext(this); - #routerPath? = ''; - #element = document.createElement('umb-data-type-workspace-edit-element'); - #key = ''; @state() _routes: IRoute[] = [ { - path: 'create/:parentKey', + path: 'create/:parentId', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - const parentKey = info.match.params.parentKey; - this.#workspaceContext.createScaffold(parentKey); + const parentId = info.match.params.parentId; + this.#workspaceContext.createScaffold(parentId); }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; render() { - return html` { - this.#routerPath = event.target.absoluteRouterPath; - }}>`; + return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts index 3b560f8660..f97b00867b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts @@ -3,6 +3,7 @@ import './data-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/data-type.data'; import type { UmbDataTypeWorkspaceElement } from './data-type-workspace.element'; @@ -14,5 +15,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index 6e88882dd4..0bd1802687 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -42,8 +42,8 @@ export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { private _renderGeneralInfo() { return html` - -
    ${this._dataType?.key}
    + +
    ${this._dataType?.id}
    ${this._dataType?.propertyEditorAlias}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts index baa33db9d4..61065379ef 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language-root/language-root-workspace.element.ts @@ -83,7 +83,7 @@ export class UmbLanguageRootWorkspaceElement extends UmbLitElement { #createTableItems(languages: Array) { this._tableItems = languages.map((language) => { return { - key: language.isoCode ?? '', + id: language.isoCode ?? '', icon: 'umb:globe', data: [ { 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 af5b2d0fc8..5a7ce69293 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 @@ -45,7 +45,7 @@ export class UmbLanguageWorkspaceContext } // TODO: Convert to uniques: - getEntityKey() { + getEntityId() { return this.#data.getValue()?.isoCode; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts index e0b286c9a6..922c84f72b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-types-chart.element.ts @@ -116,6 +116,7 @@ export class UmbLogViewerLogTypesChartElement extends UmbLitElement { }); } + // TODO: Stop using this complex code in render methods, instead changes to _logLevelCount should trigger a state prop containing the keys. And then try to make use of the repeat LIT method: render() { return html` diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index e098faaefd..86e30adfbf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -67,22 +67,22 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -90,38 +90,38 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { - throw new Error('Parent key is missing'); + if (!parentId) { + throw new Error('Parent id is missing'); } - return this.#detailDataSource.createScaffold(parentKey); + return this.#detailDataSource.createScaffold(parentId); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#detailStore?.append(data); @@ -130,9 +130,9 @@ export class UmbRelationTypeRepository implements UmbTreeRepository([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbRelationTypeStore. @@ -35,11 +35,11 @@ export class UmbRelationTypeStore extends UmbStoreBase { /** * Append a relation-type to the store - * @param {key} RelationTypeResponseModel key. + * @param {id} RelationTypeResponseModel id. * @memberof UmbRelationTypeStore */ - byKey(key: RelationTypeResponseModel['key']) { - return this.#data.getObservablePart((x) => x.find((y) => y.key === key)); + byKey(id: RelationTypeResponseModel['id']) { + return this.#data.getObservablePart((x) => x.find((y) => y.id === id)); } /** @@ -47,7 +47,7 @@ export class UmbRelationTypeStore extends UmbStoreBase { * @param {string[]} uniques * @memberof UmbRelationTypeStore */ - remove(uniques: Array) { + remove(uniques: Array) { this.#data.remove(uniques); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts index 7f30c96a2c..80ba73c8d4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -30,32 +30,32 @@ export class UmbRelationTypeServerDataSource } /** - * Fetches a Relation Type with the given key from the server - * @param {string} key + * Fetches a Relation Type with the given id from the server + * @param {string} id * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async get(key: string) { - if (!key) { + async get(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, - RelationTypeResource.getRelationTypeByKey({ - key, + RelationTypeResource.getRelationTypeById({ + id, }) ); } /** * Creates a new Relation Type scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { const data: RelationTypeResponseModel = {}; return { data }; @@ -68,7 +68,7 @@ export class UmbRelationTypeServerDataSource * @memberof UmbRelationTypeServerDataSource */ async insert(relationType: CreateRelationTypeRequestModel) { - if (!relationType.key) throw new Error('RelationType key is missing'); + if (!relationType.id) throw new Error('RelationType id is missing'); return tryExecuteAndNotify( this.#host, @@ -84,13 +84,13 @@ export class UmbRelationTypeServerDataSource * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async update(key: string, relationType: UpdateRelationTypeRequestModel) { - if (!key) throw new Error('RelationType key is missing'); + async update(id: string, relationType: UpdateRelationTypeRequestModel) { + if (!id) throw new Error('RelationType id is missing'); return tryExecuteAndNotify( this.#host, - RelationTypeResource.putRelationTypeByKey({ - key, + RelationTypeResource.putRelationTypeById({ + id, requestBody: relationType, }) ); @@ -98,20 +98,20 @@ export class UmbRelationTypeServerDataSource /** * Deletes a Relation Type on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbRelationTypeServerDataSource */ - async delete(key: string) { - if (!key) { - const error: ProblemDetailsModel = { title: 'RelationType key is missing' }; + async delete(id: string) { + if (!id) { + const error: ProblemDetailsModel = { title: 'RelationType id is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, - RelationTypeResource.deleteRelationTypeByKey({ - key, + RelationTypeResource.deleteRelationTypeById({ + id, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 75a1243816..bb9b460799 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -14,9 +14,9 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou #host: UmbControllerHostElement; // TODO: how do we handle trashed items? - async trashItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'RelationType keys is missing' }; + async trashItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'RelationType ids is missing' }; return { error }; } @@ -25,20 +25,20 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou return tryExecuteAndNotify( this.#host, RelationTypeResource.deleteRelationTypeByKey({ - key: keys, + id: ids, }) ); */ return Promise.resolve({ error: null, data: null }); } - async moveItems(keys: Array, destination: string) { + async moveItems(ids: Array, destination: string) { // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, fetch('/umbraco/management/api/v1/relation-type/move', { method: 'POST', - body: JSON.stringify({ keys, destination }), + body: JSON.stringify({ ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -66,20 +66,20 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou /** * Fetches the items for the given keys from the server - * @param {Array} keys + * @param {Array} ids * @return {*} * @memberof RelationTypeTreeServerDataSource */ - async getItems(keys: Array) { - if (keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, RelationTypeResource.getTreeRelationTypeItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index dc75e3a0ef..9553b261eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -13,14 +13,14 @@ export class UmbRelationTypeWorkspaceContext #data = new ObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); - key = this.#data.getObservablePart((data) => data?.key); + id = this.#data.getObservablePart((data) => data?.id); constructor(host: UmbControllerHostElement) { super(host, new UmbRelationTypeRepository(host)); } - async load(key: string) { - const { data } = await this.repository.requestByKey(key); + async load(id: string) { + const { data } = await this.repository.requestById(id); if (data) { this.setIsNew(false); @@ -28,8 +28,8 @@ export class UmbRelationTypeWorkspaceContext } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); @@ -39,8 +39,8 @@ export class UmbRelationTypeWorkspaceContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -63,14 +63,12 @@ export class UmbRelationTypeWorkspaceContext this.setIsNew(false); } - update(key: K, value: RelationTypeBaseModel[K]) { - console.log('update', key, value); - - this.#data.next({ ...this.#data.value, [key]: value }); + update(id: K, value: RelationTypeBaseModel[K]) { + this.#data.next({ ...this.#data.value, [id]: value }); } - async delete(key: string) { - await this.repository.delete(key); + async delete(id: string) { + await this.repository.delete(id); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 3e36f0dc74..3827c75a7e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -25,19 +25,19 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { @state() _routes: IRoute[] = [ { - path: 'create/:parentKey', + path: 'create/:parentId', component: () => this.#element, setup: async (component: HTMLElement, info: IRoutingInfo) => { - const parentKey = info.match.params.parentKey; - this.#workspaceContext.createScaffold(parentKey); + const parentId = info.match.params.parentId; + this.#workspaceContext.createScaffold(parentId); }, }, { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts index 0a95080b53..edeb4ef6db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -3,6 +3,7 @@ import './relation-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/relation-type.data'; import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element'; @@ -14,5 +15,5 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index cb700784c9..934f15d8f2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -10,16 +10,6 @@ import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-ap @customElement('umb-relation-type-workspace-view-relation-type') export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitElement { - static styles = [ - UUITextStyles, - css` - :host { - display: block; - margin: var(--uui-size-layout-1); - } - `, - ]; - @state() private _relationType?: RelationTypeResponseModel; @@ -39,10 +29,7 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme return; } - console.log('this._workspaceContext.data', this.#workspaceContext); - this.observe(this.#workspaceContext.data, (relationType) => { - console.log('relationType', relationType); if (!relationType) return; this._relationType = relationType; @@ -86,16 +73,26 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme } #renderParentProperty() { - if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.id) return html`
    ${this._relationType.parentObjectTypeName}
    `; return html``; } #renderChildProperty() { - if (this._relationType?.key) return html`
    ${this._relationType.parentObjectTypeName}
    `; + if (this._relationType?.id) return html`
    ${this._relationType.parentObjectTypeName}
    `; return html``; } + + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-layout-1); + } + `, + ]; } export default UmbRelationTypeWorkspaceViewRelationTypeElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts index 4892950f62..7c334e6c6c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts @@ -145,8 +145,8 @@ const codeSnippets: Record = { } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts index e75fe7d3dc..d690fb3091 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.element.ts @@ -45,6 +45,7 @@ export class UmbExtensionSlotElement extends UmbLitElement { } set props(newVal) { this._props = newVal; + // TODO: we could optimize this so we only re-set the updated props. this.#assignPropsToAllComponents(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts index 5285262242..e70a5fc6b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.element.ts @@ -20,6 +20,7 @@ export class UmbInputCheckboxListElement extends FormControlMixin(UmbLitElement) /** * List of items. */ + // TODO: Could this use a type that we export to ensure TS failure, or hook this up with a type coming from backend? @property() public list: Array<{ key: string; checked: boolean; value: string }> = []; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts index d3ed1de046..cee98bed08 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-checkbox-list/input-checkbox-list.stories.ts @@ -3,26 +3,26 @@ import './input-checkbox-list.element'; import type { UmbInputCheckboxListElement } from './input-checkbox-list.element'; const meta: Meta = { - title: 'Components/Inputs/Checkbox List', - component: 'umb-input-checkbox-list' + title: 'Components/Inputs/Checkbox List', + component: 'umb-input-checkbox-list', }; - + export default meta; type Story = StoryObj; - + export const Overview: Story = { - args: { - list: [ - { - key: "isAwesome", - value: "Umbraco is awesome?", - checked: true - }, - { - key: "attendingCodeGarden", - value: "Attending CodeGarden?", - checked: false - }, - ] - } -}; \ No newline at end of file + args: { + list: [ + { + key: 'isAwesome', + value: 'Umbraco is awesome?', + checked: true, + }, + { + key: 'attendingCodeGarden', + value: 'Attending CodeGarden?', + checked: false, + }, + ], + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index cf5bd39230..60477769a6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -62,20 +62,20 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen maxMessage = 'This field exceeds the allowed amount of items'; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedDocuments(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -92,12 +92,12 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen this.addValidator( 'rangeUnderflow', () => this.minMessage, - () => !!this.min && this._selectedKeys.length < this.min + () => !!this.min && this._selectedIds.length < this.min ); this.addValidator( 'rangeOverflow', () => this.maxMessage, - () => !!this.max && this._selectedKeys.length > this.max + () => !!this.max && this._selectedIds.length > this.max ); this.consumeContext(UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN, (instance) => { @@ -119,16 +119,16 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen if (!this._documentStore) return; // TODO: consider changing this to the list data endpoint when it is available - this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedKeys), (items) => { + this._pickedItemsObserver = this.observe(this._documentStore.items(this._selectedIds), (items) => { this._items = items; }); } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL, { multiple: this.max === 1 ? false : true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -145,7 +145,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen }); await modalHandler?.onSubmit(); - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); } @@ -166,7 +166,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen const tempItem = item as EntityTreeItemResponseModel & { isTrashed: boolean }; return html` - + ${tempItem.isTrashed ? html` Trashed ` : nothing} this._removeItem(item)} label="Remove document ${item.name}">Remove diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index 1ab2fc05c7..ef1b4b96d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -29,20 +29,20 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl ]; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedDocuments(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -74,7 +74,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl if (!this._documentTypeStore) return; // TODO: consider changing this to the list data endpoint when it is available - this._pickedItemsObserver = this.observe(this._documentTypeStore.items(this._selectedKeys), (items) => { + this._pickedItemsObserver = this.observe(this._documentTypeStore.items(this._selectedIds), (items) => { this._items = items; }); } @@ -83,7 +83,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_TYPE_PICKER_MODAL, { multiple: true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -100,7 +100,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl }); await modalHandler?.onSubmit(); - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); } @@ -121,7 +121,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl const tempItem = item as DocumentTypeResponseModel & { isTrashed: boolean }; return html` - + ${tempItem.isTrashed ? html` Trashed ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index d14afe852b..1a0960c72b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -73,20 +73,20 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) maxMessage = 'This field exceeds the allowed amount of items'; // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. - private _selectedKeys: Array = []; + private _selectedIds: Array = []; public get selectedKeys(): Array { - return this._selectedKeys; + return this._selectedIds; } - public set selectedKeys(keys: Array) { - this._selectedKeys = keys; - super.value = keys.join(','); + public set selectedKeys(ids: Array) { + this._selectedIds = ids; + super.value = ids.join(','); this._observePickedMedias(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedKeys = keysString.split(/[ ,]+/); + public set value(idsString: string) { + if (idsString !== this._value) { + this.selectedKeys = idsString.split(/[ ,]+/); } } @@ -103,12 +103,12 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) this.addValidator( 'rangeUnderflow', () => this.minMessage, - () => !!this.min && this._selectedKeys.length < this.min + () => !!this.min && this._selectedIds.length < this.min ); this.addValidator( 'rangeOverflow', () => this.maxMessage, - () => !!this.max && this._selectedKeys.length > this.max + () => !!this.max && this._selectedIds.length > this.max ); this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { @@ -129,7 +129,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) this._pickedItemsObserver?.destroy(); // TODO: consider changing this to the list data endpoint when it is available - const { asObservable } = await this._repository.requestTreeItems(this._selectedKeys); + const { asObservable } = await this._repository.requestTreeItems(this._selectedIds); if (!asObservable) return; @@ -142,7 +142,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_MEDIA_PICKER_MODAL, { multiple: this.max === 1 ? false : true, - selection: [...this._selectedKeys], + selection: [...this._selectedIds], }); modalHandler?.onSubmit().then(({ selection }: any) => { @@ -159,7 +159,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) }); modalHandler?.onSubmit().then(() => { - const newSelection = this._selectedKeys.filter((value) => value !== item.key); + const newSelection = this._selectedIds.filter((value) => value !== item.id); this._setSelection(newSelection); }); } @@ -187,7 +187,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) return html` ${tempItem.isTrashed ? html` Trashed ` : nothing} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts index 3c7320e1a6..aa47ff72d6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-template-picker/input-template-picker.element.ts @@ -119,7 +119,7 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen }); } - #removeTemplate(key: string) { + #removeTemplate(id: string) { /* TODO: We need to follow up on this experience. Could we test if this document type is in use, if so we should have a dialog notifying the user(Dialog, are you sure...) about that we might will break something? @@ -129,14 +129,14 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen In current backoffice we just prevent deleting a default when there are other templates. But if its the only one its okay. This is a weird experience, so we should make something that makes more sense. BTW. its weird cause the damage of removing the default template is equally bad when there is one or more templates. */ - this.allowedKeys = this.allowedKeys.filter((x) => x !== key); + this.allowedKeys = this.allowedKeys.filter((x) => x !== id); } #openTemplate(e: CustomEvent) { - const key = (e.target as UmbTemplateCardElement).value; + const id = (e.target as UmbTemplateCardElement).value; this._modalContext?.open(UMB_TEMPLATE_MODAL, { - key: key as string, + id: id as string, language: 'razor', }); } @@ -148,14 +148,14 @@ export class UmbInputTemplatePickerElement extends FormControlMixin(UmbLitElemen + ?default="${template.id === this.defaultKey}"> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts index ad3a644846..c7ecf36862 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user-group/input-user-group.element.ts @@ -80,7 +80,7 @@ export class UmbInputPickerUserGroupElement extends UmbInputListBaseElement { ${userGroup.name}
    this.removeFromSelection(userGroup.key)} + @click=${() => this.removeFromSelection(userGroup.id)} label="remove" color="danger"> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts index 636696bfed..762edbc5cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-user/input-user.element.ts @@ -76,7 +76,7 @@ export class UmbPickerUserElement extends UmbInputListBaseElement {
    ${user.name}
    - this.removeFromSelection(user.key)} label="remove" color="danger"> + this.removeFromSelection(user.id)} label="remove" color="danger">
    ` )} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts index 64c634c4ac..588e861041 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/property-type-based-property/property-type-based-property.element.ts @@ -33,8 +33,8 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { public set property(value: PropertyTypeResponseModelBaseModel | undefined) { const oldProperty = this._property; this._property = value; - if (this._property?.dataTypeKey !== oldProperty?.dataTypeKey) { - this._observeDataType(this._property?.dataTypeKey); + if (this._property?.dataTypeId !== oldProperty?.dataTypeId) { + this._observeDataType(this._property?.dataTypeId); this._observeProperty(); } } @@ -95,13 +95,13 @@ export class UmbPropertyTypeBasedPropertyElement extends UmbLitElement { ); } - private async _observeDataType(dataTypeKey?: string) { + private async _observeDataType(dataTypeId?: string) { this._dataTypeObserver?.destroy(); - if (dataTypeKey) { + if (dataTypeId) { // Its not technically needed to have await here, this is only to ensure that the data is loaded before we observe it, and thereby only updating the DOM with the latest data. - await this._dataTypeRepository.requestByKey(dataTypeKey); + await this._dataTypeRepository.requestById(dataTypeId); this._dataTypeObserver = this.observe( - await this._dataTypeRepository.byKey(dataTypeKey), + await this._dataTypeRepository.byId(dataTypeId), (dataType) => { this._dataTypeData = dataType?.values || []; this._propertyEditorUiAlias = dataType?.propertyEditorUiAlias || undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts index 192818c781..0ab0b54030 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.element.ts @@ -1,5 +1,5 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, html, LitElement, nothing } from 'lit'; +import { css, html, LitElement } from 'lit'; import { ifDefined } from 'lit/directives/if-defined.js'; import { when } from 'lit/directives/when.js'; import { customElement, property, state } from 'lit/decorators.js'; @@ -7,7 +7,7 @@ import { repeat } from 'lit/directives/repeat.js'; // TODO: move to UI Library - entity actions should NOT be moved to UI Library but stay in an UmbTable element export interface UmbTableItem { - key: string; + id: string; icon?: string; entityType?: string; data: Array; @@ -171,7 +171,7 @@ export class UmbTableElement extends LitElement { private _handleRowCheckboxChange(event: Event, item: UmbTableItem) { const checkboxElement = event.target as HTMLInputElement; - checkboxElement.checked ? this._selectRow(item.key) : this._deselectRow(item.key); + checkboxElement.checked ? this._selectRow(item.id) : this._deselectRow(item.id); } private _handleAllRowsCheckboxChange(event: Event) { @@ -198,7 +198,7 @@ export class UmbTableElement extends LitElement { } private _selectAllRows() { - this.selection = this.items.map((item: UmbTableItem) => item.key); + this.selection = this.items.map((item: UmbTableItem) => item.id); this._selectionMode = true; this.dispatchEvent(new UmbTableSelectedEvent()); } @@ -215,7 +215,7 @@ export class UmbTableElement extends LitElement { ${this._renderHeaderCheckboxCell()} ${this.columns.map((column) => this._renderHeaderCell(column))} - ${repeat(this.items, (item) => item.key, this._renderRow)} + ${repeat(this.items, (item) => item.id, this._renderRow)}
    `; } @@ -259,9 +259,9 @@ export class UmbTableElement extends LitElement { return html` this._selectRow(item.key)} - @unselected=${() => this._deselectRow(item.key)}> + ?selected=${this._isSelected(item.id)} + @selected=${() => this._selectRow(item.id)} + @unselected=${() => this._deselectRow(item.id)}> ${this._renderRowCheckboxCell(item)} ${this.columns.map((column) => this._renderRowCell(column, item))} `; }; @@ -277,7 +277,7 @@ export class UmbTableElement extends LitElement { label="Select Row" @click=${(e: PointerEvent) => e.stopPropagation()} @change=${(event: Event) => this._handleRowCheckboxChange(event, item)} - ?checked="${this._isSelected(item.key)}"> + ?checked="${this._isSelected(item.id)}"> ` )} `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts index d7ac93c25a..f4da64de01 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/table/table.stories.ts @@ -1,13 +1,13 @@ import { Meta, StoryObj } from '@storybook/web-components'; import './table.element'; import { v4 as uuidv4 } from 'uuid'; -import type { UmbTableElement, UmbTableColumn, UmbTableConfig, UmbTableItem } from './table.element' +import type { UmbTableElement, UmbTableColumn, UmbTableConfig, UmbTableItem } from './table.element'; const meta: Meta = { - title: 'Components/Table', - component: 'umb-table', + title: 'Components/Table', + component: 'umb-table', }; - + export default meta; type Story = StoryObj; @@ -26,7 +26,7 @@ const columns: Array = [ const items: Array = [ { - key: uuidv4(), + id: uuidv4(), icon: 'umb:wand', data: [ { @@ -40,7 +40,7 @@ const items: Array = [ ], }, { - key: uuidv4(), + id: uuidv4(), icon: 'umb:document', data: [ { @@ -54,7 +54,7 @@ const items: Array = [ ], }, { - key: uuidv4(), + id: uuidv4(), icon: 'umb:user', data: [ { @@ -70,35 +70,34 @@ const items: Array = [ ]; export const Overview: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: true, hideIcon: false, - } - } + }, + }, }; - export const WithDisallowedSelections: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: false, hideIcon: false, - } - } + }, + }, }; export const WithHiddenIcons: Story = { - args: { + args: { items: items, columns: columns, config: { allowSelection: true, hideIcon: true, - } - } -}; \ No newline at end of file + }, + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts index 50f8cc5484..ec7cbf1f29 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/template-card/template-card.element.ts @@ -15,6 +15,51 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-template-card') export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { + @property({ type: String }) + name = ''; + + @property({ type: Boolean, reflect: true }) + default = false; + + _id = ''; + @property({ type: String }) + public set id(newId: string) { + this._id = newId; + super.value = newId; + } + public get id() { + return this._id; + } + + protected getFormElement() { + return undefined; + } + + #setSelection(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + //this.selected = true; + this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); + } + #openTemplate(e: KeyboardEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dispatchEvent(new CustomEvent('open', { bubbles: true, composed: true })); + } + + render() { + return html`
    + + + ${this.default ? '(Default template)' : 'Set default'} + + +
    `; + } + static styles = [ UUITextStyles, css` @@ -114,51 +159,6 @@ export class UmbTemplateCardElement extends FormControlMixin(UmbLitElement) { } `, ]; - - @property({ type: String }) - name = ''; - - @property({ type: Boolean, reflect: true }) - default = false; - - _key = ''; - @property({ type: String }) - public set key(newKey: string) { - this._key = newKey; - super.value = newKey; - } - public get key() { - return this._key; - } - - protected getFormElement() { - return undefined; - } - - #setSelection(e: KeyboardEvent) { - e.preventDefault(); - e.stopPropagation(); - //this.selected = true; - this.dispatchEvent(new CustomEvent('change-default', { bubbles: true, composed: true })); - } - #openTemplate(e: KeyboardEvent) { - e.preventDefault(); - e.stopPropagation(); - this.dispatchEvent(new CustomEvent('open', { bubbles: true, composed: true })); - } - - render() { - return html`
    - - - ${this.default ? '(Default template)' : 'Set default'} - - -
    `; - } } export default UmbTemplateCardElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts index 6472a47207..62db8e957c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/entity-tree-item/entity-tree-item.context.ts @@ -5,6 +5,6 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api // TODO get unique method from an entity repository static method export class UmbEntityTreeItemContext extends UmbTreeItemContextBase { constructor(host: UmbControllerHostElement) { - super(host, (x: EntityTreeItemResponseModel) => x.key); + super(host, (x: EntityTreeItemResponseModel) => x.id); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts index 8f22454e4e..29608b4f11 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts @@ -93,9 +93,9 @@ export class UmbTreeContextBase implements UmbTreeContext { return this.repository!.requestRootTreeItems(); } - public async requestChildrenOf(parentKey: string | null) { + public async requestChildrenOf(parentId: string | null) { await this.#init; - return this.repository!.requestTreeItemsOf(parentKey); + return this.repository!.requestTreeItemsOf(parentId); } public async rootItems() { @@ -103,8 +103,8 @@ export class UmbTreeContextBase implements UmbTreeContext { return this.repository!.rootTreeItems(); } - public async childrenOf(parentKey: string | null) { + public async childrenOf(parentId: string | null) { await this.#init; - return this.repository!.treeItemsOf(parentKey); + return this.repository!.treeItemsOf(parentId); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts index 3f6df583d9..1c02dd2a20 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts @@ -53,7 +53,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { private _observeInfo() { if (!this._workspaceContext) return; - this._entityKey = this._workspaceContext.getEntityKey(); + this._entityKey = this._workspaceContext.getEntityId(); this._entityType = this._workspaceContext.getEntityType(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index e7ff049ce0..7a491c0aee 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -42,7 +42,7 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { } protected _provideWorkspace() { - const entityKey = this._workspaceContext?.getEntityKey(); + const entityKey = this._workspaceContext?.getEntityId(); const entityType = this._workspaceContext?.getEntityType(); if (entityKey != null && entityType != null) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index c1ee25b071..a4b3b363a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -10,7 +10,7 @@ import { ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/obse import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbEntityDetailStore } from '@umbraco-cms/backoffice/store'; -// Extend entityType base type?, so we are sure to have parentKey? +// Extend entityType base type?, so we are sure to have parentId? // TODO: switch to use EntityDetailItem ? if we can have such type? export class UmbEntityWorkspaceManager< StoreType extends UmbEntityDetailStore, @@ -88,10 +88,10 @@ export class UmbEntityWorkspaceManager< this._observeStore(); }; - create = (parentKey: string | null) => { + create = (parentId: string | null) => { this.#isNew = true; this._entityKey = uuidv4(); - this._createAtParentKey = parentKey; + this._createAtParentKey = parentId; }; save = (): Promise => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts index c7b52f83f7..25b756dfbf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts @@ -20,7 +20,7 @@ export class UmbWorkspaceContainerStructureHelper { private _ownerContainers: PropertyTypeContainerResponseModelBaseModel[] = []; // State containing the merged containers (only one pr. name): - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.id); readonly containers = this.#containers.asObservable(); #hasProperties = new BooleanState(false); @@ -104,11 +104,11 @@ export class UmbWorkspaceContainerStructureHelper { this._ownerContainers.forEach((container) => { new UmbObserverController( this.#host, - this.#workspaceContext!.structure.hasPropertyStructuresOf(container.key!), + this.#workspaceContext!.structure.hasPropertyStructuresOf(container.id!), (hasProperties) => { this.#hasProperties.next(hasProperties); }, - '_observeOwnerHasProperties_' + container.key + '_observeOwnerHasProperties_' + container.id ); }); } @@ -119,9 +119,9 @@ export class UmbWorkspaceContainerStructureHelper { this._ownerContainers.forEach((container) => { new UmbObserverController( this.#host, - this.#workspaceContext!.structure.containersOfParentKey(container.key, this._childType!), + this.#workspaceContext!.structure.containersOfParentKey(container.id, this._childType!), this._insertGroupContainers, - '_observeGroupsOf_' + container.key + '_observeGroupsOf_' + container.id ); }); } 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 a2c6c169e6..9d6b905264 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 @@ -32,7 +32,7 @@ export abstract class UmbWorkspaceContext this.#isNew.next(isNew); } - abstract getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique() + abstract getEntityId(): string | undefined; // COnsider if this should go away now that we have getUnique() abstract getEntityType(): string; // TODO: consider of this should be on the repository because a repo is responsible for one entity type abstract getData(): EntityType | undefined; abstract save(): Promise; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts index 651e18e549..6941cd3daa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -14,7 +14,7 @@ export class UmbWorkspacePropertyStructureHelper { private _isRoot?: boolean; private _containerName?: string; - #propertyStructure = new ArrayState([], (x) => x.key); + #propertyStructure = new ArrayState([], (x) => x.id); readonly propertyStructure = this.#propertyStructure.asObservable(); constructor(host: UmbControllerHostElement) { @@ -62,22 +62,22 @@ export class UmbWorkspacePropertyStructureHelper { this.#host, this.#workspaceContext!.structure.containersByNameAndType(this._containerName, this._containerType), (groupContainers) => { - groupContainers.forEach((group) => this._observePropertyStructureOf(group.key)); + groupContainers.forEach((group) => this._observePropertyStructureOf(group.id)); }, '_observeGroupContainers' ); } } - private _observePropertyStructureOf(groupKey?: string | null) { - if (!this.#workspaceContext || groupKey === undefined) return; + private _observePropertyStructureOf(groupId?: string | null) { + if (!this.#workspaceContext || groupId === undefined) return; new UmbObserverController( this.#host, - this.#workspaceContext.structure.propertyStructuresOf(groupKey), + this.#workspaceContext.structure.propertyStructuresOf(groupId), (properties) => { - // If this need to be able to remove properties, we need to clean out the ones of this group.key before inserting them: - const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerKey !== groupKey); + // If this need to be able to remove properties, we need to clean out the ones of this group.id before inserting them: + const _propertyStructure = this.#propertyStructure.getValue().filter((x) => x.containerId !== groupId); properties?.forEach((property) => { if (!_propertyStructure.find((x) => x.alias === property.alias)) { @@ -93,7 +93,7 @@ export class UmbWorkspacePropertyStructureHelper { // Fire update to subscribers: this.#propertyStructure.next(_propertyStructure); }, - '_observePropertyStructureOfGroup' + groupKey + '_observePropertyStructureOfGroup' + groupId ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index 9b7cb37126..8a7b24dc23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -29,13 +29,13 @@ export class UmbWorkspacePropertyStructureManager(); - #documentTypes = new ArrayState([], (x) => x.key); + #documentTypes = new ArrayState([], (x) => x.id); readonly documentTypes = this.#documentTypes.asObservable(); private readonly _documentTypeContainers = this.#documentTypes.getObservablePart((x) => x.flatMap((x) => x.containers ?? []) ); - #containers = new ArrayState([], (x) => x.key); + #containers = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement, typeRepository: R) { this.#host = host; @@ -59,42 +59,42 @@ export class UmbWorkspacePropertyStructureManager x.key === key)) return; - await this._loadType(key); + private async _ensureType(id?: string) { + if (!id) return; + if (this.#documentTypes.getValue().find((x) => x.id === id)) return; + await this._loadType(id); } - private async _loadType(key?: string) { - if (!key) return {}; + private async _loadType(id?: string) { + if (!id) return {}; - const { data } = await this.#documentTypeRepository.requestByKey(key); + const { data } = await this.#documentTypeRepository.requestById(id); if (!data) return {}; await this._observeDocumentType(data); @@ -104,13 +104,13 @@ export class UmbWorkspacePropertyStructureManager { + new UmbObserverController(this.#host, await this.#documentTypeRepository.byId(data.id), (docType) => { if (docType) { // TODO: Handle if there was changes made to the specific document type in this context. /* @@ -124,14 +124,14 @@ export class UmbWorkspacePropertyStructureManager { - this._ensureType(composition.key); + this._ensureType(composition.id); }); } /* private async _initDocumentTypeContainers(documentType: T) { documentType.containers?.forEach((container) => { - this.#containers.appendOne({ ...container, _ownerDocumentTypeKey: documentType.key }); + this.#containers.appendOne({ ...container, _ownerDocumentTypeKey: documentType.id }); }); } */ @@ -139,10 +139,10 @@ export class UmbWorkspacePropertyStructureManager x.find((y) => y.key === this.#rootDocumentTypeKey)); + return this.#documentTypes.getObservablePart((x) => x.find((y) => y.id === this.#rootDocumentTypeKey)); } getRootDocumentType() { - return this.#documentTypes.getValue().find((y) => y.key === this.#rootDocumentTypeKey); + return this.#documentTypes.getValue().find((y) => y.id === this.#rootDocumentTypeKey); } updateRootDocumentType(entry: T) { this.#documentTypes.updateOne(this.#rootDocumentTypeKey, entry); @@ -152,7 +152,7 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.containers ?? [])]; + const containers = [...(this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.containers ?? [])]; containers.push(container); this.#documentTypes.updateOne(documentTypeKey, { containers }); @@ -175,27 +175,27 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.containers ?? []; - const containers = frozenContainers.filter((x) => x.key !== containerKey); + const frozenContainers = this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.containers ?? []; + const containers = frozenContainers.filter((x) => x.id !== containerId); this.#documentTypes.updateOne(documentTypeKey, { containers }); } - async createProperty(documentTypeKey: string | null, containerKey: string | null = null, sortOrder?: number) { + async createProperty(documentTypeKey: string | null, containerId: string | null = null, sortOrder?: number) { await this.#init; documentTypeKey = documentTypeKey ?? this.#rootDocumentTypeKey!; const property: PropertyTypeResponseModelBaseModel = { - key: generateGuid(), - containerKey: containerKey, + id: generateGuid(), + containerId: containerId, //sortOrder: sortOrder ?? 0, }; - const properties = [...(this.#documentTypes.getValue().find((x) => x.key === documentTypeKey)?.properties ?? [])]; + const properties = [...(this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.properties ?? [])]; properties.push(property); this.#documentTypes.updateOne(documentTypeKey, { properties }); @@ -211,9 +211,9 @@ export class UmbWorkspacePropertyStructureManager x.key === documentTypeKey)?.properties ?? []; + const frozenProperties = this.#documentTypes.getValue().find((x) => x.id === documentTypeKey)?.properties ?? []; - const properties = partialUpdateFrozenArray(frozenProperties, partialUpdate, (x) => x.key === propertyKey!); + const properties = partialUpdateFrozenArray(frozenProperties, partialUpdate, (x) => x.id === propertyKey!); this.#documentTypes.updateOne(documentTypeKey, { properties }); } @@ -221,7 +221,7 @@ export class UmbWorkspacePropertyStructureManager { - const docType = docTypes.find((x) => x.key === this.#rootDocumentTypeKey); + const docType = docTypes.find((x) => x.id === this.#rootDocumentTypeKey); return docType?.name ?? ''; }); } @@ -229,24 +229,24 @@ export class UmbWorkspacePropertyStructureManager(mappingFunction: MappingFunction) { return this.#documentTypes.getObservablePart((docTypes) => { - const docType = docTypes.find((x) => x.key === this.#rootDocumentTypeKey); + const docType = docTypes.find((x) => x.id === this.#rootDocumentTypeKey); return docType ? mappingFunction(docType) : undefined; }); } /* - nameOfDocumentType(key: string) { + nameOfDocumentType(id: string) { return this.#documentTypes.getObservablePart((docTypes) => { - const docType = docTypes.find((x) => x.key === key); + const docType = docTypes.find((x) => x.id === id); return docType?.name ?? ''; }); } */ - hasPropertyStructuresOf(containerKey: string | null) { + hasPropertyStructuresOf(containerId: string | null) { return this.#documentTypes.getObservablePart((docTypes) => { return ( docTypes.find((docType) => { - return docType.properties?.find((property) => property.containerKey === containerKey); + return docType.properties?.find((property) => property.containerId === containerId); }) !== undefined ); }); @@ -254,12 +254,12 @@ export class UmbWorkspacePropertyStructureManager { const props: DocumentTypePropertyTypeResponseModel[] = []; docTypes.forEach((docType) => { docType.properties?.forEach((property) => { - if (property.containerKey === containerKey) { + if (property.containerId === containerId) { props.push(property); } }); @@ -270,26 +270,26 @@ export class UmbWorkspacePropertyStructureManager { - return data.filter((x) => x.parentKey === null && x.type === containerType); + return data.filter((x) => x.parentId === null && x.type === containerType); }); } hasRootContainers(containerType: PropertyContainerTypes) { return this.#containers.getObservablePart((data) => { - return data.filter((x) => x.parentKey === null && x.type === containerType).length > 0; + return data.filter((x) => x.parentId === null && x.type === containerType).length > 0; }); } containersOfParentKey( - parentKey: PropertyTypeContainerResponseModelBaseModel['parentKey'], + parentId: PropertyTypeContainerResponseModelBaseModel['parentId'], containerType: PropertyContainerTypes ) { return this.#containers.getObservablePart((data) => { - return data.filter((x) => x.parentKey === parentKey && x.type === containerType); + return data.filter((x) => x.parentId === parentId && x.type === containerType); }); } - // TODO: Maybe this must take parentKey into account as well? + // TODO: Maybe this must take parentId into account as well? containersByNameAndType(name: string, containerType: PropertyContainerTypes) { return this.#containers.getObservablePart((data) => { return data.filter((x) => x.name === name && x.type === containerType); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts index 1ad00017e4..f1771e6a34 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/modals/template/template-modal.element.ts @@ -15,7 +15,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @customElement('umb-template-modal') export class UmbTemplateModalElement extends UmbModalBaseElement { @state() - _key = ''; + _id = ''; @state() _template?: TemplateResponseModel; @@ -26,16 +26,16 @@ export class UmbTemplateModalElement extends UmbModalBaseElement> { + createScaffold(parentId: string | null): Promise> { throw new Error('Method not implemented.'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index 4eb287b166..a973a00a4b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -20,7 +20,7 @@ export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext>; - getChildrenOf(parentKey: string): Promise>; + getChildrenOf(parentId: string): Promise>; getItems(key: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts index 7705f1ac6d..974f0f4cfd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.detail.server.data.ts @@ -6,10 +6,10 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface TemplateDetailDataSource { createScaffold(): Promise>; - get(key: string): Promise>; + get(id: string): Promise>; insert(template: TemplateResponseModel): Promise; update(template: TemplateResponseModel): Promise; - delete(key: string): Promise; + delete(id: string): Promise; } /** @@ -31,18 +31,18 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour } /** - * Fetches a Template with the given key from the server - * @param {string} key + * Fetches a Template with the given id from the server + * @param {string} id * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - get(key: string) { - return tryExecuteAndNotify(this.#host, TemplateResource.getTemplateByKey({ key })); + get(id: string) { + return tryExecuteAndNotify(this.#host, TemplateResource.getTemplateById({ id })); } /** * Creates a new Template scaffold - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof UmbTemplateDetailServerDataSource */ @@ -50,7 +50,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour const error = undefined; const data: TemplateResponseModel = { $type: '', - key: uuid(), + id: uuid(), name: '', alias: '', content: '', @@ -93,27 +93,27 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @memberof UmbTemplateDetailServerDataSource */ async update(template: TemplateResponseModel) { - if (!template.key) { - const error: ProblemDetailsModel = { title: 'Template key is missing' }; + if (!template.id) { + const error: ProblemDetailsModel = { title: 'Template id is missing' }; return { error }; } - const payload = { key: template.key, requestBody: template }; - return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateByKey(payload)); + const payload = { id: template.id, requestBody: template }; + return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateById(payload)); } /** * Deletes a Template on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return await tryExecuteAndNotify(this.#host, TemplateResource.deleteTemplateByKey({ key })); + return await tryExecuteAndNotify(this.#host, TemplateResource.deleteTemplateById({ id })); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index 219e8cc807..cdc77d176b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -31,41 +31,41 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { } /** - * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * Fetches the children of a given parent id from the server + * @param {(string | null)} parentId * @return {*} * @memberof TemplateTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + async getChildrenOf(parentId: string | null) { + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } return tryExecuteAndNotify( this.#host, TemplateResource.getTreeTemplateChildren({ - parentKey, + parentId, }) ); } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} id * @return {*} * @memberof TemplateTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, TemplateResource.getTreeTemplateItem({ - key: keys, + id: ids, }) ); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 5567f76759..a41048ff2a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -56,34 +56,34 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeDataSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeDataSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeDataSource.getItems(keys); + const { data, error } = await this.#treeDataSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -91,39 +91,39 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS: - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { - throw new Error('Parent key is missing'); + if (!parentId) { + throw new Error('Parent id is missing'); } - // TODO: add parent key to create scaffold + // TODO: add parent id to create scaffold return this.#detailDataSource.createScaffold(); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - const { data, error } = await this.#detailDataSource.get(key); + const { data, error } = await this.#detailDataSource.get(id); if (data) { this.#store?.append(data); @@ -137,7 +137,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR async create(template: TemplateResponseModel) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -159,7 +159,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR async save(template: TemplateResponseModel) { await this.#init; - if (!template || !template.key) { + if (!template || !template.id) { throw new Error('Template is missing'); } @@ -174,7 +174,7 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#store?.append(template); - this.#treeStore?.updateItem(template.key, { name: template.name }); + this.#treeStore?.updateItem(template.id, { name: template.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -182,14 +182,14 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // General: - async delete(key: string) { + async delete(id: string) { await this.#init; - if (!key) { - throw new Error('Template key is missing'); + if (!id) { + throw new Error('Template id is missing'); } - const { error } = await this.#detailDataSource.delete(key); + const { error } = await this.#detailDataSource.delete(id); if (!error) { const notification = { data: { message: `Template deleted` } }; @@ -199,8 +199,8 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server. // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([key]); - this.#treeStore?.removeItem(key); + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); // TODO: would be nice to align the stores on methods/methodNames. return { error }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts index bda7548eb7..edebf64d61 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts @@ -11,7 +11,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle * @description - Data Store for Templates */ export class UmbTemplateStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); /** * Creates an instance of UmbTemplateStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index 8685dbdc5a..efb54d7345 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -18,8 +18,8 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { - // key is name to allow filtering on the displayed value + // id is set to name to allow filtering on the displayed value const tableItem: UmbTableItem = { - key: dictionary.name ?? '', + id: dictionary.name ?? '', icon: 'umb:book-alt', data: [ { columnAlias: 'name', - value: html` + value: html` ${dictionary.name} `, }, @@ -148,7 +148,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { #filter(e: { target: HTMLInputElement }) { this._tableItemsFiltered = e.target.value - ? this.#tableItems.filter((t) => t.key.includes(e.target.value)) + ? this.#tableItems.filter((t) => t.id.includes(e.target.value)) : this.#tableItems; } @@ -162,7 +162,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { const { name } = await modalHandler.onSubmit(); if (!name) return; - const result = await this.#repo?.create({ $type: '', name, parentKey: null, translations: [], key: '' }); + const result = await this.#repo?.create({ $type: '', name, parentId: null, translations: [], id: '' }); // TODO => get location header to route to new item } 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 8f7f3eae7e..dae8885787 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 @@ -49,9 +49,9 @@ export default class UmbCreateDictionaryEntityAction extends UmbEntityActionBase const result = await this.repository?.create({ $type: '', name, - parentKey: this.unique, + parentId: this.unique, translations: [], - key: '', + id: '', }); // TODO => get location header to route to new item diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts index 92e2e6f507..f92fc6a94b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts @@ -6,7 +6,7 @@ import { repeat } from 'lit/directives/repeat.js'; import { UmbTreeElement } from '../../../../shared/components/tree/tree.element'; import { UmbDictionaryRepository } from '../../repository/dictionary.repository'; import { UmbImportDictionaryModalData, UmbImportDictionaryModalResult } from '@umbraco-cms/backoffice/modal'; -import { UploadDictionaryResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { DictionaryItemResponseModel, ImportDictionaryRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; @customElement('umb-import-dictionary-modal') @@ -27,7 +27,7 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< private _form!: HTMLFormElement; @state() - private _uploadedDictionary?: UploadDictionaryResponseModel; + private _uploadedDictionaryTempId?: string; @state() private _showUploadView = true; @@ -44,11 +44,11 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< #detailRepo = new UmbDictionaryRepository(this); async #importDictionary() { - if (!this._uploadedDictionary?.fileName) return; + if (!this._uploadedDictionaryTempId) return; this.modalHandler?.submit({ - fileName: this._uploadedDictionary.fileName, - parentKey: this._selection[0], + temporaryFileId: this._uploadedDictionaryTempId, + parentId: this._selection[0], }); } @@ -66,11 +66,21 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< if (!this._form.checkValidity()) return; const formData = new FormData(this._form); - const { data } = await this.#detailRepo.upload(formData); - this._uploadedDictionary = data; + const uploadData: ImportDictionaryRequestModel = { + temporaryFileId: formData.get('file')?.toString() ?? '', + }; - if (!this._uploadedDictionary) { + // TODO: fix this upload experience. We need to update our form so it gets temporary file id from the server: + const { data } = await this.#detailRepo.upload(uploadData); + + if (!data) return; + + this._uploadedDictionaryTempId = data; + // TODO: We need to find another way to gather the data of the uploaded dictionary, to represent the dictionaryItems? See further below. + //this._uploadedDictionary = data; + + if (!this._uploadedDictionaryTempId) { this._showErrorView = true; this._showImportView = false; return; @@ -113,6 +123,8 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< /// TODO => Tree view needs isolation and single-select option #renderImportView() { + //TODO: gather this data in some other way, we cannot use the feedback from the server anymore. can we use info about the file directly? or is a change to the end point required? + /* if (!this._uploadedDictionary?.dictionaryItems) return; return html` @@ -140,6 +152,7 @@ export class UmbImportDictionaryModalLayout extends UmbModalBaseElement< look="primary" @click=${this.#importDictionary}> `; + */ } // TODO => Determine what to display when dictionary import/upload fails 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 0ba63c6352..2ab539bca3 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 @@ -27,10 +27,10 @@ export default class UmbImportDictionaryEntityAction extends UmbEntityActionBase const modalHandler = this.#modalContext?.open(UMB_IMPORT_DICTIONARY_MODAL, { unique: this.unique }); // TODO: get type from modal result - const { fileName, parentKey } = await modalHandler.onSubmit(); - if (!fileName) return; + const { temporaryFileId, parentId } = await modalHandler.onSubmit(); + if (!temporaryFileId) return; - const result = await this.repository?.import(fileName, parentKey); + const result = await this.repository?.import(temporaryFileId, parentId); // TODO => get location header to route to new item console.log(result); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts index 8caa4f12a7..b478fc4193 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts @@ -1,6 +1,6 @@ import { DictionaryItemTranslationModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +// TODO: Can we get rid of this type? I guess it should come from the server? Investigate this. export interface DictionaryDetails extends EntityTreeItemResponseModel { - key: string; // TODO: Remove this when the backend is fixed translations: DictionaryItemTranslationModel[]; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 925f993f48..aeba6365eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -6,7 +6,7 @@ import { DictionaryTreeServerDataSource } from './sources/dictionary.tree.server import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { ImportDictionaryRequestModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepository { @@ -56,34 +56,34 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return { data, error, asObservable: () => this.#treeStore!.rootItems }; } - async requestTreeItemsOf(parentKey: string | null) { + async requestTreeItemsOf(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getChildrenOf(parentKey); + const { data, error } = await this.#treeSource.getChildrenOf(parentId); if (data) { this.#treeStore?.appendItems(data.items); } - return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentKey) }; + return { data, error, asObservable: () => this.#treeStore!.childrenOf(parentId) }; } - async requestTreeItems(keys: Array) { + async requestTreeItems(ids: Array) { await this.#init; - if (!keys) { + if (!ids) { const error: ProblemDetailsModel = { title: 'Keys are missing' }; return { data: undefined, error }; } - const { data, error } = await this.#treeSource.getItems(keys); + const { data, error } = await this.#treeSource.getItems(ids); - return { data, error, asObservable: () => this.#treeStore!.items(keys) }; + return { data, error, asObservable: () => this.#treeStore!.items(ids) }; } async rootTreeItems() { @@ -91,39 +91,39 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#treeStore!.rootItems; } - async treeItemsOf(parentKey: string | null) { + async treeItemsOf(parentId: string | null) { await this.#init; - return this.#treeStore!.childrenOf(parentKey); + return this.#treeStore!.childrenOf(parentId); } - async treeItems(keys: Array) { + async treeItems(ids: Array) { await this.#init; - return this.#treeStore!.items(keys); + return this.#treeStore!.items(ids); } // DETAILS - async createScaffold(parentKey: string | null) { + async createScaffold(parentId: string | null) { await this.#init; - if (!parentKey) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + if (!parentId) { + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } - return this.#detailSource.createScaffold(parentKey); + return this.#detailSource.createScaffold(parentId); } - async requestByKey(key: string) { + async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!key) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + if (!id) { + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } - const { data, error } = await this.#detailSource.get(key); + const { data, error } = await this.#detailSource.get(id); if (data) { this.#detailStore?.append(data); @@ -136,9 +136,9 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#detailSource.list(skip, take); } - async delete(key: string) { + async delete(id: string) { await this.#init; - return this.#detailSource.delete(key); + return this.#detailSource.delete(id); } async save(dictionary: DictionaryDetails) { @@ -146,7 +146,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // TODO: should we show a notification if the dictionary is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!dictionary || !dictionary.key) { + if (!dictionary || !dictionary.id) { const error: ProblemDetailsModel = { title: 'Dictionary is missing' }; return { error }; } @@ -162,7 +162,7 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // Consider to look up the data before fetching from the server // Consider notify a workspace if a dictionary is updated in the store while someone is editing it. this.#detailStore?.append(dictionary); - this.#treeStore?.updateItem(dictionary.key, { name: dictionary.name }); + this.#treeStore?.updateItem(dictionary.id, { name: dictionary.name }); // TODO: would be nice to align the stores on methods/methodNames. return { error }; @@ -186,29 +186,29 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return { data, error }; } - async export(key: string, includeChildren = false) { + async export(id: string, includeChildren = false) { await this.#init; - if (!key) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return this.#detailSource.export(key, includeChildren); + return this.#detailSource.export(id, includeChildren); } - async import(fileName: string, parentKey?: string) { + async import(temporaryFileId: string, parentId?: string) { await this.#init; - if (!fileName) { + if (!temporaryFileId) { const error: ProblemDetailsModel = { title: 'File is missing' }; return { error }; } - return this.#detailSource.import(fileName, parentKey); + return this.#detailSource.import(temporaryFileId, parentId); } - async upload(formData: FormData) { + async upload(formData: ImportDictionaryRequestModel) { await this.#init; if (!formData) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts index 45ec7a5f5f..a9907ca76a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts @@ -11,7 +11,7 @@ import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; * @description - Data Store for Dictionary */ export class UmbDictionaryStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.key); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DICTIONARY_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 109d5a3924..9a0de80937 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -5,6 +5,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { CreateDictionaryItemRequestModel, DictionaryResource, + ImportDictionaryRequestModel, LanguageResource, ProblemDetailsModel, } from '@umbraco-cms/backoffice/backend-api'; @@ -24,27 +25,27 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Creates a new Dictionary scaffold - * @param {string} parentKey + * @param {string} parentId * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async createScaffold(parentKey: string) { + async createScaffold(parentId: string) { const data: DictionaryDetails = { name: '', - parentKey, + parentId, } as DictionaryDetails; return { data }; } /** - * @description - Fetches a Dictionary with the given key from the server - * @param {string} key + * @description - Fetches a Dictionary with the given id from the server + * @param {string} id * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - get(key: string) { - return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByKey({ key })) as any; + get(id: string) { + return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryById({ id })) as any; } /** @@ -64,13 +65,13 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @memberof UmbDictionaryDetailServerDataSource */ async update(dictionary: DictionaryDetails) { - if (!dictionary.key) { + if (!dictionary.id) { const error: ProblemDetailsModel = { title: 'Dictionary key is missing' }; return { error }; } - const payload = { key: dictionary.key, requestBody: dictionary }; - return tryExecuteAndNotify(this.#host, DictionaryResource.putDictionaryByKey(payload)); + const payload = { id: dictionary.id, requestBody: dictionary }; + return tryExecuteAndNotify(this.#host, DictionaryResource.putDictionaryById(payload)); } /** @@ -81,7 +82,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData */ async insert(data: DictionaryDetails) { const requestBody: CreateDictionaryItemRequestModel = { - parentKey: data.parentKey, + parentId: data.parentId, name: data.name, }; @@ -91,44 +92,44 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Deletes a Dictionary on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - return await tryExecuteAndNotify(this.#host, DictionaryResource.deleteDictionaryByKey({ key })); + return await tryExecuteAndNotify(this.#host, DictionaryResource.deleteDictionaryById({ id })); } /** * @description - Import a dictionary - * @param {string} fileName - * @param {string?} parentKey + * @param {string} temporaryFileId + * @param {string?} parentId * @returns {*} * @memberof UmbDictionaryDetailServerDataSource */ - async import(fileName: string, parentKey?: string) { - // TODO => parentKey will be a guid param once #13786 is merged and API regenerated + async import(temporaryFileId: string, parentId?: string) { + // TODO => parentId will be a guid param once #13786 is merged and API regenerated return await tryExecuteAndNotify( this.#host, - DictionaryResource.postDictionaryImport({ requestBody: { fileName, parentKey } }) + DictionaryResource.postDictionaryImport({ requestBody: { temporaryFileId, parentId } }) ); } /** * @description - Upload a Dictionary - * @param {FormData} formData + * @param {ImportDictionaryRequestModel} formData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async upload(formData: FormData) { + async upload(formData: ImportDictionaryRequestModel) { return await tryExecuteAndNotify( this.#host, - DictionaryResource.postDictionaryUpload({ + DictionaryResource.postDictionaryImport({ requestBody: formData, }) ); @@ -136,13 +137,13 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData /** * @description - Export a Dictionary, optionally including child items. - * @param {string} key + * @param {string} id * @param {boolean} includeChildren * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async export(key: string, includeChildren: boolean) { - return await tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByKeyExport({ key, includeChildren })); + async export(id: string, includeChildren: boolean) { + return await tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryByIdExport({ id, includeChildren })); } async getLanguages() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index 1b3c74e3b8..fba60eaeaf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -1,22 +1,22 @@ import type { DictionaryDetails } from '../../'; import { DictionaryItemResponseModel, - UploadDictionaryResponseModel, PagedDictionaryOverviewResponseModel, PagedLanguageResponseModel, + ImportDictionaryRequestModel, } from '@umbraco-cms/backoffice/backend-api'; import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface DictionaryDetailDataSource { - createScaffold(parentKey: string): Promise>; + createScaffold(parentId: string): Promise>; list(skip?: number, take?: number): Promise>; get(key: string): Promise>; insert(data: DictionaryDetails): Promise; update(dictionary: DictionaryItemResponseModel): Promise; delete(key: string): Promise; export(key: string, includeChildren: boolean): Promise>; - import(fileName: string, parentKey?: string): Promise>; - upload(formData: FormData): Promise>; + import(fileName: string, parentId?: string): Promise>; + upload(formData: ImportDictionaryRequestModel): Promise>; // TODO - temp only getLanguages(): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index fa073716ed..c2a2c5ca3e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -32,12 +32,12 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the children of a given parent key from the server - * @param {(string | null)} parentKey + * @param {(string | null)} parentId * @return {*} * @memberof DictionaryTreeServerDataSource */ - async getChildrenOf(parentKey: string | null) { - if (!parentKey) { + async getChildrenOf(parentId: string | null) { + if (!parentId) { const error: ProblemDetailsModel = { title: 'Parent key is missing' }; return { error }; } @@ -45,27 +45,27 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, DictionaryResource.getTreeDictionaryChildren({ - parentKey, + parentId, }) ); } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof DictionaryTreeServerDataSource */ - async getItems(keys: Array) { - if (!keys || keys.length === 0) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; + async getItems(ids: Array) { + if (!ids || ids.length === 0) { + const error: ProblemDetailsModel = { title: 'Ids are missing' }; return { error }; } return tryExecuteAndNotify( this.#host, DictionaryResource.getTreeDictionaryItem({ - key: keys, + id: ids, }) ); } 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 054de18f3f..56b6eb4706 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 @@ -24,8 +24,8 @@ export class UmbDictionaryWorkspaceContext return this.#data.getValue(); } - getEntityKey() { - return this.getData()?.key || ''; + getEntityId() { + return this.getData()?.id || ''; } getEntityType() { @@ -57,15 +57,15 @@ export class UmbDictionaryWorkspaceContext } async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + const { data } = await this.repository.requestById(entityKey); if (data) { this.setIsNew(false); this.#data.next(data); } } - async createScaffold(parentKey: string | null) { - const { data } = await this.repository.createScaffold(parentKey); + async createScaffold(parentId: string | null) { + const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts index e73ac5b743..22303e180b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts @@ -16,11 +16,11 @@ export class UmbWorkspaceDictionaryElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts index 3c1afd4dad..48b78c2954 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts @@ -1,6 +1,7 @@ import './dictionary-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; +import { ifDefined } from 'lit/directives/if-defined'; import { data } from '../../../../core/mocks/data/dictionary.data'; import type { UmbWorkspaceDictionaryElement } from './dictionary-workspace.element'; @@ -11,6 +12,6 @@ export default { } as Meta; export const AAAOverview: Story = () => - html` `; + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts index a08664367d..a1baf152c4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/user-profile-apps/user-profile-app-profile.element.ts @@ -42,7 +42,7 @@ export class UmbUserProfileAppProfileElement extends UmbLitElement { private _edit() { if (!this._currentUser) return; - history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.key); //TODO Change to a tag with href and make dynamic + history.pushState(null, '', '/section/users/view/users/user/' + this._currentUser.id); //TODO Change to a tag with href and make dynamic //TODO Implement modal routing for the current-user-modal, so that the modal closes when navigating to the edit profile page } private _changePassword() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts index 39866a547a..3a06069852 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/modals/user-group-picker/user-group-picker-modal.element.ts @@ -81,9 +81,9 @@ export class UmbUserGroupPickerModalElement extends UmbModalElementPickerBase html`
    this.handleSelection(item.key)} - @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.key)} - class=${this.isSelected(item.key) ? 'item selected' : 'item'}> + @click=${() => this.handleSelection(item.id)} + @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.id)} + class=${this.isSelected(item.id) ? 'item selected' : 'item'}> ${item.name}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts index 2b4fd90559..64197bb05b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts @@ -16,21 +16,21 @@ export const UMB_USER_GROUP_STORE_CONTEXT_TOKEN = new UmbContextToken { - #groups = new ArrayState([], (x) => x.key); + #groups = new ArrayState([], (x) => x.id); public groups = this.#groups.asObservable(); constructor(host: UmbControllerHostElement) { super(host, UMB_USER_GROUP_STORE_CONTEXT_TOKEN.toString()); } - getScaffold(entityType: string, parentKey: string | null) { + getScaffold(entityType: string, parentId: string | null) { return { - key: '', + id: '', name: '', icon: '', type: 'user-group', hasChildren: false, - parentKey: '', + parentId: '', sections: [], permissions: [], users: [], @@ -49,27 +49,27 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt return this.groups; } - getByKey(key: string) { + getByKey(id: string) { // TODO: use Fetcher API. // TODO: only fetch if the data type is not in the store? - fetch(`/umbraco/backoffice/user-groups/details/${key}`) + fetch(`/umbraco/backoffice/user-groups/details/${id}`) .then((res) => res.json()) .then((data) => { this.#groups.append([data]); }); - return this.#groups.getObservablePart((userGroups) => userGroups.find((userGroup) => userGroup.key === key)); + return this.#groups.getObservablePart((userGroups) => userGroups.find((userGroup) => userGroup.id === id)); } - getByKeys(keys: Array) { - const params = keys.map((key) => `key=${key}`).join('&'); + getByKeys(ids: Array) { + const params = ids.map((id) => `id=${id}`).join('&'); fetch(`/umbraco/backoffice/user-groups/getByKeys?${params}`) .then((res) => res.json()) .then((data) => { this.#groups.append(data); }); - return this.#groups.getObservablePart((items) => items.filter((node) => keys.includes(node.key))); + return this.#groups.getObservablePart((items) => items.filter((node) => ids.includes(node.id))); } async save(userGroups: Array) { @@ -78,7 +78,7 @@ export class UmbUserGroupStore extends UmbStoreBase implements UmbEntityDetailSt // TODO: implement so user group store updates the users, but these needs to save as well..? /* if (this._userStore && userGroup.users) { - await this._userStore.updateUserGroup(userGroup.users, userGroup.key); + await this._userStore.updateUserGroup(userGroup.users, userGroup.id); } */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts index 53064d9801..9ca5a52915 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/workspace/user-group-workspace-edit.element.ts @@ -214,9 +214,9 @@ export class UmbUserGroupWorkspaceEditElement extends UmbLitElement { this.observe(this._userStore.getAll(), (users) => { // TODO: handle if there is no users. if (!this._userKeys && users.length > 0) { - const entityKey = this.#workspaceContext?.getEntityKey(); + const entityKey = this.#workspaceContext?.getEntityId(); if (!entityKey) return; - this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.key); + this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.id); //this._updateProperty('users', this._userKeys); // TODO: make a method on the UmbWorkspaceUserGroupContext: //this._workspaceContext.setUsers(); 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 8aa55263d8..19a5fe183b 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 @@ -28,7 +28,7 @@ export class UmbUserGroupWorkspaceContext } getEntityType = this.#manager.getEntityType; getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; + getEntityId = this.#manager.getEntityKey; getStore = this.#manager.getStore; getData = this.#manager.getData as any; // TODO: fix type mismatch, but this will be done when we move to repositories. load = this.#manager.load; 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 e232947181..aae4ff5fe6 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 @@ -49,11 +49,11 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts index 4a1f79127f..b60dc36c88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/user-group-table-name-column-layout.element.ts @@ -11,7 +11,7 @@ export class UmbUserGroupTableNameColumnLayoutElement extends LitElement { value!: any; render() { - return html` + return html` ${this.value.name} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts index 0fa5dd071d..61ae8d8384 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/user-groups/workspace-view-user-groups.element.ts @@ -31,11 +31,11 @@ export class UmbWorkspaceViewUserGroupsElement extends UmbLitElement { height: 100%; display: flex; flex-direction: column; - margin:var(--uui-size-layout-1); + margin: var(--uui-size-layout-1); } umb-table { - padding:0; + padding: 0; } `, ]; @@ -99,7 +99,7 @@ export class UmbWorkspaceViewUserGroupsElement extends UmbLitElement { private _createTableItems(userGroups: Array) { this._tableItems = userGroups.map((userGroup) => { return { - key: userGroup.key, + id: userGroup.id, icon: userGroup.icon, data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts index 99f10ee203..3ed1b5d986 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts @@ -95,17 +95,17 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { } private _selectRowHandler(user: UserEntity) { - this._usersContext?.select(user.key); + this._usersContext?.select(user.id); } private _deselectRowHandler(user: UserEntity) { - this._usersContext?.deselect(user.key); + this._usersContext?.deselect(user.id); } - private _getUserGroupNames(keys: Array) { - return keys + private _getUserGroupNames(ids: Array) { + return ids .map((key: string) => { - return this._userGroups.find((x) => x.key === key)?.name; + return this._userGroups.find((x) => x.id === key)?.name; }) .join(', '); } @@ -120,8 +120,8 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { .name=${user.name} selectable ?select-only=${this._selection.length > 0} - ?selected=${this._isSelected(user.key)} - @open=${() => this._handleOpenCard(user.key)} + ?selected=${this._isSelected(user.id)} + @open=${() => this._handleOpenCard(user.id)} @selected=${() => this._selectRowHandler(user)} @unselected=${() => this._deselectRowHandler(user)}> ${user.status && user.status !== 'enabled' @@ -149,7 +149,7 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement {
    ${repeat( this._users, - (user) => user.key, + (user) => user.id, (user) => this.renderUserCard(user) )}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts index bf6d9fa7af..ed36318416 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/column-layouts/name/user-table-name-column-layout.element.ts @@ -16,7 +16,7 @@ export class UmbUserTableNameColumnLayoutElement extends LitElement { render() { return html` `; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts index c3c8519b36..33b8e1aa1e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/table/workspace-view-users-table.element.ts @@ -119,10 +119,10 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { }); } - private _getUserGroupNames(keys: Array) { - return keys - .map((key: string) => { - return this._userGroups.find((x) => x.key === key)?.name; + private _getUserGroupNames(ids: Array) { + return ids + .map((id: string) => { + return this._userGroups.find((x) => x.id === id)?.name; }) .join(', '); } @@ -130,7 +130,7 @@ export class UmbWorkspaceViewUsersTableElement extends UmbLitElement { private _createTableItems(users: Array) { this._tableItems = users.map((user) => { return { - key: user.key, + id: user.id, icon: 'umb:user', data: [ { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index d84ed8a6c1..6f65167fd5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts @@ -21,7 +21,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement { css` :host { height: 100%; - } + } #router-slot { height: calc(100% - var(--umb-header-layout-height)); @@ -75,11 +75,11 @@ export class UmbSectionViewUsersElement extends UmbLitElement { // TODO: find a way to make this reuseable across: this._workspaces?.map((workspace: ManifestWorkspace) => { routes.push({ - path: `${workspace.meta.entityType}/:key`, + path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.key; + (el as any).entityKey = info.match.params.id; }); }, }); @@ -118,17 +118,17 @@ export class UmbSectionViewUsersElement extends UmbLitElement { this.requestUpdate('selection'); } - public select(key: string) { + public select(id: string) { const oldSelection = this.#selection.getValue(); - if (oldSelection.indexOf(key) !== -1) return; + if (oldSelection.indexOf(id) !== -1) return; - this.#selection.next([...oldSelection, key]); + this.#selection.next([...oldSelection, id]); this.requestUpdate('selection'); } - public deselect(key: string) { + public deselect(id: string) { const selection = this.#selection.getValue(); - this.#selection.next(selection.filter((k) => k !== key)); + this.#selection.next(selection.filter((k) => k !== id)); this.requestUpdate('selection'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts index 73dc26085b..d86530ad45 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/create-user/create-user-modal.element.ts @@ -126,7 +126,7 @@ export class UmbCreateUserModalElement extends UmbModalBaseElement { if (!this._createdUser) return; this._closeModal(); - history.pushState(null, '', '/section/users/view/users/user/' + this._createdUser?.key); //TODO: URL Should be dynamic + history.pushState(null, '', '/section/users/view/users/user/' + this._createdUser?.id); //TODO: URL Should be dynamic } private _renderForm() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts index 492590d4ce..2c1eaed271 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/invite-user/invite-user-modal.element.ts @@ -105,7 +105,7 @@ export class UmbInviteUserModalElement extends UmbModalBaseElement { if (!this._invitedUser) return; this._closeModal(); - history.pushState(null, '', 'section/users/view/users/user/' + this._invitedUser?.key); //TODO: URL Should be dynamic + history.pushState(null, '', 'section/users/view/users/user/' + this._invitedUser?.id); //TODO: URL Should be dynamic } private _renderForm() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts index faa135b3de..a1f18890a1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/modals/user-picker/user-picker-modal.element.ts @@ -86,9 +86,9 @@ export class UmbUserPickerModalElement extends UmbModalElementPickerBase html`
    this.handleSelection(item.key)} - @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.key)} - class=${this.isSelected(item.key) ? 'item selected' : 'item'}> + @click=${() => this.handleSelection(item.id)} + @keydown=${(e: KeyboardEvent) => this._handleKeydown(e, item.id)} + class=${this.isSelected(item.id) ? 'item selected' : 'item'}> ${item.name}
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index 4c6791de91..a52581484d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -15,7 +15,7 @@ export const UMB_USER_STORE_CONTEXT_TOKEN = new UmbContextToken('U * @description - Data Store for Users */ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore { - #users = new ArrayState([], (x) => x.key); + #users = new ArrayState([], (x) => x.id); public users = this.#users.asObservable(); #totalUsers = new NumberState(0); @@ -25,14 +25,14 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore)} * @memberof UmbDataTypeStore */ - getByKey(key: string) { + getByKey(id: string) { // TODO: use Fetcher API. // TODO: only fetch if the data type is not in the store? - fetch(`/umbraco/backoffice/users/details/${key}`) + fetch(`/umbraco/backoffice/users/details/${id}`) .then((res) => res.json()) .then((data) => { this.#users.appendOne(data); }); return this.#users.getObservablePart((users: Array) => - users.find((user: UmbUserStoreItemType) => user.key === key) + users.find((user: UmbUserStoreItemType) => user.id === id) ); } /** - * @description - Request Users by keys. - * @param {string} key + * @description - Request Users by ids. + * @param {string} id * @return {*} {(Observable)} * @memberof UmbDataTypeStore */ - getByKeys(keys: Array) { - const params = keys.map((key) => `key=${key}`).join('&'); + getByKeys(ids: Array) { + const params = ids.map((id) => `id=${id}`).join('&'); fetch(`/umbraco/backoffice/users/getByKeys?${params}`) .then((res) => res.json()) .then((data) => { @@ -93,7 +93,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore) => - users.filter((user: UmbUserStoreItemType) => keys.includes(user.key)) + users.filter((user: UmbUserStoreItemType) => ids.includes(user.id)) ); } @@ -124,7 +124,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.status = 'enabled'; @@ -147,10 +147,10 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { - if (userKeys.includes(user.key)) { + if (userKeys.includes(user.id)) { user.userGroups.push(userGroup); } else { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -174,7 +174,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore enabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => enabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -197,7 +197,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore disabledKeys.includes(user.key)); + const storedUsers = this.#users.getValue().filter((user) => disabledKeys.includes(user.id)); storedUsers.forEach((user) => { user.status = 'disabled'; @@ -265,7 +265,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore u.key === user.key); + // const index = users.findIndex((u) => u.id === user.id); // if (index === -1) return; // users[index] = { ...users[index], ...user }; // console.log('updateUser', user, users[index]); @@ -277,7 +277,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore u.key === key); + // const index = users.findIndex((u) => u.id === id); // if (index === -1) return; // users.splice(index, 1); // this._users.next(users); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts index 06e603d4d9..c0a9430280 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace-edit.element.ts @@ -127,8 +127,8 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { // TODO: make sure we use the workspace for this: /* isDisabled - ? this._workspaceContext.getStore()?.enableUsers([this._user.key]) - : this._workspaceContext.getStore()?.disableUsers([this._user.key]); + ? this._workspaceContext.getStore()?.enableUsers([this._user.id]) + : this._workspaceContext.getStore()?.disableUsers([this._user.id]); */ } @@ -136,7 +136,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { if (!this._user || !this._workspaceContext) return; // TODO: make sure we use the workspace for this: - //this._workspaceContext.getStore()?.deleteUsers([this._user.key]); + //this._workspaceContext.getStore()?.deleteUsers([this._user.id]); history.pushState(null, '', 'section/users/view/users/overview'); } @@ -166,7 +166,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement {
    `; - //TODO Render the name of the content start node instead of it's key. + //TODO Render the name of the content start node instead of it's id. return repeat( this._user.contentStartNodes, (node) => node, @@ -204,7 +204,7 @@ export class UmbUserWorkspaceEditElement extends UmbLitElement { ` ); - if (this._currentUser?.key !== this._user?.key) + if (this._currentUser?.id !== this._user?.id) buttons.push(html`
    Key: - ${this._user.key} + ${this._user.id}
    `; 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 545a9e3c1b..66d6589d2c 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 @@ -31,7 +31,7 @@ export class UmbUserWorkspaceContext } getEntityType = this.#manager.getEntityType; getUnique = this.#manager.getEntityKey; - getEntityKey = this.#manager.getEntityKey; + getEntityId = this.#manager.getEntityKey; getStore = this.#manager.getStore; getData = this.#manager.getData as any; // TODO: fix type mismatch, this will mos likely be handled when switching to repositories. load = this.#manager.load; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts index 1a531ae058..29f5f99569 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts @@ -20,11 +20,11 @@ export class UmbUserWorkspaceElement extends UmbLitElement { @state() _routes: any[] = [ { - path: 'edit/:key', + path: 'edit/:id', component: () => this.#element, setup: (component: HTMLElement, info: IRoutingInfo) => { - const key = info.match.params.key; - this.#workspaceContext.load(key); + const id = info.match.params.id; + this.#workspaceContext.load(id); }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts index ff90a90a2e..fccf52dbfa 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/data-type.data.ts @@ -12,15 +12,15 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Folder 1', - key: 'dt-folder1', - parentKey: null, + id: 'dt-folder1', + parentId: null, isFolder: true, }, { $type: 'data-type', type: 'data-type', - key: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', - parentKey: null, + id: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + parentId: null, name: 'Textstring', propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', @@ -30,8 +30,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Text', - key: 'dt-textBox', - parentKey: null, + id: 'dt-textBox', + parentId: null, propertyEditorAlias: 'Umbraco.TextBox', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextBox', values: [ @@ -45,8 +45,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Text Area', - key: 'dt-textArea', - parentKey: null, + id: 'dt-textArea', + parentId: null, propertyEditorAlias: 'Umbraco.TextArea', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TextArea', values: [], @@ -55,8 +55,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'My JS Property Editor', - key: 'dt-custom', - parentKey: null, + id: 'dt-custom', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'My.PropertyEditorUI.Custom', values: [], @@ -65,8 +65,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Color Picker', - key: 'dt-colorPicker', - parentKey: null, + id: 'dt-colorPicker', + parentId: null, propertyEditorAlias: 'Umbraco.ColorPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ColorPicker', values: [ @@ -121,8 +121,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Content Picker', - key: 'dt-contentPicker', - parentKey: null, + id: 'dt-contentPicker', + parentId: null, propertyEditorAlias: 'Umbraco.ContentPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DocumentPicker', values: [ @@ -136,8 +136,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Eye Dropper', - key: 'dt-eyeDropper', - parentKey: null, + id: 'dt-eyeDropper', + parentId: null, propertyEditorAlias: 'Umbraco.ColorPicker.EyeDropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.EyeDropper', values: [ @@ -173,8 +173,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multi URL Picker', - key: 'dt-multiUrlPicker', - parentKey: null, + id: 'dt-multiUrlPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MultiUrlPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultiUrlPicker', values: [ @@ -204,8 +204,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multi Node Tree Picker', - key: 'dt-multiNodeTreePicker', - parentKey: null, + id: 'dt-multiNodeTreePicker', + parentId: null, propertyEditorAlias: 'Umbraco.MultiNodeTreePicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TreePicker', values: [], @@ -214,8 +214,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Date Picker', - key: 'dt-datePicker', - parentKey: null, + id: 'dt-datePicker', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -233,8 +233,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', name: 'Date Picker With Time', type: 'data-type', - key: 'dt-datePicker-time', - parentKey: null, + id: 'dt-datePicker-time', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -252,8 +252,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', name: 'Time', type: 'data-type', - key: 'dt-time', - parentKey: null, + id: 'dt-time', + parentId: null, propertyEditorAlias: 'Umbraco.DateTime', propertyEditorUiAlias: 'Umb.PropertyEditorUI.DatePicker', values: [ @@ -271,8 +271,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Email', - key: 'dt-email', - parentKey: null, + id: 'dt-email', + parentId: null, propertyEditorAlias: 'Umbraco.EmailAddress', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Email', values: [], @@ -281,8 +281,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Multiple Text String', - key: 'dt-multipleTextString', - parentKey: null, + id: 'dt-multipleTextString', + parentId: null, propertyEditorAlias: 'Umbraco.MultipleTextString', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MultipleTextString', values: [ @@ -300,8 +300,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Dropdown', - key: 'dt-dropdown', - parentKey: null, + id: 'dt-dropdown', + parentId: null, propertyEditorAlias: 'Umbraco.DropDown.Flexible', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Dropdown', values: [], @@ -310,8 +310,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Slider', - key: 'dt-slider', - parentKey: null, + id: 'dt-slider', + parentId: null, propertyEditorAlias: 'Umbraco.Slider', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Slider', values: [ @@ -345,8 +345,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Toggle', - key: 'dt-toggle', - parentKey: null, + id: 'dt-toggle', + parentId: null, propertyEditorAlias: 'Umbraco.TrueFalse', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Toggle', values: [ @@ -372,8 +372,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Tags', - key: 'dt-tags', - parentKey: null, + id: 'dt-tags', + parentId: null, propertyEditorAlias: 'Umbraco.Tags', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Tags', values: [], @@ -382,8 +382,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Markdown Editor', - key: 'dt-markdownEditor', - parentKey: null, + id: 'dt-markdownEditor', + parentId: null, propertyEditorAlias: 'Umbraco.MarkdownEditor', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MarkdownEditor', values: [], @@ -392,8 +392,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Radio Button List', - key: 'dt-radioButtonList', - parentKey: null, + id: 'dt-radioButtonList', + parentId: null, propertyEditorAlias: 'Umbraco.RadioButtonList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.RadioButtonList', values: [ @@ -411,8 +411,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Checkbox List', - key: 'dt-checkboxList', - parentKey: null, + id: 'dt-checkboxList', + parentId: null, propertyEditorAlias: 'Umbraco.CheckboxList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CheckboxList', values: [ @@ -430,8 +430,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Block List', - key: 'dt-blockList', - parentKey: null, + id: 'dt-blockList', + parentId: null, propertyEditorAlias: 'Umbraco.BlockList', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockList', values: [], @@ -440,8 +440,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Media Picker', - key: 'dt-mediaPicker', - parentKey: null, + id: 'dt-mediaPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MediaPicker3', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MediaPicker', values: [], @@ -450,8 +450,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Image Cropper', - key: 'dt-imageCropper', - parentKey: null, + id: 'dt-imageCropper', + parentId: null, propertyEditorAlias: 'Umbraco.ImageCropper', propertyEditorUiAlias: 'Umb.PropertyEditorUI.ImageCropper', values: [], @@ -460,8 +460,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Upload Field', - key: 'dt-uploadField', - parentKey: null, + id: 'dt-uploadField', + parentId: null, propertyEditorAlias: 'Umbraco.UploadField', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UploadField', values: [ @@ -475,8 +475,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Block Grid', - key: 'dt-blockGrid', - parentKey: null, + id: 'dt-blockGrid', + parentId: null, propertyEditorAlias: 'Umbraco.BlockGrid', propertyEditorUiAlias: 'Umb.PropertyEditorUI.BlockGrid', values: [], @@ -485,8 +485,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Collection View', - key: 'dt-collectionView', - parentKey: null, + id: 'dt-collectionView', + parentId: null, propertyEditorAlias: 'Umbraco.ListView', propertyEditorUiAlias: 'Umb.PropertyEditorUI.CollectionView', values: [], @@ -495,8 +495,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Icon Picker', - key: 'dt-iconPicker', - parentKey: null, + id: 'dt-iconPicker', + parentId: null, propertyEditorAlias: 'Umbraco.IconPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.IconPicker', values: [], @@ -505,8 +505,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Number Range', - key: 'dt-numberRange', - parentKey: null, + id: 'dt-numberRange', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.NumberRange', values: [], @@ -515,8 +515,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Order Direction', - key: 'dt-orderDirection', - parentKey: null, + id: 'dt-orderDirection', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OrderDirection', values: [], @@ -525,8 +525,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Overlay Size', - key: 'dt-overlaySize', - parentKey: null, + id: 'dt-overlaySize', + parentId: null, propertyEditorAlias: 'Umbraco.JSON', propertyEditorUiAlias: 'Umb.PropertyEditorUI.OverlaySize', values: [], @@ -535,8 +535,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Rich Text Editor', - key: 'dt-richTextEditor', - parentKey: null, + id: 'dt-richTextEditor', + parentId: null, propertyEditorAlias: 'Umbraco.TinyMCE', propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE', values: [], @@ -545,8 +545,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Label', - key: 'dt-label', - parentKey: null, + id: 'dt-label', + parentId: null, propertyEditorAlias: 'Umbraco.Label', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Label', values: [], @@ -555,8 +555,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Integer', - key: 'dt-integer', - parentKey: null, + id: 'dt-integer', + parentId: null, propertyEditorAlias: 'Umbraco.Integer', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Integer', values: [], @@ -565,8 +565,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Decimal', - key: 'dt-decimal', - parentKey: null, + id: 'dt-decimal', + parentId: null, propertyEditorAlias: 'Umbraco.Decimal', propertyEditorUiAlias: 'Umb.PropertyEditorUI.Decimal', values: [], @@ -575,8 +575,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'User Picker', - key: 'dt-userPicker', - parentKey: null, + id: 'dt-userPicker', + parentId: null, propertyEditorAlias: 'Umbraco.UserPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.UserPicker', values: [], @@ -585,8 +585,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Member Picker', - key: 'dt-memberPicker', - parentKey: null, + id: 'dt-memberPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MemberPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberPicker', values: [], @@ -595,8 +595,8 @@ export const data: Array<(DataTypeResponseModel & { type: 'data-type' }) | Folde $type: 'data-type', type: 'data-type', name: 'Member Group Picker', - key: 'dt-memberGroupPicker', - parentKey: null, + id: 'dt-memberGroupPicker', + parentId: null, propertyEditorAlias: 'Umbraco.MemberGroupPicker', propertyEditorUiAlias: 'Umb.PropertyEditorUI.MemberGroupPicker', values: [], @@ -613,25 +613,25 @@ class UmbDataTypeData extends UmbEntityData { - const rootItems = this.data.filter((item) => item.parentKey === null); + const rootItems = this.data.filter((item) => item.parentId === null); return rootItems.map((item) => createFolderTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.data.filter((item) => item.parentId === id); return childItems.map((item) => createFolderTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createFolderTreeItem(item)); } - createFolder(folder: CreateFolderRequestModel & { key: string | undefined }) { + createFolder(folder: CreateFolderRequestModel & { id: string | undefined }) { const newFolder: FolderTreeItemResponseModel = { name: folder.name, - key: folder.key, - parentKey: folder.parentKey, + id: folder.id, + parentId: folder.parentId, $type: 'data-type', type: 'data-type', isFolder: true, @@ -642,11 +642,11 @@ class UmbDataTypeData extends UmbEntityData item.key !== key); + deleteFolder(id: string) { + const item = this.getById(id) as FolderTreeItemResponseModel; + if (!item) throw new Error(`Item with id ${id} not found`); + if (!item.isFolder) throw new Error(`Item with id ${id} is not a folder`); + this.data = this.data.filter((item) => item.id !== id); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index 8a76f7c398..c25318b39f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -6,9 +6,9 @@ import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backen export const data: Array = [ { $type: '', - parentKey: null, + parentId: null, name: 'Hello', - key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', hasChildren: true, type: 'dictionary-item', isContainer: false, @@ -26,9 +26,9 @@ export const data: Array = [ }, { $type: '', - parentKey: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + parentId: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', name: 'Hello again', - key: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', + id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', hasChildren: false, type: 'dictionary-item', isContainer: false, @@ -56,17 +56,17 @@ class UmbDictionaryData extends UmbEntityData { } getTreeRoot(): Array { - const rootItems = this.data.filter((item) => item.parentKey === null); + const rootItems = this.data.filter((item) => item.parentId === null); return rootItems.map((item) => createEntityTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.data.filter((item) => item.parentId === id); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts index 041417a449..9ac544bffd 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-blueprint.data.ts @@ -5,7 +5,7 @@ export const data: Array = [ { name: 'Document Blueprint 1', type: 'document-blueprint', - key: '3fa85f64-5717-4562-b3fc-2c963f66afa6', + id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', icon: 'umb:blueprint', documentTypeKey: 'd81c7957-153c-4b5a-aa6f-b434a4964624', properties: [], @@ -14,7 +14,7 @@ export const data: Array = [ { name: 'Document Blueprint 2', type: 'document-blueprint', - key: '3fa85f64-5717-4562-b3qc-2c963f66afa6', + id: '3fa85f64-5717-4562-b3qc-2c963f66afa6', icon: 'umb:blueprint', documentTypeKey: 'a99e4018-3ffc-486b-aa76-eecea9593d17', properties: [], diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts index 1df0a4c0ea..532186dde7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document-type.data.ts @@ -8,9 +8,9 @@ import { export const data: Array = [ { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: 'all-property-editors-document-type-key', + allowedTemplateIds: [], + defaultTemplateId: null, + id: 'all-property-editors-document-type-id', alias: 'blogPost', name: 'Blog Post', description: null, @@ -21,12 +21,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '2', - containerKey: 'all-properties-group-key', + id: '2', + containerId: 'all-properties-group-id', alias: 'colorPicker', name: 'Color Picker', description: '', - dataTypeKey: 'dt-colorPicker', + dataTypeId: 'dt-colorPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -40,12 +40,12 @@ export const data: Array = [ }, }, { - key: '3', - containerKey: 'all-properties-group-key', + id: '3', + containerId: 'all-properties-group-key', alias: 'contentPicker', name: 'Content Picker', description: '', - dataTypeKey: 'dt-contentPicker', + dataTypeId: 'dt-contentPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -59,12 +59,12 @@ export const data: Array = [ }, }, { - key: '4', - containerKey: 'all-properties-group-key', + id: '4', + containerId: 'all-properties-group-key', alias: 'eyeDropper', name: 'Eye Dropper', description: '', - dataTypeKey: 'dt-eyeDropper', + dataTypeId: 'dt-eyeDropper', variesByCulture: false, variesBySegment: false, validation: { @@ -78,12 +78,12 @@ export const data: Array = [ }, }, { - key: '5', - containerKey: 'all-properties-group-key', + id: '5', + containerId: 'all-properties-group-key', alias: 'multiUrlPicker', name: 'Multi URL Picker', description: '', - dataTypeKey: 'dt-multiUrlPicker', + dataTypeId: 'dt-multiUrlPicker', variesByCulture: true, variesBySegment: false, validation: { @@ -97,12 +97,12 @@ export const data: Array = [ }, }, { - key: '6', - containerKey: 'all-properties-group-key', + id: '6', + containerId: 'all-properties-group-key', alias: 'multiNodeTreePicker', name: 'Multi Node Tree Picker', description: '', - dataTypeKey: 'dt-multiNodeTreePicker', + dataTypeId: 'dt-multiNodeTreePicker', variesByCulture: false, variesBySegment: false, validation: { @@ -116,12 +116,12 @@ export const data: Array = [ }, }, { - key: '7', - containerKey: 'all-properties-group-key', + id: '7', + containerId: 'all-properties-group-key', alias: 'datePicker', name: 'Date Picker', description: '', - dataTypeKey: 'dt-datePicker', + dataTypeId: 'dt-datePicker', variesByCulture: false, variesBySegment: false, validation: { @@ -135,12 +135,12 @@ export const data: Array = [ }, }, { - key: '8', - containerKey: 'all-properties-group-key', + id: '8', + containerId: 'all-properties-group-key', alias: 'email', name: 'Email', description: '', - dataTypeKey: 'dt-email', + dataTypeId: 'dt-email', variesByCulture: false, variesBySegment: false, validation: { @@ -154,12 +154,12 @@ export const data: Array = [ }, }, { - key: '9', - containerKey: 'all-properties-group-key', + id: '9', + containerId: 'all-properties-group-key', alias: 'textBox', name: 'Text Box', description: '', - dataTypeKey: 'dt-textBox', + dataTypeId: 'dt-textBox', variesByCulture: false, variesBySegment: false, validation: { @@ -173,12 +173,12 @@ export const data: Array = [ }, }, { - key: '19', - containerKey: 'all-properties-group-key', + id: '19', + containerId: 'all-properties-group-key', alias: 'dropdown', name: 'Dropdown', description: '', - dataTypeKey: 'dt-dropdown', + dataTypeId: 'dt-dropdown', variesByCulture: false, variesBySegment: false, validation: { @@ -192,12 +192,12 @@ export const data: Array = [ }, }, { - key: '11', - containerKey: 'all-properties-group-key', + id: '11', + containerId: 'all-properties-group-key', alias: 'textArea', name: 'Text Area', description: '', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', variesByCulture: false, variesBySegment: false, validation: { @@ -211,12 +211,12 @@ export const data: Array = [ }, }, { - key: '12', - containerKey: 'all-properties-group-key', + id: '12', + containerId: 'all-properties-group-key', alias: 'slider', name: 'Slider', description: '', - dataTypeKey: 'dt-slider', + dataTypeId: 'dt-slider', variesByCulture: false, variesBySegment: false, validation: { @@ -230,12 +230,12 @@ export const data: Array = [ }, }, { - key: '13', - containerKey: 'all-properties-group-key', + id: '13', + containerId: 'all-properties-group-key', alias: 'toggle', name: 'Toggle', description: '', - dataTypeKey: 'dt-toggle', + dataTypeId: 'dt-toggle', variesByCulture: false, variesBySegment: false, validation: { @@ -249,12 +249,12 @@ export const data: Array = [ }, }, { - key: '14', - containerKey: 'all-properties-group-key', + id: '14', + containerId: 'all-properties-group-key', alias: 'tags', name: 'Tags', description: '', - dataTypeKey: 'dt-tags', + dataTypeId: 'dt-tags', variesByCulture: false, variesBySegment: false, validation: { @@ -268,12 +268,12 @@ export const data: Array = [ }, }, { - key: '15', - containerKey: 'all-properties-group-key', + id: '15', + containerId: 'all-properties-group-key', alias: 'markdownEditor', name: 'MarkdownEditor', description: '', - dataTypeKey: 'dt-markdownEditor', + dataTypeId: 'dt-markdownEditor', variesByCulture: false, variesBySegment: false, validation: { @@ -287,12 +287,12 @@ export const data: Array = [ }, }, { - key: '16', - containerKey: 'all-properties-group-key', + id: '16', + containerId: 'all-properties-group-key', alias: 'radioButtonList', name: 'Radio Button List', description: '', - dataTypeKey: 'dt-radioButtonList', + dataTypeId: 'dt-radioButtonList', variesByCulture: false, variesBySegment: false, validation: { @@ -306,12 +306,12 @@ export const data: Array = [ }, }, { - key: '17', - containerKey: 'all-properties-group-key', + id: '17', + containerId: 'all-properties-group-key', alias: 'checkboxList', name: 'Checkbox List', description: '', - dataTypeKey: 'dt-checkboxList', + dataTypeId: 'dt-checkboxList', variesByCulture: false, variesBySegment: false, validation: { @@ -325,12 +325,12 @@ export const data: Array = [ }, }, { - key: '18', - containerKey: 'all-properties-group-key', + id: '18', + containerId: 'all-properties-group-key', alias: 'blockList', name: 'Block List', description: '', - dataTypeKey: 'dt-blockList', + dataTypeId: 'dt-blockList', variesByCulture: false, variesBySegment: false, validation: { @@ -344,12 +344,12 @@ export const data: Array = [ }, }, { - key: '19', - containerKey: 'all-properties-group-key', + id: '19', + containerId: 'all-properties-group-key', alias: 'mediaPicker', name: 'Media Picker', description: '', - dataTypeKey: 'dt-mediaPicker', + dataTypeId: 'dt-mediaPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -363,12 +363,12 @@ export const data: Array = [ }, }, { - key: '20', - containerKey: 'all-properties-group-key', + id: '20', + containerId: 'all-properties-group-key', alias: 'imageCropper', name: 'Image Cropper', description: '', - dataTypeKey: 'dt-imageCropper', + dataTypeId: 'dt-imageCropper', variesByCulture: false, variesBySegment: false, validation: { @@ -382,12 +382,12 @@ export const data: Array = [ }, }, { - key: '21', - containerKey: 'all-properties-group-key', + id: '21', + containerId: 'all-properties-group-key', alias: 'uploadField', name: 'Upload Field', description: '', - dataTypeKey: 'dt-uploadField', + dataTypeId: 'dt-uploadField', variesByCulture: false, variesBySegment: false, validation: { @@ -401,12 +401,12 @@ export const data: Array = [ }, }, { - key: '22', - containerKey: 'all-properties-group-key', + id: '22', + containerId: 'all-properties-group-key', alias: 'blockGrid', name: 'Block Grid', description: '', - dataTypeKey: 'dt-blockGrid', + dataTypeId: 'dt-blockGrid', variesByCulture: false, variesBySegment: false, validation: { @@ -420,12 +420,12 @@ export const data: Array = [ }, }, { - key: '23', - containerKey: 'all-properties-group-key', + id: '23', + containerId: 'all-properties-group-key', alias: 'blockGrid', name: 'Icon Picker', description: '', - dataTypeKey: 'dt-iconPicker', + dataTypeId: 'dt-iconPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -439,12 +439,12 @@ export const data: Array = [ }, }, { - key: '24', - containerKey: 'all-properties-group-key', + id: '24', + containerId: 'all-properties-group-key', alias: 'numberRange', name: 'Number Range', description: '', - dataTypeKey: 'dt-numberRange', + dataTypeId: 'dt-numberRange', variesByCulture: false, variesBySegment: false, validation: { @@ -458,12 +458,12 @@ export const data: Array = [ }, }, { - key: '25', - containerKey: 'all-properties-group-key', + id: '25', + containerId: 'all-properties-group-key', alias: 'orderDirection', name: 'Order Direction', description: '', - dataTypeKey: 'dt-orderDirection', + dataTypeId: 'dt-orderDirection', variesByCulture: false, variesBySegment: false, validation: { @@ -477,12 +477,12 @@ export const data: Array = [ }, }, { - key: '26', - containerKey: 'all-properties-group-key', + id: '26', + containerId: 'all-properties-group-key', alias: 'overlaySize', name: 'Overlay Size', description: '', - dataTypeKey: 'dt-overlaySize', + dataTypeId: 'dt-overlaySize', variesByCulture: false, variesBySegment: false, validation: { @@ -496,12 +496,12 @@ export const data: Array = [ }, }, { - key: '27', - containerKey: 'all-properties-group-key', + id: '27', + containerId: 'all-properties-group-key', alias: 'label', name: 'Label', description: '', - dataTypeKey: 'dt-label', + dataTypeId: 'dt-label', variesByCulture: false, variesBySegment: false, validation: { @@ -515,12 +515,12 @@ export const data: Array = [ }, }, { - key: '28', - containerKey: 'all-properties-group-key', + id: '28', + containerId: 'all-properties-group-key', alias: 'integer', name: 'Integer', description: '', - dataTypeKey: 'dt-integer', + dataTypeId: 'dt-integer', variesByCulture: false, variesBySegment: false, validation: { @@ -534,12 +534,12 @@ export const data: Array = [ }, }, { - key: '29', - containerKey: 'all-properties-group-key', + id: '29', + containerId: 'all-properties-group-key', alias: 'decimal', name: 'Decimal', description: '', - dataTypeKey: 'dt-decimal', + dataTypeId: 'dt-decimal', variesByCulture: false, variesBySegment: false, validation: { @@ -553,12 +553,12 @@ export const data: Array = [ }, }, { - key: '30', - containerKey: 'all-properties-group-key', + id: '30', + containerId: 'all-properties-group-key', alias: 'memberPicker', name: 'Member Picker', description: '', - dataTypeKey: 'dt-memberPicker', + dataTypeId: 'dt-memberPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -572,12 +572,12 @@ export const data: Array = [ }, }, { - key: '31', - containerKey: 'all-properties-group-key', + id: '31', + containerId: 'all-properties-group-key', alias: 'memberGroupPicker', name: 'Member Group Picker', description: '', - dataTypeKey: 'dt-memberGroupPicker', + dataTypeId: 'dt-memberGroupPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -591,12 +591,12 @@ export const data: Array = [ }, }, { - key: '32', - containerKey: 'all-properties-group-key', + id: '32', + containerId: 'all-properties-group-key', alias: 'userPicker', name: 'User Picker', description: '', - dataTypeKey: 'dt-userPicker', + dataTypeId: 'dt-userPicker', variesByCulture: false, variesBySegment: false, validation: { @@ -612,8 +612,8 @@ export const data: Array = [ ], containers: [ { - key: 'all-properties-group-key', - parentKey: null, + id: 'all-properties-group-key', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, @@ -629,9 +629,9 @@ export const data: Array = [ }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: '29643452-cff9-47f2-98cd-7de4b6807681', + allowedTemplateIds: [], + defaultTemplateId: null, + id: '29643452-cff9-47f2-98cd-7de4b6807681', alias: 'blogPost', name: 'Blog Post', description: null, @@ -642,12 +642,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '5b4ca208-134e-4865-b423-06e5e97adf3c', - containerKey: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', + id: '5b4ca208-134e-4865-b423-06e5e97adf3c', + containerId: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', alias: 'blogPostText', name: 'Blog Post Text', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -661,12 +661,12 @@ export const data: Array = [ }, }, { - key: 'ef7096b6-7c9e-49ba-8d49-395111e65ea2', - containerKey: '227d6ed2-e118-4494-b8f2-deb69854a56a', + id: 'ef7096b6-7c9e-49ba-8d49-395111e65ea2', + containerId: '227d6ed2-e118-4494-b8f2-deb69854a56a', alias: 'blogTextStringUnderMasterTab', name: 'Blog text string under master tab', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: true, variesBySegment: false, validation: { @@ -680,12 +680,12 @@ export const data: Array = [ }, }, { - key: 'e010c429-b298-499a-9bfe-79687af8972a', - containerKey: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', + id: 'e010c429-b298-499a-9bfe-79687af8972a', + containerId: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', alias: 'blogTextStringUnderGroupUnderMasterTab', name: 'Blog text string under group under master tab', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: true, variesBySegment: false, validation: { @@ -699,12 +699,12 @@ export const data: Array = [ }, }, { - key: '1a22749a-c7d2-44bb-b36b-c977c2ced6ef', - containerKey: '2c943997-b685-432d-a6c5-601d8e7a298a', + id: '1a22749a-c7d2-44bb-b36b-c977c2ced6ef', + containerId: '2c943997-b685-432d-a6c5-601d8e7a298a', alias: 'localBlogTabString', name: 'Local Blog Tab String', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -718,12 +718,12 @@ export const data: Array = [ }, }, { - key: '22', - containerKey: '2c943997-b685-432d-a6c5-601d8e7a298a', + id: '22', + containerId: '2c943997-b685-432d-a6c5-601d8e7a298a', alias: 'blockGrid', name: 'Block Grid', description: '', - dataTypeKey: 'dt-blockGrid', + dataTypeId: 'dt-blockGrid', variesByCulture: false, variesBySegment: false, validation: { @@ -739,29 +739,29 @@ export const data: Array = [ ], containers: [ { - key: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', - parentKey: null, + id: 'c3cd2f12-b7c4-4206-8d8b-27c061589f75', + parentId: null, name: 'Content-group', type: 'Group', sortOrder: 0, }, { - key: '227d6ed2-e118-4494-b8f2-deb69854a56a', - parentKey: null, + id: '227d6ed2-e118-4494-b8f2-deb69854a56a', + parentId: null, name: 'Master Tab', type: 'Tab', sortOrder: 0, }, { - key: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', - parentKey: '227d6ed2-e118-4494-b8f2-deb69854a56a', + id: '22177c49-ecba-4f2e-b7fa-3f2c04d02cfb', + parentId: '227d6ed2-e118-4494-b8f2-deb69854a56a', name: 'Blog Group under master tab', type: 'Group', sortOrder: 0, }, { - key: '2c943997-b685-432d-a6c5-601d8e7a298a', - parentKey: null, + id: '2c943997-b685-432d-a6c5-601d8e7a298a', + parentId: null, name: 'Local blog tab', type: 'Tab', sortOrder: 1, @@ -769,17 +769,17 @@ export const data: Array = [ ], allowedContentTypes: [ { - key: '29643452-cff9-47f2-98cd-7de4b6807681', + id: '29643452-cff9-47f2-98cd-7de4b6807681', sortOrder: 0, }, ], compositions: [ { - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', compositionType: ContentTypeCompositionTypeModel.INHERITANCE, }, { - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', compositionType: ContentTypeCompositionTypeModel.COMPOSITION, }, ], @@ -790,9 +790,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: ['916cfecc-3295-490c-a16d-c41fa9f72980'], - defaultTemplateKey: '916cfecc-3295-490c-a16d-c41fa9f72980', - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + allowedTemplateIds: ['916cfecc-3295-490c-a16d-c41fa9f72980'], + defaultTemplateId: '916cfecc-3295-490c-a16d-c41fa9f72980', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', alias: 'masterPage', name: 'Master Page', description: null, @@ -803,12 +803,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '5e5f7456-c751-4846-9f2b-47965cc96ec6', - containerKey: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', + id: '5e5f7456-c751-4846-9f2b-47965cc96ec6', + containerId: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', alias: 'masterText', name: 'Master text', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -824,8 +824,8 @@ export const data: Array = [ ], containers: [ { - key: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', - parentKey: null, + id: '6f281e5a-0242-4649-bd9e-d6bf87f92b41', + parentId: null, name: 'Master Tab', type: 'Tab', sortOrder: 0, @@ -840,9 +840,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + allowedTemplateIds: [], + defaultTemplateId: null, + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', alias: 'baseElementType', name: 'Base Element Type', description: null, @@ -853,12 +853,12 @@ export const data: Array = [ isElement: true, properties: [ { - key: 'b92de6ac-1a22-4a45-a481-b6cae1cccbbf', - containerKey: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', + id: 'b92de6ac-1a22-4a45-a481-b6cae1cccbbf', + containerId: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', alias: 'pageTitle', name: 'Page title', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -874,8 +874,8 @@ export const data: Array = [ ], containers: [ { - key: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', - parentKey: null, + id: '1e845ca8-1e3e-4b03-be1d-0b4149ce2129', + parentId: null, name: 'Content-group', type: 'Group', sortOrder: 0, @@ -890,13 +890,13 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [ + allowedTemplateIds: [ '2bf464b6-3aca-4388-b043-4eb439cc2643', '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', ], - defaultTemplateKey: '2bf464b6-3aca-4388-b043-4eb439cc2643', - key: 'simple-document-type-key', + defaultTemplateId: '2bf464b6-3aca-4388-b043-4eb439cc2643', + id: 'simple-document-type-key', alias: 'simpleDocumentType', name: 'Simple Document Type', description: null, @@ -907,12 +907,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', - containerKey: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + id: '1680d4d2-cda8-4ac2-affd-a69fc10382b1', + containerId: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', alias: 'prop1', name: 'Prop 1', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -928,16 +928,16 @@ export const data: Array = [ ], containers: [ { - key: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', - parentKey: null, + id: '341b8521-fd43-4333-ae7a-a10cbbc6f4b0', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, }, ], allowedContentTypes: [ - { key: 'simple-document-type-key', sortOrder: 0 }, - { key: 'simple-document-type-2-key', sortOrder: 0 }, + { id: 'simple-document-type-key', sortOrder: 0 }, + { id: 'simple-document-type-2-key', sortOrder: 0 }, ], compositions: [], cleanup: { @@ -947,9 +947,9 @@ export const data: Array = [ }, }, { - allowedTemplateKeys: [], - defaultTemplateKey: null, - key: 'simple-document-type-2-key', + allowedTemplateIds: [], + defaultTemplateId: null, + id: 'simple-document-type-2-key', alias: 'simpleDocumentType2', name: 'Simple Document Type 2', description: null, @@ -960,12 +960,12 @@ export const data: Array = [ isElement: false, properties: [ { - key: '82d4b050-b128-42fe-ac8e-d5586e533592', - containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + id: '82d4b050-b128-42fe-ac8e-d5586e533592', + containerId: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', alias: 'prop1', name: 'Prop 1', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -979,12 +979,12 @@ export const data: Array = [ }, }, { - key: 'beadc69a-d669-4d01-9919-98bafba31e57', - containerKey: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + id: 'beadc69a-d669-4d01-9919-98bafba31e57', + containerId: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', alias: 'prop2', name: 'Prop 2', description: null, - dataTypeKey: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', + dataTypeId: '0cc0eba1-9960-42c9-bf9b-60e150b429ae', variesByCulture: false, variesBySegment: false, validation: { @@ -1000,14 +1000,14 @@ export const data: Array = [ ], containers: [ { - key: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', - parentKey: null, + id: 'b275052a-1868-4901-bc8c-2b35b78a9ab2', + parentId: null, name: 'Content', type: 'Group', sortOrder: 0, }, ], - allowedContentTypes: [{ key: 'simple-document-type-key', sortOrder: 0 }], + allowedContentTypes: [{ id: 'simple-document-type-key', sortOrder: 0 }], compositions: [], cleanup: { preventCleanup: false, @@ -1023,9 +1023,9 @@ export const treeData: Array = [ name: 'All property editors document type', type: 'document-type', hasChildren: false, - key: 'all-property-editors-document-type-key', + id: 'all-property-editors-document-type-id', isContainer: false, - parentKey: null, + parentId: null, icon: '', }, { @@ -1033,9 +1033,9 @@ export const treeData: Array = [ name: 'Page Document Type', type: 'document-type', hasChildren: false, - key: '29643452-cff9-47f2-98cd-7de4b6807681', + id: '29643452-cff9-47f2-98cd-7de4b6807681', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1043,9 +1043,9 @@ export const treeData: Array = [ name: 'Page Document Type Compositional', type: 'document-type', hasChildren: false, - key: '5035d7d9-0a63-415c-9e75-ee2cf931db92', + id: '5035d7d9-0a63-415c-9e75-ee2cf931db92', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1053,9 +1053,9 @@ export const treeData: Array = [ name: 'Page Document Type Inherited', type: 'document-type', hasChildren: false, - key: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', + id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1063,9 +1063,9 @@ export const treeData: Array = [ name: 'Simple Document Type', type: 'document-type', hasChildren: false, - key: 'simple-document-type-key', + id: 'simple-document-type-key', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, { @@ -1073,9 +1073,9 @@ export const treeData: Array = [ name: 'Simple Document Type 2', type: 'document-type', hasChildren: false, - key: 'simple-document-type-2-key', + id: 'simple-document-type-2-key', isContainer: false, - parentKey: null, + parentId: null, icon: 'umb:document', }, ]; @@ -1092,24 +1092,24 @@ class UmbDocumentTypeData extends UmbEntityData { } getTreeRoot(): Array { - const rootItems = this.treeData.filter((item) => item.parentKey === null); + const rootItems = this.treeData.filter((item) => item.parentId === null); return rootItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItemChildren(key: string): Array { - const childItems = this.treeData.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.treeData.filter((item) => item.parentId === id); return childItems.map((item) => createDocumentTypeTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } - getAllowedTypesOf(key: string): Array { - const documentType = this.getByKey(key); - const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.key) ?? []; - const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.key ?? '')); + getAllowedTypesOf(id: string): Array { + const documentType = this.getById(id); + const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.id) ?? []; + const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.id ?? '')); return items.map((item) => createDocumentTypeTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts index e1fa80708c..15224b187d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/document.data.ts @@ -15,9 +15,9 @@ export const data: Array = [ url: '/', }, ], - templateKey: null, - key: 'all-property-editors-document-key', - contentTypeKey: 'all-property-editors-document-type-key', + templateId: null, + id: 'all-property-editors-document-id', + contentTypeId: 'all-property-editors-document-type-id', values: [ { $type: '', @@ -305,9 +305,9 @@ export const data: Array = [ url: '/', }, ], - templateKey: null, - key: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', - contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', + templateId: null, + id: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + contentTypeId: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { $type: '', @@ -435,9 +435,9 @@ export const data: Array = [ }, { urls: [], - templateKey: null, - key: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', - contentTypeKey: '29643452-cff9-47f2-98cd-7de4b6807681', + templateId: null, + id: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', + contentTypeId: '29643452-cff9-47f2-98cd-7de4b6807681', values: [ { $type: '', @@ -511,9 +511,9 @@ export const data: Array = [ }, { urls: [], - templateKey: null, - key: 'simple-document-key', - contentTypeKey: 'simple-document-type-key', + templateId: null, + id: 'simple-document-id', + contentTypeId: 'simple-document-type-id', variants: [ { $type: '', @@ -537,9 +537,9 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'all-property-editors-document-key', + id: 'all-property-editors-document-id', isContainer: false, - parentKey: null, + parentId: null, name: 'All property editors', type: 'document', icon: 'document', @@ -552,9 +552,9 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + id: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', isContainer: false, - parentKey: null, + parentId: null, name: 'Article in english', type: 'document', icon: 'document', @@ -567,9 +567,9 @@ export const treeData: Array = [ isEdited: false, noAccess: false, isTrashed: false, - key: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', + id: 'fd56a0b5-01a0-4da2-b428-52773bfa9cc4', isContainer: false, - parentKey: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', + parentId: 'c05da24d-7740-447b-9cdc-bd8ce2172e38', name: 'Blog post B', type: 'document', icon: 'document', @@ -581,9 +581,9 @@ export const treeData: Array = [ type: 'document', icon: 'document', hasChildren: false, - key: 'f6n7a5b2-e7c1-463a-956bc-6ck5b9bdf447', + id: 'f6n7a5b2-e7c1-463a-956bc-6ck5b9bdf447', isContainer: false, - parentKey: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', + parentId: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', noAccess: false, isProtected: false, isPublished: false, @@ -596,9 +596,9 @@ export const treeData: Array = [ type: 'document', icon: 'document', hasChildren: false, - key: 'simple-document-key', + id: 'simple-document-id', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isProtected: false, isPublished: false, @@ -619,21 +619,21 @@ class UmbDocumentData extends UmbEntityData { } getTreeRoot(): PagedDocumentTreeItemResponseModel { - const items = this.treeData.filter((item) => item.parentKey === null); + const items = this.treeData.filter((item) => item.parentId === null); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedDocumentTreeItemResponseModel { - const items = this.treeData.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedDocumentTreeItemResponseModel { + const items = this.treeData.filter((item) => item.parentId === id); const treeItems = items.map((item) => createDocumentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createDocumentTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index d2e43b9f49..c0fb1ac135 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -11,16 +11,16 @@ export class UmbEntityData extends UmbData { return this.data.slice(skip, skip + take); } - getByKey(key: string) { - return this.data.find((item) => item.key === key); + getById(id: string) { + return this.data.find((item) => item.id === id); } - getByKeys(keys: Array) { - return this.data.filter((item) => keys.includes(item.key)); + getByIds(ids: Array) { + return this.data.filter((item) => ids.includes(item.id)); } save(saveItem: T) { - const foundIndex = this.data.findIndex((item) => item.key === saveItem.key); + const foundIndex = this.data.findIndex((item) => item.id === saveItem.id); if (foundIndex !== -1) { // update this.data[foundIndex] = saveItem; @@ -33,12 +33,12 @@ export class UmbEntityData extends UmbData { return saveItem; } - move(keys: Array, destinationKey: string) { - const items = this.getByKeys(keys); + move(ids: Array, destinationKey: string) { + const items = this.getByIds(ids); const movedItems = items.map((item) => { return { ...item, - parentKey: destinationKey, + parentId: destinationKey, }; }); @@ -46,11 +46,11 @@ export class UmbEntityData extends UmbData { return movedItems; } - trash(keys: Array) { + trash(ids: Array) { const trashedItems: Array = []; - keys.forEach((key) => { - const item = this.getByKey(key); + ids.forEach((key) => { + const item = this.getById(key); if (!item) return; // TODO: how do we handle trashed items? @@ -65,17 +65,18 @@ export class UmbEntityData extends UmbData { return trashedItems; } - delete(keys: Array) { - const deletedKeys = this.data.filter((item) => keys.includes(item.key)).map((item) => item.key); - this.data = this.data.filter((item) => keys.indexOf(item.key) === -1); + delete(ids: Array) { + const deletedKeys = this.data.filter((item) => ids.includes(item.id)).map((item) => item.id); + this.data = this.data.filter((item) => ids.indexOf(item.id) === -1); return deletedKeys; } protected updateData(updateItem: T) { - const itemIndex = this.data.findIndex((item) => item.key === updateItem.key); + const itemIndex = this.data.findIndex((item) => item.id === updateItem.id); const item = this.data[itemIndex]; if (!item) return; + // TODO: revisit this code, seems like something we can solve smarter/type safer now: const itemKeys = Object.keys(item); const newItem = {}; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts index d0afe79a92..b21934a28f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/health-check.data.ts @@ -25,7 +25,7 @@ export const healthGroups: Arrayyour@email.here.`, @@ -51,7 +51,7 @@ export const healthGroups: Array { return this.data; } - delete(keys: Array) { - keys.forEach((key) => { - const foundIndex = this.data.findIndex((item) => item.isoCode === key); + delete(isoCodes: Array) { + isoCodes.forEach((isoCode) => { + const foundIndex = this.data.findIndex((item) => item.isoCode === isoCode); if (foundIndex !== -1) { this.data.splice(foundIndex, 1); } }); - return keys; + return isoCodes; } updateData(updateItem: LanguageResponseModel) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts index fcf544de4b..30ea41f140 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/log-viewer.data.ts @@ -1,9 +1,13 @@ import { logs } from './logs.data'; import { UmbData } from './data'; -import { LogMessageResponseModel, LogTemplateResponseModel, SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + LogMessageResponseModel, + LogTemplateResponseModel, + SavedLogSearchResponseModel, +} from '@umbraco-cms/backoffice/backend-api'; // Temp mocked database -class UmbLogviewerSearchesData extends UmbData { +class UmbLogViewerSearchesData extends UmbData { constructor(data: SavedLogSearchResponseModel[]) { super(data); } @@ -405,8 +409,8 @@ export const logLevels = { ], }; -export const umbLogviewerData = { - searches: new UmbLogviewerSearchesData(savedSearches), +export const umbLogViewerData = { + searches: new UmbLogViewerSearchesData(savedSearches), templates: new UmbLogviewerTemplatesData(messageTemplates), logs: new UmbLogviewerMessagesData(logs), logLevels: logLevels, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts index 151158303a..601f5fc6c3 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media-type.data.ts @@ -9,9 +9,9 @@ export const data: Array = [ name: 'Media Type 1', type: 'media-type', hasChildren: false, - key: 'c5159663-eb82-43ee-bd23-e42dc5e71db6', + id: 'c5159663-eb82-43ee-bd23-e42dc5e71db6', isContainer: false, - parentKey: null, + parentId: null, isFolder: false, icon: '', alias: 'mediaType1', @@ -22,9 +22,9 @@ export const data: Array = [ name: 'Media Type 2', type: 'media-type', hasChildren: false, - key: '22da1b0b-c310-4730-9912-c30b3eb9802e', + id: '22da1b0b-c310-4730-9912-c30b3eb9802e', isContainer: false, - parentKey: null, + parentId: null, isFolder: false, icon: '', alias: 'mediaType2', @@ -42,21 +42,21 @@ class UmbMediaTypeData extends UmbEntityData { } getTreeRoot(): PagedFolderTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedFolderTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedFolderTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createFolderTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createFolderTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts index 82f1c4d25a..31a930b596 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/media.data.ts @@ -10,9 +10,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: 'f2f81a40-c989-4b6b-84e2-057cecd3adc1', + id: 'f2f81a40-c989-4b6b-84e2-057cecd3adc1', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [ @@ -20,7 +20,7 @@ export const data: Array = [ alias: 'myMediaHeadline', label: 'Media Headline', description: 'Text string property', - dataTypeKey: 'dt-textBox', + dataTypeId: 'dt-textBox', }, ], data: [ @@ -37,9 +37,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45bf-a93b-72bbdabfb177', + id: '69431027-8867-45bf-a93b-72bbdabfb177', isContainer: false, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [ @@ -47,7 +47,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -64,9 +64,9 @@ export const data: Array = [ type: 'media', icon: 'folder', hasChildren: true, - key: '69461027-8867-45bf-a93b-72bbdabfb177', + id: '69461027-8867-45bf-a93b-72bbdabfb177', isContainer: true, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [], @@ -79,9 +79,9 @@ export const data: Array = [ type: 'media', icon: 'folder', hasChildren: true, - key: '69461027-8867-45bf-a93b-5224dabfb177', + id: '69461027-8867-45bf-a93b-5224dabfb177', isContainer: true, - parentKey: null, + parentId: null, noAccess: false, isTrashed: false, properties: [], @@ -94,9 +94,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45s7-a93b-7uibdabfb177', + id: '69431027-8867-45s7-a93b-7uibdabfb177', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-72bbdabfb177', + parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, isTrashed: false, properties: [ @@ -104,7 +104,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -121,9 +121,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '69431027-8867-45s7-a93b-7uibdabf2147', + id: '69431027-8867-45s7-a93b-7uibdabf2147', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-72bbdabfb177', + parentId: '69461027-8867-45bf-a93b-72bbdabfb177', noAccess: false, isTrashed: false, properties: [ @@ -131,7 +131,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -148,9 +148,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '694hdj27-8867-45s7-a93b-7uibdabf2147', + id: '694hdj27-8867-45s7-a93b-7uibdabf2147', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-5224dabfb177', + parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, isTrashed: false, properties: [ @@ -158,7 +158,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -175,9 +175,9 @@ export const data: Array = [ type: 'media', icon: 'picture', hasChildren: false, - key: '694hdj27-1237-45s7-a93b-7uibdabfas47', + id: '694hdj27-1237-45s7-a93b-7uibdabfas47', isContainer: false, - parentKey: '69461027-8867-45bf-a93b-5224dabfb177', + parentId: '69461027-8867-45bf-a93b-5224dabfb177', noAccess: false, isTrashed: false, properties: [ @@ -185,7 +185,7 @@ export const data: Array = [ alias: 'myMediaDescription', label: 'Description', description: 'Textarea property', - dataTypeKey: 'dt-textArea', + dataTypeId: 'dt-textArea', }, ], data: [ @@ -208,21 +208,21 @@ class UmbMediaData extends UmbEntityData { } getTreeRoot(): PagedContentTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedContentTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedContentTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createContentTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key)); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id)); return items.map((item) => createContentTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts index 43dd431745..db2d57d5e7 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-group.data.ts @@ -10,9 +10,9 @@ export const data: Array = [ type: 'member-group', icon: 'umb:document', hasChildren: false, - key: '76708ccd-4179-464c-b694-6969149dd9f9', + id: '76708ccd-4179-464c-b694-6969149dd9f9', isContainer: false, - parentKey: null, + parentId: null, }, ]; @@ -26,21 +26,21 @@ class UmbMemberGroupData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts index 0e548edd1b..7200916cb4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member-type.data.ts @@ -10,9 +10,9 @@ export const data: Array = [ type: 'member-type', icon: 'icon-user', hasChildren: false, - key: 'd59be02f-1df9-4228-aa1e-01917d806cda', + id: 'd59be02f-1df9-4228-aa1e-01917d806cda', isContainer: false, - parentKey: null, + parentId: null, alias: 'memberType1', properties: [], }, @@ -25,21 +25,21 @@ class UmbMemberTypeData extends UmbData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts index 5eb713016a..75faed9860 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/member.data.ts @@ -13,9 +13,9 @@ export const data: Array = [ type: 'member', icon: 'umb:user', hasChildren: false, - key: 'aaa08ccd-4179-464c-b634-6969149dd9f9', + id: 'aaa08ccd-4179-464c-b634-6969149dd9f9', isContainer: false, - parentKey: null, + parentId: null, }, ]; @@ -29,21 +29,21 @@ class UmbMemberData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts index 93a7911735..c39f9dc2e4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/relation-type.data.ts @@ -5,7 +5,7 @@ import type { EntityTreeItemResponseModel, RelationTypeResponseModel } from '@um // TODO: investigate why we don't get an entity type as part of the RelationTypeResponseModel export const data: Array = [ { - key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + id: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', alias: 'relateDocumentOnCopy', name: 'Relate Document On Copy', path: '', @@ -18,7 +18,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'ac68cde6-763f-4231-a751-1101b57defd2', + id: 'ac68cde6-763f-4231-a751-1101b57defd2', alias: 'relateParentDocumentOnDelete', name: 'Relate Parent Document On Delete', path: '', @@ -31,7 +31,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + id: '6f9b800c-762c-42d4-85d9-bf40a77d689e', alias: 'relateParentMediaFolderOnDelete', name: 'Relate Parent Media Folder On Delete', path: '', @@ -44,7 +44,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'd421727d-43de-4205-b4c6-037404f309ad', + id: 'd421727d-43de-4205-b4c6-037404f309ad', alias: 'relatedMedia', name: 'Related Media', path: '', @@ -57,7 +57,7 @@ export const data: Array = [ childObjectTypeName: 'Document', }, { - key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + id: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', alias: 'relatedDocument', name: 'Related Document', path: '', @@ -73,46 +73,46 @@ export const data: Array = [ export const treeData: Array = [ { - key: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', + id: 'e0d39ff5-71d8-453f-b682-9d8d31ee5e06', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Document On Copy', icon: 'umb:trafic', type: 'relation-type', }, { - key: 'ac68cde6-763f-4231-a751-1101b57defd2', + id: 'ac68cde6-763f-4231-a751-1101b57defd2', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Parent Document On Delete', icon: 'umb:trafic', type: 'relation-type', }, { - key: '6f9b800c-762c-42d4-85d9-bf40a77d689e', + id: '6f9b800c-762c-42d4-85d9-bf40a77d689e', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Relate Parent Media Folder On Delete', icon: 'umb:trafic', type: 'relation-type', }, { - key: 'd421727d-43de-4205-b4c6-037404f309ad', + id: 'd421727d-43de-4205-b4c6-037404f309ad', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Related Media', icon: 'umb:trafic', type: 'relation-type', }, { - key: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', + id: 'e9a0a28e-2d5b-4229-ac00-66f2df230513', $type: 'EntityTreeItemViewModel', isContainer: false, - parentKey: null, + parentId: null, name: 'Related Document', icon: 'umb:trafic', type: 'relation-type', @@ -136,13 +136,13 @@ class UmbRelationTypeData extends UmbEntityData { } //TODO Can relation types have children? - getTreeItemChildren(key: string): Array { - const childItems = this.treeData.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): Array { + const childItems = this.treeData.filter((item) => item.parentId === id); return childItems.map((item) => createEntityTreeItem(item)); } - getTreeItem(keys: Array): Array { - const items = this.treeData.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.treeData.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts index 210f4b48d5..70a5fc11f8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/template.data.ts @@ -14,7 +14,7 @@ type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel; const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { return { $type: '', - key: dbItem.key, + id: dbItem.id, name: dbItem.name, alias: dbItem.alias, content: dbItem.content, @@ -24,9 +24,9 @@ const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => { export const data: Array = [ { $type: '', - key: '2bf464b6-3aca-4388-b043-4eb439cc2643', + id: '2bf464b6-3aca-4388-b043-4eb439cc2643', isContainer: false, - parentKey: null, + parentId: null, name: 'Doc 1', type: 'template', icon: 'icon-layout', @@ -37,7 +37,7 @@ export const data: Array = [ @{ if (Model?.Areas.Any() != true) { return; } } - +
    @foreach (var area in Model.Areas) @@ -48,9 +48,9 @@ export const data: Array = [ }, { $type: '', - key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', + id: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', isContainer: false, - parentKey: null, + parentId: null, name: 'Test', type: 'template', icon: 'icon-layout', @@ -61,9 +61,9 @@ export const data: Array = [ }, { $type: '', - key: '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', + id: '9a84c0b3-03b4-4dd4-84ac-706740ac0f72', isContainer: false, - parentKey: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', + parentId: '9a84c0b3-03b4-4dd4-84ac-706740ac0f71', name: 'Child', type: 'template', icon: 'icon-layout', @@ -87,8 +87,8 @@ class UmbTemplateData extends UmbEntityData { super(data); } - getByKey(key: string): TemplateResponseModel | undefined { - const item = this.data.find((item) => item.key === key); + getById(id: string): TemplateResponseModel | undefined { + const item = this.data.find((item) => item.id === id); return item ? createTemplate(item) : undefined; } @@ -101,7 +101,7 @@ class UmbTemplateData extends UmbEntityData { create(templateData: TemplateModelBaseModel) { const template = { $type: '', - key: uuid(), + id: uuid(), ...templateData, }; this.data.push(template); @@ -114,21 +114,21 @@ class UmbTemplateData extends UmbEntityData { } getTreeRoot(): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === null); + const items = this.data.filter((item) => item.parentId === null); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItemChildren(key: string): PagedEntityTreeItemResponseModel { - const items = this.data.filter((item) => item.parentKey === key); + getTreeItemChildren(id: string): PagedEntityTreeItemResponseModel { + const items = this.data.filter((item) => item.parentId === id); const treeItems = items.map((item) => createEntityTreeItem(item)); const total = items.length; return { items: treeItems, total }; } - getTreeItem(keys: Array): Array { - const items = this.data.filter((item) => keys.includes(item.key ?? '')); + getTreeItem(ids: Array): Array { + const items = this.data.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts index 4da8dbb21c..3c4b99b1ca 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/user-groups.data.ts @@ -14,10 +14,10 @@ class UmbUserGroupsData extends UmbEntityData { export const data: Array = [ { - key: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', + id: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', name: 'Administrators', icon: 'umb:medal', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: [ @@ -31,10 +31,10 @@ export const data: Array = [ permissions: [], }, { - key: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', + id: '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', name: 'Workspaces', icon: 'umb:tools', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Members', 'Umb.Section.Media'], @@ -42,10 +42,10 @@ export const data: Array = [ contentStartNode: '74e4008a-ea4f-4793-b924-15e02fd380d1', }, { - key: 'b847398a-6875-4d7a-9f6d-231256b81471', + id: 'b847398a-6875-4d7a-9f6d-231256b81471', name: 'Sensitive Data', icon: 'umb:lock', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Settings', 'Umb.Section.Members', 'Umb.Section.Media', 'Umb.Section.Content'], @@ -53,10 +53,10 @@ export const data: Array = [ contentStartNode: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', }, { - key: '2668f09b-320c-48a7-a78a-95047026ec0e', + id: '2668f09b-320c-48a7-a78a-95047026ec0e', name: 'Translators', icon: 'umb:globe', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Packages', 'Umb.Section.Settings'], @@ -64,10 +64,10 @@ export const data: Array = [ contentStartNode: 'cdd30288-2d1c-41b4-89a9-61647b4a10d5', }, { - key: '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', + id: '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', name: 'Writers', icon: 'umb:edit', - parentKey: '', + parentId: '', type: 'user-group', hasChildren: false, sections: ['Umb.Section.Content'], diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts index 28440cbc10..740b6a1957 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/users.data.ts @@ -11,9 +11,9 @@ class UmbUsersData extends UmbEntityData { return this.data; } - updateUserGroup(keys: string[], userGroup: string) { + updateUserGroup(ids: string[], userGroup: string) { this.data.forEach((user) => { - if (keys.includes(user.key)) { + if (ids.includes(user.id)) { user.userGroups = [...user.userGroups, userGroup]; } else { user.userGroups = user.userGroups.filter((group) => group !== userGroup); @@ -22,34 +22,34 @@ class UmbUsersData extends UmbEntityData { this.updateData(user); }); - return this.data.map((user) => user.key); + return this.data.map((user) => user.id); } - enable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.key)); + enable(ids: string[]) { + const users = this.data.filter((user) => ids.includes(user.id)); users.forEach((user) => { user.status = 'enabled'; this.updateData(user); }); - return users.map((user) => user.key); + return users.map((user) => user.id); } - disable(keys: string[]) { - const users = this.data.filter((user) => keys.includes(user.key)); + disable(ids: string[]) { + const users = this.data.filter((user) => ids.includes(user.id)); users.forEach((user) => { user.status = 'disabled'; this.updateData(user); }); - return users.map((user) => user.key); + return users.map((user) => user.id); } } export const data: Array = [ { - key: 'a953e376-89f8-46d1-bed9-1b47743aa38a', + id: 'a953e376-89f8-46d1-bed9-1b47743aa38a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -66,10 +66,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'], }, { - key: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd', + id: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -90,10 +90,10 @@ export const data: Array = [ ], }, { - key: '9f63996f-71e9-49be-bc21-5a69ea97e72e', + id: '9f63996f-71e9-49be-bc21-5a69ea97e72e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -114,10 +114,10 @@ export const data: Array = [ ], }, { - key: 'ff1d1bff-b6d2-444b-950a-68b5eec46277', + id: 'ff1d1bff-b6d2-444b-950a-68b5eec46277', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -138,10 +138,10 @@ export const data: Array = [ ], }, { - key: 'c9cf849f-0536-4e38-a91a-02c8c45a6f47', + id: 'c9cf849f-0536-4e38-a91a-02c8c45a6f47', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -158,10 +158,10 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'd9cbd4cd-6950-42b2-be57-1f5829c6dd19', + id: 'd9cbd4cd-6950-42b2-be57-1f5829c6dd19', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -178,10 +178,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '515b2c5c-c195-43f2-8e52-4733572030c7', + id: '515b2c5c-c195-43f2-8e52-4733572030c7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -204,10 +204,10 @@ export const data: Array = [ ], }, { - key: 'db8a0800-28b3-4f0b-9152-37debea6b8d7', + id: 'db8a0800-28b3-4f0b-9152-37debea6b8d7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -228,10 +228,10 @@ export const data: Array = [ ], }, { - key: '3fe38c9b-b5a3-4897-8507-3f062a25659e', + id: '3fe38c9b-b5a3-4897-8507-3f062a25659e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -248,10 +248,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '09e99152-bc3e-449f-9fa1-322ab3390b7d', + id: '09e99152-bc3e-449f-9fa1-322ab3390b7d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -272,10 +272,10 @@ export const data: Array = [ ], }, { - key: '5680bd61-9b58-4ecb-ae06-bdfacebe05f2', + id: '5680bd61-9b58-4ecb-ae06-bdfacebe05f2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -292,10 +292,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'], }, { - key: '1c2cb6b5-1b96-47c0-a2b7-f5dd6bd3d325', + id: '1c2cb6b5-1b96-47c0-a2b7-f5dd6bd3d325', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -316,10 +316,10 @@ export const data: Array = [ ], }, { - key: 'ac6cc4e4-ab38-4920-8646-63c7652fc97a', + id: 'ac6cc4e4-ab38-4920-8646-63c7652fc97a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -336,10 +336,10 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: 'a5e5bbe4-acb4-4c40-b15a-eab510338620', + id: 'a5e5bbe4-acb4-4c40-b15a-eab510338620', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -360,10 +360,10 @@ export const data: Array = [ ], }, { - key: 'c775af23-4aec-4d24-a2d1-5b0d666c9eb4', + id: 'c775af23-4aec-4d24-a2d1-5b0d666c9eb4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -384,10 +384,10 @@ export const data: Array = [ ], }, { - key: '3333e2dc-b8a6-4db3-af00-ac1c1e1d5d9c', + id: '3333e2dc-b8a6-4db3-af00-ac1c1e1d5d9c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -404,10 +404,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '506126e3-2b96-4746-bd0a-1e6b2283021f', + id: '506126e3-2b96-4746-bd0a-1e6b2283021f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -424,10 +424,10 @@ export const data: Array = [ userGroups: ['9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'caf10593-3710-4417-af3d-7015f88f5fe3', + id: 'caf10593-3710-4417-af3d-7015f88f5fe3', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -448,10 +448,10 @@ export const data: Array = [ ], }, { - key: 'e2492eeb-bcc2-4c95-8893-27c45c895c9c', + id: 'e2492eeb-bcc2-4c95-8893-27c45c895c9c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -473,10 +473,10 @@ export const data: Array = [ ], }, { - key: '8c93b359-a719-4453-991c-e2d5bcc965c3', + id: '8c93b359-a719-4453-991c-e2d5bcc965c3', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -497,10 +497,10 @@ export const data: Array = [ ], }, { - key: '4cd22c7c-baeb-463f-89e5-e0a6bb3ea27e', + id: '4cd22c7c-baeb-463f-89e5-e0a6bb3ea27e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -521,10 +521,10 @@ export const data: Array = [ ], }, { - key: 'ccd03e29-e924-4240-a1e4-b0114c66aae9', + id: 'ccd03e29-e924-4240-a1e4-b0114c66aae9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -547,10 +547,10 @@ export const data: Array = [ ], }, { - key: '7ffa97ca-0702-4bcf-8e32-751bae9aa156', + id: '7ffa97ca-0702-4bcf-8e32-751bae9aa156', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -571,10 +571,10 @@ export const data: Array = [ ], }, { - key: 'e139ec4b-b49a-48c0-a1a3-1c2e8e95366d', + id: 'e139ec4b-b49a-48c0-a1a3-1c2e8e95366d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -595,10 +595,10 @@ export const data: Array = [ ], }, { - key: '30d29d56-cbb2-41fd-9154-94b0f0d9a385', + id: '30d29d56-cbb2-41fd-9154-94b0f0d9a385', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -619,10 +619,10 @@ export const data: Array = [ ], }, { - key: '3ecac483-c4df-4971-a357-a0be03c520ca', + id: '3ecac483-c4df-4971-a357-a0be03c520ca', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -639,10 +639,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '2dae8bf8-5fdd-4efa-a493-cbec11b179e2', + id: '2dae8bf8-5fdd-4efa-a493-cbec11b179e2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -663,10 +663,10 @@ export const data: Array = [ ], }, { - key: '0397dd89-72c5-4d0b-a544-dc1c9c0a932d', + id: '0397dd89-72c5-4d0b-a544-dc1c9c0a932d', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -688,10 +688,10 @@ export const data: Array = [ ], }, { - key: '4f2f64c1-1b9b-4217-80c7-7760962215af', + id: '4f2f64c1-1b9b-4217-80c7-7760962215af', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -713,10 +713,10 @@ export const data: Array = [ ], }, { - key: '6cefa1e1-4302-4003-81df-3fa4759245a4', + id: '6cefa1e1-4302-4003-81df-3fa4759245a4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -738,10 +738,10 @@ export const data: Array = [ ], }, { - key: '2ba9ae27-7860-42ea-b628-c5484b64b2c6', + id: '2ba9ae27-7860-42ea-b628-c5484b64b2c6', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -758,10 +758,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'f4bee7c8-7a94-4937-8e6e-ceb55c9ec8b4', + id: 'f4bee7c8-7a94-4937-8e6e-ceb55c9ec8b4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -778,10 +778,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '3ccfeec3-1c96-4205-ae90-3297702d0d59', + id: '3ccfeec3-1c96-4205-ae90-3297702d0d59', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -802,10 +802,10 @@ export const data: Array = [ ], }, { - key: 'cb0e3a46-1e99-4dc3-a206-462c3d985916', + id: 'cb0e3a46-1e99-4dc3-a206-462c3d985916', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -826,10 +826,10 @@ export const data: Array = [ ], }, { - key: 'eb5af046-f2af-490f-a195-b0faff73f538', + id: 'eb5af046-f2af-490f-a195-b0faff73f538', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -846,10 +846,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: '42037971-4e06-41a8-be76-04313571fe54', + id: '42037971-4e06-41a8-be76-04313571fe54', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -866,10 +866,10 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: 'd71ba775-2920-42de-b5a1-09104e81cf27', + id: 'd71ba775-2920-42de-b5a1-09104e81cf27', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -892,10 +892,10 @@ export const data: Array = [ ], }, { - key: 'ed94e56b-64d5-43d0-9c9c-7149a0b26657', + id: 'ed94e56b-64d5-43d0-9c9c-7149a0b26657', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -916,10 +916,10 @@ export const data: Array = [ ], }, { - key: '8acfe50e-2e15-460d-b368-0510d08fea4c', + id: '8acfe50e-2e15-460d-b368-0510d08fea4c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -941,10 +941,10 @@ export const data: Array = [ ], }, { - key: '73401c00-3b05-465b-ab59-8def5af4ec54', + id: '73401c00-3b05-465b-ab59-8def5af4ec54', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -965,10 +965,10 @@ export const data: Array = [ ], }, { - key: 'ffed1abb-aee0-45f1-9915-5ea7da165011', + id: 'ffed1abb-aee0-45f1-9915-5ea7da165011', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -989,10 +989,10 @@ export const data: Array = [ ], }, { - key: '754fafb2-ec86-4313-8c5a-26a0a460df70', + id: '754fafb2-ec86-4313-8c5a-26a0a460df70', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1013,10 +1013,10 @@ export const data: Array = [ ], }, { - key: 'eae3c035-1b9d-4d1d-b626-89a7c3b3bc39', + id: 'eae3c035-1b9d-4d1d-b626-89a7c3b3bc39', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1037,10 +1037,10 @@ export const data: Array = [ ], }, { - key: '4bbf5669-99ec-4e60-b159-2198990ee8f1', + id: '4bbf5669-99ec-4e60-b159-2198990ee8f1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1057,10 +1057,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'bc17c986-9869-49f4-baee-d888bf013f27', + id: 'bc17c986-9869-49f4-baee-d888bf013f27', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1082,10 +1082,10 @@ export const data: Array = [ ], }, { - key: 'f015b8a7-35b7-4859-a506-253ee95f92f4', + id: 'f015b8a7-35b7-4859-a506-253ee95f92f4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1107,10 +1107,10 @@ export const data: Array = [ ], }, { - key: 'b5fd8d4f-eecc-4bea-b841-b4ba3621e8ba', + id: 'b5fd8d4f-eecc-4bea-b841-b4ba3621e8ba', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1131,10 +1131,10 @@ export const data: Array = [ ], }, { - key: '0bfe956a-5293-48bf-8c43-fd9be5c8dd19', + id: '0bfe956a-5293-48bf-8c43-fd9be5c8dd19', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1155,10 +1155,10 @@ export const data: Array = [ ], }, { - key: 'f2914aaa-de0a-4285-b820-88d22ae7a566', + id: 'f2914aaa-de0a-4285-b820-88d22ae7a566', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1179,10 +1179,10 @@ export const data: Array = [ ], }, { - key: 'f5489ee0-589d-47e5-8c11-b5e2ef027519', + id: 'f5489ee0-589d-47e5-8c11-b5e2ef027519', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1203,10 +1203,10 @@ export const data: Array = [ ], }, { - key: '293074af-8188-4151-b025-2b43f6aa6c2c', + id: '293074af-8188-4151-b025-2b43f6aa6c2c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1223,10 +1223,10 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '93765192-b40f-4bf2-8c06-1d5ffb6989ae', + id: '93765192-b40f-4bf2-8c06-1d5ffb6989ae', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1243,10 +1243,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '59f1023c-7ce6-4c78-a1ee-dcb4625b9281', + id: '59f1023c-7ce6-4c78-a1ee-dcb4625b9281', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1263,10 +1263,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', '397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2'], }, { - key: '42592a81-f584-4b77-b312-b8e268203c22', + id: '42592a81-f584-4b77-b312-b8e268203c22', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1283,10 +1283,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '8ad78a84-8183-4833-9f8b-07b3ea8a881c', + id: '8ad78a84-8183-4833-9f8b-07b3ea8a881c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1307,10 +1307,10 @@ export const data: Array = [ ], }, { - key: '3f7bc8b5-df8b-4a79-a8bf-f379c63b8d01', + id: '3f7bc8b5-df8b-4a79-a8bf-f379c63b8d01', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1331,10 +1331,10 @@ export const data: Array = [ ], }, { - key: '09901602-688a-4c83-a977-51c16950a2c1', + id: '09901602-688a-4c83-a977-51c16950a2c1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1355,10 +1355,10 @@ export const data: Array = [ ], }, { - key: '060972c7-9b23-4788-8dc3-c2fcec1d002e', + id: '060972c7-9b23-4788-8dc3-c2fcec1d002e', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1379,10 +1379,10 @@ export const data: Array = [ ], }, { - key: 'ccf7639c-09d9-4de6-88ec-be51be7f9d69', + id: 'ccf7639c-09d9-4de6-88ec-be51be7f9d69', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1403,10 +1403,10 @@ export const data: Array = [ ], }, { - key: '2c6b24a4-c0d2-4efe-8a09-68b61d2a17ef', + id: '2c6b24a4-c0d2-4efe-8a09-68b61d2a17ef', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1427,10 +1427,10 @@ export const data: Array = [ ], }, { - key: 'ff7a2003-f8d7-4fbc-96cb-ee221bdc01c9', + id: 'ff7a2003-f8d7-4fbc-96cb-ee221bdc01c9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1447,10 +1447,10 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'b7f7b275-f62d-44ba-a6b0-0e7e83fe4e49', + id: 'b7f7b275-f62d-44ba-a6b0-0e7e83fe4e49', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1471,10 +1471,10 @@ export const data: Array = [ ], }, { - key: '18a9a6bc-ae4c-49b0-8afd-43bc214053f4', + id: '18a9a6bc-ae4c-49b0-8afd-43bc214053f4', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1495,10 +1495,10 @@ export const data: Array = [ ], }, { - key: '14fa1c36-1252-433e-a1ad-63cf5c9aba62', + id: '14fa1c36-1252-433e-a1ad-63cf5c9aba62', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1521,10 +1521,10 @@ export const data: Array = [ ], }, { - key: '7cb9327f-6aeb-47af-80b3-4b85abde1f5f', + id: '7cb9327f-6aeb-47af-80b3-4b85abde1f5f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1545,10 +1545,10 @@ export const data: Array = [ ], }, { - key: '0574e903-ba72-49ee-b838-4eb200e68612', + id: '0574e903-ba72-49ee-b838-4eb200e68612', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1570,10 +1570,10 @@ export const data: Array = [ ], }, { - key: '6e4515d6-4a67-4f47-8783-1d074c1d1f75', + id: '6e4515d6-4a67-4f47-8783-1d074c1d1f75', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1594,10 +1594,10 @@ export const data: Array = [ ], }, { - key: '4faa2064-6776-4cc0-8bc1-3ceaa5884a0f', + id: '4faa2064-6776-4cc0-8bc1-3ceaa5884a0f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1614,10 +1614,10 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '2668f09b-320c-48a7-a78a-95047026ec0e'], }, { - key: '0cccec0d-d7c4-47bc-97b0-bd55dca42dd7', + id: '0cccec0d-d7c4-47bc-97b0-bd55dca42dd7', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1639,10 +1639,10 @@ export const data: Array = [ ], }, { - key: 'd6ffe266-f024-45c2-a1cd-f39bdbc00a5b', + id: 'd6ffe266-f024-45c2-a1cd-f39bdbc00a5b', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1663,10 +1663,10 @@ export const data: Array = [ ], }, { - key: '72d3047a-8c48-4425-ad11-a4a64281e7e5', + id: '72d3047a-8c48-4425-ad11-a4a64281e7e5', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1687,10 +1687,10 @@ export const data: Array = [ ], }, { - key: 'ebfe0335-6926-433d-90de-82f9661955f9', + id: 'ebfe0335-6926-433d-90de-82f9661955f9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1711,10 +1711,10 @@ export const data: Array = [ ], }, { - key: 'e6e833fb-a872-4364-893c-b6bfc9802043', + id: 'e6e833fb-a872-4364-893c-b6bfc9802043', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1735,10 +1735,10 @@ export const data: Array = [ ], }, { - key: 'abd4d295-9ebb-4a0d-bc07-e2a662671e18', + id: 'abd4d295-9ebb-4a0d-bc07-e2a662671e18', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1759,10 +1759,10 @@ export const data: Array = [ ], }, { - key: '29d42fe1-b465-4dfe-8d29-10286474d625', + id: '29d42fe1-b465-4dfe-8d29-10286474d625', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1783,10 +1783,10 @@ export const data: Array = [ ], }, { - key: '690535f5-194a-4e32-b569-608fbf279059', + id: '690535f5-194a-4e32-b569-608fbf279059', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1807,10 +1807,10 @@ export const data: Array = [ ], }, { - key: '13b5e542-e779-48df-b7f9-2c7def0e2e55', + id: '13b5e542-e779-48df-b7f9-2c7def0e2e55', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1831,10 +1831,10 @@ export const data: Array = [ ], }, { - key: 'af5bfaaf-1597-4ad1-aa1e-206f78a91674', + id: 'af5bfaaf-1597-4ad1-aa1e-206f78a91674', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1851,10 +1851,10 @@ export const data: Array = [ userGroups: ['397f3a8b-4ca3-4b01-9dd3-94e5c9eaa9b2', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '8f39464a-2e49-498b-b8b8-cf2926978e83', + id: '8f39464a-2e49-498b-b8b8-cf2926978e83', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1876,10 +1876,10 @@ export const data: Array = [ ], }, { - key: 'ac4785f1-b6f5-4d2d-99e6-f62a96947f8c', + id: 'ac4785f1-b6f5-4d2d-99e6-f62a96947f8c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1896,10 +1896,10 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: 'd89ada67-eca1-475a-9273-0c69b56116da', + id: 'd89ada67-eca1-475a-9273-0c69b56116da', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1921,10 +1921,10 @@ export const data: Array = [ ], }, { - key: '03ced59c-40b3-482a-8470-b12f56974a0f', + id: '03ced59c-40b3-482a-8470-b12f56974a0f', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1946,10 +1946,10 @@ export const data: Array = [ ], }, { - key: 'dcfba56e-5f3c-446b-a4ef-18da66df8181', + id: 'dcfba56e-5f3c-446b-a4ef-18da66df8181', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1970,10 +1970,10 @@ export const data: Array = [ ], }, { - key: '63be3c07-9178-4c2e-810a-6bbdbbe16dcb', + id: '63be3c07-9178-4c2e-810a-6bbdbbe16dcb', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -1995,10 +1995,10 @@ export const data: Array = [ ], }, { - key: 'c57661ef-8f66-4502-91cb-2069a186ce79', + id: 'c57661ef-8f66-4502-91cb-2069a186ce79', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2019,10 +2019,10 @@ export const data: Array = [ ], }, { - key: 'b5fbd289-2900-4328-8d1f-0a6780be3585', + id: 'b5fbd289-2900-4328-8d1f-0a6780be3585', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2043,10 +2043,10 @@ export const data: Array = [ ], }, { - key: '9ca26535-5288-4b37-8e3b-96b3530de3d1', + id: '9ca26535-5288-4b37-8e3b-96b3530de3d1', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2067,10 +2067,10 @@ export const data: Array = [ ], }, { - key: '19998fc5-2902-4646-9cf2-395404da2b2a', + id: '19998fc5-2902-4646-9cf2-395404da2b2a', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2092,10 +2092,10 @@ export const data: Array = [ ], }, { - key: '468a904c-f87c-4079-920b-74c6aa3a5242', + id: '468a904c-f87c-4079-920b-74c6aa3a5242', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2117,10 +2117,10 @@ export const data: Array = [ ], }, { - key: '60336828-85ed-4b5a-abf6-869d6902ad93', + id: '60336828-85ed-4b5a-abf6-869d6902ad93', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2142,10 +2142,10 @@ export const data: Array = [ ], }, { - key: '2b0c8ffe-4bcb-4df6-b519-3358a5c90480', + id: '2b0c8ffe-4bcb-4df6-b519-3358a5c90480', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2166,10 +2166,10 @@ export const data: Array = [ ], }, { - key: 'c967ff49-f967-449b-9aab-e5ca72255a61', + id: 'c967ff49-f967-449b-9aab-e5ca72255a61', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2191,10 +2191,10 @@ export const data: Array = [ ], }, { - key: '594040ce-c6f7-49e7-8f4a-ffa8c42a2102', + id: '594040ce-c6f7-49e7-8f4a-ffa8c42a2102', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2211,10 +2211,10 @@ export const data: Array = [ userGroups: ['b847398a-6875-4d7a-9f6d-231256b81471', '9a9ad4e9-3b5b-4fe7-b0d9-e301b9675949'], }, { - key: '33806fc1-d4a9-4ddb-8d57-3c087ea1f489', + id: '33806fc1-d4a9-4ddb-8d57-3c087ea1f489', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2235,10 +2235,10 @@ export const data: Array = [ ], }, { - key: 'a59a5259-9393-4c49-a5be-56a475b27640', + id: 'a59a5259-9393-4c49-a5be-56a475b27640', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2259,10 +2259,10 @@ export const data: Array = [ ], }, { - key: '9e96841c-131d-420a-bdc8-4ba087f0f11c', + id: '9e96841c-131d-420a-bdc8-4ba087f0f11c', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2283,10 +2283,10 @@ export const data: Array = [ ], }, { - key: '84eaae2a-9aa8-4745-b4c3-fad2f5632e85', + id: '84eaae2a-9aa8-4745-b4c3-fad2f5632e85', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2308,10 +2308,10 @@ export const data: Array = [ ], }, { - key: '6fe86358-f3fd-4f7d-8d28-e867562569f2', + id: '6fe86358-f3fd-4f7d-8d28-e867562569f2', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2328,10 +2328,10 @@ export const data: Array = [ userGroups: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: '365fd725-81c7-48f0-be68-4dbcf15f1ca9', + id: '365fd725-81c7-48f0-be68-4dbcf15f1ca9', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', @@ -2348,10 +2348,10 @@ export const data: Array = [ userGroups: ['2668f09b-320c-48a7-a78a-95047026ec0e', 'b847398a-6875-4d7a-9f6d-231256b81471'], }, { - key: 'b6028623-995e-4eee-8142-723141030692', + id: 'b6028623-995e-4eee-8142-723141030692', type: 'user', hasChildren: false, - parentKey: '', + parentId: '', contentStartNodes: [], mediaStartNodes: [], icon: 'umb:user', diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts index 325e8e46b0..5c847f47e8 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/utils.ts @@ -16,9 +16,9 @@ export const createEntityTreeItem = (item: any): EntityTreeItemResponseModel => type: item.type, icon: item.icon, hasChildren: item.hasChildren, - key: item.key, + id: item.id, isContainer: item.isContainer, - parentKey: item.parentKey, + parentId: item.parentId, }; }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts index d235482f9a..0c3c6f75e5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts @@ -16,10 +16,10 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/data-type/children'), (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbDataTypeData.getTreeItemChildren(parentKey); + const children = umbDataTypeData.getTreeItemChildren(parentId); const response = { total: children.length, @@ -30,9 +30,9 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/data-type/item'), (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; - const items = umbDataTypeData.getTreeItem(keys); + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbDataTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), @@ -46,16 +46,16 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.get(umbracoPath('/data-type/folder/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/data-type/folder/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dataType = umbDataTypeData.getByKey(key); + const dataType = umbDataTypeData.getById(id); return res(ctx.status(200), ctx.json(dataType)); }), - rest.put(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -64,12 +64,12 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.delete(umbracoPath('/data-type/folder/:key'), async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; try { - umbDataTypeData.deleteFolder(key); + umbDataTypeData.deleteFolder(id); return res(ctx.status(200)); } catch (error) { return res( @@ -93,16 +93,16 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get(umbracoPath('/data-type/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/data-type/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dataType = umbDataTypeData.getByKey(key); + const dataType = umbDataTypeData.getById(id); return res(ctx.status(200), ctx.json(dataType)); }), - rest.put(umbracoPath('/data-type/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/data-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -111,11 +111,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.delete(umbracoPath('/data-type/:key'), async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete(umbracoPath('/data-type/:id'), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - umbDataTypeData.delete([key]); + umbDataTypeData.delete([id]); return res(ctx.status(200)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index 036d063c59..16fbe9f341 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -4,16 +4,16 @@ import { umbDictionaryData } from '../data/dictionary.data'; import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; const uploadResponse: ImportDictionaryRequestModel = { - fileName: 'c:/path/to/tempfilename.udt', - parentKey: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', + temporaryFileId: 'c:/path/to/tempfilename.udt', + parentId: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', }; /// const importResponse: DictionaryDetails = { $type: '', - parentKey: null, + parentId: null, name: 'Uploaded dictionary', - key: 'b7e7d0ab-53ba-485d-dddd-12537f9925cb', + id: 'b7e7d0ab-53ba-485d-dddd-12537f9925cb', hasChildren: false, type: 'dictionary-item', isContainer: false, @@ -34,23 +34,23 @@ const importResponse: DictionaryDetails = { const overviewData: Array = [ { name: 'Hello', - key: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', translatedIsoCodes: ['en'], }, { name: 'Hello again', - key: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', + id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', translatedIsoCodes: ['en', 'fr'], }, ]; // TODO: add schema export const handlers = [ - rest.get('/umbraco/management/api/v1/dictionary/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/dictionary/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const dictionary = umbDictionaryData.getByKey(key); + const dictionary = umbDictionaryData.getById(id); return res(ctx.status(200), ctx.json(dictionary)); }), @@ -100,12 +100,12 @@ export const handlers = [ return res(ctx.status(200), ctx.json(createdResult)); }), - rest.patch('/umbraco/management/api/v1/dictionary/:key', async (req, res, ctx) => { + rest.patch('/umbraco/management/api/v1/dictionary/:id', async (req, res, ctx) => { const data = await req.json(); if (!data) return; - const key = req.params.key as string; - if (!key) return; + const id = req.params.id as string; + if (!id) return; const dataToSave = JSON.parse(data[0].value); const saved = umbDictionaryData.save(dataToSave); @@ -123,10 +123,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/dictionary/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const items = umbDictionaryData.getTreeItemChildren(parentKey); + const items = umbDictionaryData.getTreeItemChildren(parentId); const response = { total: items.length, @@ -137,30 +137,30 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/dictionary/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDictionaryData.getTreeItem(keys); + const items = umbDictionaryData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.delete('/umbraco/management/api/v1/dictionary/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete('/umbraco/management/api/v1/dictionary/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const deletedKeys = umbDictionaryData.delete([key]); + const deletedKeys = umbDictionaryData.delete([id]); return res(ctx.status(200), ctx.json(deletedKeys)); }), // TODO => handle properly, querystring breaks handler - rest.get('/umbraco/management/api/v1/dictionary/:key/export', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/dictionary/:id/export', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; const includeChildren = req.url.searchParams.get('includeChildren'); - const item = umbDictionaryData.getByKey(key); + const item = umbDictionaryData.getById(id); alert( `Downloads file for dictionary "${item?.name}", ${includeChildren === 'true' ? 'with' : 'without'} children.` @@ -177,16 +177,16 @@ export const handlers = [ rest.post('/umbraco/management/api/v1/dictionary/import', async (req, res, ctx) => { const file = req.url.searchParams.get('file'); - if (!file) return; + if (!file || !importResponse.id) return; - importResponse.parentKey = req.url.searchParams.get('parentKey') ?? null; + importResponse.parentId = req.url.searchParams.get('parentId') ?? null; umbDictionaryData.save(importResponse); // build the path to the new item => reflects the expected server response const path = ['-1']; - if (importResponse.parentKey) path.push(importResponse.parentKey); + if (importResponse.parentId) path.push(importResponse.parentId); - path.push(importResponse.key); + path.push(importResponse.id); const contentResult = { content: path.join(','), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts index b9ae6eabca..1daea0ba0f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document-type.handlers.ts @@ -4,7 +4,7 @@ import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend- // TODO: add schema export const handlers = [ - rest.post('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document-type/:id', (req, res, ctx) => { const data = req.body; if (!data) return; @@ -13,11 +13,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get('/umbraco/management/api/v1/document-type/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const document = umbDocumentTypeData.getByKey(key); + const document = umbDocumentTypeData.getById(id); return res(ctx.status(200), ctx.json([document])); }), @@ -41,10 +41,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbDocumentTypeData.getTreeItemChildren(parentKey); + const children = umbDocumentTypeData.getTreeItemChildren(parentId); const response = { total: children.length, @@ -55,28 +55,28 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDocumentTypeData.getTreeItem(keys); + const items = umbDocumentTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.get('/umbraco/management/api/v1/document-type/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const documentType = umbDocumentTypeData.getByKey(key); + const documentType = umbDocumentTypeData.getById(id); return res(ctx.status(200), ctx.json(documentType)); }), - rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const items = umbDocumentTypeData.getAllowedTypesOf(key); + const items = umbDocumentTypeData.getAllowedTypesOf(id); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts index b20817747d..44c3eb41da 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/document.handlers.ts @@ -7,9 +7,9 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const handlers = [ rest.post('/umbraco/management/api/v1/document/trash', async (req, res, ctx) => { console.warn('Please move to schema'); - const keys = await req.json(); + const ids = await req.json(); - const trashed = umbDocumentData.trash(keys); + const trashed = umbDocumentData.trash(ids); return res(ctx.status(200), ctx.json(trashed)); }), @@ -20,22 +20,22 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/document/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbDocumentData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbDocumentData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), rest.get('/umbraco/management/api/v1/tree/document/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbDocumentData.getTreeItem(keys); + const items = umbDocumentData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.post('/umbraco/management/api/v1/document/:key', async (req, res, ctx) => { + rest.post('/umbraco/management/api/v1/document/:id', async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -44,11 +44,11 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.get(umbracoPath('/document/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/document/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const document = umbDocumentData.getByKey(key); + const document = umbDocumentData.getById(id); return res(ctx.status(200), ctx.json(document)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts index de8d67686f..a4e075f140 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/health-check.handlers.ts @@ -54,9 +54,9 @@ export const handlers = [ rest.post(umbracoPath('/health-check/execute-action'), async (req, res, ctx) => { const body = await req.json(); - const healthCheckKey = body.healthCheckKey; - // Find the health check based on the healthCheckKey from the healthGroups[].checks - const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.key === healthCheckKey); + const healthCheckId = body.healthCheckId; + // Find the health check based on the healthCheckId from the healthGroups[].checks + const healthCheck = healthGroups.flatMap((group) => group.checks).find((check) => check?.id === healthCheckId); if (!healthCheck) { return res(ctx.status(404)); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts index 4759c1d423..41158abe5b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/language.handlers.ts @@ -21,12 +21,12 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get(umbracoPath('/language/:key'), (req, res, ctx) => { - const key = req.params.key as string; + rest.get(umbracoPath('/language/:id'), (req, res, ctx) => { + const id = req.params.id as string; - if (!key) return; + if (!id) return; - const item = umbLanguagesData.getByKey(key); + const item = umbLanguagesData.getByKey(id); return res(ctx.status(200), ctx.json(item)); }), @@ -53,7 +53,7 @@ export const handlers = [ } }), - rest.put(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/language/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -63,7 +63,7 @@ export const handlers = [ return res(ctx.status(200)); }), - rest.delete(umbracoPath('/language/:key'), async (req, res, ctx) => { + rest.delete(umbracoPath('/language/:id'), async (req, res, ctx) => { return res(ctx.status(200)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts index 39d9fe9422..03491bbf88 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/log-viewer.handlers.ts @@ -1,5 +1,5 @@ import { rest } from 'msw'; -import { umbLogviewerData } from '../data/log-viewer.data'; +import { umbLogViewerData } from '../data/log-viewer.data'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; import { SavedLogSearchRequestModel } from '@umbraco-cms/backoffice/backend-api'; @@ -11,7 +11,7 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.searches.getSavedSearches(skipNumber, takeNumber); + const items = umbLogViewerData.searches.getSavedSearches(skipNumber, takeNumber); const response = { total: items.length, @@ -22,11 +22,11 @@ export const handlers = [ }), rest.get(umbracoPath('/log-viewer/saved-search/:name'), (req, res, ctx) => { - const name = req.params.key as string; + const name = req.params.name as string; if (!name) return; - const item = umbLogviewerData.searches.getByName(name); + const item = umbLogViewerData.searches.getByName(name); return res(ctx.delay(), ctx.status(200), ctx.json(item)); }), @@ -35,6 +35,7 @@ export const handlers = [ }), rest.delete(umbracoPath('/log-viewer/saved-search/:name'), async (req, res, ctx) => { + // TODO: implement this return res(ctx.status(200)); }), //#endregion @@ -46,10 +47,10 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.templates.getTemplates(skipNumber, takeNumber); + const items = umbLogViewerData.templates.getTemplates(skipNumber, takeNumber); const response = { - total: umbLogviewerData.templates.total, + total: umbLogViewerData.templates.total, items, }; @@ -58,11 +59,11 @@ export const handlers = [ //#endregion //#region Logs rest.get(umbracoPath('/log-viewer/level'), (req, res, ctx) => { - return res(ctx.delay(), ctx.status(200), ctx.json(umbLogviewerData.logLevels)); + return res(ctx.delay(), ctx.status(200), ctx.json(umbLogViewerData.logLevels)); }), rest.get(umbracoPath('/log-viewer/level-count'), (req, res, ctx) => { - return res(ctx.delay(), ctx.status(200), ctx.json(umbLogviewerData.logs.getLevelCount())); + return res(ctx.delay(), ctx.status(200), ctx.json(umbLogViewerData.logs.getLevelCount())); }), rest.get(umbracoPath('/log-viewer/validate-logs-size'), (req, res, ctx) => { @@ -75,9 +76,9 @@ export const handlers = [ const take = req.url.searchParams.get('take'); const takeNumber = take ? Number.parseInt(take) : undefined; - const items = umbLogviewerData.logs.getLogs(skipNumber, takeNumber); + const items = umbLogViewerData.logs.getLogs(skipNumber, takeNumber); const response = { - total: umbLogviewerData.logs.total, + total: umbLogViewerData.logs.total, items, }; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts index 0b16b0e0a8..59e3c212c9 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts @@ -9,18 +9,18 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const response = umbMediaTypeData.getTreeItemChildren(parentKey); + const response = umbMediaTypeData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), rest.get('/umbraco/management/api/v1/tree/media-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMediaTypeData.getTreeItem(keys); + const items = umbMediaTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts index cd7c2479f4..efb5a91845 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media.handlers.ts @@ -4,12 +4,12 @@ import type { MediaDetails } from '../../../backoffice/media/media'; // TODO: add schema export const handlers = [ - rest.get('/umbraco/management/api/v1/media/details/:key', (req, res, ctx) => { + rest.get('/umbraco/management/api/v1/media/details/:id', (req, res, ctx) => { console.warn('Please move to schema'); - const key = req.params.key as string; - if (!key) return; + const id = req.params.id as string; + if (!id) return; - const media = umbMediaData.getByKey(key); + const media = umbMediaData.getById(id); return res(ctx.status(200), ctx.json([media])); }), @@ -26,13 +26,13 @@ export const handlers = [ rest.post('/umbraco/management/api/v1/media/move', async (req, res, ctx) => { const data = await req.json(); if (!data) return; - const moved = umbMediaData.move(data.keys, data.destination); + const moved = umbMediaData.move(data.ids, data.destination); return res(ctx.status(200), ctx.json(moved)); }), rest.post('/umbraco/management/api/v1/media/trash', async (req, res, ctx) => { - const keys = await req.json(); - const trashed = umbMediaData.trash(keys); + const ids = await req.json(); + const trashed = umbMediaData.trash(ids); return res(ctx.status(200), ctx.json(trashed)); }), @@ -42,17 +42,17 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbMediaData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbMediaData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), rest.get('/umbraco/management/api/v1/tree/media/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbMediaData.getTreeItem(keys); + const items = umbMediaData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts index 04f3c6817b..db4ce18195 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-group/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberGroupData.getTreeItem(keys); + const items = umbMemberGroupData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts index 9411d8a2aa..694a7f9bef 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberTypeData.getTreeItem(keys); + const items = umbMemberTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts index 41555f9b2f..aa4d404356 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts @@ -9,10 +9,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMemberData.getTreeItem(keys); + const items = umbMemberData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts index 886d08f5ef..840dbc0371 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/package.handlers.ts @@ -54,40 +54,40 @@ export const handlers = [ rest.post(umbracoPath('/package/created'), async (_req, res, ctx) => { //save const data: PackageMigrationStatusResponseModel = await _req.json(); - const newPackage: PackageDefinitionResponseModel = { ...data, key: uuidv4() }; + const newPackage: PackageDefinitionResponseModel = { ...data, id: uuidv4() }; packageArray.push(newPackage); return res(ctx.status(200), ctx.json(newPackage)); }), - rest.get(umbracoPath('/package/created/:key'), (_req, res, ctx) => { + rest.get(umbracoPath('/package/created/:id'), (_req, res, ctx) => { //read 1 - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - const found = packageArray.find((p) => p.key == key); + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + const found = packageArray.find((p) => p.id == id); if (!found) return res(ctx.status(404)); return res(ctx.status(200), ctx.json(found)); }), - rest.put(umbracoPath('/package/created/:key'), async (_req, res, ctx) => { + rest.put(umbracoPath('/package/created/:id'), async (_req, res, ctx) => { //update const data: PackageDefinitionResponseModel = await _req.json(); - if (!data.key) return; - const index = packageArray.findIndex((x) => x.key === data.key); + if (!data.id) return; + const index = packageArray.findIndex((x) => x.id === data.id); packageArray[index] = data; return res(ctx.status(200)); }), - rest.delete(umbracoPath('/package/created/:key'), (_req, res, ctx) => { + rest.delete(umbracoPath('/package/created/:id'), (_req, res, ctx) => { //delete - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - const index = packageArray.findIndex((p) => p.key == key); + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + const index = packageArray.findIndex((p) => p.id == id); if (index <= -1) return res(ctx.status(404)); packageArray.splice(index, 1); return res(ctx.status(200)); }), - rest.get(umbracoPath('/package/created/:key/download'), (_req, res, ctx) => { + rest.get(umbracoPath('/package/created/:id/download'), (_req, res, ctx) => { //download return res(ctx.status(200)); }), @@ -95,12 +95,12 @@ export const handlers = [ const packageArray: PackageDefinitionResponseModel[] = [ { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da6', packagePath: undefined, name: 'My Package', //contentNodeId?: string | null; //contentLoadChildNodes?: boolean; - //mediaKeys?: Array; + //mediaIds?: Array; //mediaLoadChildNodes?: boolean; //documentTypes?: Array; //mediaTypes?: Array; @@ -113,13 +113,13 @@ const packageArray: PackageDefinitionResponseModel[] = [ //dictionaryItems?: Array; }, { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da7', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da7', packagePath: undefined, name: 'My Second Package', }, { - key: '2a0181ec-244b-4068-a1d7-2f95ed7e6da8', + id: '2a0181ec-244b-4068-a1d7-2f95ed7e6da8', packagePath: undefined, name: 'My Third Package', }, diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts index 0b408a404a..af6d756e80 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/redirect-management.handlers.ts @@ -35,21 +35,21 @@ export const handlers = [ } }), - rest.get(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); - if (key === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); + rest.get(umbracoPath('/redirect-management/:id'), async (_req, res, ctx) => { + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); + if (id === 'status') return res(ctx.status(200), ctx.json(UrlTracker)); - const PagedRedirectUrlObject = _getRedirectUrlByKey(key); + const PagedRedirectUrlObject = _getRedirectUrlByKey(id); return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), - rest.delete(umbracoPath('/redirect-management/:key'), async (_req, res, ctx) => { - const key = _req.params.key as string; - if (!key) return res(ctx.status(404)); + rest.delete(umbracoPath('/redirect-management/:id'), async (_req, res, ctx) => { + const id = _req.params.id as string; + if (!id) return res(ctx.status(404)); - const PagedRedirectUrlObject = _deleteRedirectUrlByKey(key); + const PagedRedirectUrlObject = _deleteRedirectUrlByKey(id); return res(ctx.status(200), ctx.json(PagedRedirectUrlObject)); }), @@ -69,13 +69,13 @@ export const handlers = [ const UrlTracker: RedirectUrlStatusResponseModel = { status: RedirectStatusModel.ENABLED, userIsAdmin: true }; -const _getRedirectUrlByKey = (key: string) => { +const _getRedirectUrlByKey = (id: string) => { const PagedResult: PagedRedirectUrlResponseModel = { total: 0, items: [], }; RedirectUrlData.forEach((data) => { - if (data.key?.includes(key)) { + if (data.id?.includes(id)) { PagedResult.items.push(data); PagedResult.total++; } @@ -83,8 +83,8 @@ const _getRedirectUrlByKey = (key: string) => { return PagedResult; }; -const _deleteRedirectUrlByKey = (key: string) => { - const index = RedirectUrlData.findIndex((data) => data.key === key); +const _deleteRedirectUrlByKey = (id: string) => { + const index = RedirectUrlData.findIndex((data) => data.id === id); if (index > -1) RedirectUrlData.splice(index, 1); const PagedResult: PagedRedirectUrlResponseModel = { items: RedirectUrlData, @@ -95,81 +95,81 @@ const _deleteRedirectUrlByKey = (key: string) => { const RedirectUrlData: RedirectUrlResponseModel[] = [ { - key: '1', + id: '1', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'kitty.com', originalUrl: 'kitty.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2', }, { - key: '2', + id: '2', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'umbraco.com', originalUrl: 'umbraco.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f', }, { - key: '3', + id: '3', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'uui.umbraco.com', originalUrl: 'uui.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f23', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f23', }, { - key: '4', + id: '4', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'umbracoffee.com', originalUrl: 'umbracoffee.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fdsaa', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fdsaa', }, { - key: '5', + id: '5', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'section/settings', originalUrl: 'section/settings/123', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2e23', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2e23', }, { - key: '6', + id: '6', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'dxp.com', originalUrl: 'dxp.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fsafsfd', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fsafsfd', }, { - key: '7', + id: '7', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'google.com', originalUrl: 'google.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9f2cxza', + contentId: '7191c911-6747-4824-849e-5208e2b31d9f2cxza', }, { - key: '8', + id: '8', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'unicorns.com', originalUrl: 'unicorns.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31d9fweds', + contentId: '7191c911-6747-4824-849e-5208e2b31d9fweds', }, { - key: '9', + id: '9', created: '2022-12-05T13:59:43.6827244', destinationUrl: 'h5yr.com', originalUrl: 'h5yr.dk', - contentKey: '7191c911-6747-4824-849e-5208e2b31ddsfsdsfadsfdx9f2', + contentId: '7191c911-6747-4824-849e-5208e2b31ddsfsdsfadsfdx9f2', }, { - key: '10', + id: '10', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'our.umbraco.com', originalUrl: 'our.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-52dsacx08e2b31d9dsafdsff', + contentId: '7191c911-6747-4824-849e-52dsacx08e2b31d9dsafdsff', }, { - key: '11', + id: '11', created: '2022-13-05T13:59:43.6827244', destinationUrl: 'your.umbraco.com', originalUrl: 'your.umbraco.dk', - contentKey: '7191c911-6747-4824-849e-52dsacx08e2b31d9fsda', + contentId: '7191c911-6747-4824-849e-52dsacx08e2b31d9fsda', }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts index d1e39b7a1b..0e4c1d4ea6 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/relation-type.handlers.ts @@ -4,11 +4,11 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils'; // TODO: add schema export const handlers = [ - rest.delete('/umbraco/backoffice/relation-type/:key', async (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.delete('/umbraco/backoffice/relation-type/:id', async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - umbRelationTypeData.delete([key]); + umbRelationTypeData.delete([id]); return res(ctx.status(200)); }), @@ -23,10 +23,10 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const children = umbRelationTypeData.getTreeItemChildren(parentKey); + const children = umbRelationTypeData.getTreeItemChildren(parentId); const response = { total: children.length, @@ -37,22 +37,22 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; - const items = umbRelationTypeData.getTreeItem(keys); + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbRelationTypeData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), - rest.get(umbracoPath('/relation-type/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/relation-type/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const RelationType = umbRelationTypeData.getByKey(key); + const RelationType = umbRelationTypeData.getById(id); return res(ctx.status(200), ctx.json(RelationType)); }), - rest.post(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + rest.post(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; @@ -61,7 +61,7 @@ export const handlers = [ return res(ctx.status(200), ctx.json(saved)); }), - rest.put(umbracoPath('/relation-type/:key'), async (req, res, ctx) => { + rest.put(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { const data = await req.json(); if (!data) return; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts index e0bd906f49..55e73ea95b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/template.handlers.ts @@ -11,18 +11,18 @@ export const handlers = [ }), rest.get(umbracoPath('/tree/template/children'), (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; - const response = umbTemplateData.getTreeItemChildren(parentKey); + const response = umbTemplateData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), rest.get(umbracoPath('/tree/template/item'), (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; - const items = umbTemplateData.getTreeItem(keys); + const items = umbTemplateData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), @@ -34,18 +34,18 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get(umbracoPath('/template/:key'), (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get(umbracoPath('/template/:id'), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const response = umbTemplateData.getByKey(key); + const response = umbTemplateData.getById(id); return res(ctx.status(200), ctx.json(response)); }), - rest.put(umbracoPath('/template/:key'), async (req, res, ctx) => { - const key = req.params.key as string; + rest.put(umbracoPath('/template/:id'), async (req, res, ctx) => { + const id = req.params.id as string; const data = await req.json(); - if (!key) return; + if (!id) return; umbTemplateData.update(data); return res(ctx.status(200)); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts index b61126fa72..3a0b3b4e29 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts @@ -9,17 +9,17 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/children', (req, res, ctx) => { - const parentKey = req.url.searchParams.get('parentKey'); - if (!parentKey) return; - const response = umbMediaData.getTreeItemChildren(parentKey); + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + const response = umbMediaData.getTreeItemChildren(parentId); return res(ctx.status(200), ctx.json(response)); }), rest.get('/umbraco/management/api/v1/tree/media/item', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (!keys) return; + const ids = req.url.searchParams.getAll('key'); + if (!ids) return; - const items = umbMediaData.getTreeItem(keys); + const items = umbMediaData.getTreeItem(ids); return res(ctx.status(200), ctx.json(items)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts index e32b063ec5..929979ba43 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/user-groups.handlers.ts @@ -14,19 +14,19 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/backoffice/user-groups/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/backoffice/user-groups/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const userGroup = umbUserGroupsData.getByKey(key); + const userGroup = umbUserGroupsData.getById(id); return res(ctx.status(200), ctx.json(userGroup)); }), rest.get('/umbraco/backoffice/user-groups/getByKeys', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (keys.length === 0) return; - const userGroups = umbUserGroupsData.getByKeys(keys); + const ids = req.url.searchParams.getAll('id'); + if (ids.length === 0) return; + const userGroups = umbUserGroupsData.getByIds(ids); return res(ctx.status(200), ctx.json(userGroups)); }), diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts index 298b454273..e56784f793 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/users.handlers.ts @@ -16,19 +16,19 @@ export const handlers = [ return res(ctx.status(200), ctx.json(response)); }), - rest.get('/umbraco/backoffice/users/details/:key', (req, res, ctx) => { - const key = req.params.key as string; - if (!key) return; + rest.get('/umbraco/backoffice/users/details/:id', (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; - const user = umbUsersData.getByKey(key); + const user = umbUsersData.getById(id); return res(ctx.status(200), ctx.json(user)); }), rest.get('/umbraco/backoffice/users/getByKeys', (req, res, ctx) => { - const keys = req.url.searchParams.getAll('key'); - if (keys.length === 0) return; - const users = umbUsersData.getByKeys(keys); + const ids = req.url.searchParams.getAll('id'); + if (ids.length === 0) return; + const users = umbUsersData.getByIds(ids); return res(ctx.status(200), ctx.json(users)); }), @@ -49,7 +49,7 @@ export const handlers = [ if (!data) return; const newUser: UserDetails = { - key: uuidv4(), + id: uuidv4(), name: data.name, email: data.email, status: 'invited', @@ -57,7 +57,7 @@ export const handlers = [ updateDate: new Date().toISOString(), createDate: new Date().toISOString(), failedLoginAttempts: 0, - parentKey: '', + parentId: '', hasChildren: false, type: 'user', icon: 'umb:icon-user', diff --git a/src/Umbraco.Web.UI.Client/src/stories/store.mdx b/src/Umbraco.Web.UI.Client/src/stories/store.mdx index 667afd9124..1140ee8e40 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/store.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/store.mdx @@ -11,7 +11,7 @@ Generally a Store will be holding one or more RxJS Subjects, each Subject is mad ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.key); + #products = new ArrayState(>[], (product) => product.id); public readonly products = this.#products.asObservable(); @@ -65,10 +65,10 @@ class MyProductStore { ... - getByKey(key: string) { + getByKey(id: string) { // Request data via a Resource to then take part of this state when recieved. - tryExecuteAndNotify(this.host, ProductResource.getByKey({key})).then(({ data }) => { + tryExecuteAndNotify(this.host, ProductResource.getByKey({id})).then(({ data }) => { if (data) { this.#products.append(data.items); } @@ -76,7 +76,7 @@ class MyProductStore { // Return a Observable part, to listen for this specific product and the future changes of it. return this.#data.getObservablePart((documents) => - documents.find((document) => document.key === key) + documents.find((document) => document.id === id) ); } } @@ -134,11 +134,11 @@ With this we can make a high performant application, only triggering the parts t ### Ensure unique data: For incoming data to replace existing data, we need to clarify what makes a entry of the array unique. -In the examples of this guide each product has a key, and we have clarified this to the State by giving it the little method `(product) => product.key` as part of the its creation: +In the examples of this guide each product has a id, and we have clarified this to the State by giving it the little method `(product) => product.id` as part of the its creation: ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.key); + #products = new ArrayState(>[], (product) => product.id); ... } ``` From 972ebb30570834f66b25f2a7fed109d400a1447c Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Mon, 3 Apr 2023 15:33:13 +0100 Subject: [PATCH 536/550] Upgrade to release of Storybook 7 --- src/Umbraco.Web.UI.Client/package-lock.json | 3454 ++++++------------- src/Umbraco.Web.UI.Client/package.json | 18 +- 2 files changed, 1105 insertions(+), 2367 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index e4bf31c88a..b01c305fa1 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -26,13 +26,13 @@ "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.0.1", - "@storybook/addon-a11y": "^7.0.0-rc.3", - "@storybook/addon-actions": "^7.0.0-rc.3", - "@storybook/addon-essentials": "^7.0.0-rc.3", - "@storybook/addon-links": "^7.0.0-rc.3", - "@storybook/mdx2-csf": "^1.0.0-next.5", - "@storybook/web-components": "^7.0.0-rc.3", - "@storybook/web-components-vite": "^7.0.0-rc.3", + "@storybook/addon-a11y": "^7.0.2", + "@storybook/addon-actions": "^7.0.2", + "@storybook/addon-essentials": "^7.0.2", + "@storybook/addon-links": "^7.0.2", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/web-components": "^7.0.2", + "@storybook/web-components-vite": "^7.0.2", "@types/chai": "^4.3.4", "@types/lodash-es": "^4.17.6", "@types/mocha": "^10.0.0", @@ -55,7 +55,7 @@ "eslint-plugin-storybook": "^0.6.11", "eslint-plugin-wc": "^1.4.0", "msw": "^1.1.0", - "msw-storybook-addon": "^1.7.0", + "msw-storybook-addon": "^1.8.0", "openapi-typescript-codegen": "^0.23.0", "playwright-msw": "^2.1.0", "plop": "^3.1.1", @@ -66,7 +66,7 @@ "rollup-plugin-dts": "^5.2.0", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-url": "^3.0.1", - "storybook": "^7.0.0-rc.3", + "storybook": "^7.0.2", "tiny-glob": "^0.2.9", "typescript": "^5.0.3", "vite": "^4.2.1", @@ -147,9 +147,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", "dev": true, "engines": { "node": ">=6.9.0" @@ -240,13 +240,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", "browserslist": "^4.21.3", "lru-cache": "^5.1.1", "semver": "^6.3.0" @@ -259,9 +259,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", - "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", + "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -281,9 +281,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", - "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", + "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -921,12 +921,12 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz", + "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -963,12 +963,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1080,12 +1080,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1196,9 +1196,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1450,9 +1450,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1606,11 +1606,12 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", - "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", + "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", "dev": true, "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-typescript": "^7.20.0" @@ -1654,31 +1655,31 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", + "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", + "@babel/helper-validator-option": "^7.21.0", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", + "@babel/plugin-proposal-async-generator-functions": "^7.20.7", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.21.0", "@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1695,40 +1696,40 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.20.7", + "@babel/plugin-transform-async-to-generator": "^7.20.7", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.20.7", + "@babel/plugin-transform-destructuring": "^7.21.3", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-for-of": "^7.21.0", "@babel/plugin-transform-function-name": "^7.18.9", "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-modules-systemjs": "^7.20.11", "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-parameters": "^7.21.3", "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.20.5", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-spread": "^7.20.7", "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", + "@babel/types": "^7.21.4", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -1743,14 +1744,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", - "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.21.4.tgz", + "integrity": "sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-flow-strip-types": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-flow-strip-types": "^7.21.0" }, "engines": { "node": ">=6.9.0" @@ -1776,14 +1777,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", - "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz", + "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" + "@babel/plugin-syntax-jsx": "^7.21.4", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-typescript": "^7.21.3" }, "engines": { "node": ">=6.9.0" @@ -1974,9 +1977,9 @@ } }, "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.19.4", @@ -2016,9 +2019,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz", - "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", "cpu": [ "arm" ], @@ -2032,9 +2035,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz", - "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", "cpu": [ "arm64" ], @@ -2048,9 +2051,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.14.tgz", - "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", "cpu": [ "x64" ], @@ -2064,9 +2067,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz", - "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", "cpu": [ "arm64" ], @@ -2080,9 +2083,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", "cpu": [ "x64" ], @@ -2096,9 +2099,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz", - "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", "cpu": [ "arm64" ], @@ -2112,9 +2115,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz", - "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", "cpu": [ "x64" ], @@ -2128,9 +2131,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz", - "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", "cpu": [ "arm" ], @@ -2144,9 +2147,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz", - "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", "cpu": [ "arm64" ], @@ -2160,9 +2163,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz", - "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", "cpu": [ "ia32" ], @@ -2176,9 +2179,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz", - "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", "cpu": [ "loong64" ], @@ -2192,9 +2195,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz", - "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", "cpu": [ "mips64el" ], @@ -2208,9 +2211,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz", - "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", "cpu": [ "ppc64" ], @@ -2224,9 +2227,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz", - "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", "cpu": [ "riscv64" ], @@ -2240,9 +2243,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz", - "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", "cpu": [ "s390x" ], @@ -2256,9 +2259,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz", - "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", "cpu": [ "x64" ], @@ -2272,9 +2275,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz", - "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", "cpu": [ "x64" ], @@ -2288,9 +2291,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz", - "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", "cpu": [ "x64" ], @@ -2304,9 +2307,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz", - "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", "cpu": [ "x64" ], @@ -2320,9 +2323,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz", - "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", "cpu": [ "arm64" ], @@ -2336,9 +2339,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz", - "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", "cpu": [ "ia32" ], @@ -2352,9 +2355,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz", - "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", "cpu": [ "x64" ], @@ -3119,21 +3122,21 @@ "dev": true }, "node_modules/@storybook/addon-a11y": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-rc.3.tgz", - "integrity": "sha512-V/wl19IzsOA0OkUofKKbL09Qj93ywRHW3Pjq3pOLRE178zCumWuBKxpr+dS4C1lNwecIU1ffp8408RSzZ4K5sA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.2.tgz", + "integrity": "sha512-PCJaLdp/3MypMYQufLIaKL4gzZjDgU8fTW45O7feXwiUZzFUVZamBwBw5BHcHAPsDOr5CmebGvJ9+l2gByWL/g==", "dev": true, "dependencies": { - "@storybook/addon-highlight": "7.0.0-rc.3", - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/addon-highlight": "7.0.2", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" @@ -3156,19 +3159,19 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-rc.3.tgz", - "integrity": "sha512-kyPuSN/PzBnW3w9D/KBEmMqfeGpBeY6Ha2VVPz3BBqcWSHfw0AbHFqvnqluubaHZl1VokE88QT6RxkdyBg33uw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.2.tgz", + "integrity": "sha512-rcj39u9MrmzsrDWYt1zsoVxrogZ1Amrv9xkEofEY/QKUr2R3xpHhTALveY9BKIlG1GoE8zLlLoP2k4nz3sNNwQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -3196,19 +3199,19 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-rc.3.tgz", - "integrity": "sha512-6qIwuNwzLFdsLCjj5rO6TCaBvAGUYbrLpw2EQyKg5J/5GxqhMU/HsinCViok2VEn/z45vji9FI1W6bmo7t4LNQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.2.tgz", + "integrity": "sha512-yRNHQ4PPRJ+HIORQPhDGxn5xolw1xW0ByQZoNRpMD+AMEyfUNFdWbCsRQAOWjNhawxVMHM7EeA2Exrb41zhEjA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, @@ -3230,20 +3233,20 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-rc.3.tgz", - "integrity": "sha512-16E0AJ1+psFDbL6abOfLFg0zWhUQeJjcM3RKEzJjYZEBuKKL86LAvKhnlkyCUW3VlLN23V0akY6Gev81DR/BfA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.2.tgz", + "integrity": "sha512-dMpRtj5cmfC9vEMve5ncvbWCEC+WD9YuzJ+grdc48E/Hd//p+O2FE6klSkrz5FAjrc+rHINixdyssekpEL6nYQ==", "dev": true, "dependencies": { - "@storybook/blocks": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/blocks": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -3265,28 +3268,28 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-rc.3.tgz", - "integrity": "sha512-UPy+o7IBly2TgCQ7hviaExq++KQSPS7/+/8iLUdv81mtRm3hMBMARmom+wjXfciGHp1re1bazQQYoDsOcorDhA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.2.tgz", + "integrity": "sha512-q3rDWoZEym6Lkmhqc/HBNfLDAmTY8l0WINGUZo/nF98eP5iu4B7Nk7V6BRGYGQt6Y6ZyIQ8WKH0e/eJww2zIog==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/csf-plugin": "7.0.0-rc.3", - "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/blocks": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/csf-plugin": "7.0.2", + "@storybook/csf-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/postinstall": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/react-dom-shim": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.0.2", + "@storybook/postinstall": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/react-dom-shim": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -3308,24 +3311,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-rc.3.tgz", - "integrity": "sha512-RLA1RgjwuDsRKp2QjBAx2XsgTZ+Dura2k8xCTyBLf0yxnleC8hiAxLwTJSSdDEUuiXxWsBbu0vhHzYnCCVTDnw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.2.tgz", + "integrity": "sha512-LAsWsXa/Pp2B4Ve2WVgc990FtsiHpFDRsq7S3V7xRrZP8DYRbtJIVdszPMDS5uKC+yzbswFEXz08lqbGvq8zgQ==", "dev": true, "dependencies": { - "@storybook/addon-actions": "7.0.0-rc.3", - "@storybook/addon-backgrounds": "7.0.0-rc.3", - "@storybook/addon-controls": "7.0.0-rc.3", - "@storybook/addon-docs": "7.0.0-rc.3", - "@storybook/addon-highlight": "7.0.0-rc.3", - "@storybook/addon-measure": "7.0.0-rc.3", - "@storybook/addon-outline": "7.0.0-rc.3", - "@storybook/addon-toolbars": "7.0.0-rc.3", - "@storybook/addon-viewport": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/addon-actions": "7.0.2", + "@storybook/addon-backgrounds": "7.0.2", + "@storybook/addon-controls": "7.0.2", + "@storybook/addon-docs": "7.0.2", + "@storybook/addon-highlight": "7.0.2", + "@storybook/addon-measure": "7.0.2", + "@storybook/addon-outline": "7.0.2", + "@storybook/addon-toolbars": "7.0.2", + "@storybook/addon-viewport": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", "ts-dedent": "^2.0.0" }, "funding": { @@ -3338,14 +3341,14 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-rc.3.tgz", - "integrity": "sha512-MeFIKfDpFrF33TPdl2ko2rie485AhfG2n0MFXA73L8Yzj5JPV+LVNa5eIKUUFyOMUGSkVjfFS6n63F08eqHbCw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.2.tgz", + "integrity": "sha512-9BkL1OOanguuy73S6nLK0isUb045tOkFONd/PQldOJ0PV3agCvKxKHyzlBz7Hsba8KZhY5jQs+nVW2NiREyGYg==", "dev": true, "dependencies": { - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.0-rc.3" + "@storybook/preview-api": "7.0.2" }, "funding": { "type": "opencollective", @@ -3353,19 +3356,19 @@ } }, "node_modules/@storybook/addon-links": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-rc.3.tgz", - "integrity": "sha512-K2PMxVooGAgb8hCEU2oGUMzKjPLEPACH8NcRLs/fz9PKadepmijY0hBDC50SGkZd2HWSxXxyt6d5WaXTxhP8aw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.2.tgz", + "integrity": "sha512-lPtfy2MqrcI9YjupBM2eRKGPdFKVPCz7WgO/JQQakGugORJTEGCyJrNJNtWY9jDenv8ynLZ40OxtPBZi54Sr6Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/router": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/router": "7.0.2", + "@storybook/types": "7.0.2", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, @@ -3387,18 +3390,18 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-rc.3.tgz", - "integrity": "sha512-N0HjObHjktlgWvOQcOqyC6/vFXERHzH7aP8L1RRrSnz+mP0XDO+62eBZunlnDGu4uAECH+AV/7LO+bmTMohulg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.2.tgz", + "integrity": "sha512-cf/d5MXpHAjyUiDIVfc8pLn79CPHgnryDmNNlSiP2zEFKcivrRWiu8Rmrad8pGqLkuAh+PXLKCGn9uiqDvg7QQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3" + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2" }, "funding": { "type": "opencollective", @@ -3418,18 +3421,18 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-rc.3.tgz", - "integrity": "sha512-SocPRmzzu2wR3SiqMsPskfFumOd0Ph8MUTeJ2cwnaonqqHjjqxaEaFYio8AGmGaHLpY8PKtW0s75jU0oDh9Ezg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.2.tgz", + "integrity": "sha512-thVISO4NM22xlETisBvAPvz2yFD3qLGOjgzBmj8l8r9Rv0IEdwdPrwm5j0WTv8OtbhC4A8lPpvMsn5FhY5mDXg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "ts-dedent": "^2.0.0" }, "funding": { @@ -3450,16 +3453,16 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-rc.3.tgz", - "integrity": "sha512-qnvMWZAa3ELRNiVjj1sy0dJb2GzE5fga9SbsbVQQT2zBvou2e8XbiPRw0WHdwUU2Zj9t9/PVjz2+av7P8B+Cqg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.2.tgz", + "integrity": "sha512-tAxZ2+nUYsJdT1sx3BrmoMAZFM19+OzWJY6qSnbEq5zoRgvGZaXGR6tLMKydDoHQBU9Ta9YHGo7N7u7h1C23yg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3" + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2" }, "funding": { "type": "opencollective", @@ -3479,18 +3482,18 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-rc.3.tgz", - "integrity": "sha512-GXBi7f4WNeM4yvKXKYNAMLDHauTOcLpimzf1wtyVapBLpwzcJHBaJTCHQ02yIcm6mU2TFbKXMmzC1uBZcCa+5w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.2.tgz", + "integrity": "sha512-TaHJWIIazPM/TerRbka9RqjMPNpwaRsGRdVRBtVoVosy1FzsEjAdQSO7RBMe4G03m5CacSqdsDiJCblI2AXaew==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, @@ -3511,292 +3514,23 @@ } } }, - "node_modules/@storybook/addons": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.16.tgz", - "integrity": "sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==", - "dev": true, - "dependencies": { - "@storybook/api": "6.5.16", - "@storybook/channels": "6.5.16", - "@storybook/client-logger": "6.5.16", - "@storybook/core-events": "6.5.16", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.16", - "@storybook/theming": "6.5.16", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/channels": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.16.tgz", - "integrity": "sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/client-logger": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.16.tgz", - "integrity": "sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2", - "global": "^4.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/core-events": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz", - "integrity": "sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/csf": { - "version": "0.0.2--canary.4566f4d.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", - "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/router": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.16.tgz", - "integrity": "sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addons/node_modules/@storybook/theming": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz", - "integrity": "sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/api": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.16.tgz", - "integrity": "sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==", - "dev": true, - "dependencies": { - "@storybook/channels": "6.5.16", - "@storybook/client-logger": "6.5.16", - "@storybook/core-events": "6.5.16", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.16", - "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.16", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "store2": "^2.12.0", - "telejson": "^6.0.8", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/channels": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.16.tgz", - "integrity": "sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/client-logger": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.16.tgz", - "integrity": "sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2", - "global": "^4.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/core-events": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz", - "integrity": "sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==", - "dev": true, - "dependencies": { - "core-js": "^3.8.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/csf": { - "version": "0.0.2--canary.4566f4d.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", - "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/router": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.16.tgz", - "integrity": "sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/api/node_modules/@storybook/theming": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz", - "integrity": "sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/api/node_modules/isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/api/node_modules/telejson": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", - "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", - "dev": true, - "dependencies": { - "@types/is-function": "^1.0.0", - "global": "^4.4.0", - "is-function": "^1.0.2", - "is-regex": "^1.1.2", - "is-symbol": "^1.0.3", - "isobject": "^4.0.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3" - } - }, "node_modules/@storybook/blocks": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-rc.3.tgz", - "integrity": "sha512-mh4LQk2f/Q9n7Sqo6t02CspHubXmSgDY4S5vF3dTgVBM/sD0OxkAY3Pv+HTsXH36lQHYYUft7U7OfhZapgS4ng==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.2.tgz", + "integrity": "sha512-JzHmU8jZLzeQ6bunzci8j/2Ji18GBTyhrPFLk5RjEbMNGWpGjvER/yR127tZOdbPguVNr4iVbRfGzd1wGHlrzA==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", - "@storybook/docs-tools": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", + "@storybook/docs-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -3819,27 +3553,26 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-rc.3.tgz", - "integrity": "sha512-aScwYA9MWtqgiD39SkcwUlrR9RFbngv7jPoOaVMdXuMgNabMNz9417L9bCwSPwgO4XZ5a/nSEbGNLfOHfBemsw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.2.tgz", + "integrity": "sha512-Oej/n8D7eaWgmWF7nN2hXLRM53lcYOdh6umSN8Mh/LcYUfxB+dvUBFzUjoLE0xjhW6xRinrKrENT5LcP/f/HBQ==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.2", + "@storybook/manager": "7.0.2", + "@storybook/node-logger": "7.0.2", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", "ejs": "^3.1.8", - "esbuild": "^0.16.4", + "esbuild": "^0.17.0", "esbuild-plugin-alias": "^0.2.1", "express": "^4.17.3", "find-cache-dir": "^3.0.0", "fs-extra": "^11.1.0", "process": "^0.11.10", - "slash": "^3.0.0", "util": "^0.12.4" }, "funding": { @@ -3848,21 +3581,21 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-rc.3.tgz", - "integrity": "sha512-v2d04PWfcITD7zI68d7XbCbOd+5vl3gIMEX5Xdsmuw3WcaqYxvDSE8GhL6zsBhrUyygV/8xhSaaxyfv8ImM0+w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.2.tgz", + "integrity": "sha512-G6CD2Gf2zwzRslvNvqgz4FeADVEA9XA4Mw6+NM6Twc+Wy/Ah482dvHS9ApSgirtGyBKjOfdHn1xQT4Z+kzbJnw==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.0-rc.3", - "@storybook/channel-websocket": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/csf-plugin": "7.0.0-rc.3", - "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/channel-postmessage": "7.0.2", + "@storybook/channel-websocket": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/csf-plugin": "7.0.2", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.0.2", + "@storybook/preview": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", @@ -3870,8 +3603,9 @@ "glob": "^8.1.0", "glob-promise": "^6.0.2", "magic-string": "^0.27.0", - "rollup": "^2.25.0 || ^3.3.0", - "slash": "^3.0.0" + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "rollup": "^2.25.0 || ^3.3.0" }, "funding": { "type": "opencollective", @@ -3900,14 +3634,14 @@ } }, "node_modules/@storybook/channel-postmessage": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.3.tgz", - "integrity": "sha512-1uptuCjA4vAvvoxNoIJPTIpSARzJnLU7eahRhTPwELBnCH0ObqvgInge0cvbYsaTRDNV90oBbEKlxLf1Zb1BhQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.2.tgz", + "integrity": "sha512-SZ/KqnZcx10W9hJbrzBKcP9dmgaeTaXugUhcgw1IkmjKWdsKazqFZCPwQWZZKAmhO4wYbyYOhkz3wfSIeB4mFw==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3" @@ -3918,13 +3652,13 @@ } }, "node_modules/@storybook/channel-websocket": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-rc.3.tgz", - "integrity": "sha512-706jopde+OZZkqsmrRuwd9utusqiKianiF8cvjAxrxogSx8LwHk8jxrEKHxHiZUEWDS3JxJoIYSV8gxH9hcjsA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.2.tgz", + "integrity": "sha512-YU3lFId6Nsi75ddA+3qfbnLfNUPswboYyx+SALhaLuXqz7zqfzX4ezMgxeS/h0gRlUJ7nf2/yJ5qie/kZaizjw==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", "@storybook/global": "^5.0.0", "telejson": "^7.0.3" }, @@ -3934,9 +3668,9 @@ } }, "node_modules/@storybook/channels": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-rc.3.tgz", - "integrity": "sha512-jaODIck+um16Fn2k1vwHK9RNk2J8hLVyzLSkoGM40TsMF5nichwI3rA6225pLk015itJbhCAi/RhaMFBI+ZtsA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.2.tgz", + "integrity": "sha512-qkI8mFy9c8mxN2f01etayKhCaauL6RAsxRzbX1/pKj6UqhHWqqUbtHwymrv4hG5qDYjV1e9pd7ae5eNF8Kui0g==", "dev": true, "funding": { "type": "opencollective", @@ -3944,21 +3678,21 @@ } }, "node_modules/@storybook/cli": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-rc.3.tgz", - "integrity": "sha512-g1nWHLI1fiDK2dnLpmbhbrm6ZaAwuZkUgEGtlEQCPTHWVRZj2fJT0y5zjgBIhFpdkB/X8MZzgVxqhTJF0uX39Q==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.2.tgz", + "integrity": "sha512-xMM2QdXNGg09wuXzAGroKrbsnaHSFPmtmefX1XGALhHuKVwxOoC2apWMpek6gY/9vh5EIRTog2Dvfd2BzNrT6Q==", "dev": true, "dependencies": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/core-server": "7.0.0-rc.3", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/telemetry": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/codemod": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/core-server": "7.0.2", + "@storybook/csf-tools": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/telemetry": "7.0.2", + "@storybook/types": "7.0.2", "@types/semver": "^7.3.4", "boxen": "^5.1.2", "chalk": "^4.1.0", @@ -4070,26 +3804,6 @@ "ms": "2.0.0" } }, - "node_modules/@storybook/cli/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@storybook/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4163,6 +3877,15 @@ "node": ">=8.16.0" } }, + "node_modules/@storybook/cli/node_modules/puppeteer-core/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/@storybook/cli/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -4175,6 +3898,26 @@ "rimraf": "bin.js" } }, + "node_modules/@storybook/cli/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@storybook/cli/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -4202,15 +3945,6 @@ "node": ">=8" } }, - "node_modules/@storybook/cli/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, "node_modules/@storybook/cli/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4218,9 +3952,9 @@ "dev": true }, "node_modules/@storybook/client-logger": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-rc.3.tgz", - "integrity": "sha512-cC7lq+S4n5fFooDCyefgTAOfipadiZskNuzsQF7drE9nQLZ8GflLdmTKK//5NQUHKPzF7r+4Q5DAK4I3nqIkxA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.2.tgz", + "integrity": "sha512-rv7W2BhzIQHbFpUM5/CP/acS6T5lTmaxT0MbZ9n+9h++9QQU/cFOdkZgSUbLVAb1AeUGoLsk0HYzcqPpV35Xsw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -4231,18 +3965,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-rc.3.tgz", - "integrity": "sha512-P965X5g4WIBfrYMLYPQIvwp9wfIf5bnUIVgwjeGUDLDLIst6RXmHGik9MHLy2Ic/MXTsf/kwK5qY9pj95t8DZg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.2.tgz", + "integrity": "sha512-D9PdByxJlFiaDJcLkM+RN1DHCj4VfQIlSZkADOcNtI4o9H064oiMloWDGZiR1i1FCYMSXuWmW6tMsuCVebA+Nw==", "dev": true, "dependencies": { "@babel/core": "~7.21.0", - "@babel/preset-env": "~7.20.2", + "@babel/preset-env": "~7.21.0", "@babel/types": "~7.21.2", - "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/types": "7.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -4256,16 +3990,16 @@ } }, "node_modules/@storybook/components": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-rc.3.tgz", - "integrity": "sha512-PeQFr2hZvLnxLswKihw1Ro5wCqmNZeSE4q+tFdifhLVIqP/OwHG+ShiLCHQ1aEa0Z3Ub+80m7uPzg69+y9m+bQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.2.tgz", + "integrity": "sha512-Ee9pY6WlpricPUdYiyR0Ov8zgHkUt541yl1CZ6Ytaom2TA12cAnRjKewbLAgVPPhIE1LsMRhOPFYql0JMtnN4Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/client-logger": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -4280,13 +4014,13 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-rc.3.tgz", - "integrity": "sha512-epUiHzFQNoEr5PYq9069SliQzHl5fVQj94aWdGZWCQPGldxiFtCNB7o32NzwwIVzXOKPzU38qg2B4738jt/1XQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.2.tgz", + "integrity": "sha512-tr6Uv41YD2O0xiUrtgujiY1QxuznhbyUI0BRsSh49e8cx3QoW7FgPy7IVZHgb17DXKZ/wY/hgdyTTB87H6IbLA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3" + "@storybook/client-logger": "7.0.2", + "@storybook/preview-api": "7.0.2" }, "funding": { "type": "opencollective", @@ -4294,18 +4028,18 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-rc.3.tgz", - "integrity": "sha512-uUIs14+35ubRcpYwuX0OHW05tSDC5jeNEY8gv2EjcexBLeNozfGV4Tf5/ncG8glVbp8jGUlu2S3XJZoHKHDSqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.2.tgz", + "integrity": "sha512-DayFPTCj695tnEKLuDlogclBim8mzdrbj9U1xzFm23BUReheGSGdLl2zrb3mP1l9Zj4xJ/Ctst1KN9SFbW84vw==", "dev": true, "dependencies": { - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.2", + "@storybook/types": "7.0.2", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", - "esbuild": "^0.16.4", - "esbuild-register": "^3.3.3", + "esbuild": "^0.17.0", + "esbuild-register": "^3.4.0", "file-system-cache": "^2.0.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", @@ -4317,7 +4051,6 @@ "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -4326,9 +4059,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", + "version": "16.18.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.23.tgz", + "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g==", "dev": true }, "node_modules/@storybook/core-common/node_modules/ansi-styles": { @@ -4384,9 +4117,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-rc.3.tgz", - "integrity": "sha512-EBihNmxxiIJbPt6OhCTXFPl2T/9OXNVKtsy8hchBNEzp+UJGyeHx+t9K6tRvbcmt5TG/y7C7ZsYx9U28JTwNkg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.2.tgz", + "integrity": "sha512-1DCHCwHRL3+rlvnVVc/BCfReP31XaT2WYgcLeGTmkX1E43Po1MkgcM7PnJPSaa9POvSqZ+6YLZv5Bs1SXbufow==", "dev": true, "funding": { "type": "opencollective", @@ -4394,25 +4127,25 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-rc.3.tgz", - "integrity": "sha512-211514C7w8hvu/bLP97KdF7TM8FpcchgDAhldODDvKFyxFTHMcQFj3ABlptsWFO6JxZsy32hG8qi6phFUtceQA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.2.tgz", + "integrity": "sha512-7ipGws8YffVaiwkc+D0+MfZc/Sy52aKenG3nDJdK4Ajmp5LPAlelb/sxIhfRvoHDbDsy2FQNz++Mb55Yh03KkA==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/docs-mdx": "next", + "@storybook/builder-manager": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.0.2", + "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/telemetry": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/telemetry": "7.0.2", + "@storybook/types": "7.0.2", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", @@ -4436,7 +4169,6 @@ "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "serve-favicon": "^2.5.0", - "slash": "^3.0.0", "telejson": "^7.0.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", @@ -4449,9 +4181,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", + "version": "16.18.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.23.tgz", + "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g==", "dev": true }, "node_modules/@storybook/core-server/node_modules/ansi-styles": { @@ -4540,21 +4272,21 @@ "dev": true }, "node_modules/@storybook/csf": { - "version": "0.0.2-next.10", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2-next.10.tgz", - "integrity": "sha512-m2PFgBP/xRIF85VrDhvesn9ktaD2pN3VUjvMqkAL/cINp/3qXsCyI81uw7N5VEOkQAbWrY2FcydnvEPDEdE8fA==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.0.tgz", + "integrity": "sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ==", "dev": true, "dependencies": { "type-fest": "^2.19.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-rc.3.tgz", - "integrity": "sha512-+r2m09o/5B846Q8ykDWjwPJSZXc3i4Z6vLc04SxIR/VJffF7K0Z/vFmTcPz8Qg5wFdfvy/HFqTLpaOJtVwWBdA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.2.tgz", + "integrity": "sha512-aGuo+G6G5IwSGkmc+OUA796sOfvJMaQj8QS/Zh5F0nL4ZlQvghHpXON8cRHHvmXHQqUo07KLiy7CZh2I2oq4iQ==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.2", "unplugin": "^0.10.2" }, "funding": { @@ -4563,17 +4295,17 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-rc.3.tgz", - "integrity": "sha512-I3QG2buAswIYVbYlstmZAamwLopW6daHj2+wrod+whTmeKShp0rbOrVkU0M3Hpj9CVzFM1/4YqCNOBkS2XTnsw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.2.tgz", + "integrity": "sha512-sOp355yQSpYiMqNSopmFYWZkPPRJdGgy4tpxGGLxpOZMygK3j1wQ/WQtl2Z0h61KP0S0dl6hrs0pHQz3A/eVrw==", "dev": true, "dependencies": { "@babel/generator": "~7.21.1", "@babel/parser": "~7.21.2", "@babel/traverse": "~7.21.2", "@babel/types": "~7.21.2", - "@storybook/csf": "next", - "@storybook/types": "7.0.0-rc.3", + "@storybook/csf": "^0.1.0", + "@storybook/types": "7.0.2", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -4584,21 +4316,21 @@ } }, "node_modules/@storybook/docs-mdx": { - "version": "0.0.1-next.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.0.1-next.6.tgz", - "integrity": "sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-rc.3.tgz", - "integrity": "sha512-1uGIMq0+t8AUJyj0jkta7Imr3vFLkX8oRXhX5zi7znjWMhgeXKskEFujvCcz7eI1NIU9x2WvFwbtSzWDpdC/0g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.2.tgz", + "integrity": "sha512-w4D5BURrYjLbLGG9VKAaKU2dSdukszxRE3HWkJyhQU9R1JHvS3n8ntcMqYPqRfoHCOeBLBxP0edDYcAfzGNDYQ==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/core-common": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -4615,9 +4347,9 @@ "dev": true }, "node_modules/@storybook/manager": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-rc.3.tgz", - "integrity": "sha512-8Q/vpHkvWQ/fZHRPFOgGC4Qhgpmafe9GV2QKk3yRA/p9zcW4UzP9fbL4qw6tq+5GLM/kFKArBu28ZA7L7sKB9A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.2.tgz", + "integrity": "sha512-jsFsFKG0rPNYfuRm/WSXGMBy8vnALyFWU330ObDmfU0JID3SeLlVqAOZT1GlwI6vupYpWodsN6qPZKRmC8onRw==", "dev": true, "funding": { "type": "opencollective", @@ -4625,19 +4357,19 @@ } }, "node_modules/@storybook/manager-api": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-rc.3.tgz", - "integrity": "sha512-Pa+LabGYakPd9RuS8G7tCp3hPjZwGZL95Dj+yef0bM9WmYBimNjaUsqVJOGttuE4TLXjUIU9+58YImN7QrGfbQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.2.tgz", + "integrity": "sha512-PbLj9Rc5uCMPfMdaXv1wE3koA3+d0rmZ3BJI8jeq+mfZEvpvfI4OOpRioT1q04CkkVomFOVFTyO0Q/o6Rb5N7g==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/router": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -4689,15 +4421,15 @@ "dev": true }, "node_modules/@storybook/mdx2-csf": { - "version": "1.0.0-next.5", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.0.0-next.5.tgz", - "integrity": "sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.0.0.tgz", + "integrity": "sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw==", "dev": true }, "node_modules/@storybook/node-logger": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-rc.3.tgz", - "integrity": "sha512-ViWIJUdFUTrFtcoO88T3h55ryjl73aMNyn8vPvIgejJoJfYMTB5ErI4zLquN23HNc+H9AKKm/qMFFSf9xjGORQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.2.tgz", + "integrity": "sha512-UENpXxB1yDqP7JXaODJo+pbGt5y3NFBNurBr4+pI4bMAC4ARjpgRE4wp6fxUKFPu9MAR10oCdcLEHkaVUAjYRg==", "dev": true, "dependencies": { "@types/npmlog": "^4.1.2", @@ -4763,9 +4495,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-rc.3.tgz", - "integrity": "sha512-kOCJjixFwdnZxR6K45XR+6Q4UBzOLdabzh3aednQ/piiqj7ZdldaF75ZfoDhKPK4cjrd5AGU6/OWbsJQ+DLVMg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.2.tgz", + "integrity": "sha512-Hhiu3+N3ZDcbrhOCBJTDJbn/mC4l0v3ziyAP3yalq/2ZR9R5kfsEHHakKmswsKKV+ey0gNGijFTy3soU5oSs+A==", "dev": true, "funding": { "type": "opencollective", @@ -4773,9 +4505,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-rc.3.tgz", - "integrity": "sha512-7FeJjOV2pNVesdNljzy1DvzhhShZ/pjQOmhFs4GXBXTJCPNQP5iZTSR6b3ehN8L96yVPT5JsdjX4MiyGw2QPnQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.2.tgz", + "integrity": "sha512-U7MZkDT9bBq7HggLAXmTO9gI4eqhYs26fZS0L6iTE/PCX4Wg2TJBJSq2X8jhDXRqJFOt8SrQ756+V5Vtwrh4Og==", "dev": true, "funding": { "type": "opencollective", @@ -4783,24 +4515,23 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-rc.3.tgz", - "integrity": "sha512-iIifbFRmrFIlLzApTZyCWmI3JNt2IxfM8Dm4rNlMJBifjtgHfpxA+DsQI8mW8UGM64a8N1wF7azkN6cnRz6v2w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.2.tgz", + "integrity": "sha512-QAlJM/r92+dQe/kB7MTTR9b/1mt9UJjxNjazGdEWipA/nw23kOF3o/hBcvKwBYkit4zGYsX70H+vuzW8hCo/lA==", "dev": true, "dependencies": { - "@storybook/channel-postmessage": "7.0.0-rc.3", - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/channel-postmessage": "7.0.2", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.0-rc.3", + "@storybook/types": "7.0.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", - "slash": "^3.0.0", "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" @@ -4811,9 +4542,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-rc.3.tgz", - "integrity": "sha512-3rQsOPwNlHyV93311GaGP28BFobEaNfw+djxDBxocNrL07xvY3u/XE6bShKOJ6R28ATaGwXUxmj2Cwtd2GxASg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.2.tgz", + "integrity": "sha512-fMl0aV7mJ3wyQKvt6z+rZuiIiSd9YinS77IJ1ETHqVZ4SxWriOS0GFKP6sZflrlpShoZBh+zl1lDPG7ZZdrQGw==", "dev": true, "funding": { "type": "opencollective", @@ -4825,12 +4556,12 @@ } }, "node_modules/@storybook/router": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-rc.3.tgz", - "integrity": "sha512-D3Uoz1WRFWH3QUjyrDObwCVRYXdSGZGpCN2eh6gjlKC9VQ9ohaGerEdXSsYnAj2lovhfze8oXp+PS1VKJTlpgg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.2.tgz", + "integrity": "sha512-ZB2vucfayZUrMLBlXju4v6CNOQQb0YKDLw5RoojdBxOsUFtnp5UiPOE+I8PQR63EBwnRjozeibV1XSM+GlQb5w==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -4843,82 +4574,14 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", - "dev": true, - "dependencies": { - "core-js": "^3.6.5", - "find-up": "^4.1.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/semver/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/semver/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/telemetry": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-rc.3.tgz", - "integrity": "sha512-0vPVA1aTWCA6jr3iSOPCu8x3zpNUsyxYN30B4b6d3o2iO6YU/CZdm8rxzInv+bKkz2fHFDzCDsfZTgQ5VEggEw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.2.tgz", + "integrity": "sha512-s2PIwI9nVYQBf3h40EFHLynYUfdqzRJMXyaCWJdVQuvdQfRkAn3CLXaubK+VdjC869z3ZfW20EMu3Mbgzcc0HA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/core-common": "7.0.2", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -4985,13 +4648,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-rc.3.tgz", - "integrity": "sha512-sVt8Egv9CmeDnTJYPsyvlvHE+GX8hAczc1SvuoLeXs/1gsEsnVn6ovCFGSV0Rc7sAr5oSv794/pFUsboU8tYqg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.2.tgz", + "integrity": "sha512-c9sE+QAZNbopPvLiJ6BMxBERfTaq1ATyIri97FBvTucuSotNXw7X5q+ip5/nrCOPZuvK2f5wF4DRyD2HnB/rIQ==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -5005,12 +4668,12 @@ } }, "node_modules/@storybook/types": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-rc.3.tgz", - "integrity": "sha512-2xxgs4zL1QZUdut+Zt5sQdgNCUP0n/y5CRbvEpDwkcuE4KWbfJYixJNumioZ6UwK17ZE9gf4ZxVgttvexmW8eg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.2.tgz", + "integrity": "sha512-0OCt/kAexa8MCcljxA+yZxGMn0n2U2Ync0KxotItqNbKBKVkaLQUls0+IXTWSCpC/QJvNZ049jxUHHanNi/96w==", "dev": true, "dependencies": { - "@storybook/channels": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "^2.0.0" @@ -5021,18 +4684,18 @@ } }, "node_modules/@storybook/web-components": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-rc.3.tgz", - "integrity": "sha512-enG/VoXu7i5r39Ao4qg6a4Q/aPX5LYkkFaj955BLkUJXW1ZANwjRqo6JSquC4tW8Dm1FYN8sJBAzO6M8YRlbnA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.2.tgz", + "integrity": "sha512-qJc5EsNZci0yBOCH9YKuUoSEHvvfetFUsUWpLQa2pzHa648z0Qb8Z1OS/hYCq7PyJN/knb+00Pd8z3zNSw9SgA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-client": "7.0.0-rc.3", - "@storybook/docs-tools": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/core-client": "7.0.2", + "@storybook/docs-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "ts-dedent": "^2.0.0" }, "engines": { @@ -5047,15 +4710,15 @@ } }, "node_modules/@storybook/web-components-vite": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-rc.3.tgz", - "integrity": "sha512-A/+tm879pmD9UwWDJdYimwuIaSQPYyf2FSwL/+zIJ6ZS63LFimkIkt/C7hWD6pYNzk1w36VESfRhEeP3Hu4VNA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.2.tgz", + "integrity": "sha512-9c6wt+4yvOGN3d2FV3dBbtAeswjuIOS5InCQiMHLZEywjghg3SMre5yatKnO88eEk4XBJkamc6rHzSbETrc3sg==", "dev": true, "dependencies": { - "@storybook/builder-vite": "7.0.0-rc.3", - "@storybook/core-server": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/web-components": "7.0.0-rc.3", + "@storybook/builder-vite": "7.0.2", + "@storybook/core-server": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/web-components": "7.0.2", "magic-string": "^0.27.0" }, "engines": { @@ -5321,12 +4984,6 @@ "rxjs": "^7.2.0" } }, - "node_modules/@types/is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", - "dev": true - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -5618,12 +5275,6 @@ "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", "dev": true }, - "node_modules/@types/webpack-env": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", - "dev": true - }, "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -5634,9 +5285,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", - "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -8922,17 +8573,6 @@ "node": ">= 0.8" } }, - "node_modules/core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.29.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", @@ -9341,12 +8981,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "node_modules/dom5": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.1.tgz", @@ -9659,9 +9293,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", "dev": true, "hasInstallScript": true, "bin": { @@ -9671,28 +9305,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" } }, "node_modules/esbuild-android-64": { @@ -10033,342 +9667,6 @@ "node": ">=12" } }, - "node_modules/esbuild/node_modules/@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -11539,9 +10837,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.201.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.201.0.tgz", - "integrity": "sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw==", + "version": "0.203.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.203.1.tgz", + "integrity": "sha512-Nw2M8MPP/Zb+yhvmPDEjzkCXLtgyWGKXZjAYOVftm+wIf3xd4FKa7nRI9v67rODs0WzxMbPc8IPs/7o/dyxo/Q==", "dev": true, "engines": { "node": ">=0.4.0" @@ -11932,16 +11230,6 @@ "node": ">=10" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "node_modules/global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -12760,12 +12048,6 @@ "node": ">=8" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -14285,9 +13567,9 @@ "dev": true }, "node_modules/markdown-to-jsx": { - "version": "7.1.9", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.9.tgz", - "integrity": "sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.2.0.tgz", + "integrity": "sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==", "dev": true, "engines": { "node": ">= 10" @@ -14428,15 +13710,6 @@ "node": ">=6" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -14583,16 +13856,15 @@ } }, "node_modules/msw-storybook-addon": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-1.7.0.tgz", - "integrity": "sha512-G/cYj7Z8NuyFbMsdVJRr17flWed8J7CmKTSPNXmuK65W6uILpqNDpXJC7KVRhOg7lUFR5Hmqwcq6z8Mow/wu5A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-1.8.0.tgz", + "integrity": "sha512-dw3vZwqjixmiur0vouRSOax7wPSu9Og2Hspy9JZFHf49bZRjwDiLF0Pfn2NXEkGviYJOJiGxS1ejoTiUwoSg4A==", "dev": true, "dependencies": { - "@storybook/addons": "^6.0.0", "is-node-process": "^1.0.1" }, "peerDependencies": { - "msw": ">=0.35.0 <1.0.0" + "msw": ">=0.35.0 <2.0.0" } }, "node_modules/msw/node_modules/ansi-styles": { @@ -17403,12 +16675,12 @@ "dev": true }, "node_modules/storybook": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-rc.3.tgz", - "integrity": "sha512-1EFr7o7dcgFKsI6TBqvxYEKGPzKvJ8qzCl3BM/1kZP5BmWqQPbanOQLVkTb4zDb5e+Q+ibDNH5k8D1lQFdsHcg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.2.tgz", + "integrity": "sha512-/XBLhT9Vb14yNBcA9rlW15y+C6IsCA3kx5PKvK9kL10sKCi8invcY94UfCSisXe8HqsO3u6peumo2xpYucKMjw==", "dev": true, "dependencies": { - "@storybook/cli": "7.0.0-rc.3" + "@storybook/cli": "7.0.2" }, "bin": { "sb": "index.js", @@ -18556,59 +17828,6 @@ "tsconfck": "^2.0.1" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz", - "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.14.tgz", - "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.14", - "@esbuild/android-arm64": "0.17.14", - "@esbuild/android-x64": "0.17.14", - "@esbuild/darwin-arm64": "0.17.14", - "@esbuild/darwin-x64": "0.17.14", - "@esbuild/freebsd-arm64": "0.17.14", - "@esbuild/freebsd-x64": "0.17.14", - "@esbuild/linux-arm": "0.17.14", - "@esbuild/linux-arm64": "0.17.14", - "@esbuild/linux-ia32": "0.17.14", - "@esbuild/linux-loong64": "0.17.14", - "@esbuild/linux-mips64el": "0.17.14", - "@esbuild/linux-ppc64": "0.17.14", - "@esbuild/linux-riscv64": "0.17.14", - "@esbuild/linux-s390x": "0.17.14", - "@esbuild/linux-x64": "0.17.14", - "@esbuild/netbsd-x64": "0.17.14", - "@esbuild/openbsd-x64": "0.17.14", - "@esbuild/sunos-x64": "0.17.14", - "@esbuild/win32-arm64": "0.17.14", - "@esbuild/win32-ia32": "0.17.14", - "@esbuild/win32-x64": "0.17.14" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -19207,9 +18426,9 @@ } }, "@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", "dev": true }, "@babel/core": { @@ -19280,22 +18499,22 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", "browserslist": "^4.21.3", "lru-cache": "^5.1.1", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", - "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", + "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -19309,9 +18528,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", - "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", + "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -19751,12 +18970,12 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz", + "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-syntax-import-assertions": { @@ -19778,12 +18997,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -19859,12 +19078,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-arrow-functions": { @@ -19933,9 +19152,9 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", - "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -20091,9 +19310,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", - "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2" @@ -20187,11 +19406,12 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.0.tgz", - "integrity": "sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==", + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", + "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", "dev": true, "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-create-class-features-plugin": "^7.21.0", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-typescript": "^7.20.0" @@ -20217,31 +19437,31 @@ } }, "@babel/preset-env": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", - "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", + "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", + "@babel/compat-data": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", + "@babel/helper-validator-option": "^7.21.0", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", + "@babel/plugin-proposal-async-generator-functions": "^7.20.7", "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.21.0", "@babel/plugin-proposal-dynamic-import": "^7.18.6", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -20258,40 +19478,40 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.20.7", + "@babel/plugin-transform-async-to-generator": "^7.20.7", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.20.7", + "@babel/plugin-transform-destructuring": "^7.21.3", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-for-of": "^7.21.0", "@babel/plugin-transform-function-name": "^7.18.9", "@babel/plugin-transform-literals": "^7.18.9", "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-modules-systemjs": "^7.20.11", "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", "@babel/plugin-transform-new-target": "^7.18.6", "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-parameters": "^7.21.3", "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.20.5", "@babel/plugin-transform-reserved-words": "^7.18.6", "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-spread": "^7.20.7", "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", + "@babel/types": "^7.21.4", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -20300,14 +19520,14 @@ } }, "@babel/preset-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", - "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.21.4.tgz", + "integrity": "sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-flow-strip-types": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-flow-strip-types": "^7.21.0" } }, "@babel/preset-modules": { @@ -20324,14 +19544,16 @@ } }, "@babel/preset-typescript": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", - "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz", + "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" + "@babel/plugin-syntax-jsx": "^7.21.4", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-typescript": "^7.21.3" } }, "@babel/register": { @@ -20473,9 +19695,9 @@ } }, "@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.19.4", @@ -20503,156 +19725,156 @@ "dev": true }, "@esbuild/android-arm": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.14.tgz", - "integrity": "sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", + "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz", - "integrity": "sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", + "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.14.tgz", - "integrity": "sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", + "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz", - "integrity": "sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", + "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", + "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz", - "integrity": "sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", + "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz", - "integrity": "sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", + "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz", - "integrity": "sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", + "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz", - "integrity": "sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", + "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz", - "integrity": "sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", + "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz", - "integrity": "sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", + "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz", - "integrity": "sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", + "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz", - "integrity": "sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", + "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz", - "integrity": "sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", + "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz", - "integrity": "sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", + "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz", - "integrity": "sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", + "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz", - "integrity": "sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", + "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz", - "integrity": "sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", + "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz", - "integrity": "sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", + "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz", - "integrity": "sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", + "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz", - "integrity": "sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", + "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz", - "integrity": "sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", + "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", "dev": true, "optional": true }, @@ -21239,40 +20461,40 @@ "dev": true }, "@storybook/addon-a11y": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.0-rc.3.tgz", - "integrity": "sha512-V/wl19IzsOA0OkUofKKbL09Qj93ywRHW3Pjq3pOLRE178zCumWuBKxpr+dS4C1lNwecIU1ffp8408RSzZ4K5sA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-7.0.2.tgz", + "integrity": "sha512-PCJaLdp/3MypMYQufLIaKL4gzZjDgU8fTW45O7feXwiUZzFUVZamBwBw5BHcHAPsDOr5CmebGvJ9+l2gByWL/g==", "dev": true, "requires": { - "@storybook/addon-highlight": "7.0.0-rc.3", - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/addon-highlight": "7.0.2", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" } }, "@storybook/addon-actions": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.0-rc.3.tgz", - "integrity": "sha512-kyPuSN/PzBnW3w9D/KBEmMqfeGpBeY6Ha2VVPz3BBqcWSHfw0AbHFqvnqluubaHZl1VokE88QT6RxkdyBg33uw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.0.2.tgz", + "integrity": "sha512-rcj39u9MrmzsrDWYt1zsoVxrogZ1Amrv9xkEofEY/QKUr2R3xpHhTALveY9BKIlG1GoE8zLlLoP2k4nz3sNNwQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -21284,65 +20506,65 @@ } }, "@storybook/addon-backgrounds": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0-rc.3.tgz", - "integrity": "sha512-6qIwuNwzLFdsLCjj5rO6TCaBvAGUYbrLpw2EQyKg5J/5GxqhMU/HsinCViok2VEn/z45vji9FI1W6bmo7t4LNQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.2.tgz", + "integrity": "sha512-yRNHQ4PPRJ+HIORQPhDGxn5xolw1xW0ByQZoNRpMD+AMEyfUNFdWbCsRQAOWjNhawxVMHM7EeA2Exrb41zhEjA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" } }, "@storybook/addon-controls": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0-rc.3.tgz", - "integrity": "sha512-16E0AJ1+psFDbL6abOfLFg0zWhUQeJjcM3RKEzJjYZEBuKKL86LAvKhnlkyCUW3VlLN23V0akY6Gev81DR/BfA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.2.tgz", + "integrity": "sha512-dMpRtj5cmfC9vEMve5ncvbWCEC+WD9YuzJ+grdc48E/Hd//p+O2FE6klSkrz5FAjrc+rHINixdyssekpEL6nYQ==", "dev": true, "requires": { - "@storybook/blocks": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/blocks": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" } }, "@storybook/addon-docs": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0-rc.3.tgz", - "integrity": "sha512-UPy+o7IBly2TgCQ7hviaExq++KQSPS7/+/8iLUdv81mtRm3hMBMARmom+wjXfciGHp1re1bazQQYoDsOcorDhA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.2.tgz", + "integrity": "sha512-q3rDWoZEym6Lkmhqc/HBNfLDAmTY8l0WINGUZo/nF98eP5iu4B7Nk7V6BRGYGQt6Y6ZyIQ8WKH0e/eJww2zIog==", "dev": true, "requires": { "@babel/core": "^7.20.2", "@babel/plugin-transform-react-jsx": "^7.19.0", "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/csf-plugin": "7.0.0-rc.3", - "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/blocks": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/csf-plugin": "7.0.2", + "@storybook/csf-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/postinstall": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/react-dom-shim": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.0.2", + "@storybook/postinstall": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/react-dom-shim": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -21350,332 +20572,134 @@ } }, "@storybook/addon-essentials": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0-rc.3.tgz", - "integrity": "sha512-RLA1RgjwuDsRKp2QjBAx2XsgTZ+Dura2k8xCTyBLf0yxnleC8hiAxLwTJSSdDEUuiXxWsBbu0vhHzYnCCVTDnw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.2.tgz", + "integrity": "sha512-LAsWsXa/Pp2B4Ve2WVgc990FtsiHpFDRsq7S3V7xRrZP8DYRbtJIVdszPMDS5uKC+yzbswFEXz08lqbGvq8zgQ==", "dev": true, "requires": { - "@storybook/addon-actions": "7.0.0-rc.3", - "@storybook/addon-backgrounds": "7.0.0-rc.3", - "@storybook/addon-controls": "7.0.0-rc.3", - "@storybook/addon-docs": "7.0.0-rc.3", - "@storybook/addon-highlight": "7.0.0-rc.3", - "@storybook/addon-measure": "7.0.0-rc.3", - "@storybook/addon-outline": "7.0.0-rc.3", - "@storybook/addon-toolbars": "7.0.0-rc.3", - "@storybook/addon-viewport": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", + "@storybook/addon-actions": "7.0.2", + "@storybook/addon-backgrounds": "7.0.2", + "@storybook/addon-controls": "7.0.2", + "@storybook/addon-docs": "7.0.2", + "@storybook/addon-highlight": "7.0.2", + "@storybook/addon-measure": "7.0.2", + "@storybook/addon-outline": "7.0.2", + "@storybook/addon-toolbars": "7.0.2", + "@storybook/addon-viewport": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", "ts-dedent": "^2.0.0" } }, "@storybook/addon-highlight": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.0-rc.3.tgz", - "integrity": "sha512-MeFIKfDpFrF33TPdl2ko2rie485AhfG2n0MFXA73L8Yzj5JPV+LVNa5eIKUUFyOMUGSkVjfFS6n63F08eqHbCw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.0.2.tgz", + "integrity": "sha512-9BkL1OOanguuy73S6nLK0isUb045tOkFONd/PQldOJ0PV3agCvKxKHyzlBz7Hsba8KZhY5jQs+nVW2NiREyGYg==", "dev": true, "requires": { - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.0.0-rc.3" + "@storybook/preview-api": "7.0.2" } }, "@storybook/addon-links": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0-rc.3.tgz", - "integrity": "sha512-K2PMxVooGAgb8hCEU2oGUMzKjPLEPACH8NcRLs/fz9PKadepmijY0hBDC50SGkZd2HWSxXxyt6d5WaXTxhP8aw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.2.tgz", + "integrity": "sha512-lPtfy2MqrcI9YjupBM2eRKGPdFKVPCz7WgO/JQQakGugORJTEGCyJrNJNtWY9jDenv8ynLZ40OxtPBZi54Sr6Q==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/router": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/router": "7.0.2", + "@storybook/types": "7.0.2", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" } }, "@storybook/addon-measure": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0-rc.3.tgz", - "integrity": "sha512-N0HjObHjktlgWvOQcOqyC6/vFXERHzH7aP8L1RRrSnz+mP0XDO+62eBZunlnDGu4uAECH+AV/7LO+bmTMohulg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.2.tgz", + "integrity": "sha512-cf/d5MXpHAjyUiDIVfc8pLn79CPHgnryDmNNlSiP2zEFKcivrRWiu8Rmrad8pGqLkuAh+PXLKCGn9uiqDvg7QQ==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3" + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2" } }, "@storybook/addon-outline": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0-rc.3.tgz", - "integrity": "sha512-SocPRmzzu2wR3SiqMsPskfFumOd0Ph8MUTeJ2cwnaonqqHjjqxaEaFYio8AGmGaHLpY8PKtW0s75jU0oDh9Ezg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.2.tgz", + "integrity": "sha512-thVISO4NM22xlETisBvAPvz2yFD3qLGOjgzBmj8l8r9Rv0IEdwdPrwm5j0WTv8OtbhC4A8lPpvMsn5FhY5mDXg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "ts-dedent": "^2.0.0" } }, "@storybook/addon-toolbars": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0-rc.3.tgz", - "integrity": "sha512-qnvMWZAa3ELRNiVjj1sy0dJb2GzE5fga9SbsbVQQT2zBvou2e8XbiPRw0WHdwUU2Zj9t9/PVjz2+av7P8B+Cqg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.2.tgz", + "integrity": "sha512-tAxZ2+nUYsJdT1sx3BrmoMAZFM19+OzWJY6qSnbEq5zoRgvGZaXGR6tLMKydDoHQBU9Ta9YHGo7N7u7h1C23yg==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3" + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2" } }, "@storybook/addon-viewport": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0-rc.3.tgz", - "integrity": "sha512-GXBi7f4WNeM4yvKXKYNAMLDHauTOcLpimzf1wtyVapBLpwzcJHBaJTCHQ02yIcm6mU2TFbKXMmzC1uBZcCa+5w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.2.tgz", + "integrity": "sha512-TaHJWIIazPM/TerRbka9RqjMPNpwaRsGRdVRBtVoVosy1FzsEjAdQSO7RBMe4G03m5CacSqdsDiJCblI2AXaew==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" } }, - "@storybook/addons": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.16.tgz", - "integrity": "sha512-p3DqQi+8QRL5k7jXhXmJZLsE/GqHqyY6PcoA1oNTJr0try48uhTGUOYkgzmqtDaa/qPFO5LP+xCPzZXckGtquQ==", - "dev": true, - "requires": { - "@storybook/api": "6.5.16", - "@storybook/channels": "6.5.16", - "@storybook/client-logger": "6.5.16", - "@storybook/core-events": "6.5.16", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.16", - "@storybook/theming": "6.5.16", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "dependencies": { - "@storybook/channels": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.16.tgz", - "integrity": "sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==", - "dev": true, - "requires": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "@storybook/client-logger": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.16.tgz", - "integrity": "sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==", - "dev": true, - "requires": { - "core-js": "^3.8.2", - "global": "^4.4.0" - } - }, - "@storybook/core-events": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz", - "integrity": "sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==", - "dev": true, - "requires": { - "core-js": "^3.8.2" - } - }, - "@storybook/csf": { - "version": "0.0.2--canary.4566f4d.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", - "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "@storybook/router": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.16.tgz", - "integrity": "sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==", - "dev": true, - "requires": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7" - } - }, - "@storybook/theming": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz", - "integrity": "sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==", - "dev": true, - "requires": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7" - } - } - } - }, - "@storybook/api": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.16.tgz", - "integrity": "sha512-HOsuT8iomqeTMQJrRx5U8nsC7lJTwRr1DhdD0SzlqL4c80S/7uuCy4IZvOt4sYQjOzW5fOo/kamcoBXyLproTA==", - "dev": true, - "requires": { - "@storybook/channels": "6.5.16", - "@storybook/client-logger": "6.5.16", - "@storybook/core-events": "6.5.16", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.16", - "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.16", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "store2": "^2.12.0", - "telejson": "^6.0.8", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "dependencies": { - "@storybook/channels": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.16.tgz", - "integrity": "sha512-VylzaWQZaMozEwZPJdyJoz+0jpDa8GRyaqu9TGG6QGv+KU5POoZaGLDkRE7TzWkyyP0KQLo80K99MssZCpgSeg==", - "dev": true, - "requires": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - } - }, - "@storybook/client-logger": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.16.tgz", - "integrity": "sha512-pxcNaCj3ItDdicPTXTtmYJE3YC1SjxFrBmHcyrN+nffeNyiMuViJdOOZzzzucTUG0wcOOX8jaSyak+nnHg5H1Q==", - "dev": true, - "requires": { - "core-js": "^3.8.2", - "global": "^4.4.0" - } - }, - "@storybook/core-events": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.16.tgz", - "integrity": "sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==", - "dev": true, - "requires": { - "core-js": "^3.8.2" - } - }, - "@storybook/csf": { - "version": "0.0.2--canary.4566f4d.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", - "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "@storybook/router": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.16.tgz", - "integrity": "sha512-ZgeP8a5YV/iuKbv31V8DjPxlV4AzorRiR8OuSt/KqaiYXNXlOoQDz/qMmiNcrshrfLpmkzoq7fSo4T8lWo2UwQ==", - "dev": true, - "requires": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7" - } - }, - "@storybook/theming": { - "version": "6.5.16", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.16.tgz", - "integrity": "sha512-hNLctkjaYLRdk1+xYTkC1mg4dYz2wSv6SqbLpcKMbkPHTE0ElhddGPHQqB362md/w9emYXNkt1LSMD8Xk9JzVQ==", - "dev": true, - "requires": { - "@storybook/client-logger": "6.5.16", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7" - } - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true - }, - "telejson": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", - "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", - "dev": true, - "requires": { - "@types/is-function": "^1.0.0", - "global": "^4.4.0", - "is-function": "^1.0.2", - "is-regex": "^1.1.2", - "is-symbol": "^1.0.3", - "isobject": "^4.0.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3" - } - } - } - }, "@storybook/blocks": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0-rc.3.tgz", - "integrity": "sha512-mh4LQk2f/Q9n7Sqo6t02CspHubXmSgDY4S5vF3dTgVBM/sD0OxkAY3Pv+HTsXH36lQHYYUft7U7OfhZapgS4ng==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.2.tgz", + "integrity": "sha512-JzHmU8jZLzeQ6bunzci8j/2Ji18GBTyhrPFLk5RjEbMNGWpGjvER/yR127tZOdbPguVNr4iVbRfGzd1wGHlrzA==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/components": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", - "@storybook/docs-tools": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/components": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", + "@storybook/docs-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -21690,46 +20714,45 @@ } }, "@storybook/builder-manager": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0-rc.3.tgz", - "integrity": "sha512-aScwYA9MWtqgiD39SkcwUlrR9RFbngv7jPoOaVMdXuMgNabMNz9417L9bCwSPwgO4XZ5a/nSEbGNLfOHfBemsw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.2.tgz", + "integrity": "sha512-Oej/n8D7eaWgmWF7nN2hXLRM53lcYOdh6umSN8Mh/LcYUfxB+dvUBFzUjoLE0xjhW6xRinrKrENT5LcP/f/HBQ==", "dev": true, "requires": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/manager": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", + "@storybook/core-common": "7.0.2", + "@storybook/manager": "7.0.2", + "@storybook/node-logger": "7.0.2", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", "ejs": "^3.1.8", - "esbuild": "^0.16.4", + "esbuild": "^0.17.0", "esbuild-plugin-alias": "^0.2.1", "express": "^4.17.3", "find-cache-dir": "^3.0.0", "fs-extra": "^11.1.0", "process": "^0.11.10", - "slash": "^3.0.0", "util": "^0.12.4" } }, "@storybook/builder-vite": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.0-rc.3.tgz", - "integrity": "sha512-v2d04PWfcITD7zI68d7XbCbOd+5vl3gIMEX5Xdsmuw3WcaqYxvDSE8GhL6zsBhrUyygV/8xhSaaxyfv8ImM0+w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.0.2.tgz", + "integrity": "sha512-G6CD2Gf2zwzRslvNvqgz4FeADVEA9XA4Mw6+NM6Twc+Wy/Ah482dvHS9ApSgirtGyBKjOfdHn1xQT4Z+kzbJnw==", "dev": true, "requires": { - "@storybook/channel-postmessage": "7.0.0-rc.3", - "@storybook/channel-websocket": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/csf-plugin": "7.0.0-rc.3", - "@storybook/mdx2-csf": "next", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/channel-postmessage": "7.0.2", + "@storybook/channel-websocket": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/csf-plugin": "7.0.2", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.0.2", + "@storybook/preview": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", "express": "^4.17.3", @@ -21737,58 +20760,59 @@ "glob": "^8.1.0", "glob-promise": "^6.0.2", "magic-string": "^0.27.0", - "rollup": "^2.25.0 || ^3.3.0", - "slash": "^3.0.0" + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "rollup": "^2.25.0 || ^3.3.0" } }, "@storybook/channel-postmessage": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.0-rc.3.tgz", - "integrity": "sha512-1uptuCjA4vAvvoxNoIJPTIpSARzJnLU7eahRhTPwELBnCH0ObqvgInge0cvbYsaTRDNV90oBbEKlxLf1Zb1BhQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-7.0.2.tgz", + "integrity": "sha512-SZ/KqnZcx10W9hJbrzBKcP9dmgaeTaXugUhcgw1IkmjKWdsKazqFZCPwQWZZKAmhO4wYbyYOhkz3wfSIeB4mFw==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3" } }, "@storybook/channel-websocket": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0-rc.3.tgz", - "integrity": "sha512-706jopde+OZZkqsmrRuwd9utusqiKianiF8cvjAxrxogSx8LwHk8jxrEKHxHiZUEWDS3JxJoIYSV8gxH9hcjsA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.2.tgz", + "integrity": "sha512-YU3lFId6Nsi75ddA+3qfbnLfNUPswboYyx+SALhaLuXqz7zqfzX4ezMgxeS/h0gRlUJ7nf2/yJ5qie/kZaizjw==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", "@storybook/global": "^5.0.0", "telejson": "^7.0.3" } }, "@storybook/channels": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0-rc.3.tgz", - "integrity": "sha512-jaODIck+um16Fn2k1vwHK9RNk2J8hLVyzLSkoGM40TsMF5nichwI3rA6225pLk015itJbhCAi/RhaMFBI+ZtsA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.2.tgz", + "integrity": "sha512-qkI8mFy9c8mxN2f01etayKhCaauL6RAsxRzbX1/pKj6UqhHWqqUbtHwymrv4hG5qDYjV1e9pd7ae5eNF8Kui0g==", "dev": true }, "@storybook/cli": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0-rc.3.tgz", - "integrity": "sha512-g1nWHLI1fiDK2dnLpmbhbrm6ZaAwuZkUgEGtlEQCPTHWVRZj2fJT0y5zjgBIhFpdkB/X8MZzgVxqhTJF0uX39Q==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.2.tgz", + "integrity": "sha512-xMM2QdXNGg09wuXzAGroKrbsnaHSFPmtmefX1XGALhHuKVwxOoC2apWMpek6gY/9vh5EIRTog2Dvfd2BzNrT6Q==", "dev": true, "requires": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/core-server": "7.0.0-rc.3", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/telemetry": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/codemod": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/core-server": "7.0.2", + "@storybook/csf-tools": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/telemetry": "7.0.2", + "@storybook/types": "7.0.2", "@types/semver": "^7.3.4", "boxen": "^5.1.2", "chalk": "^4.1.0", @@ -21873,20 +20897,6 @@ } } }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -21943,6 +20953,17 @@ "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", "ws": "^6.1.0" + }, + "dependencies": { + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } } }, "rimraf": { @@ -21952,6 +20973,22 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "semver": { @@ -21972,15 +21009,6 @@ "has-flag": "^4.0.0" } }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -21990,27 +21018,27 @@ } }, "@storybook/client-logger": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0-rc.3.tgz", - "integrity": "sha512-cC7lq+S4n5fFooDCyefgTAOfipadiZskNuzsQF7drE9nQLZ8GflLdmTKK//5NQUHKPzF7r+4Q5DAK4I3nqIkxA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.2.tgz", + "integrity": "sha512-rv7W2BhzIQHbFpUM5/CP/acS6T5lTmaxT0MbZ9n+9h++9QQU/cFOdkZgSUbLVAb1AeUGoLsk0HYzcqPpV35Xsw==", "dev": true, "requires": { "@storybook/global": "^5.0.0" } }, "@storybook/codemod": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.0-rc.3.tgz", - "integrity": "sha512-P965X5g4WIBfrYMLYPQIvwp9wfIf5bnUIVgwjeGUDLDLIst6RXmHGik9MHLy2Ic/MXTsf/kwK5qY9pj95t8DZg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.0.2.tgz", + "integrity": "sha512-D9PdByxJlFiaDJcLkM+RN1DHCj4VfQIlSZkADOcNtI4o9H064oiMloWDGZiR1i1FCYMSXuWmW6tMsuCVebA+Nw==", "dev": true, "requires": { "@babel/core": "~7.21.0", - "@babel/preset-env": "~7.20.2", + "@babel/preset-env": "~7.21.0", "@babel/types": "~7.21.2", - "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/types": "7.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", "jscodeshift": "^0.14.0", @@ -22020,44 +21048,44 @@ } }, "@storybook/components": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.0-rc.3.tgz", - "integrity": "sha512-PeQFr2hZvLnxLswKihw1Ro5wCqmNZeSE4q+tFdifhLVIqP/OwHG+ShiLCHQ1aEa0Z3Ub+80m7uPzg69+y9m+bQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.0.2.tgz", + "integrity": "sha512-Ee9pY6WlpricPUdYiyR0Ov8zgHkUt541yl1CZ6Ytaom2TA12cAnRjKewbLAgVPPhIE1LsMRhOPFYql0JMtnN4Q==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/client-logger": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" } }, "@storybook/core-client": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0-rc.3.tgz", - "integrity": "sha512-epUiHzFQNoEr5PYq9069SliQzHl5fVQj94aWdGZWCQPGldxiFtCNB7o32NzwwIVzXOKPzU38qg2B4738jt/1XQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.2.tgz", + "integrity": "sha512-tr6Uv41YD2O0xiUrtgujiY1QxuznhbyUI0BRsSh49e8cx3QoW7FgPy7IVZHgb17DXKZ/wY/hgdyTTB87H6IbLA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3" + "@storybook/client-logger": "7.0.2", + "@storybook/preview-api": "7.0.2" } }, "@storybook/core-common": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0-rc.3.tgz", - "integrity": "sha512-uUIs14+35ubRcpYwuX0OHW05tSDC5jeNEY8gv2EjcexBLeNozfGV4Tf5/ncG8glVbp8jGUlu2S3XJZoHKHDSqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.2.tgz", + "integrity": "sha512-DayFPTCj695tnEKLuDlogclBim8mzdrbj9U1xzFm23BUReheGSGdLl2zrb3mP1l9Zj4xJ/Ctst1KN9SFbW84vw==", "dev": true, "requires": { - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/node-logger": "7.0.2", + "@storybook/types": "7.0.2", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", "chalk": "^4.1.0", - "esbuild": "^0.16.4", - "esbuild-register": "^3.3.3", + "esbuild": "^0.17.0", + "esbuild-register": "^3.4.0", "file-system-cache": "^2.0.0", "find-up": "^5.0.0", "fs-extra": "^11.1.0", @@ -22069,14 +21097,13 @@ "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "ts-dedent": "^2.0.0" }, "dependencies": { "@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", + "version": "16.18.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.23.tgz", + "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g==", "dev": true }, "ansi-styles": { @@ -22116,31 +21143,31 @@ } }, "@storybook/core-events": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.0-rc.3.tgz", - "integrity": "sha512-EBihNmxxiIJbPt6OhCTXFPl2T/9OXNVKtsy8hchBNEzp+UJGyeHx+t9K6tRvbcmt5TG/y7C7ZsYx9U28JTwNkg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.0.2.tgz", + "integrity": "sha512-1DCHCwHRL3+rlvnVVc/BCfReP31XaT2WYgcLeGTmkX1E43Po1MkgcM7PnJPSaa9POvSqZ+6YLZv5Bs1SXbufow==", "dev": true }, "@storybook/core-server": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.0-rc.3.tgz", - "integrity": "sha512-211514C7w8hvu/bLP97KdF7TM8FpcchgDAhldODDvKFyxFTHMcQFj3ABlptsWFO6JxZsy32hG8qi6phFUtceQA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.0.2.tgz", + "integrity": "sha512-7ipGws8YffVaiwkc+D0+MfZc/Sy52aKenG3nDJdK4Ajmp5LPAlelb/sxIhfRvoHDbDsy2FQNz++Mb55Yh03KkA==", "dev": true, "requires": { "@aw-web-design/x-default-browser": "1.4.88", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", - "@storybook/csf-tools": "7.0.0-rc.3", - "@storybook/docs-mdx": "next", + "@storybook/builder-manager": "7.0.2", + "@storybook/core-common": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.0.2", + "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/telemetry": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/telemetry": "7.0.2", + "@storybook/types": "7.0.2", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/node-fetch": "^2.5.7", @@ -22164,7 +21191,6 @@ "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "serve-favicon": "^2.5.0", - "slash": "^3.0.0", "telejson": "^7.0.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", @@ -22173,9 +21199,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", + "version": "16.18.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.23.tgz", + "integrity": "sha512-XAMpaw1s1+6zM+jn2tmw8MyaRDIJfXxqmIQIS0HfoGYPuf7dUWeiUKopwq13KFX9lEp1+THGtlaaYx39Nxr58g==", "dev": true }, "ansi-styles": { @@ -22239,57 +21265,57 @@ } }, "@storybook/csf": { - "version": "0.0.2-next.10", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2-next.10.tgz", - "integrity": "sha512-m2PFgBP/xRIF85VrDhvesn9ktaD2pN3VUjvMqkAL/cINp/3qXsCyI81uw7N5VEOkQAbWrY2FcydnvEPDEdE8fA==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.0.tgz", + "integrity": "sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ==", "dev": true, "requires": { "type-fest": "^2.19.0" } }, "@storybook/csf-plugin": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.0-rc.3.tgz", - "integrity": "sha512-+r2m09o/5B846Q8ykDWjwPJSZXc3i4Z6vLc04SxIR/VJffF7K0Z/vFmTcPz8Qg5wFdfvy/HFqTLpaOJtVwWBdA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.0.2.tgz", + "integrity": "sha512-aGuo+G6G5IwSGkmc+OUA796sOfvJMaQj8QS/Zh5F0nL4ZlQvghHpXON8cRHHvmXHQqUo07KLiy7CZh2I2oq4iQ==", "dev": true, "requires": { - "@storybook/csf-tools": "7.0.0-rc.3", + "@storybook/csf-tools": "7.0.2", "unplugin": "^0.10.2" } }, "@storybook/csf-tools": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.0-rc.3.tgz", - "integrity": "sha512-I3QG2buAswIYVbYlstmZAamwLopW6daHj2+wrod+whTmeKShp0rbOrVkU0M3Hpj9CVzFM1/4YqCNOBkS2XTnsw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.0.2.tgz", + "integrity": "sha512-sOp355yQSpYiMqNSopmFYWZkPPRJdGgy4tpxGGLxpOZMygK3j1wQ/WQtl2Z0h61KP0S0dl6hrs0pHQz3A/eVrw==", "dev": true, "requires": { "@babel/generator": "~7.21.1", "@babel/parser": "~7.21.2", "@babel/traverse": "~7.21.2", "@babel/types": "~7.21.2", - "@storybook/csf": "next", - "@storybook/types": "7.0.0-rc.3", + "@storybook/csf": "^0.1.0", + "@storybook/types": "7.0.2", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" } }, "@storybook/docs-mdx": { - "version": "0.0.1-next.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.0.1-next.6.tgz", - "integrity": "sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", "dev": true }, "@storybook/docs-tools": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.0-rc.3.tgz", - "integrity": "sha512-1uGIMq0+t8AUJyj0jkta7Imr3vFLkX8oRXhX5zi7znjWMhgeXKskEFujvCcz7eI1NIU9x2WvFwbtSzWDpdC/0g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.0.2.tgz", + "integrity": "sha512-w4D5BURrYjLbLGG9VKAaKU2dSdukszxRE3HWkJyhQU9R1JHvS3n8ntcMqYPqRfoHCOeBLBxP0edDYcAfzGNDYQ==", "dev": true, "requires": { "@babel/core": "^7.12.10", - "@storybook/core-common": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/core-common": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -22302,25 +21328,25 @@ "dev": true }, "@storybook/manager": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0-rc.3.tgz", - "integrity": "sha512-8Q/vpHkvWQ/fZHRPFOgGC4Qhgpmafe9GV2QKk3yRA/p9zcW4UzP9fbL4qw6tq+5GLM/kFKArBu28ZA7L7sKB9A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.2.tgz", + "integrity": "sha512-jsFsFKG0rPNYfuRm/WSXGMBy8vnALyFWU330ObDmfU0JID3SeLlVqAOZT1GlwI6vupYpWodsN6qPZKRmC8onRw==", "dev": true }, "@storybook/manager-api": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.0-rc.3.tgz", - "integrity": "sha512-Pa+LabGYakPd9RuS8G7tCp3hPjZwGZL95Dj+yef0bM9WmYBimNjaUsqVJOGttuE4TLXjUIU9+58YImN7QrGfbQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.0.2.tgz", + "integrity": "sha512-PbLj9Rc5uCMPfMdaXv1wE3koA3+d0rmZ3BJI8jeq+mfZEvpvfI4OOpRioT1q04CkkVomFOVFTyO0Q/o6Rb5N7g==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.0.0-rc.3", - "@storybook/theming": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/router": "7.0.2", + "@storybook/theming": "7.0.2", + "@storybook/types": "7.0.2", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -22357,15 +21383,15 @@ } }, "@storybook/mdx2-csf": { - "version": "1.0.0-next.5", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.0.0-next.5.tgz", - "integrity": "sha512-02w0sgGZaK1agT050yCVhJ+o4rLHANWvLKWjQjeAsYbjneLC5ITt+3GDB4jRiWwJboZ8dHW1fGSK1Vg5fA34aQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.0.0.tgz", + "integrity": "sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw==", "dev": true }, "@storybook/node-logger": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.0-rc.3.tgz", - "integrity": "sha512-ViWIJUdFUTrFtcoO88T3h55ryjl73aMNyn8vPvIgejJoJfYMTB5ErI4zLquN23HNc+H9AKKm/qMFFSf9xjGORQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.0.2.tgz", + "integrity": "sha512-UENpXxB1yDqP7JXaODJo+pbGt5y3NFBNurBr4+pI4bMAC4ARjpgRE4wp6fxUKFPu9MAR10oCdcLEHkaVUAjYRg==", "dev": true, "requires": { "@types/npmlog": "^4.1.2", @@ -22411,115 +21437,65 @@ } }, "@storybook/postinstall": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.0-rc.3.tgz", - "integrity": "sha512-kOCJjixFwdnZxR6K45XR+6Q4UBzOLdabzh3aednQ/piiqj7ZdldaF75ZfoDhKPK4cjrd5AGU6/OWbsJQ+DLVMg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.0.2.tgz", + "integrity": "sha512-Hhiu3+N3ZDcbrhOCBJTDJbn/mC4l0v3ziyAP3yalq/2ZR9R5kfsEHHakKmswsKKV+ey0gNGijFTy3soU5oSs+A==", "dev": true }, "@storybook/preview": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0-rc.3.tgz", - "integrity": "sha512-7FeJjOV2pNVesdNljzy1DvzhhShZ/pjQOmhFs4GXBXTJCPNQP5iZTSR6b3ehN8L96yVPT5JsdjX4MiyGw2QPnQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.2.tgz", + "integrity": "sha512-U7MZkDT9bBq7HggLAXmTO9gI4eqhYs26fZS0L6iTE/PCX4Wg2TJBJSq2X8jhDXRqJFOt8SrQ756+V5Vtwrh4Og==", "dev": true }, "@storybook/preview-api": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.0-rc.3.tgz", - "integrity": "sha512-iIifbFRmrFIlLzApTZyCWmI3JNt2IxfM8Dm4rNlMJBifjtgHfpxA+DsQI8mW8UGM64a8N1wF7azkN6cnRz6v2w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.0.2.tgz", + "integrity": "sha512-QAlJM/r92+dQe/kB7MTTR9b/1mt9UJjxNjazGdEWipA/nw23kOF3o/hBcvKwBYkit4zGYsX70H+vuzW8hCo/lA==", "dev": true, "requires": { - "@storybook/channel-postmessage": "7.0.0-rc.3", - "@storybook/channels": "7.0.0-rc.3", - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-events": "7.0.0-rc.3", - "@storybook/csf": "next", + "@storybook/channel-postmessage": "7.0.2", + "@storybook/channels": "7.0.2", + "@storybook/client-logger": "7.0.2", + "@storybook/core-events": "7.0.2", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.0.0-rc.3", + "@storybook/types": "7.0.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", - "slash": "^3.0.0", "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" } }, "@storybook/react-dom-shim": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.0-rc.3.tgz", - "integrity": "sha512-3rQsOPwNlHyV93311GaGP28BFobEaNfw+djxDBxocNrL07xvY3u/XE6bShKOJ6R28ATaGwXUxmj2Cwtd2GxASg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.0.2.tgz", + "integrity": "sha512-fMl0aV7mJ3wyQKvt6z+rZuiIiSd9YinS77IJ1ETHqVZ4SxWriOS0GFKP6sZflrlpShoZBh+zl1lDPG7ZZdrQGw==", "dev": true }, "@storybook/router": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.0-rc.3.tgz", - "integrity": "sha512-D3Uoz1WRFWH3QUjyrDObwCVRYXdSGZGpCN2eh6gjlKC9VQ9ohaGerEdXSsYnAj2lovhfze8oXp+PS1VKJTlpgg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.0.2.tgz", + "integrity": "sha512-ZB2vucfayZUrMLBlXju4v6CNOQQb0YKDLw5RoojdBxOsUFtnp5UiPOE+I8PQR63EBwnRjozeibV1XSM+GlQb5w==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", "memoizerific": "^1.11.3", "qs": "^6.10.0" } }, - "@storybook/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", - "dev": true, - "requires": { - "core-js": "^3.6.5", - "find-up": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, "@storybook/telemetry": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0-rc.3.tgz", - "integrity": "sha512-0vPVA1aTWCA6jr3iSOPCu8x3zpNUsyxYN30B4b6d3o2iO6YU/CZdm8rxzInv+bKkz2fHFDzCDsfZTgQ5VEggEw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.2.tgz", + "integrity": "sha512-s2PIwI9nVYQBf3h40EFHLynYUfdqzRJMXyaCWJdVQuvdQfRkAn3CLXaubK+VdjC869z3ZfW20EMu3Mbgzcc0HA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-common": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/core-common": "7.0.2", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -22566,55 +21542,55 @@ } }, "@storybook/theming": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0-rc.3.tgz", - "integrity": "sha512-sVt8Egv9CmeDnTJYPsyvlvHE+GX8hAczc1SvuoLeXs/1gsEsnVn6ovCFGSV0Rc7sAr5oSv794/pFUsboU8tYqg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.2.tgz", + "integrity": "sha512-c9sE+QAZNbopPvLiJ6BMxBERfTaq1ATyIri97FBvTucuSotNXw7X5q+ip5/nrCOPZuvK2f5wF4DRyD2HnB/rIQ==", "dev": true, "requires": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" } }, "@storybook/types": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0-rc.3.tgz", - "integrity": "sha512-2xxgs4zL1QZUdut+Zt5sQdgNCUP0n/y5CRbvEpDwkcuE4KWbfJYixJNumioZ6UwK17ZE9gf4ZxVgttvexmW8eg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.2.tgz", + "integrity": "sha512-0OCt/kAexa8MCcljxA+yZxGMn0n2U2Ync0KxotItqNbKBKVkaLQUls0+IXTWSCpC/QJvNZ049jxUHHanNi/96w==", "dev": true, "requires": { - "@storybook/channels": "7.0.0-rc.3", + "@storybook/channels": "7.0.2", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "^2.0.0" } }, "@storybook/web-components": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.0-rc.3.tgz", - "integrity": "sha512-enG/VoXu7i5r39Ao4qg6a4Q/aPX5LYkkFaj955BLkUJXW1ZANwjRqo6JSquC4tW8Dm1FYN8sJBAzO6M8YRlbnA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-7.0.2.tgz", + "integrity": "sha512-qJc5EsNZci0yBOCH9YKuUoSEHvvfetFUsUWpLQa2pzHa648z0Qb8Z1OS/hYCq7PyJN/knb+00Pd8z3zNSw9SgA==", "dev": true, "requires": { - "@storybook/client-logger": "7.0.0-rc.3", - "@storybook/core-client": "7.0.0-rc.3", - "@storybook/docs-tools": "7.0.0-rc.3", + "@storybook/client-logger": "7.0.2", + "@storybook/core-client": "7.0.2", + "@storybook/docs-tools": "7.0.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0-rc.3", - "@storybook/preview-api": "7.0.0-rc.3", - "@storybook/types": "7.0.0-rc.3", + "@storybook/manager-api": "7.0.2", + "@storybook/preview-api": "7.0.2", + "@storybook/types": "7.0.2", "ts-dedent": "^2.0.0" } }, "@storybook/web-components-vite": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.0-rc.3.tgz", - "integrity": "sha512-A/+tm879pmD9UwWDJdYimwuIaSQPYyf2FSwL/+zIJ6ZS63LFimkIkt/C7hWD6pYNzk1w36VESfRhEeP3Hu4VNA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-7.0.2.tgz", + "integrity": "sha512-9c6wt+4yvOGN3d2FV3dBbtAeswjuIOS5InCQiMHLZEywjghg3SMre5yatKnO88eEk4XBJkamc6rHzSbETrc3sg==", "dev": true, "requires": { - "@storybook/builder-vite": "7.0.0-rc.3", - "@storybook/core-server": "7.0.0-rc.3", - "@storybook/node-logger": "7.0.0-rc.3", - "@storybook/web-components": "7.0.0-rc.3", + "@storybook/builder-vite": "7.0.2", + "@storybook/core-server": "7.0.2", + "@storybook/node-logger": "7.0.2", + "@storybook/web-components": "7.0.2", "magic-string": "^0.27.0" } }, @@ -22869,12 +21845,6 @@ "rxjs": "^7.2.0" } }, - "@types/is-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", - "dev": true - }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -23166,12 +22136,6 @@ "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", "dev": true }, - "@types/webpack-env": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", - "dev": true - }, "@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -23182,9 +22146,9 @@ } }, "@types/yargs": { - "version": "17.0.22", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", - "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -25823,12 +24787,6 @@ "keygrip": "~1.1.0" } }, - "core-js": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.0.tgz", - "integrity": "sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==", - "dev": true - }, "core-js-compat": { "version": "3.29.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", @@ -26135,12 +25093,6 @@ "esutils": "^2.0.2" } }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "dom5": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.1.tgz", @@ -26415,182 +25367,33 @@ "dev": true }, "esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "version": "0.17.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", + "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "dev": true, - "optional": true - } + "@esbuild/android-arm": "0.17.15", + "@esbuild/android-arm64": "0.17.15", + "@esbuild/android-x64": "0.17.15", + "@esbuild/darwin-arm64": "0.17.15", + "@esbuild/darwin-x64": "0.17.15", + "@esbuild/freebsd-arm64": "0.17.15", + "@esbuild/freebsd-x64": "0.17.15", + "@esbuild/linux-arm": "0.17.15", + "@esbuild/linux-arm64": "0.17.15", + "@esbuild/linux-ia32": "0.17.15", + "@esbuild/linux-loong64": "0.17.15", + "@esbuild/linux-mips64el": "0.17.15", + "@esbuild/linux-ppc64": "0.17.15", + "@esbuild/linux-riscv64": "0.17.15", + "@esbuild/linux-s390x": "0.17.15", + "@esbuild/linux-x64": "0.17.15", + "@esbuild/netbsd-x64": "0.17.15", + "@esbuild/openbsd-x64": "0.17.15", + "@esbuild/sunos-x64": "0.17.15", + "@esbuild/win32-arm64": "0.17.15", + "@esbuild/win32-ia32": "0.17.15", + "@esbuild/win32-x64": "0.17.15" } }, "esbuild-android-64": { @@ -27651,9 +26454,9 @@ "dev": true }, "flow-parser": { - "version": "0.201.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.201.0.tgz", - "integrity": "sha512-G4oeDNpNGyIrweF9EnoHatncAihMT0tQgV6NMdyM5I7fhrz9Pr13PJ2KLQ673O4wj9KooTdBpeeYHdDNAQoyyw==", + "version": "0.203.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.203.1.tgz", + "integrity": "sha512-Nw2M8MPP/Zb+yhvmPDEjzkCXLtgyWGKXZjAYOVftm+wIf3xd4FKa7nRI9v67rODs0WzxMbPc8IPs/7o/dyxo/Q==", "dev": true }, "for-each": { @@ -27941,16 +26744,6 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -28550,12 +27343,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, "is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -29718,9 +28505,9 @@ "dev": true }, "markdown-to-jsx": { - "version": "7.1.9", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.9.tgz", - "integrity": "sha512-x4STVIKIJR0mGgZIZ5RyAeQD7FEZd5tS8m/htbcVGlex32J+hlSLj+ExrHCxP6nRKF1EKbcO7i6WhC1GtOpBlA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.2.0.tgz", + "integrity": "sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==", "dev": true }, "marky": { @@ -29820,15 +28607,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -29982,12 +28760,11 @@ } }, "msw-storybook-addon": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-1.7.0.tgz", - "integrity": "sha512-G/cYj7Z8NuyFbMsdVJRr17flWed8J7CmKTSPNXmuK65W6uILpqNDpXJC7KVRhOg7lUFR5Hmqwcq6z8Mow/wu5A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-1.8.0.tgz", + "integrity": "sha512-dw3vZwqjixmiur0vouRSOax7wPSu9Og2Hspy9JZFHf49bZRjwDiLF0Pfn2NXEkGviYJOJiGxS1ejoTiUwoSg4A==", "dev": true, "requires": { - "@storybook/addons": "^6.0.0", "is-node-process": "^1.0.1" } }, @@ -32055,12 +30832,12 @@ "dev": true }, "storybook": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.0-rc.3.tgz", - "integrity": "sha512-1EFr7o7dcgFKsI6TBqvxYEKGPzKvJ8qzCl3BM/1kZP5BmWqQPbanOQLVkTb4zDb5e+Q+ibDNH5k8D1lQFdsHcg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.0.2.tgz", + "integrity": "sha512-/XBLhT9Vb14yNBcA9rlW15y+C6IsCA3kx5PKvK9kL10sKCi8invcY94UfCSisXe8HqsO3u6peumo2xpYucKMjw==", "dev": true, "requires": { - "@storybook/cli": "7.0.0-rc.3" + "@storybook/cli": "7.0.2" } }, "stream-shift": { @@ -32883,45 +31660,6 @@ "postcss": "^8.4.21", "resolve": "^1.22.1", "rollup": "^3.18.0" - }, - "dependencies": { - "@esbuild/darwin-x64": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz", - "integrity": "sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==", - "dev": true, - "optional": true - }, - "esbuild": { - "version": "0.17.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.14.tgz", - "integrity": "sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.14", - "@esbuild/android-arm64": "0.17.14", - "@esbuild/android-x64": "0.17.14", - "@esbuild/darwin-arm64": "0.17.14", - "@esbuild/darwin-x64": "0.17.14", - "@esbuild/freebsd-arm64": "0.17.14", - "@esbuild/freebsd-x64": "0.17.14", - "@esbuild/linux-arm": "0.17.14", - "@esbuild/linux-arm64": "0.17.14", - "@esbuild/linux-ia32": "0.17.14", - "@esbuild/linux-loong64": "0.17.14", - "@esbuild/linux-mips64el": "0.17.14", - "@esbuild/linux-ppc64": "0.17.14", - "@esbuild/linux-riscv64": "0.17.14", - "@esbuild/linux-s390x": "0.17.14", - "@esbuild/linux-x64": "0.17.14", - "@esbuild/netbsd-x64": "0.17.14", - "@esbuild/openbsd-x64": "0.17.14", - "@esbuild/sunos-x64": "0.17.14", - "@esbuild/win32-arm64": "0.17.14", - "@esbuild/win32-ia32": "0.17.14", - "@esbuild/win32-x64": "0.17.14" - } - } } }, "vite-plugin-static-copy": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 602f19a6e2..2a76669d0e 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -77,13 +77,13 @@ "@playwright/test": "^1.30.0", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.0.1", - "@storybook/addon-a11y": "^7.0.0-rc.3", - "@storybook/addon-actions": "^7.0.0-rc.3", - "@storybook/addon-essentials": "^7.0.0-rc.3", - "@storybook/addon-links": "^7.0.0-rc.3", - "@storybook/mdx2-csf": "^1.0.0-next.5", - "@storybook/web-components": "^7.0.0-rc.3", - "@storybook/web-components-vite": "^7.0.0-rc.3", + "@storybook/addon-a11y": "^7.0.2", + "@storybook/addon-actions": "^7.0.2", + "@storybook/addon-essentials": "^7.0.2", + "@storybook/addon-links": "^7.0.2", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/web-components": "^7.0.2", + "@storybook/web-components-vite": "^7.0.2", "@types/chai": "^4.3.4", "@types/lodash-es": "^4.17.6", "@types/mocha": "^10.0.0", @@ -106,7 +106,7 @@ "eslint-plugin-storybook": "^0.6.11", "eslint-plugin-wc": "^1.4.0", "msw": "^1.1.0", - "msw-storybook-addon": "^1.7.0", + "msw-storybook-addon": "^1.8.0", "openapi-typescript-codegen": "^0.23.0", "playwright-msw": "^2.1.0", "plop": "^3.1.1", @@ -117,7 +117,7 @@ "rollup-plugin-dts": "^5.2.0", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-url": "^3.0.1", - "storybook": "^7.0.0-rc.3", + "storybook": "^7.0.2", "tiny-glob": "^0.2.9", "typescript": "^5.0.3", "vite": "^4.2.1", From f557cd2f7804b737c8944eca2f575af83e097960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 13:37:02 +0200 Subject: [PATCH 537/550] change property UI from Boolean to Toggle --- .../shared/property-editors/uis/document-picker/manifests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/manifests.ts index 8a3e5d81df..2a8e59cc62 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/manifests.ts @@ -28,7 +28,7 @@ export const manifest: ManifestPropertyEditorUI = { alias: 'ignoreUserStartNodes', label: 'Ignore User Start Nodes', description: 'Selecting this option allows a user to choose nodes that they normally dont have access to', - propertyEditorUI: 'Umb.PropertyEditorUI.Boolean', + propertyEditorUI: 'Umb.PropertyEditorUI.Toggle', }, ], }, From 43e4fd2e505f389e3da4032b0a0edf6e324e6569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 13:50:04 +0200 Subject: [PATCH 538/550] entityKey to entityId --- ...ent-type-workspace-view-edit-tab.element.ts | 18 +++++++++--------- ...ocument-type-workspace-view-edit.element.ts | 2 +- .../workspace-package-builder.element.ts | 6 +++--- .../input-document-picker.element.ts | 10 +++++----- .../input-document-type-picker.element.ts | 12 ++++++------ .../input-media-picker.element.ts | 12 ++++++------ ...property-editor-ui-checkbox-list.element.ts | 2 +- ...operty-editor-ui-document-picker.element.ts | 4 ++-- .../property-editor-ui-media-picker.element.ts | 4 ++-- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts index 19de474446..51782de0b7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.ts @@ -22,17 +22,17 @@ export class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement { `, ]; - private _ownerTabKey?: string | undefined; + private _ownerTabId?: string | undefined; @property({ type: String }) - public get ownerTabKey(): string | undefined { - return this._ownerTabKey; + public get ownerTabId(): string | undefined { + return this._ownerTabId; } - public set ownerTabKey(value: string | undefined) { - if (value === this._ownerTabKey) return; - const oldValue = this._ownerTabKey; - this._ownerTabKey = value; - this.requestUpdate('ownerTabKey', oldValue); + public set ownerTabId(value: string | undefined) { + if (value === this._ownerTabId) return; + const oldValue = this._ownerTabId; + this._ownerTabId = value; + this.requestUpdate('ownerTabId', oldValue); } private _tabName?: string | undefined; @@ -78,7 +78,7 @@ export class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement { #onAddGroup = () => { // Idea, maybe we can gather the sortOrder from the last group rendered and add 1 to it? - this._groupStructureHelper.addGroup(this._ownerTabKey); + this._groupStructureHelper.addGroup(this._ownerTabId); }; render() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts index 573d386347..7054f9502c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -92,7 +92,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { component: () => import('./document-type-workspace-view-edit-tab.element'), setup: (component: Promise) => { (component as any).tabName = tabName; - (component as any).ownerTabKey = tab.id; + (component as any).ownerTabId = tab.id; }, }); }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 218a18b67d..1f3e09f436 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -200,7 +200,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { .value=${this._package.contentNodeId ?? ''} max="1" @change="${(e: CustomEvent) => - (this._package.contentNodeId = (e.target as UmbInputDocumentPickerElement).selectedKeys[0])}"> + (this._package.contentNodeId = (e.target as UmbInputDocumentPickerElement).selectedIds[0])}"> + (this._package.mediaIds = (e.target as UmbInputMediaPickerElement).selectedIds)}"> = []; - public get selectedKeys(): Array { + public get selectedIds(): Array { return this._selectedIds; } - public set selectedKeys(ids: Array) { + public set selectedIds(ids: Array) { this._selectedIds = ids; super.value = ids.join(','); this._observePickedDocuments(); @@ -75,7 +75,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen @property() public set value(idsString: string) { if (idsString !== this._value) { - this.selectedKeys = idsString.split(/[ ,]+/); + this.selectedIds = idsString.split(/[ ,]+/); } } @@ -150,7 +150,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen } private _setSelection(newSelection: Array) { - this.selectedKeys = newSelection; + this.selectedIds = newSelection; this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index ef1b4b96d6..c8bd62c1e7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -28,12 +28,12 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl `, ]; - // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. + // TODO: do we need both selectedIds and value? If we just use value we follow the same pattern as native form controls. private _selectedIds: Array = []; - public get selectedKeys(): Array { + public get selectedIds(): Array { return this._selectedIds; } - public set selectedKeys(ids: Array) { + public set selectedIds(ids: Array) { this._selectedIds = ids; super.value = ids.join(','); this._observePickedDocuments(); @@ -42,7 +42,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl @property() public set value(idsString: string) { if (idsString !== this._value) { - this.selectedKeys = idsString.split(/[ ,]+/); + this.selectedIds = idsString.split(/[ ,]+/); } } @@ -80,7 +80,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_TYPE_PICKER_MODAL, { multiple: true, selection: [...this._selectedIds], @@ -105,7 +105,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl } private _setSelection(newSelection: Array) { - this.selectedKeys = newSelection; + this.selectedIds = newSelection; this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index 1a0960c72b..cbdcbe4a73 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -72,12 +72,12 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) @property({ type: String, attribute: 'min-message' }) maxMessage = 'This field exceeds the allowed amount of items'; - // TODO: do we need both selectedKeys and value? If we just use value we follow the same pattern as native form controls. + // TODO: do we need both selectedIds and value? If we just use value we follow the same pattern as native form controls. private _selectedIds: Array = []; - public get selectedKeys(): Array { + public get selectedIds(): Array { return this._selectedIds; } - public set selectedKeys(ids: Array) { + public set selectedIds(ids: Array) { this._selectedIds = ids; super.value = ids.join(','); this._observePickedMedias(); @@ -86,7 +86,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) @property() public set value(idsString: string) { if (idsString !== this._value) { - this.selectedKeys = idsString.split(/[ ,]+/); + this.selectedIds = idsString.split(/[ ,]+/); } } @@ -139,7 +139,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedKeys, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_MEDIA_PICKER_MODAL, { multiple: this.max === 1 ? false : true, selection: [...this._selectedIds], @@ -165,7 +165,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } private _setSelection(newSelection: Array) { - this.selectedKeys = newSelection; + this.selectedIds = newSelection; this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts index 4d2ab5e342..b161988d4d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/checkbox-list/property-editor-ui-checkbox-list.element.ts @@ -54,7 +54,7 @@ export class UmbPropertyEditorUICheckboxListElement extends UmbLitElement implem render() { return html``; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts index 5d44e40a4b..d2e02efa43 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element.ts @@ -32,7 +32,7 @@ export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement imple private _limitMax?: number; private _onChange(event: CustomEvent) { - this.value = (event.target as UmbInputDocumentPickerElement).selectedKeys; + this.value = (event.target as UmbInputDocumentPickerElement).selectedIds; this.dispatchEvent(new CustomEvent('property-value-change')); } @@ -41,7 +41,7 @@ export class UmbPropertyEditorUIContentPickerElement extends UmbLitElement imple return html` AddAdd Date: Tue, 4 Apr 2023 14:03:05 +0200 Subject: [PATCH 539/550] more changes --- .../repository/detail-repository.interface.ts | 2 +- .../repository/folder-repository.interface.ts | 2 +- .../libs/store/file-system-tree.store.ts | 4 +-- .../dashboard-redirect-management.element.ts | 2 +- .../document-blueprint.detail.store.ts | 12 +++---- .../sources/document-type.tree.server.data.ts | 8 ++--- .../sources/document.tree.server.data.ts | 6 ++-- .../documents/repository/sources/index.ts | 2 +- .../repository/media-type.repository.ts | 6 ++-- .../sources/media-type.detail.server.data.ts | 24 +++++++------- ...edia-type.details.server.data.interface.ts | 4 +-- .../sources/media-type.tree.server.data.ts | 8 ++--- .../sources/media.tree.server.data.ts | 4 +-- .../repository/member-group.repository.ts | 4 +-- .../member-group.detail.server.data.ts | 32 +++++++++---------- .../sources/member-group.tree.server.data.ts | 6 ++-- .../sources/member-type.detail.server.data.ts | 24 +++++++------- .../sources/member-type.tree.server.data.ts | 6 ++-- .../members/repository/sources/index.ts | 2 +- .../sources/member.tree.server.data.ts | 4 +-- .../workspace/member-workspace.context.ts | 4 +-- 21 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index b228dc0c30..25a3cd332b 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -19,7 +19,7 @@ export interface UmbDetailRepository { error?: ProblemDetailsModel; }>; - delete(key: string): Promise<{ + delete(id: string): Promise<{ error?: ProblemDetailsModel; }>; } diff --git a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts index 5e1a016fdb..3d9559bb2b 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/folder-repository.interface.ts @@ -29,7 +29,7 @@ export interface UmbFolderRepository { error?: ProblemDetailsModel; }>; - deleteFolder(key: string): Promise<{ + deleteFolder(id: string): Promise<{ error?: ProblemDetailsModel; }>; } diff --git a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts index 384ff4d883..8afa8ca62e 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts @@ -27,7 +27,7 @@ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore * @memberof UmbFileSystemTreeStore */ updateItem(path: string, data: Partial) { - this.#data.appendOne(data) + this.#data.appendOne(data); } /** @@ -56,7 +56,7 @@ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore } /** - * Returns an observable to observe the items with the given keys + * Returns an observable to observe the items with the given ids * @param {Array} paths * @return {*} * @memberof UmbFileSystemTreeStore diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts index 5f7fcff78e..8e7de5f464 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts @@ -293,7 +293,7 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement { Actions ${this._redirectData?.map((data) => { - return html` + return html` ${data.culture || '*'} ${data.originalUrl} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index 411f7d7768..f60b478a36 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -19,20 +19,20 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { } /** - * @description - Request a Data Type by key. The Data Type is added to the store and is returned as an Observable. - * @param {string} key + * @description - Request a Data Type by id. The Data Type is added to the store and is returned as an Observable. + * @param {string} id * @return {*} {(Observable)} * @memberof UmbDocumentBlueprintStore */ - getByKey(key: string) { + getById(id: string) { // TODO: use backend cli when available. - fetch(`/umbraco/management/api/v1/document-blueprint/details/${key}`) + fetch(`/umbraco/management/api/v1/document-blueprint/details/${id}`) .then((res) => res.json()) .then((data) => { this.#data.append(data); }); - return this.#data.getObservablePart((documents) => documents.find((document) => document.id === key)); + return this.#data.getObservablePart((documents) => documents.find((document) => document.id === id)); } getScaffold(entityType: string, parentId: string | null) { @@ -75,7 +75,7 @@ export class UmbDocumentBlueprintStore extends UmbStoreBase { // TODO: How can we avoid having this in both stores? /** * @description - Delete a Data Type. - * @param {string[]} keys + * @param {string[]} ids * @memberof UmbDocumentBlueprintStore * @return {*} {Promise} */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 7ea0b4bb81..7447fcad49 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -33,7 +33,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { this.#host, fetch('/umbraco/management/api/v1/document-type/move', { method: 'POST', - body: JSON.stringify({ keys: ids, destination }), + body: JSON.stringify({ ids: ids, destination }), headers: { 'Content-Type': 'application/json', }, @@ -60,14 +60,14 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof DocumentTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } @@ -80,7 +80,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server + * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} * @memberof DocumentTreeServerDataSource diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 73ab968e2a..dcd3ec9ffa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -60,7 +60,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof DocumentTreeServerDataSource @@ -80,8 +80,8 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof DocumentTreeServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts index a00ee540ff..8cbe1ec6d5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/index.ts @@ -3,5 +3,5 @@ import { UmbDataSource, DataSourceResponse } from '@umbraco-cms/backoffice/repos export interface UmbDocumentDataSource extends UmbDataSource { createScaffold(documentTypeKey: string): Promise>; - trash(key: string): Promise>; + trash(id: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 9d697ec22f..898e1ab966 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -60,7 +60,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { await this.#init; if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { data: undefined, error }; } @@ -111,10 +111,10 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { async requestDetails(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? if (!id) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } const { data, error } = await this.#detailSource.get(id); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts index f1e92f0202..701b0dcf21 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.detail.server.data.ts @@ -31,15 +31,15 @@ export class UmbMediaTypeDetailServerDataSource implements MediaTypeDetailDataSo } /** - * @description - Fetches a MediaType with the given key from the server - * @param {string} key + * @description - Fetches a MediaType with the given id from the server + * @param {string} id * @return {*} * @memberof UmbMediaTypeDetailServerDataSource */ - get(key: string) { - //return tryExecuteAndNotify(this.#host, MediaTypeResource.getMediaTypeByKey({ key })) as any; + get(id: string) { + //return tryExecuteAndNotify(this.#host, MediaTypeResource.getMediaTypeByKey({ id })) as any; // TODO: use backend cli when available. - return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/media-type/${key}`)) as any; + return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/media-type/${id}`)) as any; } /** @@ -50,11 +50,11 @@ export class UmbMediaTypeDetailServerDataSource implements MediaTypeDetailDataSo */ async update(mediaType: MediaTypeDetails) { if (!mediaType.id) { - const error: ProblemDetailsModel = { title: 'MediaType key is missing' }; + const error: ProblemDetailsModel = { title: 'MediaType id is missing' }; return { error }; } - const payload = { key: mediaType.id, requestBody: mediaType }; + const payload = { id: mediaType.id, requestBody: mediaType }; //return tryExecuteAndNotify(this.#host, MediaTypeResource.putMediaTypeByKey(payload)); // TODO: use backend cli when available. @@ -93,21 +93,21 @@ export class UmbMediaTypeDetailServerDataSource implements MediaTypeDetailDataSo /** * @description - Deletes a MediaType on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbMediaTypeDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - //return await tryExecuteAndNotify(this.#host, MediaTypeResource.deleteMediaTypeByKey({ key })); + //return await tryExecuteAndNotify(this.#host, MediaTypeResource.deleteMediaTypeByKey({ id })); // TODO: use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/media-type/${key}`, { + fetch(`/umbraco/management/api/v1/media-type/${id}`, { method: 'DELETE', }) ) as any; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts index e1a682c55e..7da7f1a9b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.details.server.data.interface.ts @@ -4,8 +4,8 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; // TODO => Use models when they exist export interface MediaTypeDetailDataSource { createScaffold(parentId: string): Promise>; - get(key: string): Promise>; + get(id: string): Promise>; insert(data: any): Promise; update(data: any): Promise; - delete(key: string): Promise; + delete(id: string): Promise; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index 5cfcd81ab2..c66dc1b224 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -31,14 +31,14 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof MediaTypeTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } @@ -51,8 +51,8 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MediaTypeTreeServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts index e88386baf2..096d2b2814 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts @@ -60,14 +60,14 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof MediaTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 9a463fa34f..e6b95a05b6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -97,10 +97,10 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep async requestById(id: string) { await this.#init; - // TODO: should we show a notification if the key is missing? + // TODO: should we show a notification if the id is missing? // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? if (!id) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; + const error: ProblemDetailsModel = { title: 'Id is missing' }; return { error }; } const { data, error } = await this.#detailSource.get(id); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts index 223f4b443a..11503e3873 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.detail.server.data.ts @@ -32,15 +32,15 @@ export class UmbMemberGroupDetailServerDataSource implements UmbDataSource} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MemberGroupTreeServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index 6a13f71f39..a5cb2f1c9e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -28,15 +28,15 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< } /** - * @description - Fetches a MemberType with the given key from the server - * @param {string} key + * @description - Fetches a MemberType with the given id from the server + * @param {string} id * @return {*} * @memberof UmbMemberTypeDetailServerDataSource */ - requestById(key: string) { - //return tryExecuteAndNotify(this.#host, MemberTypeResource.getMemberTypeByKey({ key })); + requestById(id: string) { + //return tryExecuteAndNotify(this.#host, MemberTypeResource.getMemberTypeByKey({ id })); // TODO => use backend cli when available. - return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/member-group/${key}`)) as any; + return tryExecuteAndNotify(this.#host, fetch(`/umbraco/management/api/v1/member-group/${id}`)) as any; } /** @@ -47,11 +47,11 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< */ async save(memberType: MemberTypeDetails) { if (!memberType.id) { - const error: ProblemDetailsModel = { title: 'MemberType key is missing' }; + const error: ProblemDetailsModel = { title: 'MemberType id is missing' }; return { error }; } - const payload = { key: memberType.id, requestBody: memberType }; + const payload = { id: memberType.id, requestBody: memberType }; //return tryExecuteAndNotify(this.#host, MemberTypeResource.putMemberTypeByKey(payload)); // TODO => use backend cli when available. @@ -94,21 +94,21 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< /** * @description - Deletes a MemberType on the server - * @param {string} key + * @param {string} id * @return {*} * @memberof UmbMemberTypeDetailServerDataSource */ - async delete(key: string) { - if (!key) { + async delete(id: string) { + if (!id) { const error: ProblemDetailsModel = { title: 'Key is missing' }; return { error }; } - //return await tryExecuteAndNotify(this.#host, MemberTypeResource.deleteMemberTypeByKey({ key })); + //return await tryExecuteAndNotify(this.#host, MemberTypeResource.deleteMemberTypeByKey({ id })); // TODO => use backend cli when available. return tryExecuteAndNotify( this.#host, - fetch(`/umbraco/management/api/v1/member-type/${key}`, { + fetch(`/umbraco/management/api/v1/member-type/${id}`, { method: 'DELETE', }) ) as any; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index a8e5ae1e6e..7ec6a36505 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -31,7 +31,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof MemberTypeTreeServerDataSource @@ -42,8 +42,8 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MemberTypeTreeServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts index c327035dfc..2b26859baf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/index.ts @@ -6,5 +6,5 @@ import type { export interface MemberTreeDataSource { getRootItems(): Promise>; - getItems(key: Array): Promise>; + getItems(id: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts index b61ee911bf..b386fb52e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts @@ -33,8 +33,8 @@ export class MemberTreeServerDataSource implements MemberTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof MemberTreeServerDataSource */ 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 3e9ca61b6a..3edd6f8b1e 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 @@ -28,8 +28,8 @@ export class UmbMemberWorkspaceContext console.log('save'); } - async load(key: string) { - console.log('load', key); + async load(id: string) { + console.log('load', id); } public destroy(): void { From 2844a9b600a4bbb394103a8abab59fa361162077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 14:04:13 +0200 Subject: [PATCH 540/550] entityKey to entityId --- .../workspace/document-workspace.context.ts | 4 ++-- .../workspace/media-type-workspace.context.ts | 4 ++-- .../media/workspace/media-workspace.context.ts | 4 ++-- .../workspace/member-group-workspace.context.ts | 4 ++-- .../workspace/member-type-workspace.context.ts | 4 ++-- .../workspace/workspace-package-builder.element.ts | 8 ++++---- .../workspace/workspace-package.element.ts | 6 +++--- .../created-packages-section-view.element.ts | 2 +- .../shared/collection/collection.context.ts | 14 +++++++------- .../components/code-editor/code-editor.stories.ts | 4 ++-- .../workspace-action-menu.element.ts | 8 ++++---- .../workspace-view-collection.element.ts | 6 +++--- .../workspace-context/entity-manager-controller.ts | 14 +++++++------- .../workspace/template-workspace.context.ts | 4 ++-- .../workspace/template-workspace.element.ts | 4 ++-- .../workspace/dictionary-workspace.context.ts | 4 ++-- .../workspace/user-group-workspace-edit.element.ts | 6 +++--- .../views/users/section-view-users.element.ts | 2 +- 18 files changed, 51 insertions(+), 51 deletions(-) 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 ff96898cb0..8e6816b0e9 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 @@ -59,8 +59,8 @@ export class UmbDocumentWorkspaceContext */ } - async load(entityKey: string) { - const { data } = await this.repository.requestById(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestById(entityId); if (!data) return undefined; this.setIsNew(false); 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 ace5dcc750..648c880015 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 @@ -38,8 +38,8 @@ export class UmbWorkspaceMediaTypeContext // TODO => Implement setPropertyValue } - async load(entityKey: string) { - const { data } = await this.repository.requestDetails(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestDetails(entityId); if (data) { this.#data.next(data); } 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 5bd0d9c6e4..cf60f25fc8 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 @@ -46,8 +46,8 @@ export class UmbMediaWorkspaceContext } } - async load(entityKey: string) { - const { data } = await this.repository.requestById(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestById(entityId); if (data) { this.setIsNew(false); this.#data.next(data); 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 abd0d7d9ba..1687c7e290 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 @@ -40,8 +40,8 @@ export class UmbWorkspaceMemberGroupContext return; } - async load(entityKey: string) { - const { data } = await this.repository.requestById(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestById(entityId); if (data) { this.#data.next(data); } 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 d78226c9b3..a7a0fcc644 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 @@ -18,8 +18,8 @@ export class UmbMemberTypeWorkspaceContext super(host, new UmbMemberTypeRepository(host)); } - async load(entityKey: string) { - const { data } = await this.repository.requestById(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestById(entityId); if (data) { this.setIsNew(false); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts index 1f3e09f436..791dfa1758 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-builder/workspace/workspace-package-builder.element.ts @@ -38,7 +38,7 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { ]; @property() - entityKey?: string; + entityId?: string; @state() private _package: PackageDefinitionResponseModel = {}; @@ -57,12 +57,12 @@ export class UmbWorkspacePackageBuilderElement extends UmbLitElement { connectedCallback(): void { super.connectedCallback(); - if (this.entityKey) this.#getPackageCreated(); + if (this.entityId) this.#getPackageCreated(); } async #getPackageCreated() { - if (!this.entityKey) return; - const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedById({ id: this.entityKey })); + if (!this.entityId) return; + const { data } = await tryExecuteAndNotify(this, PackageResource.getPackageCreatedById({ id: this.entityId })); if (!data) return; this._package = data as PackageDefinitionResponseModel; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts index 6ea49d35c9..8ab92ec194 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-repo/workspace/workspace-package.element.ts @@ -15,21 +15,21 @@ export class UmbWorkspacePackageElement extends LitElement { ]; @property() - entityKey?: string; + entityId?: string; @state() _package?: any; connectedCallback(): void { super.connectedCallback(); - if (this.entityKey) this._getPackageData(); + if (this.entityId) this._getPackageData(); } private _getPackageData() { //TODO this._package = { - key: this.entityKey, + id: this.entityId, name: 'A created package', }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts index 8e0b4e8797..75414bd547 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts @@ -37,7 +37,7 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.id; + (el as any).entityId = info.match.params.id; }); }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index c5f0c4baf5..00c214e16f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -10,7 +10,7 @@ import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; export class UmbCollectionContext { private _host: UmbControllerHostElement; private _entityType: string | null; - private _entityKey: string | null; + private _entityId: string | null; #repository?: UmbTreeRepository; @@ -32,13 +32,13 @@ export class UmbCollectionContext { @@ -88,10 +88,10 @@ export class UmbCollectionContext { if (nodes) { this.#data.next(nodes); @@ -114,9 +114,9 @@ export class UmbCollectionContext, (nodes) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts index 7c334e6c6c..e8d7805abe 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-editor/code-editor.stories.ts @@ -137,8 +137,8 @@ const codeSnippets: Record = { this.#data.next({ ...this.#data.value, $type: this.#data.value?.$type || '', content: value }); } - async load(entityKey: string) { - const { data } = await this.repository.requestByKey(entityKey); + async load(entityId: string) { + const { data } = await this.repository.requestByKey(entityId); if (data) { this.setIsNew(false); this.#data.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts index 1c02dd2a20..a3838dac24 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-action-menu/workspace-action-menu.element.ts @@ -37,7 +37,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { private _workspaceContext?: typeof UMB_ENTITY_WORKSPACE_CONTEXT.TYPE; @state() - _entityKey?: string; + _entityId?: string; @state() _entityType?: string; @@ -53,7 +53,7 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { private _observeInfo() { if (!this._workspaceContext) return; - this._entityKey = this._workspaceContext.getEntityId(); + this._entityId = this._workspaceContext.getEntityId(); this._entityType = this._workspaceContext.getEntityType(); } @@ -75,14 +75,14 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { } #renderActionsMenu() { - return this._entityKey + return this._entityId ? html`
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts index 7a491c0aee..87a3a06857 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element.ts @@ -42,16 +42,16 @@ export class UmbWorkspaceViewCollectionElement extends UmbLitElement { } protected _provideWorkspace() { - const entityKey = this._workspaceContext?.getEntityId(); + const entityId = this._workspaceContext?.getEntityId(); const entityType = this._workspaceContext?.getEntityType(); - if (entityKey != null && entityType != null) { + if (entityId != null && entityType != null) { const manifestMeta = this.manifest.meta; this._collectionContext = new UmbCollectionContext( this, entityType, - entityKey, + entityId, manifestMeta.storeAlias, manifestMeta.repositoryAlias ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index a4b3b363a1..9704ce80c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -27,7 +27,7 @@ export class UmbEntityWorkspaceManager< #isNew = false; private _entityType; - private _entityKey!: string; + private _entityId!: string; private _createAtParentKey?: string | null; @@ -47,7 +47,7 @@ export class UmbEntityWorkspaceManager< } private _observeStore() { - if (!this._store || !this._entityKey) { + if (!this._store || !this._entityId) { return; } @@ -58,7 +58,7 @@ export class UmbEntityWorkspaceManager< this._storeSubscription?.destroy(); this._storeSubscription = new UmbObserverController( this._host, - this._store.getByKey(this._entityKey), + this._store.getByKey(this._entityId), (content) => { if (!content) return; // TODO: Handle nicely if there is no content data. this.state.next(content as any); @@ -71,7 +71,7 @@ export class UmbEntityWorkspaceManager< return this._entityType; }; getEntityKey = (): string => { - return this._entityKey; + return this._entityId; }; getStore = () => { @@ -82,15 +82,15 @@ export class UmbEntityWorkspaceManager< return this.state.getValue(); }; - load = (entityKey: string) => { + load = (entityId: string) => { this.#isNew = false; - this._entityKey = entityKey; + this._entityId = entityId; this._observeStore(); }; create = (parentId: string | null) => { this.#isNew = true; - this._entityKey = uuidv4(); + this._entityId = uuidv4(); this._createAtParentKey = parentId; }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index efb54d7345..d4f7541846 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -34,8 +34,8 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { // TODO: handle if there is no users. if (!this._userKeys && users.length > 0) { - const entityKey = this.#workspaceContext?.getEntityId(); - if (!entityKey) return; - this._userKeys = users.filter((user) => user.userGroups.includes(entityKey)).map((user) => user.id); + const entityId = this.#workspaceContext?.getEntityId(); + if (!entityId) return; + this._userKeys = users.filter((user) => user.userGroups.includes(entityId)).map((user) => user.id); //this._updateProperty('users', this._userKeys); // TODO: make a method on the UmbWorkspaceUserGroupContext: //this._workspaceContext.setUsers(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index 6f65167fd5..3523c9c190 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts @@ -79,7 +79,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement { component: () => createExtensionElement(workspace), setup: (component: Promise, info: IRoutingInfo) => { component.then((el: HTMLElement) => { - (el as any).entityKey = info.match.params.id; + (el as any).entityId = info.match.params.id; }); }, }); From c3fbe9b4850f542c356023c4273506e485e72caa Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Tue, 4 Apr 2023 13:08:41 +0100 Subject: [PATCH 541/550] Missing .js extension from import on stories for if-defined --- .../backoffice/media/media/workspace/media-workspace.stories.ts | 2 +- .../data-types/workspace/data-type-workspace.stories.ts | 2 +- .../relation-types/workspace/relation-type-workspace.stories.ts | 2 +- .../dictionary/workspace/dictionary-workspace.stories.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts index c294b9dc31..162440cfe3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.stories.ts @@ -1,7 +1,7 @@ import './media-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { ifDefined } from 'lit/directives/if-defined'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { data as mediaNodes } from '../../../../core/mocks/data/media.data'; import type { UmbMediaWorkspaceElement } from './media-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts index f97b00867b..61c3a003d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.stories.ts @@ -3,7 +3,7 @@ import './data-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { ifDefined } from 'lit/directives/if-defined'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { data } from '../../../../core/mocks/data/data-type.data'; import type { UmbDataTypeWorkspaceElement } from './data-type-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts index edeb4ef6db..34a177e3c3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.stories.ts @@ -3,7 +3,7 @@ import './relation-type-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { ifDefined } from 'lit/directives/if-defined'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { data } from '../../../../core/mocks/data/relation-type.data'; import type { UmbRelationTypeWorkspaceElement } from './relation-type-workspace.element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts index 48b78c2954..b38f37a57d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.stories.ts @@ -1,7 +1,7 @@ import './dictionary-workspace.element'; import { Meta, Story } from '@storybook/web-components'; import { html } from 'lit'; -import { ifDefined } from 'lit/directives/if-defined'; +import { ifDefined } from 'lit/directives/if-defined.js'; import { data } from '../../../../core/mocks/data/dictionary.data'; import type { UmbWorkspaceDictionaryElement } from './dictionary-workspace.element'; From 77ac938b771cf496d22f13a424e5d49e45e5f596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 4 Apr 2023 14:13:03 +0200 Subject: [PATCH 542/550] a few more corrections of key to id --- ...t-type-workspace-view-templates.element.ts | 10 ++-- .../sources/data-type-folder.server.data.ts | 6 +- .../sources/data-type.server.data.ts | 4 +- .../sources/data-type.tree.server.data.ts | 6 +- .../repository/sources/index.ts | 2 +- .../sources/relation-type.tree.server.data.ts | 2 +- .../shared/collection/collection.context.ts | 8 +-- .../input-document-picker.element.ts | 2 +- .../input-document-type-picker.element.ts | 2 +- .../input-language-picker.element.ts | 12 ++-- .../input-list-base/input-list-base.ts | 4 +- .../input-media-picker.element.ts | 2 +- .../input-number-range.element.ts | 58 +++++++++---------- .../shared/components/tree/tree.context.ts | 13 ++--- .../templates/repository/sources/index.ts | 2 +- .../sources/dictionary.detail.server.data.ts | 2 +- ...ictionary.details.server.data.interface.ts | 6 +- .../sources/dictionary.tree.server.data.ts | 4 +- .../grid/workspace-view-users-grid.element.ts | 12 ++-- .../src/core/mocks/data/entity.data.ts | 4 +- .../src/core/mocks/data/languages.data.ts | 4 +- .../core/mocks/domains/media-type.handlers.ts | 2 +- .../mocks/domains/member-group.handlers.ts | 2 +- .../mocks/domains/member-type.handlers.ts | 2 +- .../src/core/mocks/domains/member.handlers.ts | 2 +- .../core/mocks/domains/tree-media.handlers.ts | 2 +- 26 files changed, 86 insertions(+), 89 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts index 02f97109c3..8563844b9f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.ts @@ -49,13 +49,13 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement if (!this._workspaceContext) return; } - async #changeDefaultKey(e: CustomEvent) { - // save new default key - console.log('workspace: default template key', e); + async #changeDefaultId(e: CustomEvent) { + // save new default id + console.log('workspace: default template id', e); } #changeAllowedKeys(e: CustomEvent) { - // save new allowed keys + // save new allowed ids console.log('workspace: allowed templates changed', e); } @@ -67,7 +67,7 @@ export class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement
    diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts index 880ab05097..dffb153689 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type-folder.server.data.ts @@ -28,7 +28,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { } /** - * Creates a Data Type folder with the given key from the server + * Creates a Data Type folder with the given id from the server * @param {string} parentId * @return {*} * @memberof UmbDataTypeFolderServerDataSource @@ -45,7 +45,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { } /** - * Fetches a Data Type folder with the given key from the server + * Fetches a Data Type folder with the given id from the server * @param {string} id * @return {*} * @memberof UmbDataTypeFolderServerDataSource @@ -95,7 +95,7 @@ export class UmbDataTypeFolderServerDataSource implements UmbFolderDataSource { } /** - * Deletes a Data Type folder with the given key on the server + * Deletes a Data Type folder with the given id on the server * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 2968de03b3..9ef4e96de1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -32,7 +32,7 @@ export class UmbDataTypeServerDataSource } /** - * Fetches a Data Type with the given key from the server + * Fetches a Data Type with the given id from the server * @param {string} id * @return {*} * @memberof UmbDataTypeServerDataSource @@ -71,7 +71,7 @@ export class UmbDataTypeServerDataSource */ async insert(dataType: CreateDataTypeRequestModel & { id: string }) { if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.id) throw new Error('Data Type key is missing'); + if (!dataType.id) throw new Error('Data Type id is missing'); tryExecuteAndNotify( this.#host, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index 1930d90f4c..22364ce3da 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -31,7 +31,7 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof UmbDataTypeTreeServerDataSource @@ -48,8 +48,8 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the items for the given keys from the server - * @param {Array} keys + * Fetches the items for the given ids from the server + * @param {Array} ids * @return {*} * @memberof UmbDataTypeTreeServerDataSource */ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index 5080a513de..e00c22f97b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -3,5 +3,5 @@ import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@ export interface RelationTypeTreeDataSource { getRootItems(): Promise>; - getItems(key: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index bb9b460799..6afc19326f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -65,7 +65,7 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou } /** - * Fetches the items for the given keys from the server + * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} * @memberof RelationTypeTreeServerDataSource diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 00c214e16f..9668a51d68 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -156,12 +156,12 @@ export class UmbCollectionContext k !== key); + public deselect(id: string) { + this.#selection.filter((k) => k !== id); } // TODO: how can we make sure to call this. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts index 7108bde02b..d87623d464 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-picker/input-document-picker.element.ts @@ -125,7 +125,7 @@ export class UmbInputDocumentPickerElement extends FormControlMixin(UmbLitElemen } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of ids) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_PICKER_MODAL, { multiple: this.max === 1 ? false : true, selection: [...this._selectedIds], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts index c8bd62c1e7..c3f844b898 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-document-type-picker/input-document-type-picker.element.ts @@ -80,7 +80,7 @@ export class UmbInputDocumentTypePickerElement extends FormControlMixin(UmbLitEl } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of ids) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_DOCUMENT_TYPE_PICKER_MODAL, { multiple: true, selection: [...this._selectedIds], 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 263d9c76f0..df04084af4 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 @@ -68,16 +68,16 @@ export class UmbInputLanguagePickerElement extends FormControlMixin(UmbLitElemen public get selectedIsoCodes(): Array { return this._selectedIsoCodes; } - public set selectedIsoCodes(keys: Array) { - this._selectedIsoCodes = keys; - super.value = keys.join(','); + public set selectedIsoCodes(isoCodes: Array) { + this._selectedIsoCodes = isoCodes; + super.value = isoCodes.join(','); this._observePickedItems(); } @property() - public set value(keysString: string) { - if (keysString !== this._value) { - this.selectedIsoCodes = keysString.split(/[ ,]+/); + public set value(isoCodesString: string) { + if (isoCodesString !== this._value) { + this.selectedIsoCodes = isoCodesString.split(/[ ,]+/); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts index 37e134229b..2128b126e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-list-base/input-list-base.ts @@ -51,8 +51,8 @@ export class UmbInputListBaseElement extends UmbLitElement { }); } - protected removeFromSelection(key: string) { - this.value = this.value.filter((k) => k !== key); + protected removeFromSelection(id: string) { + this.value = this.value.filter((k) => k !== id); this.selectionUpdated(); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts index cbdcbe4a73..f324ca44be 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-media-picker/input-media-picker.element.ts @@ -139,7 +139,7 @@ export class UmbInputMediaPickerElement extends FormControlMixin(UmbLitElement) } private _openPicker() { - // We send a shallow copy(good enough as its just an array of keys) of our this._selectedIds, as we don't want the modal to manipulate our data: + // We send a shallow copy(good enough as its just an array of ids) of our this._selectedIds, as we don't want the modal to manipulate our data: const modalHandler = this._modalContext?.open(UMB_MEDIA_PICKER_MODAL, { multiple: this.max === 1 ? false : true, selection: [...this._selectedIds], diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts index 46910eb48f..20e021b98c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/input-number-range/input-number-range.element.ts @@ -5,24 +5,19 @@ import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; function getNumberOrUndefined(value: string) { - const num = parseInt(value, 10); - return isNaN(num) ? undefined : num; + const num = parseInt(value, 10); + return isNaN(num) ? undefined : num; } @customElement('umb-input-number-range') export class UmbInputNumberRangeElement extends FormControlMixin(UmbLitElement) { - static styles = [ - UUITextStyles, - css` + static styles = [UUITextStyles, css``]; - `, - ]; + @property({ type: String, attribute: 'min-label' }) + minLabel = 'Low value'; - @property({type: String, attribute:'min-label'}) - minLabel = "Low value" - - @property({type: String, attribute:'max-label'}) - maxLabel = "High value" + @property({ type: String, attribute: 'max-label' }) + maxLabel = 'High value'; @state() private _minValue?: number; @@ -30,8 +25,8 @@ export class UmbInputNumberRangeElement extends FormControlMixin(UmbLitElement) public get minValue() { return this._minValue; } - public set minValue(keys: number | undefined) { - this._minValue = keys; + public set minValue(value: number | undefined) { + this._minValue = value; this.updateValue(); } @@ -41,22 +36,22 @@ export class UmbInputNumberRangeElement extends FormControlMixin(UmbLitElement) public get maxValue() { return this._maxValue; } - public set maxValue(keys: number | undefined) { - this._maxValue = keys; + public set maxValue(value: number | undefined) { + this._maxValue = value; this.updateValue(); } private updateValue() { - const newValue = (this._minValue || this._maxValue) ? (this._minValue || '')+','+(this._maxValue || '') : ''; - if(super.value !== newValue) { + const newValue = this._minValue || this._maxValue ? (this._minValue || '') + ',' + (this._maxValue || '') : ''; + if (super.value !== newValue) { super.value = newValue; } } @property() - public set value(keysString: string) { - if(keysString !== this._value) { - const splittedValue = keysString.split(/[ ,]+/); + public set value(valueString: string) { + if (valueString !== this._value) { + const splittedValue = valueString.split(/[ ,]+/); this.minValue = getNumberOrUndefined(splittedValue[0]); this.maxValue = getNumberOrUndefined(splittedValue[1]); } @@ -66,26 +61,29 @@ export class UmbInputNumberRangeElement extends FormControlMixin(UmbLitElement) super(); } - protected getFormElement() { - return this; - } + protected getFormElement() { + return this; + } - private _onMinInput(e:InputEvent) { + private _onMinInput(e: InputEvent) { this.minValue = Number((e.target as HTMLInputElement).value); this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); } - private _onMaxInput(e:InputEvent) { + private _onMaxInput(e: InputEvent) { this.maxValue = Number((e.target as HTMLInputElement).value); this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true })); } - - render() { - return html` – `; + return html` + – + `; } - } export default UmbInputNumberRangeElement; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts index 29608b4f11..89020e9acd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree.context.ts @@ -3,7 +3,6 @@ import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import type { ManifestTree } from '@umbraco-cms/backoffice/extensions-registry'; import { DeepState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { createExtensionClass, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; export interface UmbTreeContext { @@ -12,7 +11,7 @@ export interface UmbTreeContext { readonly selection: Observable>; setSelectable(value: boolean): void; setSelection(value: Array): void; - select(key: string): void; + select(id: string): void; } export class UmbTreeContextBase implements UmbTreeContext { @@ -75,17 +74,17 @@ export class UmbTreeContextBase implements UmbTreeContext { this.#selection.next(value); } - public select(key: string) { + public select(id: string) { const oldSelection = this.#selection.getValue(); - if (oldSelection.indexOf(key) !== -1) return; + if (oldSelection.indexOf(id) !== -1) return; - const selection = [...oldSelection, key]; + const selection = [...oldSelection, id]; this.#selection.next(selection); } - public deselect(key: string) { + public deselect(id: string) { const selection = this.#selection.getValue(); - this.#selection.next(selection.filter((x) => x !== key)); + this.#selection.next(selection.filter((x) => x !== id)); } public async requestRootItems() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts index d5365167d7..c93ced1dd9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts @@ -7,5 +7,5 @@ import type { export interface TemplateTreeDataSource { getRootItems(): Promise>; getChildrenOf(parentId: string): Promise>; - getItems(key: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 9a0de80937..4de279d9a0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -66,7 +66,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData */ async update(dictionary: DictionaryDetails) { if (!dictionary.id) { - const error: ProblemDetailsModel = { title: 'Dictionary key is missing' }; + const error: ProblemDetailsModel = { title: 'Dictionary id is missing' }; return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts index fba60eaeaf..269a4610b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts @@ -10,11 +10,11 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface DictionaryDetailDataSource { createScaffold(parentId: string): Promise>; list(skip?: number, take?: number): Promise>; - get(key: string): Promise>; + get(id: string): Promise>; insert(data: DictionaryDetails): Promise; update(dictionary: DictionaryItemResponseModel): Promise; - delete(key: string): Promise; - export(key: string, includeChildren: boolean): Promise>; + delete(id: string): Promise; + export(id: string, includeChildren: boolean): Promise>; import(fileName: string, parentId?: string): Promise>; upload(formData: ImportDictionaryRequestModel): Promise>; // TODO - temp only diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index c2a2c5ca3e..9113af0673 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -31,14 +31,14 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { } /** - * Fetches the children of a given parent key from the server + * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} * @memberof DictionaryTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent key is missing' }; + const error: ProblemDetailsModel = { title: 'Parent id is missing' }; return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts index 3ed1b5d986..0cdb0edede 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/list-view-layouts/grid/workspace-view-users-grid.element.ts @@ -85,13 +85,13 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { this.observe(this._usersContext.selection, (selection) => (this._selection = selection)); } - private _isSelected(key: string) { - return this._selection.includes(key); + private _isSelected(id: string) { + return this._selection.includes(id); } //TODO How should we handle url stuff? - private _handleOpenCard(key: string) { - history.pushState(null, '', 'section/users/view/users/user/' + key); //TODO Change to a tag with href and make dynamic + private _handleOpenCard(id: string) { + history.pushState(null, '', 'section/users/view/users/user/' + id); //TODO Change to a tag with href and make dynamic } private _selectRowHandler(user: UserEntity) { @@ -104,8 +104,8 @@ export class UmbWorkspaceViewUsersGridElement extends UmbLitElement { private _getUserGroupNames(ids: Array) { return ids - .map((key: string) => { - return this._userGroups.find((x) => x.id === key)?.name; + .map((id: string) => { + return this._userGroups.find((x) => x.id === id)?.name; }) .join(', '); } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index c0fb1ac135..9237f22a99 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -49,8 +49,8 @@ export class UmbEntityData extends UmbData { trash(ids: Array) { const trashedItems: Array = []; - ids.forEach((key) => { - const item = this.getById(key); + ids.forEach((id) => { + const item = this.getById(id); if (!item) return; // TODO: how do we handle trashed items? diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts index c43cc33406..142e8b426d 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/languages.data.ts @@ -12,8 +12,8 @@ class UmbLanguagesData extends UmbData { return this.data.slice(skip, take); } - getByKey(key: string) { - return this.data.find((item) => item.isoCode === key); + getByKey(isoCode: string) { + return this.data.find((item) => item.isoCode === isoCode); } insert(language: LanguageResponseModel) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts index 59e3c212c9..c7f6cfdc13 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/media-type.handlers.ts @@ -17,7 +17,7 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media-type/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('key'); + const ids = req.url.searchParams.getAll('id'); if (!ids) return; const items = umbMediaTypeData.getTreeItem(ids); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts index db4ce18195..a438855cdb 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-group.handlers.ts @@ -9,7 +9,7 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-group/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('key'); + const ids = req.url.searchParams.getAll('id'); if (!ids) return; const items = umbMemberGroupData.getTreeItem(ids); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts index 694a7f9bef..4905f5fc1e 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member-type.handlers.ts @@ -9,7 +9,7 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member-type/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('key'); + const ids = req.url.searchParams.getAll('id'); if (!ids) return; const items = umbMemberTypeData.getTreeItem(ids); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts index aa4d404356..b3a45839ae 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/member.handlers.ts @@ -9,7 +9,7 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/member/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('key'); + const ids = req.url.searchParams.getAll('id'); if (!ids) return; const items = umbMemberData.getTreeItem(ids); diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts index 3a0b3b4e29..666bd348ed 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/tree-media.handlers.ts @@ -16,7 +16,7 @@ export const handlers = [ }), rest.get('/umbraco/management/api/v1/tree/media/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('key'); + const ids = req.url.searchParams.getAll('id'); if (!ids) return; const items = umbMediaData.getTreeItem(ids); From 630b727a02085bc44b9012229e86ab8d351ad2df Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:47:29 +0200 Subject: [PATCH 543/550] upgrade router-slot to 2.0.0 --- .../create-extension-element.function.ts | 3 ++- .../libs/modal/modal-route-registration.ts | 2 +- .../libs/router/index.ts | 2 ++ .../libs/router/route.context.ts | 9 ++++---- .../libs/router/route.interface.ts | 4 +--- src/Umbraco.Web.UI.Client/package-lock.json | 12 +++++----- src/Umbraco.Web.UI.Client/package.json | 2 +- .../router-slot-1.6.1.tgz | Bin 26239 -> 0 bytes .../router-slot-2.0.0.tgz | Bin 0 -> 26528 bytes src/Umbraco.Web.UI.Client/src/app.ts | 7 +++--- .../document-type-workspace.element.ts | 6 ++--- ...cument-type-workspace-view-edit.element.ts | 16 +++++++------ .../document-workspace-editor.element.ts | 8 +++---- .../workspace/document-workspace.element.ts | 6 ++--- .../document-workspace-view-edit.element.ts | 9 ++++---- .../workspace/media-type-workspace.element.ts | 6 ++--- .../workspace/media-workspace.element.ts | 4 ++-- .../member-group-workspace.element.ts | 6 ++--- .../member-type-workspace.element.ts | 6 ++--- .../workspace/member-workspace.element.ts | 6 ++--- .../created-packages-section-view.element.ts | 12 +++++----- .../dashboard-examine-management.element.ts | 7 +++--- .../dashboard-health-check.element.ts | 4 ++-- ...health-check-group-box-overview.element.ts | 2 +- .../workspace/data-type-workspace.element.ts | 6 ++--- .../language/language-workspace.element.ts | 8 +++---- .../log-viewer-date-range-selector.element.ts | 1 - .../logviewer-root-workspace.element.ts | 13 ++++------- .../relation-type-workspace.element.ts | 7 +++--- .../shared/collection/collection.element.ts | 5 +++-- .../backoffice-main.element.ts | 11 +++++---- .../section-views/section-views.element.ts | 7 +++--- .../components/section/section.element.ts | 12 +++++----- .../workspace-layout.element.ts | 21 ++++++++++-------- ...editor-ui-block-grid-inner-test.element.ts | 8 +++---- .../property-editor-ui-block-grid.element.ts | 8 +++---- .../workspace/stylesheet-workspace.element.ts | 6 ++--- .../workspace/dictionary-workspace.element.ts | 6 ++--- .../workspace/user-group-workspace.element.ts | 6 ++--- .../views/users/section-view-users.element.ts | 12 +++++----- .../workspace-view-users-overview.element.ts | 2 +- .../users/workspace/user-workspace.element.ts | 6 ++--- .../src/core/router/index.ts | 1 - .../src/core/router/router-slot.element.ts | 10 ++++----- 44 files changed, 149 insertions(+), 146 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz create mode 100644 src/Umbraco.Web.UI.Client/router-slot-2.0.0.tgz diff --git a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts index 4da597bcb4..ccb92df877 100644 --- a/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/extensions-api/create-extension-element.function.ts @@ -3,8 +3,9 @@ import { isManifestElementNameType } from './is-manifest-element-name-type.funct import { loadExtension } from './load-extension.function'; import type { HTMLElementConstructor } from '@umbraco-cms/backoffice/models'; import type { ManifestElement } from '@umbraco-cms/backoffice/extensions-registry'; +import type { PageComponent } from '@umbraco-cms/backoffice/router'; -export async function createExtensionElement(manifest: ManifestElement): Promise { +export async function createExtensionElement(manifest: ManifestElement): Promise { //TODO: Write tests for these extension options: const js = await loadExtension(manifest); diff --git a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts index 095da5f546..3c7f7e7557 100644 --- a/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts +++ b/src/Umbraco.Web.UI.Client/libs/modal/modal-route-registration.ts @@ -1,8 +1,8 @@ -import type { Params } from 'router-slot'; import { v4 as uuidv4 } from 'uuid'; import { UmbModalHandler } from './modal-handler'; import { UmbModalConfig, UmbModalContext } from './modal.context'; import { UmbModalToken } from './token/modal-token'; +import type { Params } from '@umbraco-cms/backoffice/router'; export type UmbModalRouteBuilder = (params: { [key: string]: string | number }) => string; diff --git a/src/Umbraco.Web.UI.Client/libs/router/index.ts b/src/Umbraco.Web.UI.Client/libs/router/index.ts index 5a49b1769d..537b3d396d 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/index.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/index.ts @@ -1,3 +1,5 @@ +export type * from 'router-slot/model'; +export * from 'router-slot/util'; export * from './route-location.interface'; export * from './route.context'; export * from './route.interface'; diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts index da5364d1df..ee3ffed616 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.context.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.context.ts @@ -1,11 +1,12 @@ -import type { IRoutingInfo, ISlashOptions } from 'router-slot'; -import { UmbRoute } from './route.interface'; +// eslint-disable-next-line local-rules/no-external-imports +import type { IRoutingInfo, ISlashOptions } from 'router-slot/model'; +import type { UmbRoute } from './route.interface'; import { UmbContextConsumerController, UmbContextProviderController, UmbContextToken, } from '@umbraco-cms/backoffice/context-api'; -import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UMB_MODAL_CONTEXT_TOKEN, UmbModalRouteRegistration } from '@umbraco-cms/backoffice/modal'; const EmptyDiv = document.createElement('div'); @@ -58,7 +59,7 @@ export class UmbRouteContext { return { path: this.#getModalRoutePath(modalRegistration), component: EmptyDiv, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { if (!this.#modalContext) return; const modalHandler = modalRegistration.routeSetup(this.#modalContext, info.match.params); if (modalHandler) { diff --git a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts index b76705bd13..8c7f94ac63 100644 --- a/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/router/route.interface.ts @@ -1,3 +1 @@ -import type { IRoute } from 'router-slot/model'; - -export type UmbRoute = IRoute; +export type { IRoute as UmbRoute } from 'router-slot/model'; diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index b01c305fa1..f257dae220 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -15,7 +15,7 @@ "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", - "router-slot": "file:router-slot-1.6.1.tgz", + "router-slot": "file:router-slot-2.0.0.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" }, @@ -16114,9 +16114,9 @@ "dev": true }, "node_modules/router-slot": { - "version": "1.6.1", - "resolved": "file:router-slot-1.6.1.tgz", - "integrity": "sha512-lrqzUL9wfSQR7L9rFvRsq/I+BGo2bw0Hn45eZ+qhrjPFv2gn+LRz2TaWa6CVqkiXhdWMrUEmEyD8nzl4cqV0Fw==", + "version": "2.0.0", + "resolved": "file:router-slot-2.0.0.tgz", + "integrity": "sha512-J2E+sDJR7Q/S761Q6vXVCTWFN1kKidX3fparKoipm/NaX9XEdwmCSOEqYyUHbnIyDDo5O5PMhsH8EazLmCQJXw==", "license": "MIT" }, "node_modules/run-async": { @@ -30376,8 +30376,8 @@ } }, "router-slot": { - "version": "file:router-slot-1.6.1.tgz", - "integrity": "sha512-lrqzUL9wfSQR7L9rFvRsq/I+BGo2bw0Hn45eZ+qhrjPFv2gn+LRz2TaWa6CVqkiXhdWMrUEmEyD8nzl4cqV0Fw==" + "version": "file:router-slot-2.0.0.tgz", + "integrity": "sha512-J2E+sDJR7Q/S761Q6vXVCTWFN1kKidX3fparKoipm/NaX9XEdwmCSOEqYyUHbnIyDDo5O5PMhsH8EazLmCQJXw==" }, "run-async": { "version": "2.4.1", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 2a76669d0e..46d864b4a3 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -66,7 +66,7 @@ "lit": "^2.7.0", "lodash-es": "4.17.21", "monaco-editor": "^0.36.1", - "router-slot": "file:router-slot-1.6.1.tgz", + "router-slot": "file:router-slot-2.0.0.tgz", "rxjs": "^7.8.0", "uuid": "^9.0.0" }, diff --git a/src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz b/src/Umbraco.Web.UI.Client/router-slot-1.6.1.tgz deleted file mode 100644 index a5285852afc8ea28d28f97849e205896f773eece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26239 zcmV)2K+L}%iwFP!00002|LwioavNE;Aa-7x5$7MW&^6V78U$~;Op&70APG@)>sBOH zni?Iom_R1UloCjEW`Yz;#Roq+!eM)291idCRvyfm{S0oq!(WI#hw?9pb0wkm%C&pP1l49O^x)XH=4lQ{_>0Wjea;4 znU*!s_({Wjl8y{smo|pGGO)NVyfZ(Zgx+zQ4C^rC0XHRPi0LF;x9cx@hYBSaF1>bT=_hG)0yCE|q`@Rjaa`kM;Nwc| zlmW>K15o@;uQI86ochDCqMo1~Bw;rC15(nNbSKZ#s6WX=?{(nk{vs^JJWLm}ILY5^ zHi9Vg`*9dFoay`q2dRUsEze#>u*x*P+?^Iourq6Fu4P$y-@rm>G`#P=^QvCF&BFM& zQ39fhBAQv4ziu$92Y_kg4J<9FsnNaCve^%ZiHwF!hh8<*M>RV%hZg-JJr@=ek+@k* z_;UpF;Vh^ZDH9KZ2*P835(C2sVM3xL)#bv@n2YUjiDt`zu?-9IB(%BSH~O_a=!_@X z=|S%2VH0Vt4FldL`~=b^{JmWGb@~5Td=FMR&jZ^zGhG@7dwrqrKif6kb|yzWxgoee=iG(n+EC{_~fIz5TZbPo5vXJ?!qj zeb#;2L--cUE4HxvxQ);-+& zvG?}Ry`P}`(TI5eQK808?@{;VlS8cW`0Z1yhFAgpA4eYmp?~<>{fuq>pV(P;-TMF9 z%Ds~Qzp}h~L;u(DiH5YyKTf5iOBT0{PDkVfta&jUcA^X<*5EWmwLgdgZ@_YoD3*0l z)bPDOjeSsiSh=-+f85*0f|np>b3ckJZGk|Vppq zy>CBaGnYqg?`V+3NxJU+e)Zqp4a4Ol-4WgDr5WLF5LjcYZO$fW!NVj4D-KjSd@WWO zX!xQg;$qVy356zLF7~qlsLA29)s|n3?b%TcT91-3g3Kys3=B?fYs%6?fNc$@t*Wb$ zW8r~?GLRSDH1#h!QAU58__PJqApQk=?lt~>!-GT>I$&k@{K086*G6I4Zj z@}BzRF*-|p?I%?HAydv6E{fW?H~NkZP0M7Py(6?XyjLge_S_nNrL>xMSHLH_eE zr42aB!J9X2sgQ=_*dK(Zjy#xA4Y<|0p9b@`a+1tf5=QG)=#9cKz|LE~uW>S_k}!yI zl;`j?h>nj#bUeiu-uY=b@**6ZVW`JcG&ZiLG&aJf?~^|j@DZrg{u{0QsbRHUyQ~wT zf0cZ=I6Z?TP4Ssb9?n}}bSuKih9Lc&<`@>2FfFD`JBHCO-Q;Ux)VWL_BB-dM>$9Hay{{9-4rM z#<;0ZVIiI4==CRg4)}H~&|r#!#^jw>EDC6A;Ad4UqT?MVGNRT>uoi;W6f^HQN&&7P zXNfgq8X*`C!3xVxvM^{PE<^u4EGz<_hzO_QwpXfZgNFfiJT(Hi8&O)DUK*X8Lb+pL zCLJ2oH1xB?z|F$^FdByF?*>%*;lKxU02$TJxi6kQJsINcOP~k+K8(*~4Ap2jD+dL^ znn~(R-;>akQ@t&*eHy~ZiI`kch2=cWgURn3GVfga-bk&n#(@!2}7k?hg4t*Oyv{-!3+qb*5Xt&pw}qVMl5{k zP!~Lp;+Wn8Wkf+pvOY7V)sk;uIcxPc1dDUKFl%mRR%;eM?h>jI7iYycpYG=(%nE)z zL+{i$Zal8j_HWxz26?B}Jw!%i!oMmTe*AV|NBbx zuN`uwH=^y;bA_rm94%ML5zXZKnF}cOzwKqQpPfd>7gnQUJ4iG|I2_05vDoy2WH7pFl+~ z`~YQwj3VU)rD6;N?n8t`wZ^vDz=Dl7 z$NINyEKU@ZivAFslQJBPIQJSDWm?&rSC;=v1r70L4Go8vq<9!&O3x4{Rk{|hQ$Mrt zG6C&2Qke~?G)#Q(;bGNqX>b?~jt4!c3{%O>R%Z`|KVT>6JOjaH=NtwuTpk1ga+M(v zP}2vXs=b=-9|N1nEEgy!x*RmsKrnNTl&V8bmq*G4d6kiJ0Z$*PDM%EUq&mDKdx9hwgmrgH;~_6< zM?x|EVy9KTYQAcT3Mx>8?Y?XVP!wK2OJWSfMebR~Q@wsMjSZ97O(%oAYnP^1_E{CP zd5C3`)Pa{x#$jsj9#eG@HYm!S-@N&OkBT)W;{e{XexYjF&nj!;!8qCn<@0}{5ES+T ze$KHIi{SYP2;GXGCAJv>ckFjb+_;f`XfKpcZVOMlm3$loF*- z4B})IK7&@8xI59RTZni{GsEx%i>te{3IIpp0C=0;^DQkS6G@31tW7(r72jjPk({Fp zDRR`F88hwhw$*BT6}8`o7tr6433$M61|c8+>W$D(gi_podH_~P*ihtL-5AjDWE6zQ z(I^ZG4NnbSYZ#RV#viaMEt)Gqb9b1^u-tV=+=~^f5cJ?o@eg-K3|&`h%oXeTK+dMb3wCjD0=fL%0Q_x#LN~HOPity770*#bdb%k6dky;9e z@m0f$RRDC-T}FA^(_+-^f{&+F+z=Fp+k8`wd8iQmGzL>ptqT4U5XzEoG7JCc0sme1 zj{P_bwSX*5mRgE-C%z;ZD)QFCZCE|2tzyIhcH%>jpx zupWgf94Z&hhP}nzwmdtnzeg8&!T*bP&Gq_!SMS`rd#CLGUAukb|NZTp|EN5dJ-1i5 zQhc=QgA&`dM?TwCiDBARhXUFX|Gpmv5gtB3-?aKpQ27Dia~7uZV5pnSI1dA6&VZj= zekLf_c(hAS?34k&0Lt3NTrVTSo&76{^IxxnduiHX4T>hDG0a5wu@7u?7Ag;25YV1E zJYZ!5s!aH^P?^(5``&RRIkOPRCNK=;9HHnvc^ZbZT=L$ZSmN0M`->)MGBD>BY$uK# zCz;iH_6fUs&%Pzt^(s(7vfP*}(5rR=3Jxd#%#SEyQ6l4A0B(@Qjd&IzS&u$8uAW zP1zRvHV)5x=fEkRKLK>uSDB-k9kAJ_j(*T#u^>eEi<%QgtT3efaKqZ1z~A+wX_vPg zmt2cGR2oeTHyxZBld?Fj0u<(z0ThQludF`Rw`&h=nk0GUg5-on`|!H9zX~&ZqiVLR zl$mPP;(bboLu_b>1QnmLf~n@*2#7bN0uN0xwe3+Qtr$PF9(EY``n-cd#^G`5pA6-M znZ~Jvk}8#b3R=4IRZvU)VK!r&xX`CyB;co_GnZrY3Z7-?R}iMkQNX{h!8iPC`F)KW z(c!2pz$&F0p7~S0tt)$oH4ma+)jr9BrEJ$z_M+F{hj%qWw5HcFL|5e**SBhEl+cU8o~01v24B z2`j->WTU#vZI&Fj_CYM=j@8PM<(w00Vj-)kAj-B?dj+Qs^wT~UDP5(s8U>X>^h4Us z>2x}dTBh^oo#3KO&1or`Z1mYH*L0RRsy~ajfsbmG7bkw82SodRxnq^yFhz?U06Ch& zSFaL^U{=v8byt+o(vGN72IyF;ysybt$cj&bL^WKztf4*Jsd8>L(A)=aW;X zN9;8pB{1$V{;3)kz?x5U6EleT9624N!~>VMH`pQ>?>NRBpBX!q?PlcsHcy)x9&2)) zeW)5DoO!~z7ZFlm&n8)D5026EQYZ5#Ej-#VQzh+VidLQgOHUUekH_=;_}srBmR}OYGCO zoS!8*M$ArWb3`Sm6RaU-&1iI-6jry07a-oiIWkPbsc&(2w%sYc1~S(y%)cqYq1-0t zN&4PX892yQ!_vyH*6{62J|^E!yC4!1qH6#hWNkxsjFURYjIJ1M89Af`>P;9q*~=XE zdoTz`ei|j~B|&dHss@NG$wb+jZCW@eTc<_Xjn-?kVu+H(XS8)vjFFj5O%KFrNS2@C z@ST!XX{%&v)UA{!g`UIAQsxxSE1fur8bN|iQW{ll28qYjl}i=*Pe@0>|70FHy)}hD zP|j`DN7a#plfsZBA4PeDc{bQuCpxoRM782n64NUMt!$6j7UteU1|u*IgPi#I|=JG*t!@4ogSa` z|7@I$0$gW=N>RBG%iZ2Cu}9yv-zt(d2*sG_i8fR8dBj|Twy#+WwUsA!)F+k^=Pm%{ zP^jnkb$-W!WlG9qmCDE6|0w8Rsv+1Y6u>os2_pDyo7O5v33`{7pDMj5;HWa$I~i0X z&V}Ne#qWw{Zql+c-A$&Z@wLeQR$;YHGvx%SCnj%`KVsgCs*IB`jDl2ZUJAF$s$jF! z7SSM=6eOlQ=b>R&l)|A?0uqP0MG$+VGe3?{Aqy~*hC7q)m@&X-hL$!ZS7seFB)~dg zN@>8EQ_>rQK|WD!D&mIGGYLH6>=h1+v6IupWEl###KnR%+`nM#@Vm8ZLTN*A6HZx2 zOg|*kSk%{z8@2*%sNpKF8KcO!1JbNO`*KE4?0jH$ZYCAnLj0t_5bZ=HQ>K1K52T+} zNKa3xV?~^DLybx~aV0<;x;h0)HSd}}%32rECQ^Ak(M3d8EQGv7jPm24CL zWa6hmCJMxa`~WA3vKVU^p<-tIN+8r|{}q}4r~*nCyMA3g?LKI-#Y&}Fp>9p9W4k|T zWz;P$SME%IdRaB5uR=FHrsAmR5VEsq6?IL~ud?-OAA6k{Q8}+F+=4tFpmb-MpI%hX zSs^ro=dgApXAq_v_aS;3L;NJtsp{He&aKD+WD@OxBR#dJAqGCG?plE-GrFr>LR^In z94q0c9r10Q-V9jG6;8>alZC={%~oZNLP4Kf=vWz?Sxx2m&U00#`cz@X8W2)q z@)PJnQnX7%aHkR1T!b|z`A8=RDs~6Mde0(^F^HVh<4qJ#biWcui?qmC=2K@@dUAao z4G33Iay!*aqh_^>L+^xwOL>ecqKkMDO%)NyYOCgij0(}+tfwZiS4Lk*Q_I=1XXPC| z=dkK)r?gU$`W2?I;*y{^;2{I$hb#%DMFE81GW;Fj6{4R~U)<)YoZPdEeLC zSUAx>Pvh09WZXf*!<<{WS<%4V}rjM@-A)pJ0Q_A_tz52+vdWCwYYo z)h-U)2>C4edATs}dRw^qgkC}KLytj0hn{6F&ZiPi1}G!zmBP;w@Kobcn))MY%i1T~K<>*Cc{wou8UI5)Q&QN81S8 zO0;H#n@1tbjirXuoSjD1wCn`VSm|)%_ys>Ir^I#6EAjCkRUY`e3|6yM$fJs4Vn00T zeHb^7{_^cdGkWa%y=?x|(l6h(j@n-1WY}nRakJMg?5OmWA1MOtuG>y)M%FBnDdnw|PyHHJB>jT|RjbyGzE zodsLZ{O( zv-FoG(Z*#3(Whqcc zZ6CAAG4yeLb|*Wx>^_c|IO!sW(CO;A*gxpf%F_!eWJM}Z>HW8}`dvZywLQZ%v3|`h z{`~XBZ(}5a(E8y?G#ZiUEe@dCj5(oG;)V~B z2dUzA(_en^Y;LLI2%+#Y21uD#YD?K`;1X!y#cjv~*1gikaR$9XYob^enkuVPMT>*( zY2hZ;Yh=0R`IrB+^zhrGg3-VLm;h@)z%CmF|4t~MfB){fBm zb)J~hE$eavQm8~|pyEi$r(NutF65{>G?Q5zK?j%HdaQ(y?PM&9Gh}%!fI@B7O)Egj z7!;yPNS$>a@vgh`i08+BW(~;4%Kb|0b$g-gD=max8h?g!Gle2CigqX|^CaRi?nd-$ zM`5O|xCrBTg~OI&;jg0cXH6$OqRThm;5Y1%4B*BnyJ*;z7R z7w0g^Fv9&kUb=SdM;zm5Lgy?KTuo7Dp}bE7d`>C{6Yb$|fJAF}@52iWQlv@dKuNwB zjo3K44Ry34Dl&KvY~v9A?U6^ZQ^uad`$*Iz#LVJ|4hWz77uBKidgWF0h5Z)pB{lBe zHlS$Fk4CL>r&7F?X9pM4h@ACcz}8oGyBa*t#6Q-bRd{r!VYXuoprQYOfI1 zgi!|e2=6@d^Uz(sW^tAmHLCt(V`m+!JJl z-3z;2=zQ@yB4AbH0_mEQB5ooo6E~4jtqQJby>1RnN(0Mp?eI-&bT2DBbdgSJBy~z3i={#45+seN5k89Dt)?Ikm+~Q&d)6y`l$<{kam_nEwpMTw6Wj@+?2Lsa9`z|s2uE)C>M>>8L0*9 zw17E;7$l=VaCVqzGzqn07jYJBNrI-}7%BJ-+k=Dw?oTxV0Y}&)`KaFP2oqS|SSZI1 zmAlg6zF-hXszOzKve|R@=%PL^^L_+6mA$QGpU%dx@QN__QU^Lq<&2s#sh07(+NwF^ z_|)~(tG?6G%es>RmVd=^?Kt~{xb@U%UBzZA4DC=Q^{K?n8a;MN>M(M()Qhl{@aH`t zP?Ezm_d!I{B4(eCZh;rJ%J4W$ChS~AI&7$j9Oq!8yF}gkIR6euMcuSs#e)GSQRgpAZeoCnT^lR9AoMwkCyDZj;eMAsBxhvVa%c*#(Q*Y_dKWIB$%{b)q(yCfPBN4&J3n(AQRAj777i{E}k2$x3%)lH=} zK#{3DgB5#P4yjjg?6yTNSXX&T3|LAD)mf;@I8h8fs7p|)l>jZFwV~3fm$LQdK_N1k z<*Q>OsQj0*ZObVz)k8WQqH|$Rli4bWR@pu{U$P%DU!u&*8BrBhpqK;+%dWkx$*O}} z%+-A>bWrUG=`oX{PuX8@Cp%V;DlQ9l4?5W(+PbEtv?#xvgO%*{ii(fqEd7zQ_LhJp zmzC8>)loB*5-BZY=U?)AADD-r!JNuTNjdLi*zZE=l-at%S5g#O&SH6?c>pO|Hi8>f z;9y|Npx~hkMh%}0BFYZ@A!~4^A^Ewf;g)MWvUpYz=Z^8}Z#r1$7g|H4qjCCRn0O^$ z?mrP1`B=HPaD64IDu6o<>Sp;gw9-yc01scdZe2fI#Q2wA)U$nMssBCS|0yY}t~LH| zd3E(p>Hg2vWsC{DiT}IC_`m5XUaeq0kqpyvSZN0SEhf{dU;=d)Q;3ngbH+CUpN@(ZU_UeGIM1fHrf;c=2W7>u2qmdz&F}3lH<&{S49&Bo) z3tRFBVOY22Up7k#Se&DRn`8N|)5`Rr6l+lOc6i;y{CrH8! z-4&D#2uGsey|9cHKQ4~G8gbphidn#3IfXmaZoLLm%GF4rnbipC36RWAxuee1QgI2L z(gJOJfBYjYfY#rk;QcMi|4I6*Tmd{?{@+_G-~YLC`{w@N>-h*Hk>uU=DaZYWN!4A- zYb%y}EIaEY*t(et^WxZ5(ZJigG6o*KXAYcjWB!R2G_cEL;W0Vji@4Q0CYq9F->Dj@hQRCCq;&;+6v>(`K!> zB=6(P2biH9jyov-KkJw*!uJx#d^4oC;CxFuH5%GArzt_gf{fVT0Q1KI!k;Wf-gL#rD{4lfp z{#Z}RSry{ZpF}a5EGllMA73eMn&oR-xvYI~oe6f1~38B_Yo z8(meNJeTFQsbpcnI;U9*A<{mEma?9UfeupXBp7J0&Vp*o0m_!Lib#W|{lZ^tribZ$g%Dmda6XVWhUwc1_c z;wiEk0j8Yk)Ref>+qJIso^|bry=5vW>hoL#ejY6O$o!SjM3=2#sZ%Uj(X#I`lv^Lg zFOQ_H;>g8pD%S?zJVD15n0W}HO`#NmZT*J&)iYAr8A(+|y^-(a)HPgUtd5LfX|QiA zcfGxb-qDiU#le#f-{|r+#jUNom6oJ}Z8_`*G1Bef^g69cV@uqcl&vi4hJD*-Hx@m+ zY2ysyZ08Oikd42Q+=64z$44%4X>$dy8Gi7G<2VH58hB!Ib7ghyyVLMp=5IcE{^Yy! z$?0U$Xtf+7|41}@Ssj^GCg}2Z1tW}dOr18PU1@dvrmZ9LN3xTsJ0oVl1>HH{QepIe zyeydf+7IOC3GlS$Yu#_WB2;%Be{k>Lv@GugSK744u#@4zfM(;nhH($^Sphj-OBWks zOWYJf#@61nz1Q3xKEWpGi8SiAiW$ zy||$Gm>6v+h378cz`}#CX1{d>D50kK${XIzYpDa7^~4}uWMWXHQF2f!hh*(C7Kz0E zG?(YfH~?)Mvgi zoA?xMVH)VXXZ>B{#)mZ3|HHW?7DJUx;$4=EuEqbevb?fV%Kxyodhcfc=UP5Us11rI zOhyeL9-!_pjc^V4aRW~sHSj_=c=MV_N-?Si+6-9Uxhzw?q&P&3OT@6mEFCPxQGdxQ z*~v3gI0&-=D3-Y(u&)xHLoriG-*9YDvC(l*qSoyLQ^h6@^@;OR+BCNwp2@%p%oH2e ziMQz(aLR|NIM_FI3DK2rxUI&fpCp*;Xnu5@yXoh~>X>e_H#=MkO7Nx7a$-^DMoTm} zjh2EEeCa_`H(GzfEb5!7uZWU-dt(TRZP@`IWm+ zzXD5}fwc-bdeI#B<2F7? zZV-g4(U*Hy3Ab9-{iIK5Itmg>}JEcIDw>hw~M% zE8q56jTbwpuZ+*Mp6=`9l%KLNIFNJ3a(n&e3d}nQs-a1$f_2XVYwq%UxbDd^f-acz zf#|h3OQPTk!VUAy)?n}n;P{G8z<*sdOV4}^RREFn_zHU2lwhm8MX3s z?~tGQll(ME3B)MC9wC5!-&uw;cNJo)3i&2+H3MpTl|7%9+z$??Zy)c`yE)i34uSHIPa zs^5<4)sU-&oR`iIrPMSm)2F0KH_rS~6vw{$3HWK`)EcUWYFtz5$(}HRM|9Q&q_Gx7d+tN=jRea|cwdNk5LV({<9TxSq$k?-v(EvB@?AjJjW393_i# zi9oUTFd8wRg4*=`YPJ1$rZ#?`t9IoW5|9tx`M?Jq)sHWJ=CuPI1{i#>(4)y%Tm*u7 zgt<7dfy&)I!zy4k?bxKFDdjj@4Ds9|w)>ZrmCj0MS)mt4wCet{s>K4%Z8S{%V|soY z3a=UJjbrE;K40ss{96Mh&t$OyoIBQI^pyo3OYK!MKMJu@IUJLEP?(kWYCRYI#u#^mQwjt&WnaSw}CqTz{M z#Xs|bkh7Hz^ZZE`rb-P*D3hhTt9S3MeShy^wt4&R@^@#Ow;NL(Q9mVN;BYip(b|K&StH~Rmz=>JB?Uu!pxBh;%K);egk8(A_*2O;@n z*BkmbFvi!Cct|<1?KK27-?WMUU_tl_>uC%+Bm8P~;j^)^vD@9<-RO3=AGgo9y4{nl z_7MIIx7r8YXgl6++;|kOHU5Y7xi3xn^U(j@wY%l}UzTsqe|of13v(s&>L^JLo7&d-UDBFzom=%s?_$9UCPHds!Xz_ z3%%R13Y{>gQN=P-EVqj#TLhw_*os|j6^gBHwQp}(sBg!13FK_&22f-G{k&7t!vl@| zb+AB3{+RB}h{9jqVcSHYQjsC55aAo-~b*J-zZJQ5Vz~aA<#UE`Ek-+zt z?Vq~cpDh0H5}zsl@cp9=(jfL+4MNBbOYuLu-R>^`)5CxM-0l9ELB8sCUs=HE8#QR^ z(my|Rd-on;i#wGK3huQH?sdC+#hyu%RD4Rie;)7ZcCqEBZp+jGQ=Yh|=^p*0e^mD> zI=}s4%RKHWq@M(P0$rGF@pnCffBvus z9o*fi(hPx9h6u^V(q1+&OL^}`WBgqHuQH8&VF56M|KG!R1^&Oba0(jwf3wH> z#m)a&_W#;y$^W-tb1EQGA>TJpASO(|LV zP^&uR)4O2~^U^=Yoy1>5{;#a8ESK}Y-CMnLL;qim{>@^TTmEyEnRHJ&ERlG@f93ei zdc|kT_45N&L)+zD&oU&8XUllj3ZS*3OqFdb#OT|GckB^EF=dP$L;R!+aitn!L1kB^ zm$oXAFAPZy@_DI&I52;x|Cj5QjeD#K%sHZ)9Esti&KrGjNiKaG*< zR?+o9Df}x~$$#CdH>$`KCoJ4f}VTFNJu97$5F1Wp(=na)2)?N5!R-3IS_mmg%D9P*t2X-x5!%ap@YIYnhc% zA`0D7h~3-aH?CZi9{DQppr|WsBY&NOk9KTa8K3WWtmSR!%FwnULc=`FIx4&{9VonT z2aLM=xVRkkPwZ~+YmL5PP8y6gyhW~A%N+_hm?DL#FfXcVXv^|ZQDPfX(lH;EyqBc4 zy?ts^33{%|^g~iO-r}#O(^EBO1U8zb1Z&lIt4jC7H^)USSL;5u_8A`Ms{R(N#fc&0=?0e#R;(yzJv?$b4k9uN>EKZ^ib!C;&rtJ=&aK`8IEF zVXZs1{UrR-@9y29muMe9$AQy`%8IS;`utiOS0NwsK{5hyRRf*Nvhwm;9$Z64xvL z*H+8%A8RYCcW>nX*Ovc!FTM*?4`@X6af9^Z6n4mbPbfWL{W35S}~L(z#aush$_r;vcC{yyM2-{(0sea4)XW z5)6o0aSOeBTh$<_s|2DHnb6C(XLY~ii3xKd*|n5M9p=b}T*9ww{`Q$Jh( za6Rx?E#4`pNQQo|6y~ri3ets()~m5Y)Mm~U+JSk!TV7hWQyPl=b?f`BYQ>4XJ2v1! zT%%%%`|Ii1ypZ->NVd0Bt-~(7inh+Q1~}+$8-`iZ+KlN^x8)7`*6{I4??!?9TZ;dc z%(>U>|GBqTasGGh=KR;!*8e^&09fi?;q;erYa2CiK85hT;TQICVdHzBa)fyI&Xeks zSZar83ezjdjHj}lVK`y$bhrM@@H91acg8kuZ#FZYrHw?rpQj)LqAFFv2p|&$0Rn3Kd)?5KBga+#JrhJEn?k*_-gSU7qPtg&HZog_ z=7m}Cd)0BWdXq8Q`Y`2~dlgL>Dx2Z}CFA6$dp+xPB|v}fLZ7nRTxFRR4%SZ(wd$Eb zi`^22D(FB)W3v5j3T3F>ztX@L#z4*}S+iIV%iwH}*mU|Rc=W0Yzk)WF9?hjJIr2X{ z_3@(9YtH|5_x9a#{;zvC{-3WW|E+a!W%)04uOR;msW_ZGA7|TDTyQ$W*ez}c%q4Vs z>7%Jk%G#{Ah_HP2N zZTfpd|6hmx)jGH`@ngj+WB@bDdx2)0{0|?hWvJPJRYcya(DU4&s$N{LT1f=WRUy7} z*aiW9=>j%;UsnK|_gt{M-GjQ!L)Cj~)7yFp_Rpi)Cd#b56EaynIoeW@V}sbPvk{tZ z*G_@)tx3Fb@B6LV!qc5osD!t;(Yb%pXCGejv$>YQ?%5P& z)a*_dq^B_{P^TZ&_r7ZL+{Bm*4tt{;m)pM%|KEPEyYsZy83w;X8&l=~ojYrHOYvXu z^d|q`wS4Y>v$*K}%Rm2L|KI=nKYNF#QReYN@J{{A>xbb;=iv{$<1`ua)s>(nG_#i1 z=*N?AoJOM@(|QY(#l;8rPgguYj!s6KjX^lVdmA2D8^iaPPFEf*EZiR#%PjovclUko zG!2h8b)xancsMxqQ&34U*EnW)_fscW;o&eEMMFQ{%+pEOcyK=&o&el@v$2z$kK)7+ zGH)EF-Y^;ErwvS&Z(u{wPIelFagbr=b7*QQa4*!z&Q2QMDdmdaY^*LfmLA++@*n); zLJ7_D^YaeWf5&K6#8lXrJ$v!g`%#pxnHZgY8bX1876psJu#==G)hXJYv9h!OPeqB~ z)?7a_H*zzx$DgGB_%vH`((qg8ZrjhNqRTBgfIb&_oa*ziuP+7P7-{nruGkN;0FoaAVb$6=tTk#mj2zVSO0!|_Vf=A5M6|M0(gu99N><( zo4~NAAwtZ;5c*0txs=uo7(t^j%NOx&=Qv7390PbrWZ*2DtJWYiXmS>KvhVj(ZwV*; zmiOQO^Z)+;c-|BL=L-*+Ar4(~%%hwABfbBh{(H}R<;?tX8UZ(mFZlg`{4bu@^Ro-= z-y{pY?u$Ks@t^*0&pV)Ly-=4*%AKTmS0I=95C5a*{rlq8JOcNhJ?~`}^6GglNdpo3 zo2F)B;aM2tMW&r$@-yBP#H2P_e0i`GB!g@T@Lqx%OOLtsTln6RUi}Y%++;jXKy*lV zY5fF|A15b*!hiZNR-u!Lp9Yy;WQ^v&{PTZA!RU447?wBR-AnoH_0_moUR_5tI^jD1 z2i5rzFG%K#SE8Ts?p$v4zy2?txB9;Co%|e)$6)}o6@G>=9UqQQPL$l>OK!Y%Yf>^=!ew_G!rLj z7<9&?lh&K&?{h?YF*(*3+`xSNCQ;%>)#G08~+07Hir z0$k~Yt^$VQcR?i5yTvG9gm;VTomoLgag-xufSH@8-QWxm3IlxM%XevTm$(AFVD=zS zcZiD!pMaOlRd|q88NNLiUNUb~HN$WWOy~^nZw7{nGZjR~$Dwt%^808+Ee23@5sNNj zQJMu^l$%RW!r~ZHXRy#B7Fslg7O{{(dmP57xgSqPgcCMwnmHqY=zg9 zdct=w^7^N*EzlUW`1uWrlY$)3lEju53kyd_M|h3g0^MfkS^O8@{1&^V- zT~K$k+#7|U_G4K9?1OwD*tXcclBW3h@adDKo)~HfsilVFh_e=+=EL|%DX~ZQPhmJ8 z9H}8r$?bs_Nt_JG9}2Ipqb~xe`rn(!qX%ULR4J*+yf2wJ*(Q;7)Dk`IS+?W z5*GP68(Y@Z*gOGDCbQYHL6niT#}=is2x+AfSQf4zjPs5)<~HhR;-WWnP_6;RhdPEQA#gE8QCaKOtuTtZxA(fSJ;P(nB?3?5jPEl=9!6LnftD4G zj)=k0oW#noWg@`0_UP=xN*wlad=tRO5Q|$5*I^)+oh#z+EFoJ0_RS3v>BrG~95LVk zM*>XMdV-~l{uO=z=>WDQG92MI-bb&~>3Ek%+-czP3G{(`tvZY&Ue#&5a@guKydAQd zb@UkC=w=P)vKI@t2Uw?7&CvuieGrkI>#6OBKsl(K2BSaZYDpl9YQ;S(Ii&R-{B zR389`8GvTfbeL0XV*!-M$gbG|N^0WeoqQiAc6Qxs(3Hx}mU<1Wd(D=&`9K(Evw`!U zpDyJIuYe_UA#uxFS~3n5FyQ6ZO{WbUm~s=&bRifVi+Bd8Tek#|8u`OSHGt(8-n4`* z{{&<>M0c0?zRpvhmxhpIwXwGW6JMppk{kmL+GttnIt7um=n^4VWVg zPW{mdI_#J(l$I1mXftZ|`1;6d?da2;Q>`|EL^5$bNH#0B4Pc9r(OCT6v+Qh=|Kmvp zLZWe9gJ2G@eiMej<%%8~Skiw7%da%$>b?&HW;BW8 zw%2ID|4cp&HKhgjY#NgEXPG@o$p}UqiSPNNgeC%ppaN;BIzQfY&oyXtwfH*_>$~ui zphCZ1P{z(k{5|iElAg|v#{_CZ=jB2Tz7zoyUve3M_cz>fD-TK zv2t?~vJpK11@=7{RxE^+77Vshi2e#*`kCmzEUWwBDKHek3lt?3fdy)`Of0Lz?&4w9 zQ91aRh!;QDO_W6ZhBjVkLJmn|M6GY=k6>8Pxs;>S!`69Glo$dV4?{m1(bDgSRBA8? zvn=XIag<*G7Tp;5#K=c)LwwQpBB3kNgtMGfBhpq9>?7!3FnYdrS&-~z;?g=JTQ7JS zJ-k!yL65XOp3}A_!ek6gYm&338D-XpqKF|EVgG`781C~#*?QHW(Yk7QfuH-f$8@s+ z8UwnC12v*l&>B)&cn+gnSa^l}VhRH#)P1r}UC99OspDvKOvXf#nP}8L3E+=$w0-5amOeFJ(_4|3AEufRH|wg`xzPm?}ct@Ls6i(&plZiW=phsq@-^LY6-cBC_oZQJF>kOOorDGSGeB0MX9n>|lucMdq2oC+OpWJJr=!dra`gBZ7z$d~ z*fCVWd=rOHy)S-Y;UHltGH_H-V4>rzO;+?DvKoh$wX*SFTE*muAsyKDk>C~>JX=!l z@As47LJHdUdBIxe0=4X$SdCjmD9R!uD#WE&Mtk|iINZd{`I9(oFaZ20KZ=rllhOG7 zNpT1Fp;X(@)jm^?HlI(orfev+mX-baSomFOak;q7XMHW&)>i?_WqV#MESv0#NMOw` zgM&8a>`$d(=fHP`#Qoi3`;#J7>z+?b)K?L+0^?~yaoc4gz&Rmtx@H|0x;2CbF zpNGI?#1RxBAKN|+LHSlJ()Bn2r2;oX859MfkE|IP4*RN5OJcrbg_?*{G&vtJc;V^e zG(q!0lyanU*F*ZzdlKb6rMlsex4joBYPb2tkLdc%yi48-YXDRrab1tdukDh$T^97@ zL6Z8ohtqkN*){hKIji!npH`eG`_Eq<_6~sLfmCTtmI-p|^4A`)Mr(mqxedh7(@Ypt zv;u@8hbjuVTzCWh_>(g_&4xc7+myJmAfC8EjQT`(JT80T%=A#(f1+V8a69i?!`r@D zx5jq^nLKF~FUJ9S{hP2LfE)^Q+!C74CTP~!6}Y_6DK5Cqw*@}RvqU8>vAGoe^eGPI zM{)en_6hAyOp$9x4B+y&O7Pasx~6)y^KQ&)6)=N-nOM31jcG^zb9c|km5jOo0}f`Rn)qk-|=Em0U>RX3O&Tw-wn0$d0#4$h%Pl!X#MFPC`UO5 zbsT~EpZXW24x=-&R`J1?S9kjITW)sUdu@;88|D2)$Zu>Ps1t31y7e&3qamzJGWjF0 zmW(r#7D&oclH_6rLxL#Ptp*5^=9R=Z$*3R(D9bWdec{e=*Sqenq}B? zG+grLX~&l~pv1al$6d7>(%T{eL)sl_)Dz7GGW_ccs&frTozsnxsdjHNc-ni2LzH+l zq{L6ms{$b9#1jWml!=Q*LKB&Vof*IM`DrvbMVKL3YV2P-4>MQ>*xzB&k78w$anOKg=9u$62EGZ+U-7+66|3dYc{BD}E~8j^rJ$ z32rZC-VrjlrIppSqqcnilZYDq!0!*(cM7I!A~yOM%(O5CHVHkxKx-eQP_BB!`|o;N zlm~;nvZ@sBj#?YA@ED9HA6sX!#FoVYl>n4Eo z9{h03J+oWDje^#P6*@G^9qzZhVupI@ZXY=wMH4a-=FYeY<8&}PDy$$l>bjZ)75B zbv@SGKk__X!W@#uXezndpiKS!@q=|e>G%5&zE$-(dVkE`2(2F$H|YX$EHr7!TFQ0X z9T-O<%^Ah09N@Bt$eaJBB$YAo=pFAB`^rxe6%^;cXFV`^@6i@@l9lVz#%4c)<H0p?(V}BUMk)N{dc#cd8-Bq&FP0W_#0frR|QQL>!Wa9BlfaCEpD$ud4P>j)hlU+d#|}q~0@Lv% zxensM%>+CC!~vE~j^_jhL^%W2F-YKfAi?N@;#^h#=btZT0YLv~3hRn?l&a9dzfZB~ zL!MCjuGLW5rzpncE-VzEcoIsRnL{#m?2+-+iYm`6c3^n#SnN<<+~TA6z1Pg!NFrCn zqg-(_4*q|uG0&D>BC~(XY~-ytw6j(lnq^0(YL-t{5XR0yog+Ks2KNxWo##)DXB<`~ zX@)Mh0MSm&B1lALiy20)@7M?2FHjIMWhk$-t@B$ucvIhun?Zo`N`l zmkZ+&Myb%G8&0%|0M%U1$)vRD3?FgpQi{h+rRRWwEU1W4Ml=9z#1hw7q93!V)UGUbp z;jwHd8jZpfi5O}f{kQ-8zy1eLnH#Pz;7HYyC5V+Rov(y5@|C2Fa~)z_yydEo#O})H z3ed@t7M~)fB^)>oEWiIh)E=>g$Q!N>s{ z^Li3SCnUS%?GIQBNVcCOap;eJb)v0so4}mRTziKw*w2z6Y##9p9;zS^wRwxUAkWA7 zKld|?S)|GB9Pv7xE2z$3;tbC^`Ijn}yK^pPVd16nr@1c*?i5_^+RI7WsLa}_KOWpAEGLzWCt}EfA&nNR0{DRuSIVcotbB?4C*;KX!yQL^Wx+E8q!f9@A^f8Dl%wJK zK)$JOJF|R8X@?e-O043y6hi>GxUR7!0|{TMqY;_$Y)};Dv2{#9z~cc5bfMVz=t0FU zJHt&AAk%SKmX6-+({T$6Pr@9QW9DDTp&oJrs%SR}&(-?}6tznyAaMFvS-~+vqmeyi z6ByhPsKuw@Qiha_0ZZD+N`Z?U2K0^hWHNXkS$-d;Uk(a)DO^Nwlnc8ePg)H2eK=AK zm=%8D1QLITUehB!lcySo*P|dgKTqp64!`;IOgAi)T0NPQ9cMjW;%ZH`e-#?GK8<9Ws$w1!U_a>iSQz&FE_4#H~7sSye*pfPFHBkT%K#Ce;Z z%z?IS_10sqOavmuVkbn&ut(hKPUk8@AMt(#Pv^sZ%QWpa3D!EWnLm_8_a7+JP%3@U z^=M&GWt1k3IcCk`Kg@WibkmfjqSDQ0`so2aozl%`g|<*R>ToK6t6{2RM)WBR_%E37 z*#nNG;#~*JGs~u9Fd-RWV9nKCZmiVbZF)RkhqZC~$(=??I2X21u!L%F6wHSwSN=2% zk1?l%o`(_Ws9<=5j6uPbrb#*<_E@rvKR%tW2Z+UI40AT2XeN~Jq}77?nTK;y1y?Q8 z1wa2h^o>(89taT-!siRAAZR+dcM-vrV&onxgXv)xiV**iWN&5n3D1{P+|E7!Jp| zHn)As&|vmw#ps%qc%D$A z0v*~I(#Zjz5;f{RpR?P{K7)qmh^7o+84tCM{M%bhg{)6{#n{=Q7Jj#|@Qe4_q$cfh zL*CQy6lkoNkro&yXouNK4VIIoyQ_Eat$ly*VYYeu?(%nMo3~*!qX3T~t}HJ%9+bHKyCo zpB?V+ZM{6)d$!vd27u4PFY8yI*7Z-Tgws)>i1UFpHjiQwPXTw2Qj)zwYJYLYR)qu2`Vu9_AH5l4KN~q?=gu#w{yBly7bpFB=>OjGN|F9o)>iJ^(EoLOtay5fVAZknouy$CgmGh|NS$n9Zg&s2 zAHVHBdGhwv-jki}?*5JmPpYhNxZnM;w|~%k`{+q`cShM4-Tm&p$sz7}pf1Bb57Z51u?fe0$j4efzBYv^S%L-6zktx=-Fp&EAjD(gD=n-|ZcuyO`MB zcN82A767M_Mek+}w8wh~htKzadi#O~7V3!_yU#DscYIl`t z@Kz7udVfa_X*3D?x*Y}I7QpLHf9~%*Fe*m5A0s!CMKmL|gKLn-b9C0vD|DeW-lh)- zbiHaq82rPTJ?RF4)d#KSHItO`eYIq}K!sEBK4C7=66TC_fd5#(pqA$SLmeV0U8k-b;wcvOf_bi0 z?#syJQ66JEYHTKH{Ll*EqW>wzM`ZehP zzY-IeMgRBil=T0V+c)(8b?Bef>?%?f(Ob_Is@`O$evq73a)h*!A@Kg)4MVtQ`X|Qy zHRS)w^4gu%vi!euWB*?#{TI_4(Q#(wc5ZtwRHCEGtBvI7A`m(rHYHvle(3Q2&I3{Q zH{4QDwx1-qm3Y8;s}d$<0LMN;mQ@4e{8&0ES7jMGN3YPL{k0NqbXecQ9DNm({W=KH zxT$#G*0GDmDO|K_2AG}HwKf%M7`CL}yZ{CmW#N4+@j%r@2TM8`&}e6P+f*U7&S#H#kqK8_A-rKB@herwRa>%~8BZA#A4tyMLJg6w6FE1WgkJNPhe zvCsk^Xd!@h#X>1J3(%%bmu|sA{-90WJkN-n(I?v-#`-}47fdQ-ZM+m)b$**^#uJJd zzVD|e89}BkhQrcaQobO)$3O>J-y@`NE};-SmcO*WuT9jZbQ-dSjTR~L9ITYx&J#!ai9nNmju=$Yw8fm_Cs!=;n zSN%{>21bf2Pbf7L=SC^zG$Qcz(`n^*nRhyC^R|@4O=xqD;@UwzUYZ+vSitH*nRFFB z0N6qh4>#^ACYx3U&&elDI{Hr=vYp*)H z;euqUhh!Z@{9IVp;n&XvWe#_KHY7Rb`e|@Pl~+{t`h9qzCi0D8@dZVKxcn9C)W$;? z)k_o$n@e(*VK+;J!~ZPx1BKp*nAl0tYEO_NT+D*^O<$!vGlO+Kk=%fSq!)_ga z7Z1zhv*O8e_n92Ob|3ON;X-9OfLkaz3K~@mkCKo`?2J;&u=Rq02-O`KK4Z6z$BRbl zF(nC0ncklIV|xeBj9@VnhS`^L2eu;hgjG}zc_GJxRm2|ja#n>6dw0>Djp{T0l@)NT ztInNQLzn5QJ1bpTNftxRIs9s*XsJ{mC$}mT7iM(^hZ%c?#;0}TES%;4v-WkaIsW(d z%H2CR@xNa^{>QR^+phXsJ`dnXLORaRVH}h-53@K)dVM+kR~5Fw>8TmQ6Fl%Px_nyRUZ+j7#~&xlm$yY!Oty|yIqWFJ1>b8`4b+3 zmmf>Yl;Yerbjw6d;wv$`PE^@eO}P?Ec79hCk&D??+GxDv}&vE=0I&B^vVTDo7kBgGpxPyM>h*q9Zn#H5^jz5!SCB6Q{&gaH`M2JJ$d? z&WcLZ+!C`;vlHw|>>5$15KO0pfV{w_Eq34-PMK9q+AkL^qp~kCAuNq&xmH9o4zrqjq#f95`^o7- z+r#ZBH#&2stz^mFL;nO_BLyqTj{I4-B=-y@yr@{-sN%n6{hv}DU$6du=ic(|vi^VP z-i`i$z52i7BbF0>VcYgaw~Iys-@rAWu|VnpWexxi8R&$X&b{K(Z3ypA9C>f~1+bvW zs;bWd*vd{JZ{!S9oHkSL z&8md)mR}mvgMS;{&I)kI%gDOI&Uqm7WowH0*e#SA(EDN3NPSdMZA-KvF})L9$hse}2Jl>#$`nh7H#+hn88XMK zWP@}=j+iT-V-saef3w#SoXv%ch1G}AakUGihj~&d#k#ijM3T4Zx;1vxh36HP5l7b%DcW&d$4Qi1^o;o}IG8sV+XJU(4#PG8scZaXG|BEuKuVjAkJsdt_~t%FV@wk_pr zVef>}ExNU#+J#|Y2H|`dKTC4F?sp2z5tShHm^d?uhr`2ZHBg_xOlFeNp5_=Mp8`iw z(ybWBLOP*Tq`q_gke>l-4nlLE5#5SY(`#NLB@aN+d%Io=)%$|xG@Y|qx3tgs%xP_> zeXcp}od1wzea-gY^6j+>`)}pO{<~iL&yA957ecApg@~#73`8e#)4dDCgi_9*O=h0k zLC8{+tIPDoAnGC$N*k@~h@j;B+IZ{0h1?pe?yyn}fvi?c6l*u9GIb-vH!VB*f^~SA zFFu)ifZ55@Jl8!c4=tyqR{UkKp6a|id~4i7K>;WuTaVdLC)P2UXo`VoZErdct+5&k z*qY0P*=BHVl*gARFgPP6?n^4or*tVR^r@)pd``D)FF2)p*SCe3N!cshq^fTE4cP9} z7&mdb(zVX)v1rlGfvj_rmq*{&&N6G-yrW>Akw%6n-l1bX@kM@74$QVBryC(&MbRY6 zjXT|3lv%rcr%{r_yWF)3Sm|b59ycFa_SKG8N6TWNQ_-@@nV|60hi936)ggP%$da^j zR+n%?bzv%MxqvoYxmgN}Z>baq*rXc^&qoNxNGPMpuuqY?8tq+F6WNTZQ}1jCpyZ8$ z-%j?d@eG27b+7IDW)Z`-i(SjL(X5;#+sdpHwOn$KxOSt)-#3Q9EpO3#EEiE~yOQpJ zUH2Np3;fn_OF1yH)KXO~1(S*a6O8l%FnWpwQW z*WahYgmy?$Rg)Sb&koA89-N9uke9TGMzK_(Tjek-IL zS;)WV98V~G|FAfSZ7yR%L{vKul~UB^b{<+v(xDmYDmh`XiyJxd_rU)r>93LkVut^3 zwIcuf-PN1;k89@t_7R-6>@d~~g4q{D*VBeRy`>vCB8m|?m;Awd#~xk*OLaWF@olr=+zr%tK%wQ*0tIg9ZqY4WEKR*a zErd-|jW_ebV@djWuBByyXNjTmN%#THCVh1t;_-5SuZ@-aH14n(sG&aIsIKvc-q8K_ z10Myviu;JjRt%Cb!&|>35(MBxFh~e{6EAO0 z0?L2wK^+k4LkvSX57nKFxRb_#rF`Rw+4*+Xc$7OM3kpFN<0%~`yg;%qRmFfWKC z?yWKcI3Q97h$Wl>DLMCs9Xnj}c(r9EX)5^OuU z@hF%+me_i9d{J1T9~n@aFuc41i5<$l2lm3nJ$||(p`5??BbT_em#^29>oC{7W&^L_ z++0~*`|dP+m-(AdosTwwe!qbcDn9#5f%GnFx<3JfGkPf6x4Y=M%hcd8-Qm>cZ~c zn}}`^sLEWqGIQm+<;s;~fAHQv2|JTKiaY*jaGIp;ciBID(a-Yo^4;6Fy{hN%S-rQs z>ixsoox95`D|hcML%HRZ)#clF;qO0O!)KD^ehR33flk85(|>;_pU$mY3*Ig7agx0E zCS%X{25~fa@5ND;hodm{^2EzeL+?Bq1<5&l_4Af@oTQ!~#~zc5m-{Cf!oZi_shrW`It#tW`@KgkZ<2)>fjI@RNqXURU+j6&2%7MNHdO5_gdfI9ntR8S(IAhKkr$4# zNg8&kfyZ2_x#)dd@ZiI^wEZCHorRijeo@J*#4n;qii~>K6!mO>^ z86?mr?^_v{O|PKG=9=BpQIy$*QJf&t_&>Fg?Hx1lh8X(lVKfZJfNp(cnqT{*tGGd)9vS@_yP!T z6vSZxkQ$5QB#vRuPLntQLQE&&x?O+CJ5(saaB12V(ofRp1ZFN_NP|h5;<(1iz(-1L zmjMZd0Vw{asZ6RKr~WXks3&L#Ntlhk$CY#@-O2Mb>QC~}dmZ?>zXYV1hv`xlC;6Mr zMi6CwKMsS2Go9byAhnUT<=LwUs7&L_-C2YQc4ke@wUCwf4G==3;eGd=SM}m;7RJYo z5)f4s(agg9b%Rko08ATifV7~dM)yi&vmXu<84Z~ZO*Pa6XwH^RZJ9P-|Maqi{n+U>Ve-Z;j31PybB-Q1@_Lz(9aEa!k17jNq z_9V2q;y3!WJZO(6+37*<=V24qWD6#wMfeM(OZa=a@Ok`yEb<=)=Quj~;-Y^J`M-Q; z`A$*(uPonPyOICb@e#qxYh$~6xc&HT_sNsDulAnoY9{S)!0~Y${p@^|JvI> z=)HaPq`Qkn{^_6E^k1h~@_-lM(VJ{0b(H(&oV6n*oj#m-5g`2O>k zhrRu`2Tz_KzCG;jzJ1nx+C%sj%PY39`{emn_sLtS+50QBbO3etcYB9WlXZncmB)Jr zhtKzadi#R9`>cDo_t)Orzw~~B@<$`${YQlwJH1EUmro9{#^bk7u^M6p>-#wR00{lV z@Aosd^?zbl*>&sxYb*Ck`u_^r1UKvd>wlslk@?4|>*$ijZKK^5IRP{;hQm&jfkYad zhN$)jQQ!?&uF;BR9TYWu@6Tf&)E-uDt=}K__Oak4h|%1S;!0Z}kS3@ki%nAeS!HfX zRi#hR!?vo!1xMkzw+$1W4EcA1k<3uEf=K-+AV8p!M6KxBNYrUS$1;bK{=0DC^bb`D z>*pN3+KrRGA5-5_!4_Z?do^WtX7rVzxm^?$1Qo?b5cVf0`$kVgD}}qK+J=&UKsK1f zVLMJvnn(Z5z zCTPLKBn2xDR5^StRv2jbq9!7->5+s&6EGM1*#Ok!a2mDc7h`*NRD;%|WQ-uQ${7QL zQ`?$CdI+$k;j~nBHF7LGuuul_qMN4vMLWvqZxf#`f;EVL!Jd1Kf8X#RQH3^G**$-7 z+RU|4ST=d{s>Wrgd8E81*}}CTQ_`&GgR19^)$zTJbeSC1{Dp)kmr zy0jWf{Xlnu<{UdhUz&?wKpFl!{5bMo*&Sb40hliT@7`WpF3JDZd-rbS|8GV9x9T2<<{7Y#Aj&ktkO-m}I;W+jOp{XMeW>f=ib?&FZysexh^Oc0rdKG%3 zFbuHsmhWqvjHx6HVjSf;JPo4b;}9KB@r8GO8jidO2WJ@SF%^xCt0|3*u<85cPX&Ag zDz*PcD}QQOZPzaAMCe~7A1+SMAW2hvCX`lXvZ z@2^?y;TGSZd&s2(+xuiy6D99hDi(cIex8Hm+4kcYN2VztTb|X}V$p+jspjj@o}GvX zEkVyEH_C=5{M17e@X#1H^(he2IgVa`lIMVL+X4-yC}>RHc?D5GTLV9m)AudDzJrEXwPeg>%aNCrs+TdY89Z!t_ z?nabo(@Ue1Qz&-~%%n|&nudOs7`R!OA4bCv{oQ~{KOFdg4j`l2IrqhLrzb<4c?tBO z--q#;jG-D0XXT(ESTjlO>3b4-2zd+8@Je2$%=zIJkO~(ESIgg74ruuA^`9xhiArZh< zVQL0^V4R@zD&u)|rw6x`cxD2a8r_7M=O*j8^%j-GLKj=!vg1Hi#t1ELvSX{THHh&_ zH7rSNLScM_ZHR1kbe6m)`ncsC0G|*($^L7AZtMys$G0Qi7BIF*|DE+q6@TVhn0l_O zO%|770mPOAsAcNAHVYO4X$cix+vUYT$^5hM8I8gtd07P-f5||X-~jAqyWRHFldQZb z_KrbDWgZH_j!0Qq8^BU{`6e*^vY|IgV z^Dj%nS`i1nGV*Fj-j(_Fv|I3sAec&Wt)r`vp(o>$=qb4+>ql^uWf*<{+(bg+=pzNz zX|ZqAuBXi)XH@V$UT(PZ{Xp&46$Y!lFcaMCBjrFr$TXLI+!KaMwGOGk5}3*<0)iP3 zNG;-2Ye3T|uZ>vv(xEPR9>p=ehm{cpA<6p8lvX6)z;YJ#HUx`vyD)2RW>#wmA9o4W zh>Nr0n@{(15oQIyo>}kIIBqQaV>x!e*SlcmHCy@LZ`^p={s#SjUx^9KSpTbQrTD*< zyEp#7Uupfb=c8)ri?&zwikU{$8;+K%dIMT-)nksixnVHZy#9wt5XQff{9jos%m0<- zoArN<>mRL|o5k>Vy#7V)i=)x|>y7_eS-E}ZZbkgh&HDch#{X1o@>x+4EicM2q`f;p z2T05Nmq~~lF1XWR0!-xbL5^EPt>VUi%gbUvJB^MntVU5cg(fAMA{>rm^jK_qK{A+N zU`TtAhVVoJ(whxcqyd(^`reL403V~*G0N{gnl}&bcj(WN-p^tzJz50hufq4;K}M1Cf>JSt0rw%rmHL)oe#pH|%h`wyjA%en%t=2B z)3Y$>svvN)-DUYrUONuMikR>>j#Mx1*Mj54k4%`40QrGkcdvxbJl zOHw=xF{NjSlPX<{*QuXbc$t898>!3&R2n8e`0%i5xHLG7_Qr!AREAf{%vNU)g+E{? z={y6$W#=3QE?gc20dkcg5Kz+xpsKx^?jHl2$SfBqD7qm!&x2WnAmtum{duXuu2Vr0 z4#+Ffg#&m7anvJGGepFatsxqxA+w$NC`A?j5y8wkQmPI$T^=bH1w4JErXW#Z zlIrk|>X2jgfTl+XW(LQvQXlv8~IllM&z=vnilhsN=`*GR_UsL|4kIHUC?q~)wR+E~_o zCn&f%2Wr9gX%qv3N-0qa#UM^b;WKEZiMtbvb%cngG&2lOu(-NAs{n8m4uH4mJ>L=; znMg|9U~Sq_t@s`Tj^rF=NRgxV%$RA1w~LD{ucG$*@B;cfG64_R%^>9CUp?q=+CV98 zKRo~|By6bVT-_L~;mIfnkE2l-6dIlyy4El%4U9ivRU(=zL34MQ%CKCzBkskDRS0@; zruc_DBW7J!YRnb%d?4rB(j?|{ieVh{18hTdx$`8A1GPU2vLD4i>9*6@#$JD6-WKlPw}L!)nz)KSRoJqBtdMH;#90rKJ@#0 zSg2VSXJv717;z6N(TW{*)(YrQ)0ayzDA`>;i?#e0bQ21$GY2=BYA`Z^n=$g#-XM1# zC2{aq!o86Pq%Ecuz2^C%3yma zcsy(+$m$M`m(;=|&s>ywd=-i72KdWN?xZ4kbQEqj4hPY3BuNO|&S{CLg<+9E)LNjZ z%XgEE6li@$*@!^TkJHc(E?@x9+fH9YMG$!A+gV@N7&bWV;PcV9A4~IfDbE~h0r-LC zVrru1&}dv9X^OjCkZ8>ThmWuxg(@5>7tMy{3Wa8kXJ_$m(M4YH|Ds)Uz5d_TJNNG1 zDf@rdZr}KSe>>+tD$ixl?G>&RAFcYJ#8&N*&sJ4pm{!%HfR@C+?}tHzhY!#LxSJvw)d1;OCZ~3CcAd?UEBaWxy|BWo=`wml5I4{uRafuh+rdnRZx% zq6ujXGtqtQ0~_sy%0m|fv}XGE)lNXc;pCtB5k)LY zWV{RDt%S>)>gdnmhxKkJeqZ!DNiF_U(z*vR*ij|d4XkffVd~C;~Tfw#2@T!!zGGaEj+o03G&K=4fUIZ1$<6A9PqO2+{qb z=7bR|3@Ja{ur?>~cl~JE`N2r*t^PhK5K`@fj3MHRnb^ydf2M=p|Fz9#ztc z@k8rjn}M&-I~Zgf9;g1vP)?X>oJuIEQrV}Vr7K?rwbUPGGscMveF{bbekwY1IX180 zS%!WEVX7Pj{OcNg!(YqqYutzqM`Zz4Db?`IpYm;8*+Z;(5dEt5Nfs<+yPmQig~=+? zC|H;LcyqJP3jxh$d3O{I$%K4_In(5vms_$h=S5rdaz004#v-GZ{AT(Jr*Zen`HVzE zs+5u3XwAr%m*7mdajj3x9~E3;MK_p5R7IzyNv?J!kCxzEzpdovI4fdKIYUJIad2#x zT`T?s?0XEQfEl|`M_3BWgdZiW1XnE^)m?70Yq1R=M|1e7SJ9}Pp(chUG; z)H&IrIj``&`Ps#2;HeI|bM(rb&qjH0vGe>X=LD?a7RsO@?Y6|LeL7@CZP^V#9p4*9 zgEYzg>^&ZLhQh6?#vR5#Rl@>U^J#8k1`(elr-PJu;L`R6TT8|} zjxon)#!h9s89Ber)24>Unp|fes%8<+JmK7n2q~~P0WFNNJ-tN&#mW9#)ra<94G{ zaJ|ZJQpkKsB1$ndCqt)y?nk-JL9_r-ovD=y>hN}KoG>9z4TQ_&xF)3i0Ii_@YUUP-AAlQ~t&g7iK!%!5_<0#E?Dpj}3RVXIIhMKqp35mk) z7Mm@|c0!>;-u|xMcMj`G?9;ZKpCvg)%uZ=@L?x&btRZI2Xmp$us9VGfEZ)F5GEBm$ zZ*h0F-6_2WGS@83zbV0?+$QHq`rcC+ILKAQ(#o&a@a;@KCf`r1AQBT=*8n=mT4vcX zPU;*px?;3tw!28$?{VizEiR)ZIw)ox|Q;z&~uns%ACS^r4uJnBS_FmN~5aH zAn~}ma;YN!3F#>KpUfktx2Et1%DJujs5+8xQW%otqbQFs&jwrTw9f1nQLQ+Y#Pmu* zE88Qs1^TvX7Cy_gtW7@2mI^JRD_fjTK;=YtoYFYGzK_}GZHKX5zb1SkorKs^-`>te zU1|u*IgPi#I|=JG*t!@4ogSa`|7@I$0;DrSrKntp-DpnFJnj_6mo^*vV;PvJ8b= zBC+5a?q4u=_}$typ|l~m38$gxDp@^U7Z4@ns-efWvz>76RA9& z=pv#k7Q$fRlQ5^s^|V+gzPL@MO{<$t8Bg6 z$6jYfRL-jkw;+!PDBW4+rx%rTRtU}DIjkMY84J^m`w%^iA%4=*sp{He&aKD+WD@Ox zBR#dJAqGCG?plE-GrFr>LR^In94q0c9r10Q-V9jG6;8>alZC={%~oZNLP4Kf z=vWz?Sxx2m&U00#`cz>B4aidBDE+6USK*jE0SnpYcF$R&7 zdc29^iSAe8Xpu!Smig3~m7ZK*M+3qYl-zbTY1B}=IP^{^xRl4JBD#o)XsU=nR$DbE zWK@XmW<52Dy)ybjnp)15JuC0%IR~n*ozhB0>MKlP#U(*;z(WSg4_OjQ$w6Jbvc8FR zG2W%xVWf19t}qhysjt(p^1iRNv2db&p2n+H$+&}rhdH-$v!bt`w_}c#rN#}aU4_zi zgRlh49IWcGYZ4XAnWCSt+@pHH_O>^cT%41$!X$>nK3_biG)+78W-ZUEkqT}jHS0{q zJ>s=Y{s}g?tmVK{65)A@{v@xEq1wfP8zG-1KQ9;NrMHEvPv{l&KJ*wAbm&>;;(RLM zWPmcVUMc)MmH4vCs8>i=+VwOT%~FTvLnBR-v>K7m>jvIAcRtbhvT+f*+Mr;yUM* z`1p@15ByyQtGQUnql#i;KRoGu7&njp`P+|X^w{@%+5D%@FW)X6wYsB zg;Wd9r7usl3r1PrZfH!ogXP{Bm$A}UZC^BtVZP82hI^cbW23pT)MIZsdbBVtwAt8K zhbUzhaeL_`{J?T;D2RhXn_kfViE3>!0n+=!f_D9c`Ety2|2ED_*Qdnw3P9S9it1V5`W2 z1!IS)6$N&0F!0l0eL-KE`YN>HbpE*`+8B+_WQa!+$eW(R64Zn0LJf!G{DRgxJ{hWQ zO$2hRw&uS?TN*Oo8R)=ef;TEXweY(0=Aqd{^Z78P#}}WP0AdsSp@4;sbwHq+57%+E z>#a9^VuQ=jkp@^M)yu#RWhtzV+CFBJW9Z}h>`u0C*?k=G;-rfhLZ_?eV*j8^D^D+^ zkQJ#srT5>?>UYJuuk9Jq#QHV2`18*fzm1Wc)&`qs^FZ%{)KwhW7QFvlH)^=sj2;Ia zfz}UCqS1&%Z*c(CX3Pnl5;uI1JV+I{oBr~PXLCyxM+k+NF+j?^Qd`Pi14*EP7q=k~ zSocaB#~Jhnt%+h?XsWDE6)g_Br-hqXuaV`N=U@I)=i#?U1*3rh@B*v>0n<1i6e7L( zfZ)$+AaX~lYY)qv$2tx;mbuf=cgC6h=RadX)_=Y zyDC;$qW)NPm*f8Eti`4+yFmw?fCkX?2LpAJLR7Ks1+VGSq&LcK@H+DTB)kY-C+7UXx&J%OGWnFGS3Y7>AR2(V!w2NKSg&b9fW-^N-=-_fo zkCiNBI~j}O3|U?apirB2(+W^B28E~+QfHkqcGD}T!eAF!eL9X@K@3Jv!)XsQogfGAJ;0MM63%u zajb}qig1wWNiGWRvCEmmW~UM%kFFL<#wPmedk3{<7dnybN#MXAYlmjWwt+Fj9z`c8 zgy{~gVt3BNRFQ>G2S~)ahl!+q@WREgjKOfMrLeAVSS`MeaDR9-2w~RMl`l?|eC{ z6Yb$|fJAF}@52iWQlv@dKuNwBjo3K44Ry34Dl&KvY~v9A?U6^ZUB;fn`$*Iz#LVJ| z4hWz77uBKin(`|8!hQ?)k{Wk!8&I_8N26A`Qz_ocG_CW+7H-3PqE1~5lVB24P8Urg zwl2r7w-Mv#=?i-o?1d}{wO0r1Rn zf&A4b&*bRB&U>B;6SaTsmf1Q6++;8#Tp9mVM5njQ<-^D;tl(&qEz1I zFQG(5D)Bi?eW;w-XA3wJ0%=x>Il5Ltinlo{aLNTFZwDL#tR|LqSijoiOE7T26>yae z>m_A!6415aOb8N}PXW8`xd-PMFCKE)^sG`FF0qLZD&q|dhqkvVIff2ewr}3XvD#Ds z97ULW?P$SDucLP@-p^Y{RaYxiEh`0~?S~7(G5O$}<7mz;+#d;-mXx$FS=+_PI6kdd z7Yl5szmSW}sh`$0^Wz%z3$%wv`Z&3Tg1%N8IUxo9Y!XnrSLR5Nm81eWck-Ut{p947 z4(!$8kRoZ0=GgbELlexSo*qK5(bv4J>P5pk6SQqSgX@~TQ(5jix#)2Du zQ`(%tU6ylN1w%Sg6}aM)1)sYI8TILz_ao4->`f;7tTqOT zR|LhEI?(Qv^J~haTBh*oV$G4qr>@^#^_>o4)}0fuye*ca$JsT+ji|=rRV=u|&<<6K zpGwTE(PIat4k}lqUWBcLKkpEM${eP-4bu%Y5}oMVnI ziMsW1{vD2ro*)lrg^o>us_&}mMe1XIXiFeF{EKjN(KLG&=5V-j0H6zsB|e9X6PcpH zV-5q`XHU)4>jT-6E5(+)LlV0vR{!J;wXbEl;5{tUq&Q+~2vaj5Bef9cfwTRj&f9R|04!=~(u-+n|0mq!KFO(i)%k*WNI6+2wcQm^3HEo-@8UF9<|U@1XVd!Z`-L@^Yh zE?ucs06(_( zqP%ntR5rVew*)LXu&hR^4xXt5N$I3$j`uz=4?%-Dm2;DF`pK~0h0>X` zb%n1aEVNw5@$wFz?4D3Ll=x1J{v@o9r#1m;7mjEb5p}D*LY;{tRl{B zw0f*BbvfJ;kdP%qOy7S`I7CvcJV- zT9y2|I%O4=FSy8@k_l)xRH!;9?cx;gnMzcXT6;LW^<@MQ?c7EqYKJ%LLdu;u3Zen| zXigK9SECDoXHLi{1uL+Q0LZyHhL7r|woa%|RRg7dQvvI@LdwxB`1g#lwMLAdw@e4Y zR&7Z~HjTfSvIo7;7;44vJl!qV=&%&5? zA^K=mh%HQQd}H~c5xWPQ8tKB8{6QGjZTXiCQ9_pU*&P7BluM9)O*1^vC#4@a^f~`# zqDtbg*9m3xp*Y1;+{p=&Fhd6gWdp*IDEKQZGsTaKqpwC>cd%j>uvbpuHnm%?vy^f* zQfOv1LV5xuvs3OUFtw|=gieV-Ti&1kLyOdFR4l|kP;A_rwOVpvh`#NpbDwZR=ZyE&CjrdPH?MB#^-<>|+IO3tbfkNzZz(Fmul{l^#MFvUwhgyvrYN6ZwuhdOPM z$&fWfH4o~L2|wZkn$(Q}rU0{Z;+vGR&bo+lXQbTeBmF?F9PJgug<>Lz+m)2ppM%`$ zy~y?`^`r^fc9+{h7u=W_c*9rdJqw8yBp&&o?UBj4C*T zBXU|+!>H|@iBhZ}?p;jjD{pO8`R-hn*P@aIf^|-_6hfl0_~p?eUG-VR7UhCd6*OCC zG-=X#bofS>uPJVA)~zf`D%eGb{UAoVJ)B;r zHEFEFtx4I+qHfr?eRgBXvzs=~AkKE~@B!KC8_6v=_I!Ng5|=ht@S5QVe>jdqK(2u& zCO21B*SiA7d zN92!W?@)I}%zg{HbH1g*=>K?GF!{9~$j=ktY0cNV-*`o+?mGV9-oIJ2yc1k$(;mZi zh6e+hjqe)9J;Y}PX{&QwSMbd(-k>b9?v%o1`bwsM{)LNPp^MlrSOC9{S@Z zexqGy_^WW(Y*@z>yIB^UjBFHa((sxeJw#`nv1xgP$~t4x@(2ywEd#D$Q~PtC3ZGy% zKVHf~OU94!N>fCuX{O?J5aPYKp!k>=Z77B3F5dv*!B?}xx&kYqrufPm-oIN^2Qupy zgLIJ>gIXFT2c>dI){?PEB=)DdJXgj6a6^x=6wy7VfoQ&dA6~S0?B7s;0B{3%bouQ^ zzUmu~Uf~VFN1NY%3`eCt^NrcWr)bmCK<8cR?;1Bgq?!Joui^Wd?f+R`UMu;3mhaqK zz48BC$46H4Emje~=ey`SbW-j6jhprIceDOEm&{VAlF7WwlF_xS{}ovFE5-G{wtDYo z|MyxxD5x70L7a>lAUuH|glU8{;KvO-b=bfQ9pTMu5~)g2X`s&l%R86ls+SabjFHF~ zh@7Q^P8{_+R>^jrnZiMs4ZyI>1%Z8a;Q*1L!tiVc9!#eRg9Rp7JG8G5=hCW$zyr0 z4!435d?~b?=(D-e5(`eFrJw{~deGF3_Mb3|`eynoq9otmn1#f*$w!|?_IlC$c2|Xi z;_qkKIB5U=mX}Kyzv*R2Hzj_^XHu?n=cinnBz0?0*)wrR_x%wVpYYEE?-vSvxB^jI z@wQWuw0*?RiIp$3x~ln=OQ^pBOPhhU3gMi;24An z?jfqb>bGX3URW2LWmg_9-f+4CcIDfCtMTFusw?9&t*84sIqjzq28V9XAh*|VuE4y5 zpcDGHT`N-XTBpC;4fT5{OZN$?v?U;c1+OBXK+e zi_SbIIv_1jUs8gjLm^V0dDl$wTR`jj;3#+g5g z;@DR|0Y8nLqM>T2#xr^k+D1;dg)~3F>HB5VG{82JWmM@ z{_fnm)wxAkyQ|@@KhG`wzA+k12(!V&TY~?5jMzam*-BTx zD2Y}an{fq`m#T4R!zCJ3Sg~{~bvE#p#`uSAV)ZT=DR4Ljh5f1}e6NXxmz!z;|9Q(i zBkQ#L(Wt`(yc0>iV~9S>Esm#}VsurRNk5LV)Ag|$xzX6;%QTjjL{rK(13boq1Ggl% zk`!wXqY*Pcs7>FmR@;APYUB60YFCaJ0r}va4}4I1{rKW%CPwHmz~HmV9u57{60E>S zn9c_qsN60zya&j0$6kwi>HRr@r%UHdXUIXI{eNC-ue9$eEdLB#0M^3U5_uETr7)xU zr-IAvwe}sSAc9$fIf8kV5-WGwt93<|#<72KPN&bL^baD^kUM2dA)d;nH!CZE(~5c( zM_hijea}2hqhabF)AQTy+t%|Wj$zQbW2?&sn>-V$2RL_3yCmg^MbSHW(_YgIGGfOa zw6JPgfL<+W2Dv2DmI`DL(o2}GzJ1#i#}3DM;R<&e8n|cX3JHf?gh@JOo3BbhSIN`- zJj&7eVhO2Xu}U;Nv8(uJK4@UsN}J`|1SVdY90+C7xx0Gz-r5iM9%h@j?=F9Lwt2fT z)#>(AGI?0r*t-M<`*fIu?I`K^JB?Uu!jvBh;%K z79BKNjVzg@gOGf(>ka)In8j;JHKv@{HVr||H!WI|SP;GfJ&l3m!>>jcJ{ubwyWQR0 zjc#}QaqE1m+dbK84dKslt98(gw&U%_jYr{H<9}G$`qE2(p7npX9RIhvvV3#?^VeJd z7BS3R|K%O5sq4P=yxV==>UFz4Sm)gX{`R!neab(#fgb=*=#95qAr_=J?}0D8-_k{W zRcgCqm-6wADwAyKLhp90LMO~=RI$ty%k5&x7J;ZJwqh4sg<`8)t=n4`>f5nh0y*2c z0TdZPKkwA^@IYgK9W2n1|LoAdX8FIewsNN=|5ui8?tlCB*1tsuSC;=$cRC-~w)wyX z5dVb`f3!u51irs){nYLLWbucW_)PJKA0BOx2C?UA5VG8`6#ui^?e6kFJ^be{-R@r) zQG=!~{qtkDckdClxKr7n;9lF{Ubnkf?3px4#iz9Um+`J{7h8VnwoDx` z<%xTm?$J;BM|H2F^V=V`ECdZZCiLa!_Ps5@rTZhlDIjT{5p04bFSb{&b7ZL)z`%6m5&pekQM0+e{8&FlB>*;?M9+Z|YZ$1rajhVYypLB|pxyN{5o^lI$Q zi>-Kj8n2~B4SP3C(y;G>C^2kG@cOYEt{6E2P5i}eLNvhIMhu@ejhJU?EJmy)&&FPN``_?5GiZEF}l z2|~VI?4uDj^FjDw%aZg4f`MvAxB%63o{AJ+>}ug&)9{C0kyNjv;REO~HP_wvOLzOf z+t`MGri(?z|IHrj7dQWB`u|qT`~UaWZv2109{;yD+~+j^xynrIpVoxZ=Ex5ILD;Ki z`8R6ZucrTfB_=Rq{jc3!F8TlNt=ydd`(3R6qV{(cK45Ek+dm5*&~`0(+qR~ZtbC|d z9rEej@RoVkKgONJzlQu@S-HJ@r!49DlK3;rv|Z`Lb5 zQ?8#MsT$fY?|POYVLV&LvsM7D6=kYyTOmf@HoRkx7>X%l>=@!FWr!=)5DO~1D&5(t zM7}U2HOS|s2I{&Kbi1ODx?X`=9I4KLy9{ z^fiD05tTc3hYQVDIBBWtTQjJPEJj38?@#p}S$G=%$DDZ9Pfnp>Ld!UY&FC9yFy9I< zs>lQlipLh_#y+s?byxh!y@H?-b|G zMGQznVdwf8fCSJX=3x7wS3jK8szHao37M*K*>!h83a%}Ceb{Z<#7B)79}j&qoieSP z@iSN!UKrA^q6<^bSDVcB08Ejpas`KB6@bE;(p`T(5A_x()rcpv2|mZVE3hai`?Edp zT5G-ncj{h=IdwNQ6pLg`VTFNJu987xD8Ozd$&maid^1bVHWqpvcjw7WSKT-O%DZtT zo4_}tEoVQ>?mE6cEN%k2vJ;9tf4612XnB>DILWufooxKt2IpFiZ8WJuw-jRccKD5} z97vB0)fW_|Z4@$7@X;=xE93LSjz!*PVhwGXG165^grt8WqQTc1H^Wgi7;9jPOuu$r zS8xV?TNp(1qN;{Aj2{&h4zmb!$jWw=z#wJA-u<=dd;4swg7Qg;h`0Ew>GV{EAAyZ# z>F`=}->Onw@y&5jN!O~It^7#*PyN&w$zt#=@ktCkGF4=UXJ)0?ZbuNAS?Qf!Ny3uc zO2|29?G+fQU)q>5?A2*E-7U9UOR=T{RkFq-SM`y{b{)3kHpx`{-j|A^bW*d z|46*lXqYxHg?Fdh&K|tAR`BhIZ5|MMXVJT0DI-U3Ev`VAZad+T*4ieFX0=-Vmi9-_ zXh?VduARcl|7&OGyWaTE)wMhK%JH8!_y7Eg{@)@o%r}qY+gn)cj_o`UhU0hl?$Ap#4WDDfd)P1u zDkZIYMa`8sw{)YIZc}xu%AWR4nu6Qi-n;FZb_mNo?P7wWXImCb)rnqFltANab+{{W zYhb1}OeIsQVE$YOQ#pSO%sVzrB}S@Xo^F3dn9ormFd*qYfi%uDnMySWR>1=BLKQQ= zrDkYa_bf+rZ)Ix(-uq5bmQC;Fp{>|61;yk+O`okMmY8yy%)LDAw#BBI2U|GIN%_eU%jL7 zzggN2qlwb~2U|NayTgA$z2!#I&n5pUkHq!L|FzX}{KwkL>P`NaUtRudVz{dOr;2mS z|MMNo6e(=cIp0pUiib6NWHppDg`e^#?r9CJD!lx(E$5%GxmVL2+9(Kqeq=Mf8ZD$Z z-l;C7z73J{Z!6cb5!O>SdzD-+3h=r1d3S%%LLKnhv+??*&C<0J=JP}7b+%`8WL{W3 z5S}~L(z#aush$_r;-9EcyyM2-{$=JKa4)XW5)6o0aSOeBTh$<_s|2DHnb6C(XLY~i zCNw%D)j>i3xKd*|n5M9p=b}T*9ww{`Q$Jh(a9!9~E#4`pNM`+BDa>J46r>9mtyg1b zQJXnaXb0x?Zke=fuPzk%m#rVRsud@4kJx|*agB;4{-dX7^FrElA=&OmMTcE@6>Xhq z4RFxiHVm_*wHec;Zp$0=t>NR9-i-qHdy4;+%(>U>|GBqTasGGh=KR;Mt^a*m0I<}( z!s##L7dC3(d2Cd*;c05< z?u>oV-fU((OB;!LKTkn!T3F`p-17AEFg&=oTX#|}+p?Vawrj=^QI)D-1dtuKGu-|` zH#FtQag~41#LvjCO7E<99iWWp?iB-V%-)=NVF-S&I!;#a(nVVzrW|vxS`%iKO>uyd zaq`o>o^`qspg(t^PuZ@mvdjtx>!(K<^-QF~ZV5xRYcHcQ*?u==WvK15(!dwSfXe-7 z&tg3+gR?zi)7MAAqgPe<6|~WLG?%jE$p7rr$BT}yIsez)+jqEfqO7i0wKXq3L$*6d2!{1nl;H*s3i&-8rRNJKd=Tpd`X{ z0Pl9DWbK%~t=SWu`zL+k;Uzztiv)JhrYNIkce)@wjY)wz{iwe8Rh#GLfQ8_&H@b1T z{r&j=zS8mES^EFVz4H0ryUREF|F0I8(RPSz3$G_UV9jP zg*K+H|2ucq?v~;|;pxr!|7-c&|7K~)`!E0cfBk>|@Bi!_o<^C+gy5a}nb!})k-j7& z@Q%}D$XC|_muO~-UZWpR!f_gna!hqEP?nY++&^9M{5U!pZ8iqs2=8rqUhZ|daxqw#QX>Zc%V3PyqTwyu<_u2 zG&}*g`DSA$IUmJ|A7tJ*Oub<;%1;}3w}pWXMcdhF6vjb@w*f#?oxr_NCp$Z7c&BuK z!e(Q2xzTxWzvDmn$AuD_=jZ2bsQ-@9tcaW@#ej&n7Ih3>Zfd@8!!k^|^-k;kb%5BvH8 zj*Ny_E<&jr;1_&z3tpc)@=CR*_o43xKue`cOJfCd3726_2NwQtzcYr_R<+zb?|%Qm zjLW<3clrRQpHk^;g5}kHs|aPBhB;qp+)tD93?9GSf8xOi>$@`HZQ}V}HVy~TaWwGG zqVOCzi=XjWU{%f>K1unmappqiQrBdhN5kl6HxJ5KScTp!08Dz52J~v!~xb zKy(r23E(jbaDdz1ZUV!eh6phWL+C5r^A4h43V*n3n88~Ef)f$8b zP0j*O_Wge9b#T&edH?l4{_p>f=RNU%zVMJ4;?O0>Ji6IG()<7EzxTXX&deXD5paX} zg5Ur9|Kxc+KfA#GO|sDIzS!dz|Kb1kyaSrn3w5ci+)0dgg>spH_dj~xzb#(PC2;@M z^Im2lQ_pKj8j8^0G&K_o&%zilGHwr(pYf(JUTUMImj|678Dt&6y8|^kkGb|+_`WE; z`X2zf$#|TA=#cIb{REL8Cnti!fA~*Up_7T92AL)@M)SY?>%T|A=yl^5$eZu(ru!}Q z)!0~GT}L)L;X3~Z)%h!4kk0ocML*-++1%)V{$D(A^?lzv`8gVo!vJP02y;J*Gnl<> zG93Ep#RC|f|IItZIyhU~a<$X_j(V?V_#YQufAf0jQ$A*pQ~$i?<{gVs(tTO#jvGJA zVAX@#57Y^3CQi~YXpcuHi*K5L%n|9ON z5eEP$OOf@PW|T_3%s{H*>j{2==YN0~D{ZeE1m4koTphCJI*kWMP;O<(4}d$u^Cf&P z6;^>u3~|n_`&FUv>QY2cm*D9VKa~n=+ya(9x^Jz!2Sy4}W} z6R!*1#&0hvCK#66zti@f2{(lmh)WpjS}Ufdh%)z2@P2j&Q#^|UnCj&Xt=(Bt+OE{i6j)73ex^2FgeS*6?7lBdZmhKkKIq z#oe~|Vv>^t0EP|}0$k~Yt^$YRcR?i5yQL^!f_F>mouQzkILZ++z|76lZg2(&g#o_s z<-0VvOI!h7Fnf@vJH$nVPrys&Dm+N44Bws&FPS&0nqfEwCUl1Pw*y1PnF^xgHd&pTUa2~HGlHj;*VaP9EM&&wMjan3LfaM%=*A40Nh{! zcqfP0-QaDyAS}i}lDv2kT~K$k+#7|U_G4K9?1OwD*tXcclBW3h@adCIPYgALw5W#T zh_jZS=EL|%DX~ZQPhmJ89H}8r$?bs_Nt_JG9}RVv z4fj2(+SwRJRz^7whforT{G5#~JrZhUgD4|wk1a}N5fY^mSQf4zjPtfN<~HhR;-WWf zAD;y_5L${SV&^R_p`GPa)WcGv;Vmrevk3w`9f_GI$Ld3V3SUl6c|4)OkrsPsB>Q#4 z*wzLZn_Xzf03|9L%$ULvS;IrRrS6AQNoSf^FZ(FF7Qphb4Br?wx$%0cBc7=52Bl0cM2 zOC-MzVkQn7lrMgqCCK4`vQW!mdz)4zcBX+bJxks*SksTtd(!Y|h)bLYMn(}tdH`MU zHa%eB6CB0%zf8cWJ^&6g0L`Z9FsH?h1yCL%yJj0!QWGz<5cN@NyHa(*_Pqxd~^w5Dbn*JOk9NTLMUp z{9&RR!14=k7KJVU1j}%U?k@3tou@vNiQiAi-atNr+T>1n3`z;`m;sPL-ygiE z&vKbf_yO!WO%H5;MtMeyXi%O!@^|#qwa`{`h1qIDOQWWrU5o}Y^w?`yBMX;{mYn&r zw(r8i9x&82V2&_2^+zY@u;X>1w4^XXn^CjJ*GE=sN1yJTT5J(WTqdpu$!5j20c}-xQG&2PN2ZWlHl;!tSFCgsAER?tbyK(5Mlc6hzX`*?=!za2Skiw7 zEKxGn&M4%WE{?e_lQfHKhgjY#NgEXPG@o$p}UqiSPNNgeC%ppaN;BIzQfY z2|Z|ZwfH*_>$~uiphC0Bhx#CjBKRnb*ItNcX6X6`G68(2v?s>m1~6 z)51TiMUks+=-;}s;I^9}xq_1NIdsYs10r>Z3m%xqBrh&HMUbvvXJO$PUKk(8NOypU zOXo+QqpkakfD-TKv2t?~vJpK11@=7{RxE^+77Vshi2e#D{Y>;8bk6D1M9p^X=skVDcKQR^G}BN!HRF6AiouyrPi5<_6) zVdzIABK>|yr3QmA%c6c1NBIR{(T#ymjC}Mq#1}0ul66IzaF&y5MA}M%eFXgrM$gwS z3zFTuxU|m5)=QLA9pxVMNZaE%ZRtgrjDcxQa@I7X%o ztA-c&xo>++HyfZapqn^QBT5CWAtl0d80EskE94hb7$~9clXdD!27pf;N1J0ZrX`t) zM(vXTZhNnQ%!rsA!vgIWtNiox-CQMlNyr4t{BvN%nR~OxyMhxJJbII~E`8j)Y z$o$O0Dhq}xBhXDzaCm=jlIO`tMv~QDTsttF^2S&)G$K62FGwrIsqWjo5WxsAG&RAb z`~5755j6lZM4dh{LpU;TwLOx7iWTFIQ3iT6t(^{N!)d5g)hzZiGy>ksx}^<8f#O0p zXlUSUOaM93BmnlH5~iUV=b{xg%0W|S+JHiqKMv(jG-7<}NXngZXG3!o0zAM2V-=ue zL7(DPu01y=YOXDNggewkG!*xxVOeC}U^zMo3+QKntU}KW;*ltuu!KU}b7Ytr&!cu* znLFg@@i8zAw63vZsDk+>4xf5o{KCRP!ct`5sGz_?$61T4=izwG5?n|@+deN?>s+9geG{v3i^z(ymJt==QY@pr{9+t#;>{V8IBYNg z{3t()l6{lW`29(72lt^=+tAfMQ;#;EPq(IQD7BWA{rOn1l@sWxS4()0+SI(P=tJJ`!odQTd_#j;{+=exDm>rCdnIlxh$n6kqdw6ckIP;-GdvAGoe^eGPIM{)en_6hAyOp$9x4B+y&y5Oyyb-n7<&bu+IRlp4TWn$(2H>Mr= z*Foo)nB6WE$)IqJltKYEUl519n8`JQQ$j&*nP@J&sSidJ2mO%FZM+BM4Glt6XR#Y- zXOiBll@z5JlX6ZpfiXZywci^#lnaA4$4_bRBSV`Gn#@4g()&rcy@Xy~So-Lla(%9< zzNmLbrAHHxEe13cu}gpvGOsgWe*tNmzI2!ADf5m&{WH23>2aj>4}i^vL5bh#0TQff z6q!na@Syo7VSd1fw}JWY<>9c|km9h&Ha9)=t0=mj-|=Ft0z%qaD)bOze>W86^S)Fh z5nXDe(E8IoP>ymA>No=RKlLw49Y$wlt>S|(ukQ5ax7_Ty_u3xGH_H2qkl)xoP$$|1 zb?af6M?;`YGWjF0mW(r#2qa}GNpdlbPENv9d7p%SsjPC`lQcwMy`fz8t!PgjI^NP) zZ~96Q9T{U*vkZHVhD+W&?fB9LlvtPSxT|(UdRw%>aP5vX>WSt88UFPJ)wzbF&gsU; zRJ%7BJncQiAxbs=cp5Hn0z@W(e4>L#Eah9n4Ti#!ic7f5M z-e$-3il2(NBYDSbg4;`(cZAHXv$DE&)ROOi7Ez-g`27L$GPk^_ExJTAf;4*tcb^(dkUJ+6Y61BO#;ETwIstT@9_e z<0y+3zu|fKMkbz&H|V&L~FZ0GB;P-uyQusf>w7Z+oxUSALSHpg8|M>w(F8kG80j ztX!WqHv18fOCLBqdjQGNs3UHU{b3YGe#*AvIWj49SIJH{Fkh;&uxG+HV1M%*o zUmPCepNH$-p(+D>y+Vg8c?CuLBe_D`%B*n!BvLhAzuB?{HgJb167h{=yD4X?ZhmCL}a#@VdVObeZc(!1re_d<(0N|erpGB>iX6lrG>6X z&#ZfAxf{1V1#ti`7sexuT8{~DYU^&Rc8?KH(ipki;)0_oY|}LU;ytC8IuiRAptut& znB*6)$*vbFzi56t#jNKpyhX(jx?+GAlpxK|C?FRsM70*I7zI&bU@;uvU%e0>v%9}S ze?%f-^Mg1%TCyn`)q}7!OS9CiIc%@W=o;FzniUMB9l=z3Nu2eIl>nzk7a3g*rTn)b zL2Y+D$H-|{7rZrYcr4qFMx!vrMGUo${_B7IU;mw_%njEUaHMJp31VeS=PTiid?hL4 zT!$DJUv$++Vt3_p1?Xf+i%${blOzfB_KzKNXfatUGOZMqMgop%O|xSs8HZYmPe?-0 za7|GCV~#@`z?#nH5&Y7Tx%h(WfYJdpS6~=`RomM(;YR(ia#yvz;Ce^19F14CT3=ai zB~m^ur3ZvJ1tSM+%ji9>(%)fa7r+XUuhChZ-uG4tQEGEqQ&L;6dV38?1c*)lsxj9UB61MdnR^0-1IaASV^3H- z3k1`rlKZe?Kf2zHShcJe^2}w`E#X4c$csBGd30#$P(cu*R8h6`tH~yfPji+rPXdBS zd|nBGh1*0y!S-ns2hF-QWI3s1JP|_<3~4N~Du5ptaix6PWaUfTKOra9AMQBXlm*WW zkW%CohwzKqQ;vq`1No-D?acBWr5##SDzS>+QVap$B3)xk1`@thM)6dElraEd zIAPJnvyr@UuEHOIhojJ8djshli2JlqLrIa*Af5yv#^~LGfd__#!_5L#MdaF{YIOFA z{CBs+(N`|dnut$qRmBXe(g&o!OsgX*4pqq$62MKXD%T_dKhcXWEw^5gXphiLA*#<0rY~d+Iut`w8Xt4x?Xg$Q`i52Bg z5GfoS433H^AJ(F54NUpTSR#WFDZp<`t@1cx=f;_d5;KWqp64!`;IOgAi z)T0NPQ9cMjWKe~obgs6@Xhd~jj&pBYJ|cH zXiOIC5q5f9!r+-$EWl40I~RtVa_HL&4luu zv|2Df^Ki~p!Bxxaf}ejL`o;xR${$iX{ z)Lyh>Tr|=C_JU&P&-9~XX0Mh`XkpCztj-O&N!*pT5CR+hVF8PG2}r!tVG>euqH)wYTY;ei7CWqK zZDxwuew_5xm~KCRcDTQ{_407<*=~Cn06q)9tY3Xv*FUWiPDf!9<{mX1t1s8--{dJF z&QoSlvt%&?LY8jUPT z|HInt<(+vI%X^HQoOlABH;KeCY7UyPLQ6VBibwci+WC%kx zV>A0?_T&BDBT9Ud)u&YOZgosx?jS~2sn+({Ma_98BtZp6-<~B=umMKoA3a{;Px+#W zm-|mPEgJp`SDF0Hu76J8^~IO|JnR47@=EFcm$j8UH|zg8K2|)vM6l}E`F3ZR1Yz9R zD6USnFt@vh+mGLNpFDZ{YVXO;c6WcrgeO&2INb04wYPuJd;91~cXvkF7v25t)3O3mJ1p``<; zyT98zM0YW6M&`UM!ABma4~>zd{N>hitP`d?jJTf15R*Sh{4N7cck&;Bxy z!7bTOtDvR$CUsd%3-muLxdMmoWu7bcQ^ zIBg1%fm%ORgVrMnZJ0VTeh?_qynm=e1f}cLl|wwmqFyl1)iX}z4*m2b#N=8~aNX2- z{RZr4{i~%BT=$x|ad1c;S{%W}mcrD;dO+1~!Ntp`c(TRy`UR!uVxK&inF(#ut?QF^ zax%F*fYZl|eWR-Jtf^~FLF@IK>58=_9BvfrzfJpJIc&eM0x(1VuPvAD|2wNU^8b3} ze@UiPiSbyY%k>M>|e0ukIwi(lG1?*3B__E zsWKDpq9Eu9k=bqqaVQXKS+gW5^V}EBh1GwRDTrCMf1Jx6oMbB~rXQ8A=!^8C(OH72 zDiJm&$&j8WX>=0du}>rHc=PQo%6gmi13>GSD*nt>GYC0(HbtIN-?krlh@Rdlb8JA)@*}4uE^d|%}wNIEtTNg6-20ysHgOASyvbITWkd#N^VFRQf>TSVQcAzx1Z z^9>kZ#r-$){^zyZCI8>b&Hb;}^AT=(i)H=yZF|4)doA$IYxX{UUt=Q}D!N&lzeD~1 zD=~o?>wmR;|NH97?bVz0|EsKjR|kh5WyLv;MDf{TI_4(Q#(wc5ZnuRHCEGtBvI7A}n+~Y)ZU9{Ltb3 zod=@qZ@8tRY(GhIEAfEyRwYcz0FHfxEUN~_`LT3TuF5iWj$WZf`)eiK=&-(pIr=In z`*jeYaZ~ZWrDGS3Q@Ci=3@|&XYi%mjFlxSC%EJ3t;(@A*4wiH>$h(pcf=|yi zo8>f81cS{hsmv#v*PR)Cp}GuzFlvfYigWSG>}49eN+1{zt~fZQk#aX5O4PHdvg8tE zhtihl5y9>l2R;rr9#oXkmlqGLM`}Xs=IKPs6|dJ91v1?06XW2L-$^!H~5HQ^dge zZKfPgD`F_WpPpm{nYJ4a%kyf1`t00C+^r|k`|v)!doV|0B)gK^m-_5U)wSJ1#rdTq zNqS?C=Gn@B;(m3=F<6J~#ZjxX?sayDP1z4QkcIQrP%etBwYdMa~SorA<41aPlF?-hgwyy--j1!BHtM9Tu^q1L0_>>ZTyB&6-6ho zxg=*rcC%VI{Lj)Hu&5$Y=fI){sdm9;!7J}6Z+cel2~+``tPc1+PvOws#!O2o^JUn0+*NU@KB(SVi@a7jjZqMeIQ@XMxzTcSGITsLn}HSpmno>YRKv zbeXQYv)z@Igcxe_22>+Oq*8tS-KtO|%<7C2Gxj!(5AOP$o67%Z-Ew!$@xQlM?%uhH z|NYhDe=Jk5<*JkA^8k)yq2v4<#z9&0FpHC<*O$Y8Rbd;Po|+*%!2|F0p2cxW*X)?k z#|`K4Te-+_Lvi6e8c??Wq|XUZ^$~H3@nNy5j5+EFer}oE?P6Ejc}b+mpYag9{OBmt zgmc@_EfY0~uf!jBqRKATlq;cR=XX^RxtLu=u1Hn)4%MTFO{&t^tRtK<`=#J-yiD_< zBFO>fLWIj!q9L!Yg2Zt$m}FMITcFGk9kIcz;gE8VuzvNJI3=!vQ+*EJxdzCw+bdCX zOUy#ePOvAjYqUaT!L&;V$O~-RVh4^Pl3B&1{c_PVD*F;c&X<8&cfyvD@GV!jStTs)3kwuyb%`(ZtGW=bjuCcb#FCsdFY%alH6N^`711=qtmYnR2e#UNa=Os+a68J4 z&YWp`SaSE!KS5VR!RoLy#KyWMxo0S~MaA-F-~Knb|8J*WzFz(R&b{T^W&Qsq{_nc= zf5+!4C;Y;e?b~e?jRd}dYd&Lv)C0;K030&V2{oO2#i!d4-k&-0-m1Qg)qUr#q^PuX3M!p{=0}`1Q|`^Ggz=VN z8qh!obRJUDUsB5Y;lP*cBQGRdvKm-M%pH`sSB!;_%ib`{{^Hz~GE<4W zJV(vx_Jlohl#Hs1Xb@M9rYV^W(`*5A-&Y;&$i}8>gUXxXs0^W*+Mw9g742&Bbf|M4 z$b8wFVm@{Yr3Uo=5;amERaDy&Iryh{f(u#q1J(eZ%Tk$Q>F~xuUR;LE@haIM-H;>Z z%IDZb8Lz)uysu;yVK*Y3Z@hw^bm}9MY8Pg$DS{WeIhIJ#`mn~UXpCX`xeW=&_fu<5 z&`E5$AjUzUUA6@LNuFT7&H>&2DhU`1)2lPq;SPS)bgRC|Z8b$}liPA_$RLaEuD zphVRT$Af%Gs>Dy3N0ww_4x7G1Z-j=J!?!ZPCMI$DZ$99MZ7)GIKz*O}ATb-mk;X+e?Ui*hjy_0`ln&!5&orxDwh^0lycLg^OW z+EDGnFffB~K8&9wIbQcW1?GrK5PG~gGl_@8!)Y~8pTJCJlF^>#7=wTUM^VzP7{@|7 zp;V;4bN!H?0c#FIbDt62ic`~TCXtc{py<6_FNNxTL35gt&8}P8=X~b0w$nb>oOaHC z2w7jV{kMF3t-}6Wxv~GQ*Zy;(j#`D#q*fsUX+8td31W2b0x?mA^JkNp=XMaX6y@qN zeKCl-$b`~H>pCJRIlngEI&dMk#;QB46hk1Z6%)nU&8bY?$nZ_ej=o?WUgnEWrXFB+ z@-)wNkIF;KX{i-|8LX!|?+)J@w@^?3%E;DZHq?oAOeUIQU{}kV&O>Xgh61+cGGVqE zoEzowN=m(E!zuD>E88iA!btc3OA{$n|=ef`!vQ)Bv-oD znLQSZv~wVIZu0Wz8{1iCO`CTV%rnx+(294~v7Y!MzbMBjTawd_q^?@gB+89D-CUGe zOTN=qlEb@PS_Q0hGcJ#t4=wv@$E%}dvCye#S>;T8bn3&i%)aW7J!fP|S~;srxS_f* z6}4PI8?M|eMTjq|6bIO(8y3#T2FAEhMw4NmB40JyyQn6z8B?d;*$zO-8wJ0e>{;U( z3mWKN+w;vLhAkJnMb}2Na*}K-vrg1<$vxuQjT(R77y`GvCGW9ZM5*mcx&wCIYYZ>& zTf;5oz{FCW%3?Az$b3{mkc=oCO=)+Q=jMTxHf-7Z*{nG$z^w6MJ#SQouZkK}9oK8S zU61_i)x_6+ss&s|vSnhA?L}Tn?N+T+*td}Iem-BO=FqP44XF#`jXkRTL%Kgw^eMZh z?5$h%Xi8=iLO^)~K+H64Xf-mZrC}EfILbo3jd8PE_jh;xpATzav;DWSvQlCHtt{Wz zf4^4z-xL#Un#Z=31G1i@ReE$wnL5RPQgHN^wd|r^l<<|6I&q~jDhyjj*FJFleJV_7 zhqTo)3Zen&DtK~e2-pZb6V#gfPY8ab?kCbAVbc<1QUU9?Lduba{Cm#v zgu?d^i-XwWGA2YswewIZMJ;aUp`|1pnvt%O6BfI;krRIl{C|>ul@t&&{C}$z`QPuZ z-o$@gGyk`bw6tW0v0f0&z91U+Rx*A0yM5WQTsj?iRo5c7ub3K`BC1VhUSNWGagJ@4sY?^Ak znGYUI(#LZxEfYMO3zbj84`?>&tMd?#m-~AytlXz@2Wp^(`go(d#vgh^_uCJA6!0qU zBO+TdNWu(n{gOx!fD^@ZIT-G~JiZu*DTW=21bhh`E>q|pCLpWdhulxRyg3Od|Fs8o zK&THf4COpjcQWEm8V8p0jVEU3+oAC&cSg#cKGF!(DgYE=VM%^%Sp`D-^~BZxbc))> zE8IAFIS6j+s>S(6?DsaiUwTezy!!KS1npyaA*@031vg^%Q@Di59?l#zu`XsTInDv) zd`e&N^>il$-8zr$6fhstvBy&IbOkSy;}KM#JzJkWpn}a=yqn@|Ft9K$h$QZ%!0ljUMGJwj`G9X-V_4x#csC zSHXajAvmsYx$JZa_U5|bvZaSsoX5z Xo6pVX=5zD;{eJ#`gcCk!01N^Enm}j* literal 0 HcmV?d00001 diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 9f1337ba18..8bf3961d55 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -13,7 +13,7 @@ import { css, html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; -import type { Guard, IRoute } from '@umbraco-cms/internal/router'; +import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -89,7 +89,7 @@ export class UmbAppElement extends UmbLitElement { // we have collected whilst coming up through the DOM // and pass it back down to the callback in // the component that originally fired the event - if(event.callback){ + if (event.callback) { event.callback(event.instances); } @@ -97,12 +97,11 @@ export class UmbAppElement extends UmbLitElement { // Why? Can't send contexts data directly - browser seems to not serialize it and says its null // But a simple object works fine for browser extension to consume const data = { - contexts: contextData(event.instances) + contexts: contextData(event.instances), }; // Emit this new event for the browser extension to listen for this.dispatchEvent(new CustomEvent('umb:debug-contexts:data', { detail: data, bubbles: true })); - }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts index 73abc9e6ef..78b74edc56 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/document-type-workspace.element.ts @@ -3,7 +3,7 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDocumentTypeWorkspaceContext } from './document-type-workspace.context'; import { UmbDocumentTypeWorkspaceEditorElement } from './document-type-workspace-editor.element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-document-type-workspace') @@ -14,11 +14,11 @@ export class UmbDocumentTypeWorkspaceElement extends UmbLitElement { #element = new UmbDocumentTypeWorkspaceEditorElement(); @state() - _routes = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts index 7054f9502c..b09416588d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.ts @@ -4,10 +4,12 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context'; import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import type { UmbDocumentTypeWorkspaceViewEditTabElement } from './document-type-workspace-view-edit-tab.element'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-document-type-workspace-view-edit') export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { @@ -82,7 +84,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = []; + const routes: IRoute[] = []; if (this._tabs.length > 0) { this._tabs?.forEach((tab) => { @@ -90,9 +92,9 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: `tab/${encodeURI(tabName || '').toString()}`, component: () => import('./document-type-workspace-view-edit-tab.element'), - setup: (component: Promise) => { - (component as any).tabName = tabName; - (component as any).ownerTabId = tab.id; + setup: (component) => { + (component as UmbDocumentTypeWorkspaceViewEditTabElement).tabName = tabName ?? ''; + (component as UmbDocumentTypeWorkspaceViewEditTabElement).ownerTabId = tab.id; }, }); }); @@ -102,8 +104,8 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: '', component: () => import('./document-type-workspace-view-edit-tab.element'), - setup: (component: Promise) => { - (component as any).noTabName = true; + setup: (component) => { + (component as UmbDocumentTypeWorkspaceViewEditTabElement).noTabName = true; }, }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-editor.element.ts index 64c78a268e..dd2f4c5fdf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace-editor.element.ts @@ -1,12 +1,12 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { ActiveVariant } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; import { UmbDocumentWorkspaceSplitViewElement } from './document-workspace-split-view.element'; -import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import '../../../shared/components/workspace/workspace-variant/workspace-variant.element'; import { VariantModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -86,7 +86,7 @@ export class UmbDocumentWorkspaceEditorElement extends UmbLitElement { routes.push({ path: new UmbVariantId(variantA).toString() + '_&_' + new UmbVariantId(variantB).toString(), component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + setup: (_component, info) => { // Set split view/active info.. const variantSplit = info.match.fragments.consumed.split('_&_'); variantSplit.forEach((part, index) => { @@ -102,7 +102,7 @@ export class UmbDocumentWorkspaceEditorElement extends UmbLitElement { routes.push({ path: new UmbVariantId(variant).toString(), component: this.splitViewElement, - setup: (component: HTMLElement | Promise, info: IRoutingInfo) => { + setup: (_component, info) => { // cause we might come from a split-view, we need to reset index 1. this.#workspaceContext?.splitView.removeActiveVariant(1); this._handleVariantFolderPart(0, info.match.fragments.consumed); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts index 67656c3380..19301cf90a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbDocumentWorkspaceContext } from './document-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './document-workspace-editor.element'; @@ -19,7 +19,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { { path: 'create/:parentId/:documentTypeKey', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: async (_component, info) => { // TODO: use parent id: // TODO: Notice the perspective of permissions here, we need to check if the user has access to create a document of this type under this parent? const parentId = info.match.params.parentId; @@ -30,7 +30,7 @@ export class UmbDocumentWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts index 2a13eb9cc8..e1b10e8229 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts @@ -4,10 +4,11 @@ import { customElement, state } from 'lit/decorators.js'; import { repeat } from 'lit/directives/repeat.js'; import { UmbDocumentWorkspaceContext } from '../../document-workspace.context'; import { UmbWorkspaceContainerStructureHelper } from '../../../../../shared/components/workspace/workspace-context/workspace-container-structure-helper.class'; -import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent, IRoute } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; +import { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-document-workspace-view-edit') export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { @@ -72,7 +73,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = []; + const routes: IRoute[] = []; if (this._tabs.length > 0) { this._tabs?.forEach((tab) => { @@ -80,7 +81,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: `tab/${encodeURI(tabName || '').toString()}`, component: () => import('./document-workspace-view-edit-tab.element'), - setup: (component: Promise) => { + setup: (component) => { (component as any).tabName = tabName; }, }); @@ -91,7 +92,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement { routes.push({ path: '', component: () => import('./document-workspace-view-edit-tab.element'), - setup: (component: Promise) => { + setup: (component) => { (component as any).noTabName = true; }, }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts index 44b19e7eae..a2f98ec9c6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbWorkspaceMediaTypeContext } from './media-type-workspace.context'; import { UmbMediaTypeWorkspaceEditElement } from './media-type-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-media-type-workspace') export class UmbMediaTypeWorkspaceElement extends UmbLitElement { @@ -27,11 +27,11 @@ export class UmbMediaTypeWorkspaceElement extends UmbLitElement { #element = new UmbMediaTypeWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts index eb12659f04..aab70442d0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.element.ts @@ -3,7 +3,7 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbMediaWorkspaceContext } from './media-workspace.context'; import { UmbMediaWorkspaceEditElement } from './media-workspace-edit.element'; -import { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-media-workspace') @@ -27,7 +27,7 @@ export class UmbMediaWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts index d97a7067e1..8639559f35 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbWorkspaceMemberGroupContext } from './member-group-workspace.context'; import { UmbMemberGroupWorkspaceEditElement } from './member-group-workspace-edit.element'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** @@ -27,11 +27,11 @@ export class UmbMemberGroupWorkspaceElement extends UmbLitElement { #element = new UmbMemberGroupWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts index 830a0ff7cd..f7cbc5f788 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbMemberTypeWorkspaceEditElement } from './member-type-workspace-edit.element'; import { UmbMemberTypeWorkspaceContext } from './member-type-workspace.context'; +import { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-type-workspace') @@ -23,11 +23,11 @@ export class UmbMemberTypeWorkspaceElement extends UmbLitElement { #element = new UmbMemberTypeWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts index 57e37d3dc3..dbe2e140cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/workspace/member-workspace.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbMemberWorkspaceEditElement } from './member-workspace-edit.element'; import { UmbMemberWorkspaceContext } from './member-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-member-workspace') @@ -23,11 +23,11 @@ export class UmbMemberWorkspaceElement extends UmbLitElement { #element = new UmbMemberWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts index 75414bd547..4f22319e4f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/package-section/views/created/created-packages-section-view.element.ts @@ -1,6 +1,6 @@ import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import type { ManifestTree, ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -23,7 +23,7 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = [ + const routes: IRoute[] = [ { path: 'overview', component: () => import('./packages-created-overview.element'), @@ -35,10 +35,10 @@ export class UmbCreatedPackagesSectionViewElement extends UmbLitElement { routes.push({ path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el: HTMLElement) => { - (el as any).entityId = info.match.params.id; - }); + setup: (component, info) => { + if (component) { + (component as any).entityId = info.match.params.id; + } }, }); routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts index 4fdafa6210..3c9b8fe4db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/examine-management/dashboard-examine-management.element.ts @@ -3,7 +3,8 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbDashboardExamineIndexElement } from './views/section-view-examine-indexers'; import { UmbDashboardExamineSearcherElement } from './views/section-view-examine-searchers'; -import type { IRoute, IRoutingInfo, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -26,7 +27,7 @@ export class UmbDashboardExamineManagementElement extends UmbLitElement { { path: `/index/:indexerName`, component: () => import('./views/section-view-examine-indexers'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardExamineIndexElement; element.indexName = info.match.params.indexerName; }, @@ -34,7 +35,7 @@ export class UmbDashboardExamineManagementElement extends UmbLitElement { { path: `/searcher/:searcherName`, component: () => import('./views/section-view-examine-searchers'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardExamineSearcherElement; element.searcherName = info.match.params.searcherName; }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts index 1828d225a1..cce292cb19 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/dashboard-health-check.element.ts @@ -6,7 +6,7 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, } from './health-check-dashboard.context'; import { UmbHealthCheckContext } from './health-check.context'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; @@ -20,7 +20,7 @@ export class UmbDashboardHealthCheckElement extends UmbLitElement { { path: `/:groupName`, component: () => import('./views/health-check-group.element'), - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const element = component as UmbDashboardHealthCheckGroupElement; element.groupName = decodeURI(info.match.params.groupName); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts index a298ec6672..53296360cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/health-check/views/health-check-group-box-overview.element.ts @@ -6,7 +6,7 @@ import { UMB_HEALTHCHECK_DASHBOARD_CONTEXT_TOKEN, UmbHealthCheckDashboardContext, } from '../health-check-dashboard.context'; -import { ensureSlash, path } from '@umbraco-cms/internal/router'; +import { ensureSlash, path } from '@umbraco-cms/backoffice/router'; import type { ManifestHealthCheck } from '@umbraco-cms/backoffice/extensions-registry'; import { HealthCheckGroupWithResultResponseModel, StatusResultTypeModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 93455e437f..0ea7ef470f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbDataTypeWorkspaceContext } from './data-type-workspace.context'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './data-type-workspace-edit.element'; @@ -20,7 +20,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { { path: 'create/:parentId', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const parentId = info.match.params.parentId; this.#workspaceContext.createScaffold(parentId); }, @@ -28,7 +28,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts index 7574254fbe..ebf8eec688 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.element.ts @@ -1,8 +1,8 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbLanguageWorkspaceContext } from './language-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -18,18 +18,18 @@ export class UmbLanguageWorkspaceElement extends UmbLitElement { #routerPath? = ''; @state() - _routes = [ + _routes: IRoute[] = [ { path: 'edit/:isoCode', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { this.#languageWorkspaceContext.load(info.match.params.isoCode); }, }, { path: 'create', component: () => this.#element, - setup: async () => { + setup: () => { this.#languageWorkspaceContext.createScaffold(); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts index 4ae57c93cd..cab197ce92 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts @@ -1,7 +1,6 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, property, queryAll, state } from 'lit/decorators.js'; -import { query } from 'router-slot'; import { LogViewerDateRange, UmbLogViewerWorkspaceContext, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 46382e5690..5a009a7deb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -2,7 +2,6 @@ import './components'; import { map } from 'rxjs'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { repeat } from 'lit/directives/repeat.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../logviewer.context'; @@ -10,6 +9,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestWorkspaceView, ManifestWorkspaceViewCollection } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; //TODO make uui-input accept min and max values @customElement('umb-logviewer-workspace') @@ -51,7 +51,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { private _workspaceViews: Array = []; @state() - private _routes: any[] = []; + private _routes: IRoute[] = []; @state() private _activePath?: string; @@ -104,13 +104,8 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { component: () => { return createExtensionElement(view); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = view)); - } else { - (component as any).manifest = view; - } + setup: (component) => { + (component as any).manifest = view; }, }; }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts index 3827c75a7e..eb96b21baf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.element.ts @@ -3,7 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbRelationTypeWorkspaceContext } from './relation-type-workspace.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbRouterSlotInitEvent, IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import './relation-type-workspace-edit.element'; @@ -27,7 +28,7 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { { path: 'create/:parentId', component: () => this.#element, - setup: async (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const parentId = info.match.params.parentId; this.#workspaceContext.createScaffold(parentId); }, @@ -35,7 +36,7 @@ export class UmbRelationTypeWorkspaceElement extends UmbLitElement { { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts index 656f0c03e6..9b883b69bd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.element.ts @@ -9,6 +9,7 @@ import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/back import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-collection') export class UmbCollectionElement extends UmbLitElement { @@ -30,7 +31,7 @@ export class UmbCollectionElement extends UmbLitElement { ]; @state() - private _routes: Array = []; + private _routes: Array = []; @state() private _selection?: Array | null; @@ -95,7 +96,7 @@ export class UmbCollectionElement extends UmbLitElement { this._routes.push({ path: '**', - redirectTo: views?.[0]?.meta.pathName, + redirectTo: views?.[0]?.meta.pathName ?? '/', }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index 2654b4ed12..031d20c953 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -5,6 +5,7 @@ import { state } from 'lit/decorators.js'; import { UmbSectionElement } from '../section/section.element'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section/section.context'; import { UmbBackofficeContext, UMB_BACKOFFICE_CONTEXT_TOKEN } from './backoffice.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import type { UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -24,7 +25,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { ]; @state() - private _routes: Array = []; + private _routes: Array = []; @state() private _sections: Array = []; @@ -63,12 +64,10 @@ export class UmbBackofficeMainElement extends UmbLitElement { return { path: this._routePrefix + section.meta.pathname, component: () => createExtensionElementOrFallback(section, 'umb-section'), - setup: (component: Promise) => { - component.then((element) => { - element.manifest = section; - }); + setup: (component) => { + (component as UmbSectionElement).manifest = section; }, - }; + } satisfies IRoute; }); this._routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts index 890f27e0a9..a75bcc02fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-views/section-views.element.ts @@ -3,7 +3,8 @@ import { css, html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { map, of } from 'rxjs'; import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../section.context'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import type { ManifestDashboard, ManifestSectionView } from '@umbraco-cms/backoffice/extensions-registry'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -21,7 +22,7 @@ export class UmbSectionViewsElement extends UmbLitElement { display: flex; justify-content: space-between; align-items: center; - height:var(--umb-header-layout-height); + height: var(--umb-header-layout-height); box-sizing: border-box; } @@ -52,7 +53,7 @@ export class UmbSectionViewsElement extends UmbLitElement { private _activePath?: string; @state() - private _routes: Array = []; + private _routes: Array = []; private _sectionContext?: UmbSectionContext; private _extensionsObserver?: UmbObserverController; 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 3cc798c083..2a9b530b68 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 @@ -6,7 +6,7 @@ import type { UmbWorkspaceElement } from '../workspace/workspace.element'; import type { UmbSectionViewsElement } from './section-views/section-views.element'; import type { ManifestSection, ManifestSectionSidebarApp } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; -import type { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import './section-sidebar-menu/section-sidebar-menu.element'; @@ -37,7 +37,7 @@ export class UmbSectionElement extends UmbLitElement { public manifest?: ManifestSection; @state() - private _routes?: Array; + private _routes?: Array; @state() private _menus?: Array>; @@ -55,15 +55,15 @@ export class UmbSectionElement extends UmbLitElement { { path: 'workspace/:entityType', component: () => import('../workspace/workspace.element'), - setup: (element: UmbWorkspaceElement, info: IRoutingInfo) => { - element.entityType = info.match.params.entityType; + setup: (element, info) => { + (element as UmbWorkspaceElement).entityType = info.match.params.entityType; }, }, { path: '**', component: () => import('../section/section-views/section-views.element'), - setup: (element: UmbSectionViewsElement) => { - element.sectionAlias = this.manifest?.alias; + setup: (element) => { + (element as UmbSectionViewsElement).sectionAlias = this.manifest?.alias; }, }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index 1c430fa534..91f0a07438 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -4,7 +4,8 @@ import { customElement, property, state } from 'lit/decorators.js'; import { map } from 'rxjs'; import { repeat } from 'lit/directives/repeat.js'; -import type { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; import { createExtensionElement, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import type { ManifestWorkspaceView, @@ -97,7 +98,7 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { private _workspaceViews: Array = []; @state() - private _routes?: any[]; + private _routes?: IRoute[]; @state() private _routerPath?: string; @@ -130,19 +131,21 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { if (view.type === 'workspaceViewCollection') { return import( '../../../../shared/components/workspace/workspace-content/views/collection/workspace-view-collection.element' - ); + ) as unknown as Promise; } return createExtensionElement(view); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = view)); + setup: (component, info) => { + if (component && 'manifest' in component) { + component.manifest = view; } else { - (component as any).manifest = view; + console.group(`[UmbWorkspaceLayout] Failed to setup component for route: ${info.match.route.path}`); + console.log('Matched route', info.match.route); + console.error('Missing property "manifest" on component', component); + console.groupEnd(); } }, - }; + } satisfies IRoute; }); // If we have a post fix then we need to add a direct from the empty url of the split-view-index: diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts index e5d20fa8f0..682577eec5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid-inner-test.element.ts @@ -1,9 +1,9 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { IRoute, IRoutingInfo } from 'router-slot'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; /** * @element umb-property-editor-ui-block-grid-inner-test @@ -28,7 +28,7 @@ export class UmbPropertyEditorUIBlockGridInnerTestElement extends UmbLitElement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route inner', info); if (component instanceof HTMLElement) { (component as any).name = 'inner-1'; @@ -41,7 +41,7 @@ export class UmbPropertyEditorUIBlockGridInnerTestElement extends UmbLitElement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route inner', info); if (component instanceof HTMLElement) { (component as any).name = 'inner-2'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts index 8939911174..774bdc20b0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-editors/uis/block-grid/property-editor-ui-block-grid.element.ts @@ -1,11 +1,11 @@ import { html } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { IRoute, IRoutingInfo } from 'router-slot'; import { UmbVariantId } from '../../../../shared/variants/variant-id.class'; import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../../../../shared/components/workspace/workspace-variant/workspace-variant.context'; import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../../shared/components/workspace-property/workspace-property.context'; -import { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; +import type { UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/internal/router'; import { UmbPropertyEditorElement } from '@umbraco-cms/backoffice/property-editor'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -56,7 +56,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route', info); if (component instanceof HTMLElement) { (component as any).name = 'block-grid-1'; @@ -69,7 +69,7 @@ export class UmbPropertyEditorUIBlockGridElement extends UmbLitElement implement component: () => { return import('./property-editor-ui-block-grid-inner-test.element'); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { console.log('block route', info); if (component instanceof HTMLElement) { (component as any).name = 'block-grid-2'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts index a0e2ba7e85..0d9d3487c1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.element.ts @@ -1,10 +1,10 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { serverFilePathFromUrlFriendlyPath } from '../../utils'; import { UmbStylesheetWorkspaceEditElement } from './stylesheet-workspace-edit.element'; import { UmbStylesheetWorkspaceContext } from './stylesheet-workspace.context'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-stylesheet-workspace') @@ -24,11 +24,11 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement { #element = new UmbStylesheetWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:path', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const path = info.match.params.path; const serverPath = serverFilePathFromUrlFriendlyPath(path); this.#workspaceContext.load(serverPath); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts index 22303e180b..68d93ba9c5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.element.ts @@ -1,9 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UmbDictionaryWorkspaceContext } from './dictionary-workspace.context'; import { UmbDictionaryWorkspaceEditElement } from './dictionary-workspace-edit.element'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-dictionary-workspace') @@ -14,11 +14,11 @@ export class UmbWorkspaceDictionaryElement extends UmbLitElement { #element = new UmbDictionaryWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, 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 aae4ff5fe6..e27f918e93 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 @@ -7,7 +7,7 @@ import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; import type { ManifestWorkspaceAction } from '@umbraco-cms/backoffice/extensions-registry'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; @customElement('umb-user-group-workspace') export class UmbUserGroupWorkspaceElement extends UmbLitElement { @@ -47,11 +47,11 @@ export class UmbUserGroupWorkspaceElement extends UmbLitElement { } @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (_component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index 3523c9c190..2cebe636ce 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts @@ -2,7 +2,7 @@ import { css, html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, state } from 'lit/decorators.js'; import { UmbUserStore, UMB_USER_STORE_CONTEXT_TOKEN } from '../../../users/repository/user.store'; -import type { IRoute, IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; import './list-view-layouts/table/workspace-view-users-table.element'; @@ -65,7 +65,7 @@ export class UmbSectionViewUsersElement extends UmbLitElement { } private _createRoutes() { - const routes: any[] = [ + const routes: IRoute[] = [ { path: 'overview', component: () => import('./workspace-view-users-overview.element'), @@ -77,10 +77,10 @@ export class UmbSectionViewUsersElement extends UmbLitElement { routes.push({ path: `${workspace.meta.entityType}/:id`, component: () => createExtensionElement(workspace), - setup: (component: Promise, info: IRoutingInfo) => { - component.then((el: HTMLElement) => { - (el as any).entityId = info.match.params.id; - }); + setup: (component, info) => { + if (component) { + (component as any).entityId = info.match.params.id; + } }, }); routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts index 5aa001acf5..b770de3c2b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/workspace-view-users-overview.element.ts @@ -9,7 +9,7 @@ import { UMB_INVITE_USER_MODAL, UMB_CREATE_USER_MODAL, } from '@umbraco-cms/backoffice/modal'; -import type { IRoute } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts index 29f5f99569..7cfea7028f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/workspace/user-workspace.element.ts @@ -4,7 +4,7 @@ import { customElement, state } from 'lit/decorators.js'; import { UmbUserWorkspaceContext } from './user-workspace.context'; import { UmbUserWorkspaceEditElement } from './user-workspace-edit.element'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { IRoutingInfo } from '@umbraco-cms/internal/router'; +import type { IRoute } from '@umbraco-cms/backoffice/router'; import '../../../shared/components/input-user-group/input-user-group.element'; import '../../../shared/property-editors/uis/document-picker/property-editor-ui-document-picker.element'; @@ -18,11 +18,11 @@ export class UmbUserWorkspaceElement extends UmbLitElement { #element = new UmbUserWorkspaceEditElement(); @state() - _routes: any[] = [ + _routes: IRoute[] = [ { path: 'edit/:id', component: () => this.#element, - setup: (component: HTMLElement, info: IRoutingInfo) => { + setup: (component, info) => { const id = info.match.params.id; this.#workspaceContext.load(id); }, diff --git a/src/Umbraco.Web.UI.Client/src/core/router/index.ts b/src/Umbraco.Web.UI.Client/src/core/router/index.ts index d3c5361842..fbbe29d96c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/index.ts @@ -1,4 +1,3 @@ -export * from 'router-slot'; export * from './router-slot.element'; export * from './router-slot-change.event'; export * from './router-slot-init.event'; diff --git a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts index a7c2fbf904..d055f41278 100644 --- a/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/router/router-slot.element.ts @@ -1,5 +1,5 @@ -import type { IRoute } from 'router-slot/model'; -import { RouterSlot } from 'router-slot'; +// eslint-disable-next-line local-rules/no-external-imports +import { RouterSlot } from 'router-slot/router-slot'; import { css, html, PropertyValueMap } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { UmbLitElement } from '../lit-element'; @@ -36,10 +36,10 @@ export class UmbRouterSlotElement extends UmbLitElement { @property() public get routes(): UmbRoute[] | undefined { - return (this.#router as any).routes; + return this.#router.routes; } public set routes(value: UmbRoute[] | undefined) { - this.#router.routes = (value as IRoute[]) || []; + this.#router.routes = value || []; } private _routerPath?: string; @@ -57,7 +57,7 @@ export class UmbRouterSlotElement extends UmbLitElement { } #routeContext = new UmbRouteContext(this, (contextRoutes) => { - (this.#modalRouter as any).routes = contextRoutes; + this.#modalRouter.routes = contextRoutes; // Force a render? this.#modalRouter.render(); }); From 27499d13446748b995d256647c2ae59771b2f3bc Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:47:44 +0200 Subject: [PATCH 544/550] add local eslint rule to force certain imports from router-slot --- src/Umbraco.Web.UI.Client/.eslintrc.json | 1 + .../eslint-local-rules.cjs | 35 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 12235e837e..88caa66773 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -43,6 +43,7 @@ "local-rules/prefer-import-aliases": "error", "local-rules/enforce-element-suffix-on-element-class-name": "error", "local-rules/prefer-umbraco-cms-imports": "error", + "local-rules/no-external-imports": "error", "@typescript-eslint/no-non-null-assertion": "off" }, "settings": { diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index cf5a8913b1..ed1c5036cd 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -43,7 +43,7 @@ module.exports = { type: 'suggestion', docs: { description: - 'Ensures that any API resources from the `@umbraco-cms/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', + 'Ensures that any API resources from the `@umbraco-cms/backoffice/backend-api` module are not used directly. Instead you should use the `tryExecuteAndNotify` function from the `@umbraco-cms/resources` module.', category: 'Best Practices', recommended: true, }, @@ -107,6 +107,7 @@ module.exports = { }; }, }, + /** @type {import('eslint').Rule.RuleModule} */ 'enforce-element-suffix-on-element-class-name': { meta: { @@ -138,6 +139,7 @@ module.exports = { }; }, }, + // TODO: Its not bullet proof, but it will catch most/some cases. /** @type {import('eslint').Rule.RuleModule} */ 'prefer-umbraco-cms-imports': { @@ -172,4 +174,35 @@ module.exports = { }; }, }, + + /** @type {import('eslint').Rule.RuleModule} */ + 'no-external-imports': { + meta: { + type: 'problem', + docs: { + description: + 'Ensures that the application does not rely on imports from external packages. Instead, use the @umbraco-cms/backoffice libs.', + recommended: true, + }, + fixable: 'code', + schema: [], + }, + create: function (context) { + return { + ImportDeclaration: function (node) { + // Check for imports from "router-slot" + if (node.source.value.startsWith('router-slot')) { + context.report({ + node, + message: + 'Use the `@umbraco-cms/backoffice/router` package instead of importing directly from "router-slot" because we might change that dependency in the future.', + fix: (fixer) => { + return fixer.replaceTextRange(node.source.range, `'@umbraco-cms/backoffice/router'`); + }, + }); + } + }, + }; + }, + }, }; From a5c8024ab7b230e54778b35ec2ebc720f9be133d Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 08:36:42 +0200 Subject: [PATCH 545/550] remove ts5 features since test tool does not support it yet --- .../components/backoffice-frame/backoffice-main.element.ts | 2 +- .../workspace/workspace-layout/workspace-layout.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index 031d20c953..59ab21030a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -67,7 +67,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { setup: (component) => { (component as UmbSectionElement).manifest = section; }, - } satisfies IRoute; + }; }); this._routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index 91f0a07438..48c6859ea2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -145,7 +145,7 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { console.groupEnd(); } }, - } satisfies IRoute; + }; }); // If we have a post fix then we need to add a direct from the empty url of the split-view-index: From 9e8b6d366fe253e038e2097764898e82eab7f3dd Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:30:14 +0200 Subject: [PATCH 546/550] make sure to link using the base path (without leading slash) --- .../documents/entity-actions/create/create.action.ts | 2 +- .../workspace/workspace-package-builder.element.ts | 2 +- .../package-repo/workspace/workspace-package.element.ts | 2 +- .../views/created/packages-created-overview.element.ts | 4 ++-- .../user-profile-apps/user-profile-app-profile.element.ts | 2 +- .../users/modals/create-user/create-user-modal.element.ts | 2 +- .../src/installer/database/installer-database.element.ts | 2 +- src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 7a5b8b3e31..62a8480101 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -33,7 +33,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Wed, 5 Apr 2023 10:29:45 +0200 Subject: [PATCH 547/550] make sure to preserve the querystring when making the first router navigation --- src/Umbraco.Web.UI.Client/src/app.ts | 39 ++++++++++++++++++---------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 8bf3961d55..0984fd9bb8 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -10,10 +10,11 @@ import './core/modal/modal-element.element'; import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; +import { customElement, property } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; +import { pathWithoutBasePath, queryString } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -37,8 +38,7 @@ export class UmbAppElement extends UmbLitElement { @property({ type: String }) private umbracoUrl?: string; - @state() - private _routes: IRoute[] = [ + private _routes: IRoute[] = [ { path: 'install', component: () => import('./installer/installer.element'), @@ -68,7 +68,7 @@ export class UmbAppElement extends UmbLitElement { this._setup(); } - async connectedCallback() { + connectedCallback() { super.connectedCallback(); OpenAPI.BASE = @@ -79,8 +79,7 @@ export class UmbAppElement extends UmbLitElement { this.provideContext('UMBRACOBASE', OpenAPI.BASE); - await this._setInitStatus(); - this._redirect(); + this._setInitStatus(); // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => { @@ -106,30 +105,44 @@ export class UmbAppElement extends UmbLitElement { } private async _setup() { + await this._setInitStatus(); this._iconRegistry.attach(this); } private async _setInitStatus() { const { data } = await tryExecuteAndNotify(this, ServerResource.getServerStatus()); this._runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN; + this._redirect(); } private _redirect() { switch (this._runtimeLevel) { case RuntimeLevelModel.INSTALL: - history.replaceState(null, '', '/install'); + history.replaceState(null, '', 'install'); break; case RuntimeLevelModel.UPGRADE: - history.replaceState(null, '', '/upgrade'); + history.replaceState(null, '', 'upgrade'); break; case RuntimeLevelModel.RUN: { - const pathname = - window.location.pathname === '/install' || window.location.pathname === '/upgrade' - ? '/' - : window.location.pathname; - history.replaceState(null, '', pathname); + const pathname = pathWithoutBasePath(); + + // If we are on the installer or upgrade page, redirect to the root + // but if not, keep the current path but replace state anyway to initialize the router + let finalPath = pathname === 'install' || pathname === 'upgrade' ? '/' : pathname; + + const qs = queryString(); + + if (qs) { + finalPath += qs; + } + + if (location.hash) { + finalPath += `#${location.hash}`; + } + + history.replaceState(null, '', finalPath); break; } From 345a2779617f605682e01624e80d60dbb8c32edc Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:38:03 +0200 Subject: [PATCH 548/550] use full location.href for initial routing --- src/Umbraco.Web.UI.Client/src/app.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 0984fd9bb8..5707e9ec4d 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -14,7 +14,7 @@ import { customElement, property } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; -import { pathWithoutBasePath, queryString } from '@umbraco-cms/backoffice/router'; +import { pathWithoutBasePath } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -126,21 +126,11 @@ export class UmbAppElement extends UmbLitElement { break; case RuntimeLevelModel.RUN: { - const pathname = pathWithoutBasePath(); + const pathname = pathWithoutBasePath({ start: true, end: false }); // If we are on the installer or upgrade page, redirect to the root // but if not, keep the current path but replace state anyway to initialize the router - let finalPath = pathname === 'install' || pathname === 'upgrade' ? '/' : pathname; - - const qs = queryString(); - - if (qs) { - finalPath += qs; - } - - if (location.hash) { - finalPath += `#${location.hash}`; - } + const finalPath = pathname === '/install' || pathname === '/upgrade' ? '/' : location.href; history.replaceState(null, '', finalPath); break; From b16b8b73350914646f3bf452145be02453f150b1 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 11 Apr 2023 10:32:05 +0200 Subject: [PATCH 549/550] Chore/update tree api types (#644) * update types from v13 * replace endpoint names --- .../libs/backend-api/src/core/request.ts | 425 +++++++++--------- .../libs/backend-api/src/index.ts | 19 + .../src/models/DataTypeItemResponseModel.ts | 10 + .../models/DictionaryItemItemResponseModel.ts | 8 + .../models/DocumentBlueprintResponseModel.ts | 8 + .../src/models/DocumentItemResponseModel.ts | 10 + .../models/DocumentTypeItemResponseModel.ts | 11 + .../models/FileItemResponseModelBaseModel.ts | 10 + .../src/models/ItemResponseModelBaseModel.ts | 9 + .../src/models/LanguageItemResponseModel.ts | 9 + .../src/models/LogLevelCountsReponseModel.ts | 11 +- .../src/models/MediaItemResponseModel.ts | 10 + .../src/models/MediaTypeItemResponseModel.ts | 10 + .../src/models/MemberGroupItemReponseModel.ts | 8 + .../src/models/MemberTypeItemResponseModel.ts | 10 + .../models/PartialViewItemResponseModel.ts | 8 + .../models/RelationTypeItemResponseModel.ts | 8 + .../src/models/ScriptItemResponseModel.ts | 8 + .../src/models/StaticFileItemResponseModel.ts | 8 + .../src/models/StylesheetItemResponseModel.ts | 8 + .../src/models/TemplateItemResponseModel.ts | 8 + .../src/services/DataTypeResource.ts | 39 +- .../src/services/DictionaryResource.ts | 39 +- .../src/services/DocumentBlueprintResource.ts | 8 +- .../src/services/DocumentResource.ts | 50 +-- .../src/services/DocumentTypeResource.ts | 38 +- .../src/services/LanguageResource.ts | 19 + .../src/services/LogViewerResource.ts | 418 ++++++++--------- .../backend-api/src/services/MediaResource.ts | 22 + .../src/services/MediaTypeResource.ts | 39 +- .../src/services/MemberGroupResource.ts | 13 +- .../src/services/MemberTypeResource.ts | 13 +- .../src/services/PartialViewResource.ts | 38 +- .../src/services/RelationTypeResource.ts | 9 +- .../src/services/ScriptResource.ts | 38 +- .../src/services/StaticFileResource.ts | 19 - .../src/services/StylesheetResource.ts | 38 +- .../src/services/TemplateResource.ts | 43 +- .../backend-api/src/services/V1Resource.ts | 30 ++ .../sources/document-type.tree.server.data.ts | 2 +- .../sources/document.tree.server.data.ts | 2 +- .../sources/media-type.tree.server.data.ts | 2 +- .../sources/member-group.tree.server.data.ts | 2 +- .../sources/member-type.tree.server.data.ts | 2 +- .../sources/data-type.tree.server.data.ts | 2 +- .../repository/sources/index.ts | 4 +- .../sources/relation-type.tree.server.data.ts | 2 +- .../sources/stylesheet.tree.server.data.ts | 2 +- .../templates/repository/sources/index.ts | 7 +- .../sources/template.tree.server.data.ts | 2 +- .../sources/dictionary.tree.server.data.ts | 2 +- 51 files changed, 887 insertions(+), 673 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts create mode 100644 src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts index 1743c2b225..0a87eb5f1c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/core/request.ts @@ -9,265 +9,262 @@ import type { OnCancel } from './CancelablePromise'; import type { OpenAPIConfig } from './OpenAPI'; const isDefined = (value: T | null | undefined): value is Exclude => { - return value !== undefined && value !== null; + return value !== undefined && value !== null; }; const isString = (value: any): value is string => { - return typeof value === 'string'; + return typeof value === 'string'; }; const isStringWithValue = (value: any): value is string => { - return isString(value) && value !== ''; + return isString(value) && value !== ''; }; const isBlob = (value: any): value is Blob => { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); }; const isFormData = (value: any): value is FormData => { - return value instanceof FormData; + return value instanceof FormData; }; const base64 = (str: string): string => { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } }; const getQueryString = (params: Record): string => { - const qs: string[] = []; + const qs: string[] = []; - const append = (id: string, value: any) => { - qs.push(`${encodeURIComponent(id)}=${encodeURIComponent(String(value))}`); - }; + const append = (key: string, value: any) => { + qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + }; - const process = (id: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach((v) => { - process(id, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${id}[${k}]`, v); - }); - } else { - append(id, value); - } - } - }; + const process = (key: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach(v => { + process(key, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${key}[${k}]`, v); + }); + } else { + append(key, value); + } + } + }; - Object.entries(params).forEach(([id, value]) => { - process(id, value); - }); + Object.entries(params).forEach(([key, value]) => { + process(key, value); + }); - if (qs.length > 0) { - return `?${qs.join('&')}`; - } + if (qs.length > 0) { + return `?${qs.join('&')}`; + } - return ''; + return ''; }; const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => { - const encoder = config.ENCODE_PATH || encodeURI; + const encoder = config.ENCODE_PATH || encodeURI; - const path = options.url - .replace('{api-version}', config.VERSION) - .replace(/{(.*?)}/g, (substring: string, group: string) => { - if (options.path?.hasOwnProperty(group)) { - return encoder(String(options.path[group])); - } - return substring; - }); + const path = options.url + .replace('{api-version}', config.VERSION) + .replace(/{(.*?)}/g, (substring: string, group: string) => { + if (options.path?.hasOwnProperty(group)) { + return encoder(String(options.path[group])); + } + return substring; + }); - const url = `${config.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } - return url; + const url = `${config.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } + return url; }; const getFormData = (options: ApiRequestOptions): FormData | undefined => { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (id: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(id, value); - } else { - formData.append(id, JSON.stringify(value)); - } - }; + const process = (key: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([id, value]) => { - if (Array.isArray(value)) { - value.forEach((v) => process(id, v)); - } else { - process(id, value); - } - }); + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach(v => process(key, v)); + } else { + process(key, value); + } + }); - return formData; - } - return undefined; + return formData; + } + return undefined; }; type Resolver = (options: ApiRequestOptions) => Promise; const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; }; const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => { - const token = await resolve(options, config.TOKEN); - const username = await resolve(options, config.USERNAME); - const password = await resolve(options, config.PASSWORD); - const additionalHeaders = await resolve(options, config.HEADERS); + const token = await resolve(options, config.TOKEN); + const username = await resolve(options, config.USERNAME); + const password = await resolve(options, config.PASSWORD); + const additionalHeaders = await resolve(options, config.HEADERS); - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce( - (headers, [id, value]) => ({ - ...headers, - [id]: String(value), - }), - {} as Record - ); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - if (options.body) { - if (options.mediaType) { - headers['Content-Type'] = options.mediaType; - } else if (isBlob(options.body)) { - headers['Content-Type'] = options.body.type || 'application/octet-stream'; - } else if (isString(options.body)) { - headers['Content-Type'] = 'text/plain'; - } else if (!isFormData(options.body)) { - headers['Content-Type'] = 'application/json'; - } - } + if (options.body) { + if (options.mediaType) { + headers['Content-Type'] = options.mediaType; + } else if (isBlob(options.body)) { + headers['Content-Type'] = options.body.type || 'application/octet-stream'; + } else if (isString(options.body)) { + headers['Content-Type'] = 'text/plain'; + } else if (!isFormData(options.body)) { + headers['Content-Type'] = 'application/json'; + } + } - return new Headers(headers); + return new Headers(headers); }; const getRequestBody = (options: ApiRequestOptions): any => { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body); - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return undefined; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return undefined; }; export const sendRequest = async ( - config: OpenAPIConfig, - options: ApiRequestOptions, - url: string, - body: any, - formData: FormData | undefined, - headers: Headers, - onCancel: OnCancel + config: OpenAPIConfig, + options: ApiRequestOptions, + url: string, + body: any, + formData: FormData | undefined, + headers: Headers, + onCancel: OnCancel ): Promise => { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body ?? formData, - method: options.method, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + body: body ?? formData, + method: options.method, + signal: controller.signal, + }; - if (config.WITH_CREDENTIALS) { - request.credentials = config.CREDENTIALS; - } + if (config.WITH_CREDENTIALS) { + request.credentials = config.CREDENTIALS; + } - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); }; const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return undefined; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return undefined; }; const getResponseBody = async (response: Response): Promise => { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return undefined; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return undefined; }; const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - }; + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + } - const error = errors[result.status]; - if (error) { - throw new ApiError(options, result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(options, result, error); + } - if (!result.ok) { - throw new ApiError(options, result, 'Generic Error'); - } + if (!result.ok) { + throw new ApiError(options, result, 'Generic Error'); + } }; /** @@ -278,32 +275,32 @@ const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => * @throws ApiError */ export const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(config, options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(config, options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(config, options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(config, options); - if (!onCancel.isCancelled) { - const response = await sendRequest(config, options, url, body, formData, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(config, options, url, body, formData, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader ?? responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader ?? responseBody, + }; - catchErrorCodes(options, result); + catchErrorCodes(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); }; 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 326b993f2f..9919e60217 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 @@ -39,21 +39,26 @@ export type { CreateUserResponseModel } from './models/CreateUserResponseModel'; export type { CultureReponseModel } from './models/CultureReponseModel'; export type { DatabaseInstallResponseModel } from './models/DatabaseInstallResponseModel'; export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; +export type { DataTypeItemResponseModel } from './models/DataTypeItemResponseModel'; export type { DataTypeModelBaseModel } from './models/DataTypeModelBaseModel'; export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; export type { DataTypeResponseModel } from './models/DataTypeResponseModel'; +export type { DictionaryItemItemResponseModel } from './models/DictionaryItemItemResponseModel'; export type { DictionaryItemModelBaseModel } from './models/DictionaryItemModelBaseModel'; export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; export { DirectionModel } from './models/DirectionModel'; export type { DisableUserRequestModel } from './models/DisableUserRequestModel'; +export type { DocumentBlueprintResponseModel } from './models/DocumentBlueprintResponseModel'; export type { DocumentBlueprintTreeItemResponseModel } from './models/DocumentBlueprintTreeItemResponseModel'; +export type { DocumentItemResponseModel } from './models/DocumentItemResponseModel'; export type { DocumentNotificationResponseModel } from './models/DocumentNotificationResponseModel'; export type { DocumentResponseModel } from './models/DocumentResponseModel'; export type { DocumentTreeItemResponseModel } from './models/DocumentTreeItemResponseModel'; +export type { DocumentTypeItemResponseModel } from './models/DocumentTypeItemResponseModel'; export type { DocumentTypePropertyTypeContainerResponseModel } from './models/DocumentTypePropertyTypeContainerResponseModel'; export type { DocumentTypePropertyTypeResponseModel } from './models/DocumentTypePropertyTypeResponseModel'; export type { DocumentTypeResponseModel } from './models/DocumentTypeResponseModel'; @@ -67,6 +72,7 @@ export type { DomainsResponseModel } from './models/DomainsResponseModel'; export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; export type { FieldPresentationModel } from './models/FieldPresentationModel'; +export type { FileItemResponseModelBaseModel } from './models/FileItemResponseModelBaseModel'; export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; export type { FolderModelBaseModel } from './models/FolderModelBaseModel'; export type { FolderReponseModel } from './models/FolderReponseModel'; @@ -87,6 +93,8 @@ export type { IndexResponseModel } from './models/IndexResponseModel'; export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; export type { InstallVResponseModel } from './models/InstallVResponseModel'; export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; +export type { ItemResponseModelBaseModel } from './models/ItemResponseModelBaseModel'; +export type { LanguageItemResponseModel } from './models/LanguageItemResponseModel'; export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; export type { LanguageResponseModel } from './models/LanguageResponseModel'; export type { LoggerResponseModel } from './models/LoggerResponseModel'; @@ -95,12 +103,16 @@ export { LogLevelModel } from './models/LogLevelModel'; export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; +export type { MediaItemResponseModel } from './models/MediaItemResponseModel'; +export type { MediaTypeItemResponseModel } from './models/MediaTypeItemResponseModel'; export type { MediaTypePropertyTypeContainerResponseModel } from './models/MediaTypePropertyTypeContainerResponseModel'; export type { MediaTypePropertyTypeResponseModel } from './models/MediaTypePropertyTypeResponseModel'; export type { MediaTypeResponseModel } from './models/MediaTypeResponseModel'; export type { MediaValueModel } from './models/MediaValueModel'; export type { MediaVariantRequestModel } from './models/MediaVariantRequestModel'; export type { MediaVariantResponseModel } from './models/MediaVariantResponseModel'; +export type { MemberGroupItemReponseModel } from './models/MemberGroupItemReponseModel'; +export type { MemberTypeItemResponseModel } from './models/MemberTypeItemResponseModel'; export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseModel'; export { ModelsModeModel } from './models/ModelsModeModel'; export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; @@ -145,6 +157,7 @@ export type { PagedSearchResultResponseModel } from './models/PagedSearchResultR export type { PagedTelemetryResponseModel } from './models/PagedTelemetryResponseModel'; export type { PagedUserGroupPresentationModel } from './models/PagedUserGroupPresentationModel'; export type { PagedUserResponseModel } from './models/PagedUserResponseModel'; +export type { PartialViewItemResponseModel } from './models/PartialViewItemResponseModel'; export type { ProblemDetailsModel } from './models/ProblemDetailsModel'; export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; @@ -159,21 +172,26 @@ export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusR export type { RelationItemResponseModel } from './models/RelationItemResponseModel'; export type { RelationResponseModel } from './models/RelationResponseModel'; export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; +export type { RelationTypeItemResponseModel } from './models/RelationTypeItemResponseModel'; export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; export type { SavedLogSearchPresenationBaseModel } from './models/SavedLogSearchPresenationBaseModel'; export type { SavedLogSearchRequestModel } from './models/SavedLogSearchRequestModel'; export type { SavedLogSearchResponseModel } from './models/SavedLogSearchResponseModel'; export type { SaveUserGroupRequestModel } from './models/SaveUserGroupRequestModel'; +export type { ScriptItemResponseModel } from './models/ScriptItemResponseModel'; export type { SearcherResponseModel } from './models/SearcherResponseModel'; export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; export type { ServerStatusResponseModel } from './models/ServerStatusResponseModel'; export type { SetAvatarRequestModel } from './models/SetAvatarRequestModel'; +export type { StaticFileItemResponseModel } from './models/StaticFileItemResponseModel'; export { StatusResultTypeModel } from './models/StatusResultTypeModel'; +export type { StylesheetItemResponseModel } from './models/StylesheetItemResponseModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; +export type { TemplateItemResponseModel } from './models/TemplateItemResponseModel'; export type { TemplateModelBaseModel } from './models/TemplateModelBaseModel'; export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; @@ -258,3 +276,4 @@ export { TrackedReferenceResource } from './services/TrackedReferenceResource'; export { UpgradeResource } from './services/UpgradeResource'; export { UserGroupsResource } from './services/UserGroupsResource'; export { UsersResource } from './services/UsersResource'; +export { V1Resource } from './services/V1Resource'; diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts new file mode 100644 index 0000000000..e277363f47 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DataTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts new file mode 100644 index 0000000000..bcc5a02867 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DictionaryItemItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DictionaryItemItemResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts new file mode 100644 index 0000000000..fd6b735c5b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentBlueprintResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentBlueprintResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts new file mode 100644 index 0000000000..3bf495dc8d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts new file mode 100644 index 0000000000..f085ce11bc --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DocumentTypeItemResponseModel.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type DocumentTypeItemResponseModel = (ItemResponseModelBaseModel & { + isElement?: boolean; + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts new file mode 100644 index 0000000000..6867fcab7f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/FileItemResponseModelBaseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type FileItemResponseModelBaseModel = { + name?: string; + path?: string; + icon?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts new file mode 100644 index 0000000000..486b5df6f8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ItemResponseModelBaseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type ItemResponseModelBaseModel = { + name?: string; + id?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts new file mode 100644 index 0000000000..f9a7e78419 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LanguageItemResponseModel.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type LanguageItemResponseModel = { + name?: string; + isoCode?: string; +}; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts index d8e5543810..a1064cc7a4 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/LogLevelCountsReponseModel.ts @@ -3,9 +3,10 @@ /* eslint-disable */ export type LogLevelCountsReponseModel = { - information?: number; - debug?: number; - warning?: number; - error?: number; - fatal?: number; + information?: number; + debug?: number; + warning?: number; + error?: number; + fatal?: number; }; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts new file mode 100644 index 0000000000..1b28cf9a1d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MediaItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts new file mode 100644 index 0000000000..536d0ce369 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MediaTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MediaTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts new file mode 100644 index 0000000000..d42cc718f6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberGroupItemReponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MemberGroupItemReponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts new file mode 100644 index 0000000000..8d42b882cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/MemberTypeItemResponseModel.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type MemberTypeItemResponseModel = (ItemResponseModelBaseModel & { + icon?: string | null; +}); + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts new file mode 100644 index 0000000000..545b2ebdd8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/PartialViewItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type PartialViewItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts new file mode 100644 index 0000000000..8458385428 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/RelationTypeItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type RelationTypeItemResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts new file mode 100644 index 0000000000..1092e37cb1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/ScriptItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type ScriptItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts new file mode 100644 index 0000000000..793190a8b7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StaticFileItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type StaticFileItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts new file mode 100644 index 0000000000..6b09804191 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/StylesheetItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { FileItemResponseModelBaseModel } from './FileItemResponseModelBaseModel'; + +export type StylesheetItemResponseModel = FileItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts new file mode 100644 index 0000000000..023262e3b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/TemplateItemResponseModel.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; + +export type TemplateItemResponseModel = ItemResponseModelBaseModel; + diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts index fec4ff09e8..ccf865111c 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DataTypeResource.ts @@ -4,11 +4,10 @@ import type { CopyDataTypeRequestModel } from '../models/CopyDataTypeRequestModel'; import type { CreateDataTypeRequestModel } from '../models/CreateDataTypeRequestModel'; import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; +import type { DataTypeItemResponseModel } from '../models/DataTypeItemResponseModel'; import type { DataTypeReferenceResponseModel } from '../models/DataTypeReferenceResponseModel'; import type { DataTypeResponseModel } from '../models/DataTypeResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; import type { FolderReponseModel } from '../models/FolderReponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { MoveDataTypeRequestModel } from '../models/MoveDataTypeRequestModel'; import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; import type { UpdateDataTypeRequestModel } from '../models/UpdateDataTypeRequestModel'; @@ -268,6 +267,24 @@ export class DataTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDataTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/data-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError @@ -295,24 +312,6 @@ export class DataTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDataTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/data-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts index 74af557479..bbc8823aa0 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DictionaryResource.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; +import type { DictionaryItemItemResponseModel } from '../models/DictionaryItemItemResponseModel'; import type { DictionaryItemResponseModel } from '../models/DictionaryItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { ImportDictionaryRequestModel } from '../models/ImportDictionaryRequestModel'; import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequestModel'; import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; @@ -204,6 +203,24 @@ export class DictionaryResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDictionaryItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/dictionary/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError @@ -228,24 +245,6 @@ export class DictionaryResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDictionaryItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/dictionary/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts index 61330ba056..1708739c36 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentBlueprintResource.ts @@ -1,7 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; +import type { DocumentBlueprintResponseModel } from '../models/DocumentBlueprintResponseModel'; import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -14,14 +14,14 @@ export class DocumentBlueprintResource { * @returns any Success * @throws ApiError */ - public static getTreeDocumentBlueprintItem({ + public static getDocumentBlueprintItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/document-blueprint/item', + url: '/umbraco/management/api/v1/document-blueprint/item', query: { 'id': id, }, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts index 0ab286ae37..5758389b26 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentResource.ts @@ -2,9 +2,9 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDocumentRequestModel } from '../models/CreateDocumentRequestModel'; +import type { DocumentItemResponseModel } from '../models/DocumentItemResponseModel'; import type { DocumentNotificationResponseModel } from '../models/DocumentNotificationResponseModel'; import type { DocumentResponseModel } from '../models/DocumentResponseModel'; -import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; import type { PagedDocumentTreeItemResponseModel } from '../models/PagedDocumentTreeItemResponseModel'; import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; import type { UpdateDocumentNotificationsRequestModel } from '../models/UpdateDocumentNotificationsRequestModel'; @@ -194,6 +194,30 @@ export class DocumentResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentItem({ + id, + dataTypeId, + culture, + }: { + id?: Array, + dataTypeId?: string, + culture?: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document/item', + query: { + 'id': id, + 'dataTypeId': dataTypeId, + 'culture': culture, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError @@ -275,30 +299,6 @@ export class DocumentResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentItem({ - id, - dataTypeId, - culture, - }: { - id?: Array, - dataTypeId?: string, - culture?: string, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document/item', - query: { - 'id': id, - 'dataTypeId': dataTypeId, - 'culture': culture, - }, - }); - } - /** * @returns PagedDocumentTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts index 5c908b4ccf..430d840e9d 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/DocumentTypeResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ +import type { DocumentTypeItemResponseModel } from '../models/DocumentTypeItemResponseModel'; import type { DocumentTypeResponseModel } from '../models/DocumentTypeResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; import type { PagedDocumentTypeTreeItemResponseModel } from '../models/PagedDocumentTypeTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -32,6 +32,24 @@ export class DocumentTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError @@ -59,24 +77,6 @@ export class DocumentTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeDocumentTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/document-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedDocumentTypeTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts index 56e3f9b7c7..cc77a2ee60 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LanguageResource.ts @@ -2,6 +2,7 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateLanguageRequestModel } from '../models/CreateLanguageRequestModel'; +import type { LanguageItemResponseModel } from '../models/LanguageItemResponseModel'; import type { LanguageResponseModel } from '../models/LanguageResponseModel'; import type { PagedLanguageResponseModel } from '../models/PagedLanguageResponseModel'; import type { UpdateLanguageRequestModel } from '../models/UpdateLanguageRequestModel'; @@ -124,4 +125,22 @@ export class LanguageResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getLanguageItem({ + isoCode, + }: { + isoCode?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/language/item', + query: { + 'isoCode': isoCode, + }, + }); + } + } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts index e3d16d571b..dc8cf7baa1 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/LogViewerResource.ts @@ -16,218 +16,224 @@ import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; export class LogViewerResource { - /** - * @returns PagedLoggerResponseModel Success - * @throws ApiError - */ - public static getLogViewerLevel({ - skip, - take = 100, - }: { - skip?: number; - take?: number; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level', - query: { - skip: skip, - take: take, - }, - }); - } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerLevelCount({ - startDate, - endDate, - }: { - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/level-count', - query: { - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedLoggerResponseModel Success + * @throws ApiError + */ + public static getLogViewerLevel({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level', + query: { + 'skip': skip, + 'take': take, + }, + }); + } - /** - * @returns PagedLogMessageResponseModel Success - * @throws ApiError - */ - public static getLogViewerLog({ - skip, - take = 100, - orderDirection, - filterExpression, - logLevel, - startDate, - endDate, - }: { - skip?: number; - take?: number; - orderDirection?: DirectionModel; - filterExpression?: string; - logLevel?: Array; - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/log', - query: { - skip: skip, - take: take, - orderDirection: orderDirection, - filterExpression: filterExpression, - logLevel: logLevel, - startDate: startDate, - endDate: endDate, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerLevelCount({ + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/level-count', + query: { + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns PagedLogTemplateResponseModel Success - * @throws ApiError - */ - public static getLogViewerMessageTemplate({ - skip, - take = 100, - startDate, - endDate, - }: { - skip?: number; - take?: number; - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/message-template', - query: { - skip: skip, - take: take, - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedLogMessageResponseModel Success + * @throws ApiError + */ + public static getLogViewerLog({ + skip, + take = 100, + orderDirection, + filterExpression, + logLevel, + startDate, + endDate, + }: { + skip?: number, + take?: number, + orderDirection?: DirectionModel, + filterExpression?: string, + logLevel?: Array, + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/log', + query: { + 'skip': skip, + 'take': take, + 'orderDirection': orderDirection, + 'filterExpression': filterExpression, + 'logLevel': logLevel, + 'startDate': startDate, + 'endDate': endDate, + }, + }); + } - /** - * @returns PagedSavedLogSearchResponseModel Success - * @throws ApiError - */ - public static getLogViewerSavedSearch({ - skip, - take = 100, - }: { - skip?: number; - take?: number; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - query: { - skip: skip, - take: take, - }, - }); - } + /** + * @returns PagedLogTemplateResponseModel Success + * @throws ApiError + */ + public static getLogViewerMessageTemplate({ + skip, + take = 100, + startDate, + endDate, + }: { + skip?: number, + take?: number, + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/message-template', + query: { + 'skip': skip, + 'take': take, + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns string Created - * @throws ApiError - */ - public static postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchRequestModel; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'POST', - url: '/umbraco/management/api/v1/log-viewer/saved-search', - body: requestBody, - mediaType: 'application/json', - responseHeader: 'Location', - errors: { - 400: `Bad Request`, - }, - }); - } + /** + * @returns PagedSavedLogSearchResponseModel Success + * @throws ApiError + */ + public static getLogViewerSavedSearch({ + skip, + take = 100, + }: { + skip?: number, + take?: number, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + query: { + 'skip': skip, + 'take': take, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerSavedSearchByName({ - name, - }: { - name: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - name: name, - }, - errors: { - 404: `Not Found`, - }, - }); - } + /** + * @returns string Created + * @throws ApiError + */ + public static postLogViewerSavedSearch({ + requestBody, + }: { + requestBody?: SavedLogSearchRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/log-viewer/saved-search', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Location', + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static deleteLogViewerSavedSearchByName({ name }: { name: string }): CancelablePromise { - return __request(OpenAPI, { - method: 'DELETE', - url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', - path: { - name: name, - }, - errors: { - 404: `Not Found`, - }, - }); - } + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerSavedSearchByName({ + name, + }: { + name: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + 'name': name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static deleteLogViewerSavedSearchByName({ + name, + }: { + name: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/log-viewer/saved-search/{name}', + path: { + 'name': name, + }, + errors: { + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getLogViewerValidateLogsSize({ + startDate, + endDate, + }: { + startDate?: string, + endDate?: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', + query: { + 'startDate': startDate, + 'endDate': endDate, + }, + errors: { + 400: `Bad Request`, + }, + }); + } - /** - * @returns any Success - * @throws ApiError - */ - public static getLogViewerValidateLogsSize({ - startDate, - endDate, - }: { - startDate?: string; - endDate?: string; - }): CancelablePromise { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/log-viewer/validate-logs-size', - query: { - startDate: startDate, - endDate: endDate, - }, - errors: { - 400: `Bad Request`, - }, - }); - } } diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts index 27690e5cf2..4e0385a534 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaResource.ts @@ -5,6 +5,7 @@ import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResp import type { CreateMediaRequestModel } from '../models/CreateMediaRequestModel'; import type { DocumentResponseModel } from '../models/DocumentResponseModel'; import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; +import type { MediaItemResponseModel } from '../models/MediaItemResponseModel'; import type { PagedContentTreeItemResponseModel } from '../models/PagedContentTreeItemResponseModel'; import type { PagedRecycleBinItemResponseModel } from '../models/PagedRecycleBinItemResponseModel'; import type { UpdateMediaRequestModel } from '../models/UpdateMediaRequestModel'; @@ -106,6 +107,27 @@ export class MediaResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaItem({ + id, + dataTypeId, + }: { + id?: Array, + dataTypeId?: string, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media/item', + query: { + 'id': id, + 'dataTypeId': dataTypeId, + }, + }); + } + /** * @returns PagedRecycleBinItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts index 8d583f4fd4..c86145f403 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MediaTypeResource.ts @@ -1,8 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MediaTypeItemResponseModel } from '../models/MediaTypeItemResponseModel'; import type { MediaTypeResponseModel } from '../models/MediaTypeResponseModel'; import type { PagedFolderTreeItemResponseModel } from '../models/PagedFolderTreeItemResponseModel'; @@ -33,6 +32,24 @@ export class MediaTypeResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getMediaTypeItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/media-type/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError @@ -60,24 +77,6 @@ export class MediaTypeResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeMediaTypeItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/media-type/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedFolderTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts index 7144009cb1..3ef4601fe2 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberGroupResource.ts @@ -1,12 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MemberGroupItemReponseModel } from '../models/MemberGroupItemReponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -19,14 +14,14 @@ export class MemberGroupResource { * @returns any Success * @throws ApiError */ - public static getTreeMemberGroupItem({ + public static getMemberGroupItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/member-group/item', + url: '/umbraco/management/api/v1/member-group/item', query: { 'id': id, }, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts index df77ec68fd..3545cb4bca 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/MemberTypeResource.ts @@ -1,12 +1,7 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; +import type { MemberTypeItemResponseModel } from '../models/MemberTypeItemResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -19,14 +14,14 @@ export class MemberTypeResource { * @returns any Success * @throws ApiError */ - public static getTreeMemberTypeItem({ + public static getMemberTypeItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/member-type/item', + url: '/umbraco/management/api/v1/member-type/item', query: { 'id': id, }, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts index 4f44e0cf12..3bceafadbc 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/PartialViewResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { PartialViewItemResponseModel } from '../models/PartialViewItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class PartialViewResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getPartialViewItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/partial-view/item', + query: { + 'id': id, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class PartialViewResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreePartialViewItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/partial-view/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts index ae5d2ffd04..76f60d04a6 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/RelationTypeResource.ts @@ -2,9 +2,8 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateRelationTypeRequestModel } from '../models/CreateRelationTypeRequestModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { RelationTypeItemResponseModel } from '../models/RelationTypeItemResponseModel'; import type { RelationTypeResponseModel } from '../models/RelationTypeResponseModel'; import type { UpdateRelationTypeRequestModel } from '../models/UpdateRelationTypeRequestModel'; @@ -107,14 +106,14 @@ export class RelationTypeResource { * @returns any Success * @throws ApiError */ - public static getTreeRelationTypeItem({ + public static getRelationTypeItem({ id, }: { id?: Array, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', - url: '/umbraco/management/api/v1/tree/relation-type/item', + url: '/umbraco/management/api/v1/relation-type/item', query: { 'id': id, }, diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts index 573b19912c..7804889dd5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/ScriptResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { ScriptItemResponseModel } from '../models/ScriptItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class ScriptResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getScriptItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/script/item', + query: { + 'path': path, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class ScriptResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeScriptItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/script/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts index 4379b0aafa..83645d7d1f 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StaticFileResource.ts @@ -1,7 +1,6 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -34,24 +33,6 @@ export class StaticFileResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStaticFileItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/static-file/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts index 5d85a44b41..f219e34cfd 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/StylesheetResource.ts @@ -1,8 +1,8 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemTreeItemPresentationModel } from '../models/FileSystemTreeItemPresentationModel'; import type { PagedFileSystemTreeItemPresentationModel } from '../models/PagedFileSystemTreeItemPresentationModel'; +import type { ScriptItemResponseModel } from '../models/ScriptItemResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -10,6 +10,24 @@ import { request as __request } from '../core/request'; export class StylesheetResource { + /** + * @returns any Success + * @throws ApiError + */ + public static getStylesheetItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/stylesheet/item', + query: { + 'path': path, + }, + }); + } + /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError @@ -34,24 +52,6 @@ export class StylesheetResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeStylesheetItem({ - path, - }: { - path?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/stylesheet/item', - query: { - 'path': path, - }, - }); - } - /** * @returns PagedFileSystemTreeItemPresentationModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts index ab2c55cccd..b7568d4a24 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/TemplateResource.ts @@ -1,14 +1,9 @@ /* istanbul ignore file */ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemResponseModel } from '../models/ContentTreeItemResponseModel'; import type { CreateTemplateRequestModel } from '../models/CreateTemplateRequestModel'; -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTreeItemResponseModel } from '../models/DocumentTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { EntityTreeItemResponseModel } from '../models/EntityTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { PagedEntityTreeItemResponseModel } from '../models/PagedEntityTreeItemResponseModel'; +import type { TemplateItemResponseModel } from '../models/TemplateItemResponseModel'; import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; import type { TemplateQueryResultResponseModel } from '../models/TemplateQueryResultResponseModel'; import type { TemplateQuerySettingsResponseModel } from '../models/TemplateQuerySettingsResponseModel'; @@ -113,6 +108,24 @@ export class TemplateResource { }); } + /** + * @returns any Success + * @throws ApiError + */ + public static getTemplateItem({ + id, + }: { + id?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/template/item', + query: { + 'id': id, + }, + }); + } + /** * @returns any Success * @throws ApiError @@ -179,24 +192,6 @@ export class TemplateResource { }); } - /** - * @returns any Success - * @throws ApiError - */ - public static getTreeTemplateItem({ - id, - }: { - id?: Array, - }): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/tree/template/item', - query: { - 'id': id, - }, - }); - } - /** * @returns PagedEntityTreeItemResponseModel Success * @throws ApiError diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts new file mode 100644 index 0000000000..d63c01efe2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/services/V1Resource.ts @@ -0,0 +1,30 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { StaticFileItemResponseModel } from '../models/StaticFileItemResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class V1Resource { + + /** + * @returns any Success + * @throws ApiError + */ + public static getItem({ + path, + }: { + path?: Array, + }): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/item', + query: { + 'path': path, + }, + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index 7447fcad49..fd3cee9ccb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -93,7 +93,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - DocumentTypeResource.getTreeDocumentTypeItem({ + DocumentTypeResource.getDocumentTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index dcd3ec9ffa..076b707b0b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -93,7 +93,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - DocumentResource.getTreeDocumentItem({ + DocumentResource.getDocumentItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index c66dc1b224..6d164599f4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -64,7 +64,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MediaTypeResource.getTreeMediaTypeItem({ + MediaTypeResource.getMediaTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index c016dc7bb6..bfb95a7473 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -55,7 +55,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MemberGroupResource.getTreeMemberGroupItem({ + MemberGroupResource.getMemberGroupItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 7ec6a36505..0c1abf952a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -55,7 +55,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - MemberTypeResource.getTreeMemberTypeItem({ + MemberTypeResource.getMemberTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts index 22364ce3da..f1da0afaa9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.tree.server.data.ts @@ -57,7 +57,7 @@ export class UmbDataTypeTreeServerDataSource implements UmbTreeDataSource { if (!ids) throw new Error('Ids are missing'); return tryExecuteAndNotify( this.#host, - DataTypeResource.getTreeDataTypeItem({ + DataTypeResource.getDataTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index e00c22f97b..f8ff932071 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { ItemResponseModelBaseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export interface RelationTypeTreeDataSource { getRootItems(): Promise>; - getItems(ids: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 6afc19326f..1dc64b51b5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -78,7 +78,7 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou return tryExecuteAndNotify( this.#host, - RelationTypeResource.getTreeRelationTypeItem({ + RelationTypeResource.getRelationTypeItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts index 1618d1ee59..5b7674f6df 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts @@ -60,7 +60,7 @@ export class UmbStylesheetTreeServerDataSource async getItems(path: Array) { return tryExecuteAndNotify( this.#host, - StylesheetResource.getTreeStylesheetItem({ + StylesheetResource.getStylesheetItem({ path, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts index c93ced1dd9..934e2e05ed 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/index.ts @@ -1,11 +1,8 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; -import type { - EntityTreeItemResponseModel, - PagedEntityTreeItemResponseModel, -} from '@umbraco-cms/backoffice/backend-api'; +import type { ItemResponseModelBaseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export interface TemplateTreeDataSource { getRootItems(): Promise>; getChildrenOf(parentId: string): Promise>; - getItems(ids: Array): Promise>; + getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index cdc77d176b..ed7be4b8d9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -64,7 +64,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { return tryExecuteAndNotify( this.#host, - TemplateResource.getTreeTemplateItem({ + TemplateResource.getTemplateItem({ id: ids, }) ); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index 9113af0673..a24572eb9f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -64,7 +64,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { return tryExecuteAndNotify( this.#host, - DictionaryResource.getTreeDictionaryItem({ + DictionaryResource.getDictionaryItem({ id: ids, }) ); From e546f469e8f8535bf3086003e2f2a0f1fcca1764 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 12 Apr 2023 10:04:46 +0200 Subject: [PATCH 550/550] Feature: Data type creation (#645) * split data type handlers into multiple files * return promise * test register root as same entity as items * add insert method to entity db * redirect to new data type when selecting in options modal * add options to modal name * Update manifests.ts * add margin to data type info view * fix import * update with models from server * push new item to tree --- .../src/models/DataTypeResponseModel.ts | 11 +- .../data-source/data-source.interface.ts | 2 +- .../repository/detail-repository.interface.ts | 35 ++--- .../workspace/actions/save/save.action.ts | 6 +- .../context/workspace-context.interface.ts | 1 + .../repository/document-type.repository.ts | 16 ++- .../document-type-workspace.context.ts | 4 +- .../repository/document.repository.ts | 46 +++---- .../workspace/document-workspace.context.ts | 4 +- .../media/repository/media.repository.ts | 71 +++++----- .../sources/media.detail.server.data.ts | 58 +++------ .../workspace/media-workspace.context.ts | 6 +- .../repository/member-group.repository.ts | 41 +++--- .../member-group-workspace.context.ts | 2 +- .../repository/member-type.repository.ts | 30 ++--- .../sources/member-type.detail.server.data.ts | 9 +- .../member-type-workspace.context.ts | 4 +- .../entity-actions/create/create.action.ts | 12 +- .../entity-actions/create/manifests.ts | 10 +- ...data-type-create-options-modal.element.ts} | 37 ++++-- .../entity-actions/create/modal/index.ts | 15 ++- .../data-types/menu-item/manifests.ts | 2 +- .../repository/data-type.repository.ts | 98 ++++++++------ .../sources/data-type.server.data.ts | 14 +- .../workspace/data-type-workspace.context.ts | 12 +- .../workspace/data-type-workspace.element.ts | 2 +- .../workspace-view-data-type-info.element.ts | 10 +- .../repository/relation-type.repository.ts | 91 ++++++------- .../relation-type-workspace.context.ts | 6 +- .../sources/template.detail.server.data.ts | 49 +++---- .../repository/template.repository.ts | 38 +++--- ...ashboard-translation-dictionary.element.ts | 5 +- .../entity-actions/create/create.action.ts | 11 +- .../translation/dictionary/index.ts | 6 - .../repository/dictionary.repository.ts | 69 +++++----- .../dictionary/repository/dictionary.store.ts | 6 +- .../sources/dictionary.detail.server.data.ts | 43 +++--- ...ictionary.details.server.data.interface.ts | 22 ---- .../workspace/dictionary-workspace.context.ts | 18 +-- .../src/core/mocks/browser-handlers.ts | 2 +- .../src/core/mocks/data/dictionary.data.ts | 46 ++++--- .../src/core/mocks/data/entity.data.ts | 10 ++ .../core/mocks/domains/data-type.handlers.ts | 122 ------------------ .../domains/data-type/detail.handlers.ts | 42 ++++++ .../domains/data-type/folder.handlers.ts | 53 ++++++++ .../src/core/mocks/domains/data-type/index.ts | 6 + .../mocks/domains/data-type/item.handlers.ts | 13 ++ .../src/core/mocks/domains/data-type/slug.ts | 1 + .../mocks/domains/data-type/tree.handlers.ts | 29 +++++ .../core/mocks/domains/dictionary.handlers.ts | 12 +- .../src/core/mocks/e2e-handlers.ts | 2 +- 51 files changed, 644 insertions(+), 616 deletions(-) rename src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/{create-data-type-modal.element.ts => data-type-create-options-modal.element.ts} (53%) delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/detail.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/folder.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/item.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/slug.ts create mode 100644 src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/tree.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts index 5fa2a1085c..ed9934a1b5 100644 --- a/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/libs/backend-api/src/models/DataTypeResponseModel.ts @@ -4,9 +4,8 @@ import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; -export type DataTypeResponseModel = (DataTypeModelBaseModel & { - $type: string; - id?: string; - parentId?: string | null; -}); - +export type DataTypeResponseModel = DataTypeModelBaseModel & { + $type: string; + id?: string; + parentId?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts index 0a6d922702..1721ce3e47 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/data-source/data-source.interface.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; export interface UmbDataSource { - createScaffold(parentId: string | null): Promise>; + createScaffold(parentId: string | null): Promise>; get(unique: string): Promise>; insert(data: CreateRequestType): Promise; update(unique: string, data: UpdateRequestType): Promise>; diff --git a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts index 25a3cd332b..cb70ab8dd2 100644 --- a/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts +++ b/src/Umbraco.Web.UI.Client/libs/repository/detail-repository.interface.ts @@ -1,25 +1,16 @@ import type { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; -export interface UmbDetailRepository { - createScaffold(parentId: string | null): Promise<{ - data?: DetailType; - error?: ProblemDetailsModel; - }>; - - requestById(id: string): Promise<{ - data?: DetailType; - error?: ProblemDetailsModel; - }>; - - create(data: DetailType): Promise<{ - error?: ProblemDetailsModel; - }>; - - save(data: DetailType): Promise<{ - error?: ProblemDetailsModel; - }>; - - delete(id: string): Promise<{ - error?: ProblemDetailsModel; - }>; +export interface UmbRepositoryErrorResponse { + error?: ProblemDetailsModel; +} +export interface UmbRepositoryResponse extends UmbRepositoryErrorResponse { + data?: T; +} + +export interface UmbDetailRepository { + createScaffold(parentId: string | null): Promise>; + requestById(id: string): Promise>; + create(data: CreateRequestType): Promise; + save(id: string, data: UpdateRequestType): Promise; + delete(id: string): Promise; } 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 b2f986912f..08a19462a8 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 @@ -19,7 +19,7 @@ export class UmbSaveWorkspaceAction extends UmbWorkspaceActionBase { destroy(): void; // TODO: temp solution to bubble validation errors to the UI setValidationErrors?(errorMap: any): void; + save(): void; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index dbf7c841e2..78c9ac203c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -160,22 +160,24 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U return { error }; } - async save(item: ItemType) { - if (!item || !item.id) throw new Error('Document-Type is missing'); + async save(id: string, item: any) { + if (!id) throw new Error('Id is missing'); + if (!item) throw new Error('Item is missing'); + await this.#init; - const { error } = await this.#detailDataSource.update(item.id, item); + const { error } = await this.#detailDataSource.update(id, item); if (!error) { - const notification = { data: { message: `Document saved` } }; - this.#notificationContext?.peek('positive', notification); - // TODO: we currently don't use the detail store for anything. // Consider to look up the data before fetching from the server // Consider notify a workspace if a template is updated in the store while someone is editing it. this.#detailStore?.append(item); - this.#treeStore?.updateItem(item.id, { name: item.name }); + this.#treeStore?.updateItem(id, item); // TODO: would be nice to align the stores on methods/methodNames. + + const notification = { data: { message: `Document Type saved` } }; + this.#notificationContext?.peek('positive', notification); } return { error }; 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 da264b5ff0..4ee41fc2b7 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 @@ -105,7 +105,9 @@ export class UmbDocumentTypeWorkspaceContext } async save() { - this.repository.save(this.getData()); + const id = this.getEntityId(); + if (!id) throw new Error('Cannot save entity without id'); + this.repository.save(id, this.getData()); } public destroy(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index cdeea13e32..91d485f05c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -9,6 +9,7 @@ import { ProblemDetailsModel, DocumentResponseModel, CreateDocumentRequestModel, + UpdateDocumentRequestModel, } from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; @@ -136,7 +137,6 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe } // Could potentially be general methods: - async create(item: CreateDocumentRequestModel & { id: string }) { await this.#init; @@ -159,53 +159,49 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe return { error }; } - async save(item: ItemType) { + async save(id: string, item: UpdateDocumentRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!item) throw new Error('Item is missing'); + await this.#init; - if (!item || !item.id) { - throw new Error('Document is missing'); - } - - const { error } = await this.#detailDataSource.update(item.id, item); + const { error } = await this.#detailDataSource.update(id, item); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a document is updated in the store while someone is editing it. + this.#store?.append(item); + //this.#treeStore?.updateItem(item.id, { name: item.name });// Port data to tree store. + // TODO: would be nice to align the stores on methods/methodNames. + const notification = { data: { message: `Document saved` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a document is updated in the store while someone is editing it. - this.#store?.append(item); - //this.#treeStore?.updateItem(item.id, { name: item.name });// Port data to tree store. - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } // General: async delete(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - if (!id) { - throw new Error('Document id is missing'); - } - const { error } = await this.#detailDataSource.delete(id); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a document is deleted from the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); + const notification = { data: { message: `Document deleted` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server. - // Consider notify a workspace if a document is deleted from the store while someone is editing it. - this.#store?.remove([id]); - this.#treeStore?.removeItem(id); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } 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 8e6816b0e9..e4d3f0b984 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 @@ -163,12 +163,14 @@ export class UmbDocumentWorkspaceContext async save() { if (!this.#draft.value) return; + if (!this.#draft.value.id) return; + if (this.getIsNew()) { // TODO: typescript hack until we get the create type const value = this.#draft.value as CreateDocumentRequestModel & { id: string }; await this.repository.create(value); } else { - await this.repository.save(this.#draft.value); + await this.repository.save(this.#draft.value.id, this.#draft.value); } // If it went well, then its not new anymore?. this.setIsNew(false); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 53ee05be00..28e2aed79d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -6,13 +6,19 @@ import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.da import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateMediaRequestModel, + ProblemDetailsModel, + UpdateMediaRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; type ItemDetailType = MediaDetails; -export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbMediaRepository + implements UmbTreeRepository, UmbDetailRepository +{ #host: UmbControllerHostElement; #treeSource: UmbTreeDataSource; @@ -121,24 +127,15 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // DETAILS: async createScaffold(parentId: string | null) { + if (!parentId) throw new Error('Parent id is missing'); await this.#init; - - if (!parentId) { - throw new Error('Parent id is missing'); - } - return this.#detailDataSource.createScaffold(parentId); } async requestById(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - // TODO: should we show a notification if the id is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!id) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } const { data, error } = await this.#detailDataSource.get(id); if (data) { @@ -150,50 +147,46 @@ export class UmbMediaRepository implements UmbTreeRepository, UmbDetailRepositor // Could potentially be general methods: - async create(template: ItemDetailType) { + async create(media: CreateMediaRequestModel) { + if (!media) throw new Error('Media is missing'); + await this.#init; - if (!template || !template.id) { - throw new Error('Template is missing'); - } - - const { error } = await this.#detailDataSource.insert(template); + const { error } = await this.#detailDataSource.insert(media); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // TODO: Update tree store with the new item? or ask tree to request the new item? + //this.#store?.append(media); + const notification = { data: { message: `Media created` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - this.#store?.append(template); - // TODO: Update tree store with the new item? or ask tree to request the new item? - return { error }; } - async save(document: ItemDetailType) { + async save(id: string, updatedItem: UpdateMediaRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!updatedItem) throw new Error('Updated media item is missing'); + await this.#init; - if (!document || !document.id) { - throw new Error('Template is missing'); - } - - const { error } = await this.#detailDataSource.update(document.id, document); + const { error } = await this.#detailDataSource.update(id, updatedItem); if (!error) { - const notification = { data: { message: `Document saved` } }; + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + // this.#store?.append(updatedMediaItem); + // this.#treeStore?.updateItem(id, updatedItem); + + const notification = { data: { message: `Media saved` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#store?.append(document); - this.#treeStore?.updateItem(document.id, { name: document.name }); - - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts index 1621d5628c..797329b01a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.detail.server.data.ts @@ -1,6 +1,10 @@ import type { MediaDetails } from '../../'; import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateMediaRequestModel, + ProblemDetailsModel, + UpdateMediaRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -10,7 +14,9 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @class UmbTemplateDetailServerDataSource * @implements {TemplateDetailDataSource} */ -export class UmbMediaDetailServerDataSource implements UmbDataSource { +export class UmbMediaDetailServerDataSource + implements UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -50,34 +56,15 @@ export class UmbMediaDetailServerDataSource implements UmbDataSource Update type when backend updated -export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRepository { #init!: Promise; #host: UmbControllerHostElement; @@ -129,49 +129,44 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep return { data, error }; } - async save(memberGroup: MemberGroupDetails) { + async save(id: string, memberGroup: MemberGroupDetails) { + if (!id) throw new Error('Id is missing'); + if (!memberGroup) throw new Error('Member group is missing'); + await this.#init; - if (!memberGroup || !memberGroup.name) { - const error: ProblemDetailsModel = { title: 'Member group is missing' }; - return { error }; - } - - const { error } = await this.#detailSource.update(memberGroup.id, memberGroup); + const { error } = await this.#detailSource.update(id, memberGroup); if (!error) { + this.#store?.append(memberGroup); + this.#treeStore?.updateItem(memberGroup.id, memberGroup); + const notification = { data: { message: `Member group '${memberGroup.name} saved` } }; this.#notificationContext?.peek('positive', notification); } - this.#store?.append(memberGroup); - this.#treeStore?.updateItem(memberGroup.id, { name: memberGroup.name }); - return { error }; } async delete(id: string) { - await this.#init; + if (!id) throw new Error('Id is missing'); - if (!id) { - const error: ProblemDetailsModel = { title: 'Id is missing' }; - return { error }; - } + await this.#init; const { error } = await this.#detailSource.delete(id); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a template is deleted from the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + this.#store?.remove([id]); + this.#treeStore?.removeItem(id); + const notification = { data: { message: `Document deleted` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server. - // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#store?.remove([id]); - this.#treeStore?.removeItem(id); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } } 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 1687c7e290..ecf64222eb 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 @@ -56,7 +56,7 @@ export class UmbWorkspaceMemberGroupContext async save() { if (!this.#data.value) return; - await this.repository.save(this.#data.value); + await this.repository.save(this.#data.value.id, this.#data.value); this.setIsNew(true); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 2226ee91ba..620347e0b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -154,30 +154,26 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, return { error }; } - async save(detail: ItemType) { + async save(id: string, updatedMemberType: any) { + if (!id) throw new Error('Key is missing'); + if (!updatedMemberType) throw new Error('Member Type is missing'); + await this.#init; - // TODO: should we show a notification if the MemberType is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!detail || !detail.id) { - const error: ProblemDetailsModel = { title: 'Member type is missing' }; - return { error }; - } - - const { error } = await this.#detailSource.save(detail); + const { error } = await this.#detailSource.save(id, updatedMemberType); if (!error) { - const notification = { data: { message: `Member type '${detail.name}' saved` } }; + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a member type is updated in the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + //this.#store?.append(detail); + this.#treeStore?.updateItem(id, updatedMemberType); + + const notification = { data: { message: `Member type '${updatedMemberType.name}' saved` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a member type is updated in the store while someone is editing it. - this.#store?.append(detail); - this.#treeStore?.updateItem(detail.id, { name: detail.name }); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts index a5cb2f1c9e..ab8466c03c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.detail.server.data.ts @@ -10,7 +10,7 @@ import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; * @class UmbMemberTypeDetailServerDataSource * @implements {MemberTypeDetailDataSource} */ -export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository { +export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository { #host: UmbControllerHostElement; constructor(host: UmbControllerHostElement) { @@ -45,11 +45,8 @@ export class UmbMemberTypeDetailServerDataSource implements UmbDetailRepository< * @return {*} * @memberof UmbMemberTypeDetailServerDataSource */ - async save(memberType: MemberTypeDetails) { - if (!memberType.id) { - const error: ProblemDetailsModel = { title: 'MemberType id is missing' }; - return { error }; - } + async save(id: string, memberType: any) { + if (!id) throw new Error('Member Type id is missing'); const payload = { id: memberType.id, requestBody: memberType }; //return tryExecuteAndNotify(this.#host, MemberTypeResource.putMemberTypeByKey(payload)); 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 a7a0fcc644..8274bec279 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 @@ -55,10 +55,12 @@ export class UmbMemberTypeWorkspaceContext async save() { if (!this.#data.value) return; + if (!this.#data.value.id) return; + if (this.isNew) { await this.repository.create(this.#data.value); } else { - await this.repository.save(this.#data.value); + await this.repository.save(this.#data.value.id, this.#data.value); } // If it went well, then its not new anymore?. this.setIsNew(false); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts index 5849726dd0..bf87193435 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/create.action.ts @@ -1,5 +1,5 @@ import { UmbDataTypeRepository } from '../../repository/data-type.repository'; -import { UMB_CREATE_DATA_TYPE_MODAL } from './modal'; +import { UMB_DATA_TYPE_CREATE_OPTIONS_MODAL } from './modal'; import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; @@ -17,9 +17,11 @@ export class UmbCreateDataTypeEntityAction extends UmbEntityActionBase = [ type: 'entityAction', alias: 'Umb.EntityAction.DataType.Create', name: 'Create Data Type Entity Action', - weight: 900, + weight: 1000, meta: { icon: 'umb:add', label: 'Create', @@ -15,14 +15,14 @@ const entityActions: Array = [ api: UmbCreateDataTypeEntityAction, }, conditions: { - entityType: 'data-type-root', + entityType: 'data-type', }, }, { type: 'modal', - alias: 'Umb.Modal.CreateDataType', - name: 'Create Data Type Modal', - loader: () => import('./modal/create-data-type-modal.element'), + alias: 'Umb.Modal.DataTypeCreateOptions', + name: 'Data Type Create Options Modal', + loader: () => import('./modal/data-type-create-options-modal.element'), }, ]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/data-type-create-options-modal.element.ts similarity index 53% rename from src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts rename to src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/data-type-create-options-modal.element.ts index cfe48669f7..f4c615847c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/create-data-type-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/data-type-create-options-modal.element.ts @@ -1,14 +1,26 @@ import { html } from 'lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; -import { customElement } from 'lit/decorators.js'; +import { customElement, property } from 'lit/decorators.js'; import { DATA_TYPE_REPOSITORY_ALIAS } from '../../../repository/manifests'; -import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; -import { UmbModalContext, UMB_FOLDER_MODAL, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; +import { UmbDataTypeCreateOptionsModalData } from '.'; +import { + UmbModalContext, + UmbModalHandler, + UMB_FOLDER_MODAL, + UMB_MODAL_CONTEXT_TOKEN, +} from '@umbraco-cms/backoffice/modal'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -@customElement('umb-create-data-type-modal') -export class UmbCreateDataTypeModalElement extends UmbModalBaseElement { +@customElement('umb-data-type-create-options-modal') +export class UmbDataTypeCreateOptionsModalElement extends UmbLitElement { static styles = [UUITextStyles]; + @property({ attribute: false }) + modalHandler?: UmbModalHandler; + + @property({ type: Object }) + data?: UmbDataTypeCreateOptionsModalData; + #modalContext?: UmbModalContext; constructor() { @@ -26,6 +38,11 @@ export class UmbCreateDataTypeModalElement extends UmbModalBaseElement { folderModalHandler?.onSubmit().then(() => this.modalHandler?.submit()); } + // close the modal when navigating to data type + #onNavigate() { + this.modalHandler?.submit(); + } + #onCancel() { this.modalHandler?.reject(); } @@ -34,7 +51,11 @@ export class UmbCreateDataTypeModalElement extends UmbModalBaseElement { return html` - + + } @@ -47,10 +68,10 @@ export class UmbCreateDataTypeModalElement extends UmbModalBaseElement { } } -export default UmbCreateDataTypeModalElement; +export default UmbDataTypeCreateOptionsModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-create-data-type-modal': UmbCreateDataTypeModalElement; + 'umb-data-type-create-options-modal': UmbDataTypeCreateOptionsModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts index 9e1e8eb025..c6565fb240 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/entity-actions/create/modal/index.ts @@ -1,6 +1,13 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; -export const UMB_CREATE_DATA_TYPE_MODAL = new UmbModalToken('Umb.Modal.CreateDataType', { - type: 'sidebar', - size: 'small', -}); +export interface UmbDataTypeCreateOptionsModalData { + parentKey: string | null; +} + +export const UMB_DATA_TYPE_CREATE_OPTIONS_MODAL = new UmbModalToken( + 'Umb.Modal.DataTypeCreateOptions', + { + type: 'sidebar', + size: 'small', + } +); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts index 1f44f2d881..29c995c92a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/menu-item/manifests.ts @@ -9,7 +9,7 @@ const menuItem: ManifestTypes = { meta: { label: 'Data Types', icon: 'umb:folder', - entityType: 'data-type-root', + entityType: 'data-type', treeAlias: 'Umb.Tree.DataTypes', }, conditions: { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts index 8f93aa9f09..21a4d02041 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.repository.ts @@ -23,11 +23,11 @@ import { import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbFolderRepository } from '@umbraco-cms/backoffice/repository'; -type ItemType = DataTypeResponseModel; -type TreeItemType = any; - export class UmbDataTypeRepository - implements UmbTreeRepository, UmbDetailRepository, UmbFolderRepository + implements + UmbTreeRepository, + UmbDetailRepository, + UmbFolderRepository { #init!: Promise; @@ -143,8 +143,7 @@ export class UmbDataTypeRepository return this.#detailStore!.byId(id); } - // Could potentially be general methods: - async create(dataType: ItemType) { + async create(dataType: CreateDataTypeRequestModel) { if (!dataType) throw new Error('Data Type is missing'); if (!dataType.id) throw new Error('Data Type id is missing'); @@ -153,36 +152,38 @@ export class UmbDataTypeRepository const { error } = await this.#detailSource.insert(dataType); if (!error) { + // TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items? + const treeItem = createTreeItem(dataType); + this.#treeStore?.appendItems([treeItem]); + //this.#detailStore?.append(dataType); + const notification = { data: { message: `Data Type created` } }; this.#notificationContext?.peek('positive', notification); - - this.#detailStore?.append(dataType); - this.#treeStore?.appendItems([dataType]); } return { error }; } - async save(dataType: ItemType) { - if (!dataType) throw new Error('Data Type is missing'); - if (!dataType.id) throw new Error('Data Type id is missing'); + async save(id: string, updatedDataType: UpdateDataTypeRequestModel) { + if (!id) throw new Error('Data Type id is missing'); + if (!updatedDataType) throw new Error('Data Type is missing'); await this.#init; - const { error } = await this.#detailSource.update(dataType.id, dataType); + const { error } = await this.#detailSource.update(id, updatedDataType); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + // this.#detailStore?.append(dataType); + this.#treeStore?.updateItem(id, updatedDataType); + const notification = { data: { message: `Data Type saved` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#detailStore?.append(dataType); - this.#treeStore?.updateItem(dataType.id, { name: dataType.name }); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } @@ -195,17 +196,17 @@ export class UmbDataTypeRepository const { error } = await this.#detailSource.delete(id); if (!error) { + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server. + // Consider notify a workspace if a template is deleted from the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + this.#detailStore?.remove([id]); + this.#treeStore?.removeItem(id); + const notification = { data: { message: `Data Type deleted` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server. - // Consider notify a workspace if a template is deleted from the store while someone is editing it. - this.#detailStore?.remove([id]); - this.#treeStore?.removeItem(id); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } @@ -222,21 +223,10 @@ export class UmbDataTypeRepository const { error } = await this.#folderSource.insert(folderRequest); - // TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items? if (!error) { - const treeItem: FolderTreeItemResponseModel = { - $type: 'FolderTreeItemResponseModel', - parentId: folderRequest.parentId, - name: folderRequest.name, - id: folderRequest.id, - isFolder: true, - isContainer: false, - type: 'data-type', - icon: 'umb:folder', - hasChildren: false, - }; - - this.#treeStore?.appendItems([treeItem]); + // TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items? + const folderTreeItem = createFolderTreeItem(folderRequest); + this.#treeStore?.appendItems([folderTreeItem]); } return { error }; @@ -279,3 +269,29 @@ export class UmbDataTypeRepository return { data, error }; } } + +export const createTreeItem = (item: CreateDataTypeRequestModel): FolderTreeItemResponseModel => { + if (!item) throw new Error('item is null or undefined'); + if (!item.id) throw new Error('item.id is null or undefined'); + + return { + $type: 'FolderTreeItemResponseModel', + type: 'data-type', + parentId: item.parentId, + name: item.name, + id: item.id, + isFolder: false, + isContainer: false, + hasChildren: false, + }; +}; + +export const createFolderTreeItem = (item: CreateFolderRequestModel): FolderTreeItemResponseModel => { + if (!item) throw new Error('item is null or undefined'); + if (!item.id) throw new Error('item.id is null or undefined'); + + return { + ...createTreeItem(item), + isFolder: true, + }; +}; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts index 9ef4e96de1..0d70c24d85 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/sources/data-type.server.data.ts @@ -17,8 +17,7 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; * @implements {RepositoryDetailDataSource} */ export class UmbDataTypeServerDataSource - implements - UmbDataSource + implements UmbDataSource { #host: UmbControllerHostElement; @@ -50,14 +49,13 @@ export class UmbDataTypeServerDataSource /** * Creates a new Data Type scaffold * @param {(string | null)} parentId - * @return {*} + * @return { CreateDataTypeRequestModel } * @memberof UmbDataTypeServerDataSource */ - async createScaffold(parentId: string | null) { - const data: DataTypeResponseModel = { - $type: '', - parentId: parentId, + async createScaffold(parentId?: string | null) { + const data: CreateDataTypeRequestModel = { id: uuidv4(), + parentId, }; return { data }; @@ -73,7 +71,7 @@ export class UmbDataTypeServerDataSource if (!dataType) throw new Error('Data Type is missing'); if (!dataType.id) throw new Error('Data Type id is missing'); - tryExecuteAndNotify( + return tryExecuteAndNotify( this.#host, DataTypeResource.postDataType({ requestBody: dataType, 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 a1e6fd139a..127850dc1f 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 @@ -1,7 +1,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbDataTypeRepository } from '../repository/data-type.repository'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; -import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { CreateDataTypeRequestModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -9,8 +9,10 @@ export class UmbDataTypeWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { + // TODO: revisit. temp solution because the create and response models are different. #data = new ObjectState(undefined); data = this.#data.asObservable(); + name = this.#data.getObservablePart((data) => data?.name); id = this.#data.getObservablePart((data) => data?.id); @@ -29,7 +31,9 @@ export class UmbDataTypeWorkspaceContext async createScaffold(parentId: string | null) { const { data } = await this.repository.createScaffold(parentId); this.setIsNew(true); - this.#data.next(data); + // TODO: This is a hack to get around the fact that the data is not typed correctly. + // Create and response models are different. We need to look into this. + this.#data.next(data as unknown as DataTypeResponseModel); return { data }; } @@ -70,10 +74,12 @@ export class UmbDataTypeWorkspaceContext async save() { if (!this.#data.value) return; + if (!this.#data.value.id) return; + if (this.isNew) { await this.repository.create(this.#data.value); } else { - await this.repository.save(this.#data.value); + await this.repository.save(this.#data.value.id, this.#data.value); } // If it went well, then its not new anymore?. this.setIsNew(false); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts index 0ea7ef470f..69f1f01de7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.element.ts @@ -21,7 +21,7 @@ export class UmbDataTypeWorkspaceElement extends UmbLitElement { path: 'create/:parentId', component: () => this.#element, setup: (_component, info) => { - const parentId = info.match.params.parentId; + const parentId = info.match.params.parentId === 'null' ? null : info.match.params.parentId; this.#workspaceContext.createScaffold(parentId); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts index 0bd1802687..03b7ef49a0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/views/info/workspace-view-data-type-info.element.ts @@ -9,7 +9,15 @@ import { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-workspace-view-data-type-info') export class UmbWorkspaceViewDataTypeInfoElement extends UmbLitElement { - static styles = [UUITextStyles, css``]; + static styles = [ + UUITextStyles, + css` + :host { + display: block; + margin: var(--uui-size-layout-1); + } + `, + ]; @state() _dataType?: DataTypeResponseModel; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 86e30adfbf..52249a2896 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -5,18 +5,20 @@ import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.s import { RelationTypeTreeDataSource } from './sources'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ProblemDetailsModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateRelationTypeRequestModel, + ProblemDetailsModel, + RelationTypeResponseModel, + UpdateRelationTypeRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -type ItemType = RelationTypeResponseModel; -type TreeItemType = any; - -// Move to documentation / JSdoc -/* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ -// element -> context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. -export class UmbRelationTypeRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbRelationTypeRepository + implements + UmbTreeRepository, + UmbDetailRepository +{ #init!: Promise; #host: UmbControllerHostElement; @@ -73,13 +75,9 @@ export class UmbRelationTypeRepository implements UmbTreeRepository) { + if (!ids) throw new Error('Ids are missing'); await this.#init; - if (!ids) { - const error: ProblemDetailsModel = { title: 'Keys are missing' }; - return { data: undefined, error }; - } - const { data, error } = await this.#treeSource.getItems(ids); return { data, error, asObservable: () => this.#treeStore!.items(ids) }; @@ -137,75 +135,72 @@ export class UmbRelationTypeRepository implements UmbTreeRepository>; - get(id: string): Promise>; - insert(template: TemplateResponseModel): Promise; - update(template: TemplateResponseModel): Promise; - delete(id: string): Promise; -} +import type { UmbDataSource } from '@umbraco-cms/backoffice/repository'; /** * A data source for the Template detail that fetches data from the server @@ -18,7 +15,9 @@ export interface TemplateDetailDataSource { * @class UmbTemplateDetailServerDataSource * @implements {TemplateDetailDataSource} */ -export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSource { +export class UmbTemplateDetailServerDataSource + implements UmbDataSource +{ #host: UmbControllerHostElement; /** @@ -77,13 +76,13 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async insert(template: TemplateResponseModel) { - const payload = { requestBody: template }; - // TODO: fix type mismatch + async insert(template: CreateTemplateRequestModel) { + if (!template) throw new Error('Template is missing'); + return tryExecuteAndNotify( this.#host, - tryExecuteAndNotify(this.#host, TemplateResource.postTemplate(payload)) as any - ) as any; + tryExecuteAndNotify(this.#host, TemplateResource.postTemplate({ requestBody: template })) + ); } /** @@ -92,14 +91,10 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @return {*} * @memberof UmbTemplateDetailServerDataSource */ - async update(template: TemplateResponseModel) { - if (!template.id) { - const error: ProblemDetailsModel = { title: 'Template id is missing' }; - return { error }; - } - - const payload = { id: template.id, requestBody: template }; - return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateById(payload)); + async update(id: string, template: UpdateTemplateRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!template) throw new Error('Template is missing'); + return tryExecuteAndNotify(this.#host, TemplateResource.putTemplateById({ id, requestBody: template })); } /** @@ -109,11 +104,7 @@ export class UmbTemplateDetailServerDataSource implements TemplateDetailDataSour * @memberof UmbTemplateDetailServerDataSource */ async delete(id: string) { - if (!id) { - const error: ProblemDetailsModel = { title: 'Key is missing' }; - return { error }; - } - + if (!id) throw new Error('Id is missing'); return await tryExecuteAndNotify(this.#host, TemplateResource.deleteTemplateById({ id })); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index a41048ff2a..0ec0c4baa7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -6,9 +6,18 @@ import type { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backof import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ProblemDetailsModel, TemplateResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateTemplateRequestModel, + ProblemDetailsModel, + TemplateResponseModel, + UpdateTemplateRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; -export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbTemplateRepository + implements + UmbTreeRepository, + UmbDetailRepository +{ #init; #host: UmbControllerHostElement; @@ -156,26 +165,25 @@ export class UmbTemplateRepository implements UmbTreeRepository, UmbDetailR return { error }; } - async save(template: TemplateResponseModel) { + async save(id: string, template: UpdateTemplateRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!template) throw new Error('Template is missing'); + await this.#init; - if (!template || !template.id) { - throw new Error('Template is missing'); - } - - const { error } = await this.#detailDataSource.update(template); + const { error } = await this.#detailDataSource.update(id, template); if (!error) { const notification = { data: { message: `Template saved` } }; this.#notificationContext?.peek('positive', notification); - } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a template is updated in the store while someone is editing it. - this.#store?.append(template); - this.#treeStore?.updateItem(template.id, { name: template.name }); - // TODO: would be nice to align the stores on methods/methodNames. + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a template is updated in the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + //this.#store?.append(template); + this.#treeStore?.updateItem(id, template); + } return { error }; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts index 6f187c444e..031192d45b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts @@ -155,6 +155,7 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { async #create() { // TODO: what to do if modal service is not available? if (!this.#modalContext) return; + if (!this.#repo) return; const modalHandler = this.#modalContext?.open(UMB_CREATE_DICTIONARY_MODAL, { unique: null }); @@ -162,8 +163,8 @@ export class UmbDashboardTranslationDictionaryElement extends UmbLitElement { const { name } = await modalHandler.onSubmit(); if (!name) return; - const result = await this.#repo?.create({ $type: '', name, parentId: null, translations: [], id: '' }); - + const { data } = await this.#repo.createScaffold(null); + console.log(data); // TODO => get location header to route to new item } 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 dae8885787..34bb2459bf 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 @@ -34,6 +34,7 @@ export default class UmbCreateDictionaryEntityAction extends UmbEntityActionBase async execute() { // TODO: what to do if modal service is not available? if (!this.#modalContext) return; + if (!this.repository) return; // TODO: how can we get the current entity detail in the modal? Passing the observable // feels a bit hacky. Works, but hacky. @@ -46,15 +47,9 @@ export default class UmbCreateDictionaryEntityAction extends UmbEntityActionBase const { name } = await modalHandler.onSubmit(); if (!name) return; - const result = await this.repository?.create({ - $type: '', - name, - parentId: this.unique, - translations: [], - id: '', - }); + const { data } = await this.repository.createScaffold(this.unique, name); // TODO => get location header to route to new item - console.log(result); + console.log(data); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts deleted file mode 100644 index b478fc4193..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DictionaryItemTranslationModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; - -// TODO: Can we get rid of this type? I guess it should come from the server? Investigate this. -export interface DictionaryDetails extends EntityTreeItemResponseModel { - translations: DictionaryItemTranslationModel[]; -} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index aeba6365eb..0ce6e7db0f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -1,4 +1,3 @@ -import type { DictionaryDetails } from '../'; import { UmbDictionaryStore, UMB_DICTIONARY_STORE_CONTEXT_TOKEN } from './dictionary.store'; import { UmbDictionaryDetailServerDataSource } from './sources/dictionary.detail.server.data'; import { UmbDictionaryTreeStore, UMB_DICTIONARY_TREE_STORE_CONTEXT_TOKEN } from './dictionary.tree.store'; @@ -6,10 +5,24 @@ import { DictionaryTreeServerDataSource } from './sources/dictionary.tree.server import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; -import { ImportDictionaryRequestModel, ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; +import { + CreateDictionaryItemRequestModel, + DictionaryOverviewResponseModel, + ImportDictionaryRequestModel, + ProblemDetailsModel, + UpdateDictionaryItemRequestModel, +} from '@umbraco-cms/backoffice/backend-api'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepository { +export class UmbDictionaryRepository + implements + UmbTreeRepository, + UmbDetailRepository< + CreateDictionaryItemRequestModel, + UpdateDictionaryItemRequestModel, + DictionaryOverviewResponseModel + > +{ #init!: Promise; #host: UmbControllerHostElement; @@ -103,26 +116,16 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo // DETAILS - async createScaffold(parentId: string | null) { + async createScaffold(parentId: string | null, name?: string) { + if (parentId === undefined) throw new Error('Parent id is missing'); await this.#init; - - if (!parentId) { - const error: ProblemDetailsModel = { title: 'Parent id is missing' }; - return { data: undefined, error }; - } - - return this.#detailSource.createScaffold(parentId); + return this.#detailSource.createScaffold(parentId, name); } async requestById(id: string) { + if (!id) throw new Error('Id is missing'); await this.#init; - // TODO: should we show a notification if the id is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!id) { - const error: ProblemDetailsModel = { title: 'Id is missing' }; - return { error }; - } const { data, error } = await this.#detailSource.get(id); if (data) { @@ -141,34 +144,30 @@ export class UmbDictionaryRepository implements UmbTreeRepository, UmbDetailRepo return this.#detailSource.delete(id); } - async save(dictionary: DictionaryDetails) { + async save(id: string, updatedDictionary: UpdateDictionaryItemRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!updatedDictionary) throw new Error('Dictionary is missing'); + await this.#init; - // TODO: should we show a notification if the dictionary is missing? - // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? - if (!dictionary || !dictionary.id) { - const error: ProblemDetailsModel = { title: 'Dictionary is missing' }; - return { error }; - } - - const { error } = await this.#detailSource.update(dictionary); + const { error } = await this.#detailSource.update(id, updatedDictionary); if (!error) { - const notification = { data: { message: `Dictionary '${dictionary.name}' saved` } }; + // TODO: we currently don't use the detail store for anything. + // Consider to look up the data before fetching from the server + // Consider notify a workspace if a dictionary is updated in the store while someone is editing it. + // TODO: would be nice to align the stores on methods/methodNames. + //this.#detailStore?.append(dictionary); + this.#treeStore?.updateItem(id, { name: updatedDictionary.name }); + + const notification = { data: { message: `Dictionary '${updatedDictionary.name}' saved` } }; this.#notificationContext?.peek('positive', notification); } - // TODO: we currently don't use the detail store for anything. - // Consider to look up the data before fetching from the server - // Consider notify a workspace if a dictionary is updated in the store while someone is editing it. - this.#detailStore?.append(dictionary); - this.#treeStore?.updateItem(dictionary.id, { name: dictionary.name }); - // TODO: would be nice to align the stores on methods/methodNames. - return { error }; } - async create(detail: DictionaryDetails) { + async create(detail: CreateDictionaryItemRequestModel) { await this.#init; if (!detail.name) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts index a9907ca76a..c4b62e7c82 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts @@ -1,8 +1,8 @@ -import type { DictionaryDetails } from '../'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { DictionaryItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; /** * @export @@ -11,13 +11,13 @@ import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; * @description - Data Store for Dictionary */ export class UmbDictionaryStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new ArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DICTIONARY_STORE_CONTEXT_TOKEN.toString()); } - append(dictionary: DictionaryDetails) { + append(dictionary: DictionaryItemResponseModel) { this.#data.append([dictionary]); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts index 4de279d9a0..3479db2d77 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.detail.server.data.ts @@ -1,14 +1,16 @@ -import type { DictionaryDetails } from '../../'; -import { DictionaryDetailDataSource } from './dictionary.details.server.data.interface'; +import { v4 as uuidv4 } from 'uuid'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { CreateDictionaryItemRequestModel, + DictionaryItemResponseModel, DictionaryResource, ImportDictionaryRequestModel, LanguageResource, ProblemDetailsModel, + UpdateDictionaryItemRequestModel, } from '@umbraco-cms/backoffice/backend-api'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; /** * @description - A data source for the Dictionary detail that fetches data from the server @@ -16,7 +18,10 @@ import { * @class UmbDictionaryDetailServerDataSource * @implements {DictionaryDetailDataSource} */ -export class UmbDictionaryDetailServerDataSource implements DictionaryDetailDataSource { +export class UmbDictionaryDetailServerDataSource + implements + UmbDataSource +{ #host: UmbControllerHostElement; constructor(host: UmbControllerHostElement) { @@ -29,11 +34,13 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async createScaffold(parentId: string) { - const data: DictionaryDetails = { - name: '', + async createScaffold(parentId?: string | null, name?: string) { + const data = { + id: uuidv4(), parentId, - } as DictionaryDetails; + name, + translations: [], + }; return { data }; } @@ -45,7 +52,7 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @memberof UmbDictionaryDetailServerDataSource */ get(id: string) { - return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryById({ id })) as any; + return tryExecuteAndNotify(this.#host, DictionaryResource.getDictionaryById({ id })); } /** @@ -64,13 +71,11 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async update(dictionary: DictionaryDetails) { - if (!dictionary.id) { - const error: ProblemDetailsModel = { title: 'Dictionary id is missing' }; - return { error }; - } + async update(id: string, dictionary: UpdateDictionaryItemRequestModel) { + if (!id) throw new Error('Id is missing'); + if (!dictionary) throw new Error('Dictionary is missing'); - const payload = { id: dictionary.id, requestBody: dictionary }; + const payload = { id, requestBody: dictionary }; return tryExecuteAndNotify(this.#host, DictionaryResource.putDictionaryById(payload)); } @@ -80,14 +85,8 @@ export class UmbDictionaryDetailServerDataSource implements DictionaryDetailData * @return {*} * @memberof UmbDictionaryDetailServerDataSource */ - async insert(data: DictionaryDetails) { - const requestBody: CreateDictionaryItemRequestModel = { - parentId: data.parentId, - name: data.name, - }; - - // TODO: fix type mismatch: - return tryExecuteAndNotify(this.#host, DictionaryResource.postDictionary({ requestBody })) as any; + async insert(data: CreateDictionaryItemRequestModel) { + return tryExecuteAndNotify(this.#host, DictionaryResource.postDictionary({ requestBody: data })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts deleted file mode 100644 index 269a4610b0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.details.server.data.interface.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { DictionaryDetails } from '../../'; -import { - DictionaryItemResponseModel, - PagedDictionaryOverviewResponseModel, - PagedLanguageResponseModel, - ImportDictionaryRequestModel, -} from '@umbraco-cms/backoffice/backend-api'; -import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; - -export interface DictionaryDetailDataSource { - createScaffold(parentId: string): Promise>; - list(skip?: number, take?: number): Promise>; - get(id: string): Promise>; - insert(data: DictionaryDetails): Promise; - update(dictionary: DictionaryItemResponseModel): Promise; - delete(id: string): Promise; - export(id: string, includeChildren: boolean): Promise>; - import(fileName: string, parentId?: string): Promise>; - upload(formData: ImportDictionaryRequestModel): Promise>; - // TODO - temp only - getLanguages(): Promise>; -} 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 dc0cdb3580..2d2eb3039d 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 @@ -1,18 +1,17 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; -import type { DictionaryDetails } from '../'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; - -type EntityType = DictionaryDetails; +import { DictionaryItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbDictionaryWorkspaceContext - extends UmbWorkspaceContext - implements UmbEntityWorkspaceContextInterface + extends UmbWorkspaceContext + implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new ObjectState(undefined); data = this.#data.asObservable(); + name = this.#data.getObservablePart((data) => data?.name); dictionary = this.#data.getObservablePart((data) => data); @@ -68,12 +67,15 @@ export class UmbDictionaryWorkspaceContext const { data } = await this.repository.createScaffold(parentId); if (!data) return; this.setIsNew(true); - this.#data.next(data); + // TODO: This is a hack to get around the fact that the data is not typed correctly. + // Create and response models are different. We need to look into this. + this.#data.next(data as unknown as DictionaryItemResponseModel); } async save() { if (!this.#data.value) return; - await this.repository.save(this.#data.value); + if (!this.#data.value.id) return; + await this.repository.save(this.#data.value.id, this.#data.value); this.setIsNew(false); } 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 a756d4c727..e899c2aaf6 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 @@ -1,4 +1,4 @@ -import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; +import { handlers as dataTypeHandlers } from './domains/data-type'; import { handlers as relationTypeHandlers } from './domains/relation-type.handlers'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts index c25318b39f..aaf776a892 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/dictionary.data.ts @@ -1,18 +1,12 @@ -import type { DictionaryDetails } from '../../../backoffice/translation/dictionary'; import { UmbEntityData } from './entity.data'; import { createEntityTreeItem } from './utils'; -import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import type { DictionaryItemResponseModel, EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -export const data: Array = [ +export const data: Array = [ { $type: '', - parentId: null, name: 'Hello', id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', - hasChildren: true, - type: 'dictionary-item', - isContainer: false, - icon: 'umb:book-alt', translations: [ { isoCode: 'en', @@ -26,13 +20,8 @@ export const data: Array = [ }, { $type: '', - parentId: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', name: 'Hello again', id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', - hasChildren: false, - type: 'dictionary-item', - isContainer: false, - icon: 'umb:book-alt', translations: [ { isoCode: 'en', @@ -46,27 +35,50 @@ export const data: Array = [ }, ]; +const dictionaryTree: Array = [ + { + $type: '', + parentId: null, + name: 'Hello', + id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + hasChildren: true, + type: 'dictionary-item', + isContainer: false, + icon: 'umb:book-alt', + }, + { + $type: '', + parentId: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb', + name: 'Hello again', + id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb', + hasChildren: false, + type: 'dictionary-item', + isContainer: false, + icon: 'umb:book-alt', + }, +]; + // Temp mocked database // TODO: all properties are optional in the server schema. I don't think this is correct. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -class UmbDictionaryData extends UmbEntityData { +class UmbDictionaryData extends UmbEntityData { constructor() { super(data); } getTreeRoot(): Array { - const rootItems = this.data.filter((item) => item.parentId === null); + const rootItems = dictionaryTree.filter((item) => item.parentId === null); return rootItems.map((item) => createEntityTreeItem(item)); } getTreeItemChildren(id: string): Array { - const childItems = this.data.filter((item) => item.parentId === id); + const childItems = dictionaryTree.filter((item) => item.parentId === id); return childItems.map((item) => createEntityTreeItem(item)); } getTreeItem(ids: Array): Array { - const items = this.data.filter((item) => ids.includes(item.id ?? '')); + const items = dictionaryTree.filter((item) => ids.includes(item.id ?? '')); return items.map((item) => createEntityTreeItem(item)); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts index 9237f22a99..d3a7356430 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/data/entity.data.ts @@ -19,6 +19,16 @@ export class UmbEntityData extends UmbData { return this.data.filter((item) => ids.includes(item.id)); } + insert(item: T) { + const exits = this.data.find((i) => i.id === item.id); + + if (exits) { + throw new Error(`Item with key ${item.id} already exists`); + } + + this.data.push(item); + } + save(saveItem: T) { const foundIndex = this.data.findIndex((item) => item.id === saveItem.id); if (foundIndex !== -1) { diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts deleted file mode 100644 index 0c3c6f75e5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type.handlers.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { rest } from 'msw'; -import { umbDataTypeData } from '../data/data-type.data'; -import { umbracoPath } from '@umbraco-cms/backoffice/utils'; -import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; - -// TODO: add schema -export const handlers = [ - // TREE - rest.get(umbracoPath('/tree/data-type/root'), (req, res, ctx) => { - const rootItems = umbDataTypeData.getTreeRoot(); - const response = { - total: rootItems.length, - items: rootItems, - }; - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get(umbracoPath('/tree/data-type/children'), (req, res, ctx) => { - const parentId = req.url.searchParams.get('parentId'); - if (!parentId) return; - - const children = umbDataTypeData.getTreeItemChildren(parentId); - - const response = { - total: children.length, - items: children, - }; - - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get(umbracoPath('/tree/data-type/item'), (req, res, ctx) => { - const ids = req.url.searchParams.getAll('id'); - if (!ids) return; - const items = umbDataTypeData.getTreeItem(ids); - return res(ctx.status(200), ctx.json(items)); - }), - - // FOLDERS - rest.post(umbracoPath('/data-type/folder'), async (req, res, ctx) => { - const data = await req.json(); - if (!data) return; - - umbDataTypeData.createFolder(data); - - return res(ctx.status(200)); - }), - - rest.get(umbracoPath('/data-type/folder/:id'), (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - const dataType = umbDataTypeData.getById(id); - - return res(ctx.status(200), ctx.json(dataType)); - }), - - rest.put(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { - const data = await req.json(); - if (!data) return; - - umbDataTypeData.save(data); - - return res(ctx.status(200)); - }), - - rest.delete(umbracoPath('/data-type/folder/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - try { - umbDataTypeData.deleteFolder(id); - return res(ctx.status(200)); - } catch (error) { - return res( - ctx.status(404), - ctx.json({ - status: 404, - type: 'error', - detail: 'Not Found', - }) - ); - } - }), - - // Details - rest.post(umbracoPath('/data-type'), async (req, res, ctx) => { - const data = await req.json(); - if (!data) return; - - const saved = umbDataTypeData.save(data); - - return res(ctx.status(200), ctx.json(saved)); - }), - - rest.get(umbracoPath('/data-type/:id'), (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - const dataType = umbDataTypeData.getById(id); - - return res(ctx.status(200), ctx.json(dataType)); - }), - - rest.put(umbracoPath('/data-type/:id'), async (req, res, ctx) => { - const data = await req.json(); - if (!data) return; - - const saved = umbDataTypeData.save(data); - - return res(ctx.status(200), ctx.json(saved)); - }), - - rest.delete(umbracoPath('/data-type/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - umbDataTypeData.delete([id]); - - return res(ctx.status(200)); - }), -]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/detail.handlers.ts new file mode 100644 index 0000000000..c362a16141 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/detail.handlers.ts @@ -0,0 +1,42 @@ +import { rest } from 'msw'; +import { umbDataTypeData } from '../../data/data-type.data'; +import { slug } from './slug'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const detailHandlers = [ + rest.post(umbracoPath(`${slug}`), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + umbDataTypeData.insert(data); + + return res(ctx.status(200)); + }), + + rest.get(umbracoPath(`${slug}/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + const dataType = umbDataTypeData.getById(id); + + return res(ctx.status(200), ctx.json(dataType)); + }), + + rest.put(umbracoPath(`${slug}/:id`), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + const saved = umbDataTypeData.save(data); + + return res(ctx.status(200), ctx.json(saved)); + }), + + rest.delete(umbracoPath(`${slug}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + umbDataTypeData.delete([id]); + + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/folder.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/folder.handlers.ts new file mode 100644 index 0000000000..9a0d5bc071 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/folder.handlers.ts @@ -0,0 +1,53 @@ +import { rest } from 'msw'; +import { umbDataTypeData } from '../../data/data-type.data'; +import { slug } from './slug'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; +import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; + +export const folderHandlers = [ + rest.post(umbracoPath(`${slug}/folder`), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + umbDataTypeData.createFolder(data); + + return res(ctx.status(200)); + }), + + rest.get(umbracoPath(`${slug}/folder/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + const dataType = umbDataTypeData.getById(id); + + return res(ctx.status(200), ctx.json(dataType)); + }), + + rest.put(umbracoPath(`${slug}/folder/:id`), async (req, res, ctx) => { + const data = await req.json(); + if (!data) return; + + umbDataTypeData.save(data); + + return res(ctx.status(200)); + }), + + rest.delete(umbracoPath(`${slug}/folder/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + try { + umbDataTypeData.deleteFolder(id); + return res(ctx.status(200)); + } catch (error) { + return res( + ctx.status(404), + ctx.json({ + status: 404, + type: 'error', + detail: 'Not Found', + }) + ); + } + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/index.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/index.ts new file mode 100644 index 0000000000..fb46e23ffd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/index.ts @@ -0,0 +1,6 @@ +import { folderHandlers } from './folder.handlers'; +import { treeHandlers } from './tree.handlers'; +import { detailHandlers } from './detail.handlers'; +import { itemHandlers } from './item.handlers'; + +export const handlers = [...treeHandlers, ...itemHandlers, ...folderHandlers, ...detailHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/item.handlers.ts new file mode 100644 index 0000000000..24d17c79e0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/item.handlers.ts @@ -0,0 +1,13 @@ +import { rest } from 'msw'; +import { umbDataTypeData } from '../../data/data-type.data'; +import { slug } from './slug'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const itemHandlers = [ + rest.get(umbracoPath(`${slug}/item`), (req, res, ctx) => { + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbDataTypeData.getTreeItem(ids); + return res(ctx.status(200), ctx.json(items)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/slug.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/slug.ts new file mode 100644 index 0000000000..5c453df84c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/slug.ts @@ -0,0 +1 @@ +export const slug = '/data-type'; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/tree.handlers.ts new file mode 100644 index 0000000000..203acd560f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/data-type/tree.handlers.ts @@ -0,0 +1,29 @@ +import { rest } from 'msw'; +import { umbDataTypeData } from '../../data/data-type.data'; +import { slug } from './slug'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const treeHandlers = [ + rest.get(umbracoPath(`/tree${slug}/root`), (req, res, ctx) => { + const rootItems = umbDataTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${slug}/children`), (req, res, ctx) => { + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + + const children = umbDataTypeData.getTreeItemChildren(parentId); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts index 16fbe9f341..33b51c2ad4 100644 --- a/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/core/mocks/domains/dictionary.handlers.ts @@ -1,15 +1,19 @@ import { rest } from 'msw'; -import type { DictionaryDetails } from '../../../backoffice/translation/dictionary'; import { umbDictionaryData } from '../data/dictionary.data'; -import { ImportDictionaryRequestModel, DictionaryOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { + ImportDictionaryRequestModel, + DictionaryOverviewResponseModel, + DictionaryItemResponseModel, + EntityTreeItemResponseModel, +} from '@umbraco-cms/backoffice/backend-api'; const uploadResponse: ImportDictionaryRequestModel = { temporaryFileId: 'c:/path/to/tempfilename.udt', parentId: 'b7e7d0ab-53ba-485d-dddd-12537f9925aa', }; -/// -const importResponse: DictionaryDetails = { +/// TODO: get correct type +const importResponse: DictionaryItemResponseModel & EntityTreeItemResponseModel = { $type: '', parentId: null, name: 'Uploaded dictionary', 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 eb8be4c283..e0a5d8efe6 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 @@ -1,4 +1,4 @@ -import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; +import { handlers as dataTypeHandlers } from './domains/data-type'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; import * as manifestsHandlers from './domains/manifests.handlers';