{
// Draft is located in structure manager
@@ -42,7 +45,7 @@ export class UmbDocumentTypeWorkspaceContext
isSorting = this.#isSorting.asObservable();
constructor(host: UmbControllerHostElement) {
- super(host, 'Umb.Workspace.DocumentType', new UmbDocumentTypeRepository(host));
+ super(host, 'Umb.Workspace.DocumentType', new UmbDocumentTypeDetailRepository(host));
this.structure = new UmbContentTypePropertyStructureManager(this.host, this.repository);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts
index c59d51d8ba..b94edc0dbf 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.ts
@@ -1,7 +1,7 @@
import { UmbDocumentTypeWorkspaceContext } from '../../document-type-workspace.context.js';
-import type { UmbInputDocumentTypeElement } from '../../../components/input-document-type/input-document-type.element.js';
+import type { UmbDocumentTypeInputElement } from '../../../components/document-type-input/document-type-input.element.js';
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
-import { UmbTextStyles } from "@umbraco-cms/backoffice/style";
+import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import type { UUIToggleElement } from '@umbraco-cms/backoffice/external/uui';
import { UmbLitElement } from '@umbraco-cms/internal/lit-element';
import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace';
@@ -62,10 +62,10 @@ export class UmbDocumentTypeWorkspaceViewStructureElement
- {
- const sortedContentTypesList = (e.target as UmbInputDocumentTypeElement).selectedIds.map(
+ const sortedContentTypesList = (e.target as UmbDocumentTypeInputElement).selectedIds.map(
(id, index) => ({
id: id,
sortOrder: index,
@@ -73,7 +73,7 @@ export class UmbDocumentTypeWorkspaceViewStructureElement
);
this.#workspaceContext?.setAllowedContentTypes(sortedContentTypesList);
}}">
-
+
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts
index ec33c52058..d82d1e5d51 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle-bin.repository.ts
@@ -3,12 +3,15 @@ import {
UMB_DOCUMENT_RECYCLE_BIN_TREE_STORE_CONTEXT,
UmbDocumentRecycleBinTreeStore,
} from './document-recycle.bin.tree.store.js';
-import type { UmbTreeDataSource, UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
+import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { UmbBaseController, type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api';
import { DocumentTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
-export class UmbDocumentRecycleBinRepository extends UmbBaseController implements UmbTreeRepository {
+export class UmbDocumentRecycleBinRepository
+ extends UmbBaseController
+ implements UmbTreeRepository
+{
#init!: Promise;
#treeSource: UmbTreeDataSource;
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts
index fa3f3290c3..423a4ad9b1 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/document-recycle.bin.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
/**
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/sources/document-recycle-bin.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/sources/document-recycle-bin.tree.server.data.ts
index 5ece92631e..135fb1fb8d 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/sources/document-recycle-bin.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/recycle-bin/repository/sources/document-recycle-bin.tree.server.data.ts
@@ -1,6 +1,6 @@
-import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { DocumentResource } from '@umbraco-cms/backoffice/backend-api';
-import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts
index 93ed673c97..347534d417 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.repository.ts
@@ -4,7 +4,8 @@ import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './d
import { UmbDocumentTreeServerDataSource } from './sources/document.tree.server.data.js';
import { UMB_DOCUMENT_ITEM_STORE_CONTEXT_TOKEN, type UmbDocumentItemStore } from './document-item.store.js';
import { UmbDocumentItemServerDataSource } from './sources/document-item.server.data.js';
-import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
+import type { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
+import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { UmbBaseController, UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
import {
DocumentResponseModel,
@@ -15,7 +16,8 @@ import {
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbDocumentRepository extends UmbBaseController
+export class UmbDocumentRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.tree.store.ts
index f24842be6a..b832f650fc 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/document.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
/**
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.tree.server.data.ts
index 52451141b9..838c5e149f 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/repository/sources/document.tree.server.data.ts
@@ -1,6 +1,6 @@
-import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { DocumentResource } from '@umbraco-cms/backoffice/backend-api';
-import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
@@ -23,7 +23,7 @@ export class UmbDocumentTreeServerDataSource implements UmbTreeDataSource {
headers: {
'Content-Type': 'application/json',
},
- })
+ }),
);
}
@@ -37,7 +37,7 @@ export class UmbDocumentTreeServerDataSource implements UmbTreeDataSource {
headers: {
'Content-Type': 'application/json',
},
- })
+ }),
);
}
@@ -77,7 +77,7 @@ export class UmbDocumentTreeServerDataSource implements UmbTreeDataSource {
this.#host,
DocumentResource.getTreeDocumentChildren({
parentId,
- })
+ }),
);
}
}
@@ -97,7 +97,7 @@ export class UmbDocumentTreeServerDataSource implements UmbTreeDataSource {
this.#host,
DocumentResource.getDocumentItem({
id: ids,
- })
+ }),
);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts
index ab2de1d00f..f7afd41e5f 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts
@@ -1,5 +1,5 @@
import { UmbDocumentRepository } from '../repository/document.repository.js';
-import { UmbDocumentTypeRepository } from '../../document-types/repository/document-type.repository.js';
+import { UmbDocumentTypeDetailRepository } from '../../document-types/repository/detail/document-type-detail.repository.js';
import { UmbDocumentVariantContext } from '../variant-context/document-variant-context.js';
import { UmbVariantId } from '@umbraco-cms/backoffice/variant';
import { UmbContentTypePropertyStructureManager } from '@umbraco-cms/backoffice/content-type';
@@ -54,7 +54,10 @@ export class UmbDocumentWorkspaceContext
// TODO: Get Workspace Alias via Manifest.
super(host, 'Umb.Workspace.Document', new UmbDocumentRepository(host));
- this.structure = new UmbContentTypePropertyStructureManager(this.host, new UmbDocumentTypeRepository(this.host));
+ this.structure = new UmbContentTypePropertyStructureManager(
+ this.host,
+ new UmbDocumentTypeDetailRepository(this.host),
+ );
this.splitView = new UmbWorkspaceSplitViewManager(this.host);
new UmbObserverController(this.host, this.documentTypeKey, (id) => this.structure.loadType(id));
@@ -130,7 +133,7 @@ export class UmbDocumentWorkspaceContext
const variants = partialUpdateFrozenArray(
oldVariants,
{ name },
- variantId ? (x) => variantId.compare(x) : () => true
+ variantId ? (x) => variantId.compare(x) : () => true,
);
this.#currentData.update({ variants });
}
@@ -142,7 +145,8 @@ export class UmbDocumentWorkspaceContext
async propertyValueByAlias(propertyAlias: string, variantId?: UmbVariantId) {
return this.#currentData.asObservablePart(
(data) =>
- data?.values?.find((x) => x?.alias === propertyAlias && (variantId ? variantId.compare(x) : true))?.value as PropertyValueType
+ data?.values?.find((x) => x?.alias === propertyAlias && (variantId ? variantId.compare(x) : true))
+ ?.value as PropertyValueType,
);
}
@@ -156,20 +160,24 @@ export class UmbDocumentWorkspaceContext
const currentData = this.#currentData.value;
if (currentData) {
const newDataSet = currentData.values?.find(
- (x) => x.alias === alias && (variantId ? variantId.compare(x) : true)
+ (x) => x.alias === alias && (variantId ? variantId.compare(x) : true),
);
return newDataSet?.value as ReturnType;
}
return undefined;
}
- async setPropertyValue(alias: string, value: PropertyValueType, variantId?: UmbVariantId) {
+ async setPropertyValue(
+ alias: string,
+ value: PropertyValueType,
+ variantId?: UmbVariantId,
+ ) {
const entry = { ...variantId?.toObject(), alias, value };
const currentData = this.#currentData.value;
if (currentData) {
const values = appendToFrozenArray(
currentData.values || [],
entry,
- (x) => x.alias === alias && (variantId ? variantId.compare(x) : true)
+ (x) => x.alias === alias && (variantId ? variantId.compare(x) : true),
);
this.#currentData.update({ values });
}
@@ -221,9 +229,11 @@ export class UmbDocumentWorkspaceContext
export default UmbDocumentWorkspaceContext;
-
-export const UMB_DOCUMENT_WORKSPACE_CONTEXT = new UmbContextToken(
+export const UMB_DOCUMENT_WORKSPACE_CONTEXT = new UmbContextToken<
+ UmbSaveableWorkspaceContextInterface,
+ UmbDocumentWorkspaceContext
+>(
'UmbWorkspaceContext',
// TODO: Refactor: make a better generic way to identify workspaces, maybe workspaceType or workspaceAlias?.
- (context): context is UmbDocumentWorkspaceContext => context.getEntityType?.() === 'document'
+ (context): context is UmbDocumentWorkspaceContext => context.getEntityType?.() === 'document',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.repository.ts
index 0bd3481691..dea0b3010e 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.repository.ts
@@ -7,13 +7,12 @@ import { UmbMediaTypeItemServerDataSource } from './sources/media-type-item.serv
import { UmbBaseController, UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import {
- UmbTreeRepository,
- UmbTreeDataSource,
UmbDataSource,
UmbItemRepository,
UmbDetailRepository,
UmbItemDataSource,
} from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import {
CreateMediaTypeRequestModel,
FolderTreeItemResponseModel,
@@ -23,7 +22,8 @@ import {
} from '@umbraco-cms/backoffice/backend-api';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbMediaTypeRepository extends UmbBaseController
+export class UmbMediaTypeRepository
+ extends UmbBaseController
implements
UmbItemRepository,
UmbTreeRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.tree.store.ts
index 6556470752..b5b1bbf4e5 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/media-type.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
/**
@@ -20,5 +20,5 @@ export class UmbMediaTypeTreeStore extends UmbEntityTreeStore {
}
export const UMB_MEDIA_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
- 'UmbMediaTypeTreeStore'
+ 'UmbMediaTypeTreeStore',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/sources/media-type.tree.server.data.ts
index 4a89b13267..db42fb34d2 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/sources/media-type.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/repository/sources/media-type.tree.server.data.ts
@@ -1,6 +1,6 @@
import { MediaTypeResource } from '@umbraco-cms/backoffice/backend-api';
-import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
-import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
@@ -48,7 +48,7 @@ export class UmbMediaTypeTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MediaTypeResource.getTreeMediaTypeChildren({
parentId,
- })
+ }),
);
}
}
@@ -68,7 +68,7 @@ export class UmbMediaTypeTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MediaTypeResource.getMediaTypeItem({
id: ids,
- })
+ }),
);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.repository.ts
index 714da6a421..740b55dcd1 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.repository.ts
@@ -5,7 +5,7 @@ import { UmbMediaStore, UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store.js';
import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data.js';
import { UmbMediaItemServerDataSource } from './sources/media-item.server.data.js';
import { UmbMediaItemStore } from './media-item.store.js';
-import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { UmbBaseController, UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
import {
CreateMediaRequestModel,
@@ -16,7 +16,8 @@ import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbMediaRepository extends UmbBaseController
+export class UmbMediaRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.tree.store.ts
index 5924ae211b..eb8fcb20e8 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/media.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/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 { UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMediaTreeStore');
diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/sources/media.tree.server.data.ts
index 7dfcecd390..c1f10a516a 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/sources/media.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/repository/sources/media.tree.server.data.ts
@@ -1,6 +1,6 @@
-import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { MediaResource } from '@umbraco-cms/backoffice/backend-api';
-import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
@@ -23,7 +23,7 @@ export class UmbMediaTreeServerDataSource implements UmbTreeDataSource {
headers: {
'Content-Type': 'application/json',
},
- })
+ }),
);
}
@@ -37,7 +37,7 @@ export class UmbMediaTreeServerDataSource implements UmbTreeDataSource {
headers: {
'Content-Type': 'application/json',
},
- })
+ }),
);
}
@@ -77,7 +77,7 @@ export class UmbMediaTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MediaResource.getTreeMediaChildren({
parentId,
- })
+ }),
);
}
}
@@ -97,7 +97,7 @@ export class UmbMediaTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MediaResource.getTreeMediaItem({
id: ids,
- })
+ }),
);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.repository.ts
index d1c12dc190..7ad5df7036 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.repository.ts
@@ -5,12 +5,14 @@ import { UmbMemberGroupStore, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN } from './mem
import { UmbMemberGroupTreeServerDataSource } from './sources/member-group.tree.server.data.js';
import { UmbBaseController, type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
-import type { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
+import type { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
// TODO => Update type when backend updated
-export class UmbMemberGroupRepository extends UmbBaseController
+export class UmbMemberGroupRepository
+ extends UmbBaseController
implements UmbTreeRepository, UmbDetailRepository, UmbApi
{
#init!: Promise;
@@ -24,7 +26,7 @@ export class UmbMemberGroupRepository extends UmbBaseController
#notificationContext?: UmbNotificationContext;
constructor(host: UmbControllerHost) {
- super(host)
+ super(host);
// TODO: figure out how spin up get the correct data source
this.#treeSource = new UmbMemberGroupTreeServerDataSource(this);
this.#detailSource = new UmbMemberGroupDetailServerDataSource(this);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.tree.store.ts
index f2946c0a9f..52ad906621 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/member-group.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
/**
@@ -20,5 +20,5 @@ export class UmbMemberGroupTreeStore extends UmbEntityTreeStore {
}
export const UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
- 'UmbMemberGroupTreeStore'
+ 'UmbMemberGroupTreeStore',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/sources/member-group.tree.server.data.ts
index 29e9822476..f976405daa 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/sources/member-group.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-groups/repository/sources/member-group.tree.server.data.ts
@@ -1,6 +1,6 @@
import { MemberGroupResource } from '@umbraco-cms/backoffice/backend-api';
-import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
-import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
@@ -56,7 +56,7 @@ export class UmbMemberGroupTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MemberGroupResource.getMemberGroupItem({
id: ids,
- })
+ }),
);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.repository.ts
index e231a3886e..e1f027301c 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.repository.ts
@@ -4,7 +4,8 @@ import { UmbMemberTypeTreeStore, UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN } from
import { UmbMemberTypeStore, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN } from './member-type.store.js';
import { UmbMemberTypeDetailServerDataSource } from './sources/member-type.detail.server.data.js';
import { UmbBaseController, type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
-import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
@@ -12,7 +13,10 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api
type ItemType = any;
type TreeItemType = EntityTreeItemResponseModel;
-export class UmbMemberTypeRepository extends UmbBaseController implements UmbTreeRepository, UmbDetailRepository {
+export class UmbMemberTypeRepository
+ extends UmbBaseController
+ implements UmbTreeRepository, UmbDetailRepository
+{
#init!: Promise;
#treeSource: UmbTreeDataSource;
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.tree.store.ts
index 06c9d08f33..3d7289a967 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/member-type.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
/**
@@ -15,5 +15,5 @@ export class UmbMemberTypeTreeStore extends UmbEntityTreeStore {
}
export const UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
- 'UmbMemberTypeTreeStore'
+ 'UmbMemberTypeTreeStore',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/sources/member-type.tree.server.data.ts
index c537bde7b0..dc58111dc4 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/sources/member-type.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/repository/sources/member-type.tree.server.data.ts
@@ -1,6 +1,6 @@
import { ApiError, MemberTypeResource } from '@umbraco-cms/backoffice/backend-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
-import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import { type UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
@@ -56,7 +56,7 @@ export class UmbMemberTypeTreeServerDataSource implements UmbTreeDataSource {
this.#host,
MemberTypeResource.getMemberTypeItem({
id: ids,
- })
+ }),
);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.repository.ts
index f807fa0d5b..80afb72da6 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.repository.ts
@@ -1,7 +1,7 @@
import { UmbMemberTreeStore, UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN } from './member.tree.store.js';
import { UmbMemberTreeServerDataSource } from './sources/member.tree.server.data.js';
import { UmbBaseController, type UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
-import type { UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
+import { type UmbTreeRepository } from '@umbraco-cms/backoffice/tree';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
export class UmbMemberRepository extends UmbBaseController implements UmbTreeRepository, UmbApi {
diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.tree.store.ts
index 7cf9d39911..647747ea5d 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/members/members/repository/member.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
export const UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbMemberTreeStore');
diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts
index 7ae1642427..482a5f8154 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts
@@ -9,11 +9,13 @@ import {
RelationTypeResponseModel,
UpdateRelationTypeRequestModel,
} from '@umbraco-cms/backoffice/backend-api';
-import { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository } from '@umbraco-cms/backoffice/tree';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbRelationTypeRepository extends UmbBaseController
+export class UmbRelationTypeRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.tree.store.ts
index b5f8f68ce3..fd796dd6e2 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.tree.store.ts
@@ -1,6 +1,6 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
/**
* @export
@@ -21,5 +21,5 @@ export class UmbRelationTypeTreeStore extends UmbEntityTreeStore {
}
export const UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
- 'UmbRelationTypeTreeStore'
+ 'UmbRelationTypeTreeStore',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.repository.ts
index 50486ef4ae..a5ba02665f 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.repository.ts
@@ -26,11 +26,12 @@ import {
UmbDataSourceErrorResponse,
UmbDetailRepository,
UmbFolderRepository,
- UmbTreeRepository,
} from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository } from '@umbraco-cms/backoffice/tree';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbPartialViewsRepository extends UmbBaseController
+export class UmbPartialViewsRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository<
@@ -65,7 +66,7 @@ export class UmbPartialViewsRepository extends UmbBaseController
//#region FOLDER
createFolderScaffold(
- parentId: string | null
+ parentId: string | null,
): Promise<{ data?: FolderResponseModel | undefined; error?: ProblemDetails | undefined }> {
const data: FolderResponseModel = {
name: '',
@@ -74,7 +75,7 @@ export class UmbPartialViewsRepository extends UmbBaseController
return Promise.resolve({ data, error: undefined });
}
async createFolder(
- requestBody: CreateFolderRequestModel
+ requestBody: CreateFolderRequestModel,
): Promise<{ data?: string | undefined; error?: ProblemDetails | undefined }> {
await this.#init;
const req = {
@@ -87,14 +88,14 @@ export class UmbPartialViewsRepository extends UmbBaseController
return promise;
}
async requestFolder(
- unique: string
+ unique: string,
): Promise<{ data?: PartialViewGetFolderResponse | undefined; error?: ProblemDetails | undefined }> {
await this.#init;
return this.#folderDataSource.get(unique);
}
updateFolder(
unique: string,
- folder: FolderModelBaseModel
+ folder: FolderModelBaseModel,
): Promise<{ data?: FolderModelBaseModel | undefined; error?: ProblemDetails | undefined }> {
throw new Error('Method not implemented.');
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.tree.store.ts
index 4f8f98e127..6859abd681 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-views.tree.store.ts
@@ -1,10 +1,10 @@
import { UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN_ALIAS } from '../config.js';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbFileSystemTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbFileSystemTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
export const UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
- UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN_ALIAS
+ UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN_ALIAS,
);
/**
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.repository.ts
index 4648ae06e4..0d5cc03732 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.repository.ts
@@ -8,8 +8,8 @@ import {
UmbDataSourceErrorResponse,
UmbDetailRepository,
UmbFolderRepository,
- UmbTreeRepository,
} from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository } from '@umbraco-cms/backoffice/tree';
import {
CreateFolderRequestModel,
CreateScriptRequestModel,
@@ -26,7 +26,8 @@ import { UmbBaseController, UmbControllerHost } from '@umbraco-cms/backoffice/co
import { Observable } from '@umbraco-cms/backoffice/external/rxjs';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbScriptsRepository extends UmbBaseController
+export class UmbScriptsRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.tree.store.ts
index 3dd1fe2461..9aecaf00aa 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/scripts.tree.store.ts
@@ -1,6 +1,6 @@
import { UMB_SCRIPTS_TREE_STORE_CONTEXT_TOKEN_ALIAS } from '../config.js';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbFileSystemTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbFileSystemTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
export const UMB_SCRIPTS_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken(
@@ -11,7 +11,7 @@ export const UMB_SCRIPTS_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken }> e
}
async execute() {
+ if (this.unique !== null) {
+ // Note: %2F is a slash (/)
+ this.unique = this.unique.replace(/\//g, '%2F');
+ }
+
history.pushState(
null,
'',
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/create.action.ts
index b5b4e71368..a8ed2d1327 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/create.action.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/create/create.action.ts
@@ -7,6 +7,11 @@ export class UmbCreateStylesheetAction }> exte
}
async execute() {
+ if (this.unique !== null) {
+ // Note: %2F is a slash (/)
+ this.unique = this.unique.replace(/\//g, '%2F');
+ }
+
history.pushState(null, '', `section/settings/workspace/stylesheet/create/${this.unique ?? 'null'}/view/code`);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/manifests.ts
index d21cd9a82b..4c1da9ff30 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-actions/manifests.ts
@@ -1,10 +1,11 @@
import {
- STYLESHEET_ENTITY_TYPE,
- STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE,
- STYLESHEET_FOLDER_ENTITY_TYPE,
- STYLESHEET_REPOSITORY_ALIAS,
- STYLESHEET_ROOT_ENTITY_TYPE,
-} from '../config.js';
+ UMB_STYLESHEET_ENTITY_TYPE,
+ UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE,
+ UMB_STYLESHEET_FOLDER_ENTITY_TYPE,
+ UMB_STYLESHEET_ROOT_ENTITY_TYPE,
+} from '../entity-type.js';
+
+import { UMB_STYLESHEET_REPOSITORY_ALIAS } from '../repository/index.js';
import { UmbCreateRTFStylesheetAction } from './create/create-rtf.action.js';
import { UmbCreateStylesheetAction } from './create/create.action.js';
import {
@@ -26,8 +27,8 @@ const stylesheetActions: Array = [
meta: {
icon: 'icon-trash',
label: 'Delete',
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
- entityTypes: [STYLESHEET_ENTITY_TYPE],
+ repositoryAlias: UMB_STYLESHEET_REPOSITORY_ALIAS,
+ entityTypes: [UMB_STYLESHEET_ENTITY_TYPE],
},
},
];
@@ -43,8 +44,12 @@ const stylesheetFolderActions: Array = [
meta: {
icon: 'icon-script',
label: 'New stylesheet file',
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
- entityTypes: [STYLESHEET_FOLDER_ENTITY_TYPE, STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE, STYLESHEET_ROOT_ENTITY_TYPE],
+ repositoryAlias: UMB_STYLESHEET_REPOSITORY_ALIAS,
+ entityTypes: [
+ UMB_STYLESHEET_FOLDER_ENTITY_TYPE,
+ UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE,
+ UMB_STYLESHEET_ROOT_ENTITY_TYPE,
+ ],
},
},
{
@@ -55,8 +60,12 @@ const stylesheetFolderActions: Array = [
meta: {
icon: 'icon-script',
label: 'New Rich Text Editor style sheet file',
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
- entityTypes: [STYLESHEET_FOLDER_ENTITY_TYPE, STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE, STYLESHEET_ROOT_ENTITY_TYPE],
+ repositoryAlias: UMB_STYLESHEET_REPOSITORY_ALIAS,
+ entityTypes: [
+ UMB_STYLESHEET_FOLDER_ENTITY_TYPE,
+ UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE,
+ UMB_STYLESHEET_ROOT_ENTITY_TYPE,
+ ],
},
},
{
@@ -67,8 +76,8 @@ const stylesheetFolderActions: Array = [
meta: {
icon: 'icon-trash',
label: 'Remove folder',
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
- entityTypes: [STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE],
+ repositoryAlias: UMB_STYLESHEET_REPOSITORY_ALIAS,
+ entityTypes: [UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE],
},
},
{
@@ -79,8 +88,12 @@ const stylesheetFolderActions: Array = [
meta: {
icon: 'icon-add',
label: 'Create folder',
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
- entityTypes: [STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE, STYLESHEET_FOLDER_ENTITY_TYPE, STYLESHEET_ROOT_ENTITY_TYPE],
+ repositoryAlias: UMB_STYLESHEET_REPOSITORY_ALIAS,
+ entityTypes: [
+ UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE,
+ UMB_STYLESHEET_FOLDER_ENTITY_TYPE,
+ UMB_STYLESHEET_ROOT_ENTITY_TYPE,
+ ],
},
},
];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-type.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-type.ts
new file mode 100644
index 0000000000..8dbd996a3e
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/entity-type.ts
@@ -0,0 +1,5 @@
+export const UMB_STYLESHEET_ENTITY_TYPE = 'stylesheet';
+export const UMB_STYLESHEET_ROOT_ENTITY_TYPE = 'stylesheet-root';
+
+export const UMB_STYLESHEET_FOLDER_ENTITY_TYPE = 'stylesheet-folder';
+export const UMB_STYLESHEET_FOLDER_EMPTY_ENTITY_TYPE = 'stylesheet-folder-empty';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/index.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/index.ts
index ec91672f86..c0657c8bf8 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/index.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/index.ts
@@ -3,3 +3,4 @@ import { StylesheetResponseModel } from '@umbraco-cms/backoffice/backend-api';
export type StylesheetDetails = StylesheetResponseModel;
export * from './repository/index.js';
+export { UmbStylesheetTreeRepository } from './tree/index.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/menu-item/manifests.ts
index 287fa5a01b..4109f5071c 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/menu-item/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/menu-item/manifests.ts
@@ -1,4 +1,4 @@
-import { STYLESHEET_TREE_ALIAS } from '../tree/manifests.js';
+import { UMB_STYLESHEET_TREE_ALIAS } from '../tree/manifests.js';
import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
const menuItem: ManifestTypes = {
@@ -10,7 +10,7 @@ const menuItem: ManifestTypes = {
meta: {
label: 'Stylesheets',
icon: 'icon-folder',
- treeAlias: STYLESHEET_TREE_ALIAS,
+ treeAlias: UMB_STYLESHEET_TREE_ALIAS,
menus: ['Umb.Menu.Templating'],
},
};
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/index.ts
index c95f93399b..3ee1d14e58 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/index.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/index.ts
@@ -1 +1,3 @@
export * from './stylesheet.repository.js';
+export * from './item/index.js';
+export { UMB_STYLESHEET_REPOSITORY_ALIAS } from './manifests.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/index.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/index.ts
new file mode 100644
index 0000000000..929e43c0f8
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/index.ts
@@ -0,0 +1,3 @@
+export { UmbStylesheetItemRepository } from './stylesheet-item.repository.js';
+export { UMB_STYLESHEET_ITEM_REPOSITORY_ALIAS, UMB_STYLESHEET_ITEM_STORE_ALIAS } from './manifests.js';
+export { UMB_STYLESHEET_ITEM_STORE_CONTEXT } from './stylesheet-item.store.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/manifests.ts
new file mode 100644
index 0000000000..97aaa9753e
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/manifests.ts
@@ -0,0 +1,22 @@
+import { UmbStylesheetItemStore } from './stylesheet-item.store.js';
+import { UmbStylesheetItemRepository } from './stylesheet-item.repository.js';
+import type { ManifestRepository, ManifestItemStore } from '@umbraco-cms/backoffice/extension-registry';
+
+export const UMB_STYLESHEET_ITEM_REPOSITORY_ALIAS = 'Umb.Repository.Stylesheet.Item';
+export const UMB_STYLESHEET_ITEM_STORE_ALIAS = 'Umb.ItemStore.Stylesheet';
+
+const repository: ManifestRepository = {
+ type: 'repository',
+ alias: UMB_STYLESHEET_ITEM_REPOSITORY_ALIAS,
+ name: 'Stylesheet Item Repository',
+ api: UmbStylesheetItemRepository,
+};
+
+const itemStore: ManifestItemStore = {
+ type: 'itemStore',
+ alias: 'Umb.ItemStore.Stylesheet',
+ name: 'Stylesheet Item Store',
+ api: UmbStylesheetItemStore,
+};
+
+export const manifests = [repository, itemStore];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.repository.ts
new file mode 100644
index 0000000000..9cc0cc8198
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.repository.ts
@@ -0,0 +1,11 @@
+import { UmbStylesheetItemServerDataSource } from './stylesheet-item.server.data-source.js';
+import { UMB_STYLESHEET_ITEM_STORE_CONTEXT } from './stylesheet-item.store.js';
+import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { StylesheetItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
+import { UmbItemRepositoryBase } from '@umbraco-cms/backoffice/repository';
+
+export class UmbStylesheetItemRepository extends UmbItemRepositoryBase {
+ constructor(host: UmbControllerHost) {
+ super(host, UmbStylesheetItemServerDataSource, UMB_STYLESHEET_ITEM_STORE_CONTEXT);
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts
new file mode 100644
index 0000000000..2c65c2a56c
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.server.data-source.ts
@@ -0,0 +1,40 @@
+import type { UmbItemDataSource } from '@umbraco-cms/backoffice/repository';
+import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
+import { StylesheetItemResponseModel, StylesheetResource } from '@umbraco-cms/backoffice/backend-api';
+
+/**
+ * A data source for stylesheet items that fetches data from the server
+ * @export
+ * @class UmbStylesheetItemServerDataSource
+ * @implements {UmbItemDataSource}
+ */
+export class UmbStylesheetItemServerDataSource implements UmbItemDataSource {
+ #host: UmbControllerHost;
+
+ /**
+ * Creates an instance of UmbStylesheetItemServerDataSource.
+ * @param {UmbControllerHost} host
+ * @memberof UmbStylesheetItemServerDataSource
+ */
+ constructor(host: UmbControllerHost) {
+ this.#host = host;
+ }
+
+ /**
+ * Fetches the items for the given paths from the server
+ * @param {Array} paths
+ * @return {*}
+ * @memberof UmbStylesheetItemServerDataSource
+ */
+ async getItems(paths: Array) {
+ if (!paths) throw new Error('Paths are missing');
+
+ return tryExecuteAndNotify(
+ this.#host,
+ StylesheetResource.getStylesheetItem({
+ path: paths,
+ }),
+ );
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.store.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.store.ts
new file mode 100644
index 0000000000..661cc27988
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/item/stylesheet-item.store.ts
@@ -0,0 +1,24 @@
+import type { StylesheetItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
+import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
+import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
+import { UmbFileSystemItemStore } from '@umbraco-cms/backoffice/store';
+
+/**
+ * @export
+ * @class UmbStylesheetItemStore
+ * @extends {UmbFileSystemItemStore}
+ * @description - Data Store for Stylesheet items
+ */
+
+export class UmbStylesheetItemStore extends UmbFileSystemItemStore {
+ /**
+ * Creates an instance of UmbStylesheetItemStore.
+ * @param {UmbControllerHostElement} host
+ * @memberof UmbStylesheetItemStore
+ */
+ constructor(host: UmbControllerHostElement) {
+ super(host, UMB_STYLESHEET_ITEM_STORE_CONTEXT.toString());
+ }
+}
+
+export const UMB_STYLESHEET_ITEM_STORE_CONTEXT = new UmbContextToken('UmbStylesheetItemStore');
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/manifests.ts
index e1ace39c01..184a4de42b 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/manifests.ts
@@ -1,22 +1,14 @@
-import { STYLESHEET_REPOSITORY_ALIAS, STYLESHEET_TREE_STORE_ALIAS } from '../config.js';
import { UmbStylesheetRepository } from './stylesheet.repository.js';
-import { UmbStylesheetTreeStore } from './stylesheet.tree.store.js';
-import { ManifestRepository, ManifestTreeStore } from '@umbraco-cms/backoffice/extension-registry';
+import { manifests as itemManifests } from './item/manifests.js';
+import { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
+export const UMB_STYLESHEET_REPOSITORY_ALIAS = 'Umb.Repository.Stylesheet';
const repository: ManifestRepository = {
type: 'repository',
- alias: STYLESHEET_REPOSITORY_ALIAS,
+ alias: UMB_STYLESHEET_REPOSITORY_ALIAS,
name: 'Stylesheet Repository',
api: UmbStylesheetRepository,
};
-
-const treeStore: ManifestTreeStore = {
- type: 'treeStore',
- alias: STYLESHEET_TREE_STORE_ALIAS,
- name: 'Stylesheet Tree Store',
- api: UmbStylesheetTreeStore,
-};
-
-export const manifests = [treeStore, repository];
+export const manifests = [repository, ...itemManifests];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts
index a0c62959b3..9c5ec4ee0b 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts
@@ -1,6 +1,4 @@
import { StylesheetDetails } from '../index.js';
-import { UmbStylesheetTreeStore, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN } from './stylesheet.tree.store.js';
-import { UmbStylesheetTreeServerDataSource } from './sources/stylesheet.tree.server.data.js';
import { UmbStylesheetServerDataSource } from './sources/stylesheet.server.data.js';
import {
StylesheetGetFolderResponse,
@@ -13,8 +11,8 @@ import {
UmbDataSourceErrorResponse,
UmbDetailRepository,
UmbFolderRepository,
- UmbTreeRepository,
} from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository } from '@umbraco-cms/backoffice/tree';
import {
CreateFolderRequestModel,
CreateStylesheetRequestModel,
@@ -33,33 +31,24 @@ import {
UpdateStylesheetRequestModel,
UpdateTextFileViewModelBaseModel,
} from '@umbraco-cms/backoffice/backend-api';
-import type { UmbTreeRootFileSystemModel } from '@umbraco-cms/backoffice/tree';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbStylesheetRepository extends UmbBaseController
+export class UmbStylesheetRepository
+ extends UmbBaseController
implements
- UmbTreeRepository,
UmbDetailRepository,
UmbFolderRepository,
UmbApi
{
#dataSource;
- #treeDataSource;
- #treeStore?: UmbStylesheetTreeStore;
#folderDataSource;
- #init;
constructor(host: UmbControllerHostElement) {
super(host);
// TODO: figure out how spin up get the correct data source
this.#dataSource = new UmbStylesheetServerDataSource(this);
- this.#treeDataSource = new UmbStylesheetTreeServerDataSource(this);
this.#folderDataSource = new UmbStylesheetFolderServerDataSource(this);
-
- this.#init = this.consumeContext(UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN, (instance) => {
- this.#treeStore = instance;
- }).asPromise();
}
//#region FOLDER:
@@ -77,34 +66,34 @@ export class UmbStylesheetRepository extends UmbBaseController
async createFolder(
folderRequest: CreateFolderRequestModel,
): Promise<{ data?: string | undefined; error?: ProblemDetails | undefined }> {
- await this.#init;
const req = {
parentPath: folderRequest.parentId,
name: folderRequest.name,
};
const promise = this.#folderDataSource.insert(req);
await promise;
- this.requestTreeItemsOf(folderRequest.parentId ? folderRequest.parentId : null);
+ //this.requestTreeItemsOf(folderRequest.parentId ? folderRequest.parentId : null);
return promise;
}
+
async requestFolder(
unique: string,
): Promise<{ data?: StylesheetGetFolderResponse | undefined; error?: ProblemDetails | undefined }> {
- await this.#init;
return this.#folderDataSource.get(unique);
}
+
updateFolder(
unique: string,
folder: FolderModelBaseModel,
): Promise<{ data?: FolderModelBaseModel | undefined; error?: ProblemDetails | undefined }> {
throw new Error('Method not implemented.');
}
+
async deleteFolder(path: string): Promise<{ error?: ProblemDetails | undefined }> {
- await this.#init;
const { data } = await this.requestFolder(path);
const promise = this.#folderDataSource.delete(path);
await promise;
- this.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null);
+ //this.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null);
return promise;
}
@@ -121,26 +110,29 @@ export class UmbStylesheetRepository extends UmbBaseController
async requestById(id: string): Promise> {
if (!id) throw new Error('id is missing');
- await this.#init;
const { data, error } = await this.#dataSource.get(id);
return { data, error };
}
+
byId(id: string): Promise> {
throw new Error('Method not implemented.');
}
+
async create(data: CreateTextFileViewModelBaseModel): Promise> {
const promise = this.#dataSource.insert(data);
await promise;
- this.requestTreeItemsOf(data.parentPath ? data.parentPath : null);
+ //this.requestTreeItemsOf(data.parentPath ? data.parentPath : null);
return promise;
}
+
save(id: string, data: UpdateTextFileViewModelBaseModel): Promise {
return this.#dataSource.update(id, data);
}
+
delete(id: string): Promise {
const promise = this.#dataSource.delete(id);
const parentPath = id.substring(0, id.lastIndexOf('/'));
- this.requestTreeItemsOf(parentPath ? parentPath : null);
+ //this.requestTreeItemsOf(parentPath ? parentPath : null);
return promise;
}
@@ -179,71 +171,4 @@ export class UmbStylesheetRepository extends UmbBaseController
}
//#endregion
-
- //#region TREE:
- async requestTreeRoot() {
- await this.#init;
-
- const data = {
- path: null,
- type: 'stylesheet-root',
- name: 'Stylesheets',
- icon: 'icon-folder',
- hasChildren: true,
- };
-
- return { data };
- }
-
- 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) {
- if (path === undefined) throw new Error('Cannot request tree item with missing path');
-
- await this.#init;
-
- const { data, error } = await this.#treeDataSource.getChildrenOf(path);
-
- if (data) {
- this.#treeStore!.appendItems(data.items);
- }
-
- return { data, error, asObservable: () => this.#treeStore!.childrenOf(path) };
- }
-
- async requestItems(paths: Array) {
- if (!paths) throw new Error('Paths are missing');
- await this.#init;
- const { data, error } = await this.#treeDataSource.getItems(paths);
- return { data, error };
- }
-
- async rootTreeItems() {
- await this.#init;
- return this.#treeStore!.rootItems;
- }
-
- async treeItemsOf(parentPath: string | null) {
- if (!parentPath) throw new Error('Parent Path is missing');
- await this.#init;
- return this.#treeStore!.childrenOf(parentPath);
- }
-
- async itemsLegacy(paths: Array) {
- if (!paths) throw new Error('Paths are missing');
- await this.#init;
- return this.#treeStore!.items(paths);
- }
-
- //#endregion
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/index.ts
new file mode 100644
index 0000000000..de16c2e3c3
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/index.ts
@@ -0,0 +1 @@
+export { UmbStylesheetTreeRepository } from './stylesheet-tree.repository.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/manifests.ts
index 108889cea8..1ee6d92c47 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/manifests.ts
@@ -1,15 +1,38 @@
-import { STYLESHEET_ENTITY_TYPE, STYLESHEET_REPOSITORY_ALIAS } from '../config.js';
-import type { ManifestTree, ManifestTreeItem } from '@umbraco-cms/backoffice/extension-registry';
+import { UMB_STYLESHEET_ENTITY_TYPE } from '../entity-type.js';
+import { UmbStylesheetTreeRepository } from './stylesheet-tree.repository.js';
+import { UmbStylesheetTreeStore } from './stylesheet-tree.store.js';
+import type {
+ ManifestRepository,
+ ManifestTree,
+ ManifestTreeItem,
+ ManifestTreeStore,
+} from '@umbraco-cms/backoffice/extension-registry';
-export const STYLESHEET_TREE_ALIAS = 'Umb.Tree.Stylesheet';
+export const UMB_STYLESHEET_TREE_ALIAS = 'Umb.Tree.Stylesheet';
+export const UMB_STYLESHEET_TREE_REPOSITORY_ALIAS = 'Umb.Repository.StylesheetTree';
+export const UMB_STYLESHEET_TREE_STORE_ALIAS = 'Umb.Store.StylesheetTree';
+
+const treeRepository: ManifestRepository = {
+ type: 'repository',
+ alias: UMB_STYLESHEET_TREE_REPOSITORY_ALIAS,
+ name: 'Stylesheet Tree Repository',
+ api: UmbStylesheetTreeRepository,
+};
+
+const treeStore: ManifestTreeStore = {
+ type: 'treeStore',
+ alias: UMB_STYLESHEET_TREE_STORE_ALIAS,
+ name: 'Stylesheet Tree Store',
+ api: UmbStylesheetTreeStore,
+};
const tree: ManifestTree = {
type: 'tree',
- alias: STYLESHEET_TREE_ALIAS,
+ alias: UMB_STYLESHEET_TREE_ALIAS,
name: 'Stylesheet Tree',
weight: 10,
meta: {
- repositoryAlias: STYLESHEET_REPOSITORY_ALIAS,
+ repositoryAlias: UMB_STYLESHEET_TREE_REPOSITORY_ALIAS,
},
};
@@ -19,8 +42,8 @@ const treeItem: ManifestTreeItem = {
alias: 'Umb.TreeItem.Stylesheet',
name: 'Stylesheet Tree Item',
meta: {
- entityTypes: ['stylesheet-root', STYLESHEET_ENTITY_TYPE],
+ entityTypes: ['stylesheet-root', UMB_STYLESHEET_ENTITY_TYPE],
},
};
-export const manifests = [tree, treeItem];
+export const manifests = [treeRepository, treeStore, tree, treeItem];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.repository.ts
new file mode 100644
index 0000000000..d080059d08
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.repository.ts
@@ -0,0 +1,22 @@
+import { UmbStylesheetTreeServerDataSource } from './stylesheet-tree.server.data-source.js';
+import { UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN } from './stylesheet-tree.store.js';
+import { UmbTreeRepositoryBase } from '@umbraco-cms/backoffice/tree';
+import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
+
+export class UmbStylesheetTreeRepository extends UmbTreeRepositoryBase {
+ constructor(host: UmbControllerHost) {
+ super(host, UmbStylesheetTreeServerDataSource, UMB_STYLESHEET_TREE_STORE_CONTEXT_TOKEN);
+ }
+
+ async requestTreeRoot() {
+ const data = {
+ path: null,
+ type: 'stylesheet-root',
+ name: 'Stylesheets',
+ icon: 'icon-folder',
+ hasChildren: true,
+ };
+
+ return { data };
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts
similarity index 95%
rename from src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts
rename to src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts
index 7c846f3898..7b8c3f199f 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/sources/stylesheet.tree.server.data.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/tree/stylesheet-tree.server.data-source.ts
@@ -1,7 +1,7 @@
import { FileSystemTreeItemPresentationModel, StylesheetResource } from '@umbraco-cms/backoffice/backend-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
-import { UmbTreeDataSource } from '@umbraco-cms/backoffice/repository';
+import type { UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
/**
* A data source for the Stylesheet tree that fetches data from the server
@@ -48,7 +48,7 @@ export class UmbStylesheetTreeServerDataSource implements UmbTreeDataSource(
- 'UmbStylesheetTreeStore'
+ 'UmbStylesheetTreeStore',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace-editor.element.ts
index d37300a880..2028478b43 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace-editor.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace-editor.element.ts
@@ -48,7 +48,11 @@ export class UmbStylesheetWorkspaceEditorElement extends UmbLitElement {
this.#workspaceContext.path,
(path) => {
this._path = path;
- this._dirName = this._path?.substring(0, this._path?.lastIndexOf('\\') + 1)?.replace(/\\/g, '/');
+ if (this._path?.includes('.css')) {
+ this._dirName = this._path?.substring(0, this._path?.lastIndexOf('\\') + 1)?.replace(/\\/g, '/');
+ } else {
+ this._dirName = path + '/';
+ }
},
'_observeStylesheetPath',
);
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.context.ts
index b6ab5c12d3..1ee3e2e599 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.context.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.context.ts
@@ -2,11 +2,7 @@ import { UmbStylesheetRepository } from '../repository/stylesheet.repository.js'
import { StylesheetDetails } from '../index.js';
import { UmbSaveableWorkspaceContextInterface, UmbEditableWorkspaceContextBase } from '@umbraco-cms/backoffice/workspace';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
-import {
- UmbArrayState,
- UmbBooleanState,
- UmbObjectState
-} from '@umbraco-cms/backoffice/observable-api';
+import { UmbArrayState, UmbBooleanState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api';
import { loadCodeEditor } from '@umbraco-cms/backoffice/code-editor';
import { RichTextRuleModel, UpdateStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
@@ -48,10 +44,10 @@ export class UmbStylesheetWorkspaceContext
}
getEntityId() {
- const path = this.getData()?.path;
+ const path = this.getData()?.path?.replace(/\//g, '%2F');
const name = this.getData()?.name;
- // TODO: %2F is a slash (/). Should we make it an actual slash in the URL? (%2F for now so that the server can find the correct stylesheet via URL)
+ // Note: %2F is a slash (/)
return path && name ? `${path}%2F${name}` : name || '';
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.element.ts
index 76485ab439..c4f74d092e 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/workspace/stylesheet-workspace.element.ts
@@ -19,6 +19,7 @@ export class UmbStylesheetWorkspaceElement extends UmbLitElement {
const path = info.match.params.path === 'null' ? null : info.match.params.path;
const serverPath = path === null ? null : serverFilePathFromUrlFriendlyPath(path);
await this.#workspaceContext.create(serverPath);
+ await this.#workspaceContext.setRules([]);
new UmbWorkspaceIsNewRedirectController(
this,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.repository.ts
index 74ccde7cea..889783daf4 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.repository.ts
@@ -6,13 +6,8 @@ import { UMB_TEMPLATE_ITEM_STORE_CONTEXT_TOKEN, UmbTemplateItemStore } from './t
import { UmbTemplateItemServerDataSource } from './sources/template.item.server.data.js';
import { UmbTemplateQueryBuilderServerDataSource } from './sources/template.query-builder.server.data.js';
import { Observable } from '@umbraco-cms/backoffice/external/rxjs';
-import type {
- UmbDetailRepository,
- UmbItemDataSource,
- UmbItemRepository,
- UmbTreeDataSource,
- UmbTreeRepository,
-} from '@umbraco-cms/backoffice/repository';
+import type { UmbDetailRepository, UmbItemDataSource, UmbItemRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbTreeRepository, UmbTreeDataSource } from '@umbraco-cms/backoffice/tree';
import { UmbBaseController, type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification';
import type {
@@ -26,7 +21,8 @@ import type {
} from '@umbraco-cms/backoffice/backend-api';
import { UmbApi } from '@umbraco-cms/backoffice/extension-api';
-export class UmbTemplateRepository extends UmbBaseController
+export class UmbTemplateRepository
+ extends UmbBaseController
implements
UmbTreeRepository,
UmbDetailRepository,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.tree.store.ts
index 635ae820d0..b4effc9fa6 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.tree.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/repository/template.tree.store.ts
@@ -1,5 +1,5 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
-import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store';
+import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/tree';
import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
export const UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbTemplateTreeStore');
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user-header-app.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user-header-app.element.ts
index 2a9cf401ff..b5f5fe9eda 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user-header-app.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/current-user-header-app.element.ts
@@ -47,8 +47,12 @@ export class UmbCurrentUserHeaderAppElement extends UmbLitElement {
render() {
return html`
-
-
+
+
`;
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.context.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.context.ts
index 41810a95c0..6bdbf6f7bd 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.context.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/components/user-input/user-input.context.ts
@@ -1,3 +1,4 @@
+import { UMB_USER_ITEM_REPOSITORY_ALIAS } from '../../repository/index.js';
import { UmbPickerInputContext } from '@umbraco-cms/backoffice/picker-input';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api';
import { UMB_USER_PICKER_MODAL } from '@umbraco-cms/backoffice/modal';
@@ -5,6 +6,6 @@ import { UserItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
export class UmbUserPickerContext extends UmbPickerInputContext {
constructor(host: UmbControllerHostElement) {
- super(host, 'Umb.Repository.User', UMB_USER_PICKER_MODAL);
+ super(host, UMB_USER_ITEM_REPOSITORY_ALIAS, UMB_USER_PICKER_MODAL);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/index.ts
index 0acac90279..cd83556a1d 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/index.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/index.ts
@@ -4,3 +4,4 @@ export * from './enable/enable-user.repository.js';
export * from './unlock/unlock-user.repository.js';
export * from './invite/invite-user.repository.js';
export * from './user.repository.js';
+export * from './item/index.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/index.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/index.ts
new file mode 100644
index 0000000000..77cd20f1fb
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/index.ts
@@ -0,0 +1,3 @@
+export { UmbUserItemRepository } from './user-item.repository.js';
+export { UMB_USER_ITEM_STORE_CONTEXT } from './user-item.store.js';
+export { UMB_USER_ITEM_REPOSITORY_ALIAS, UMB_USER_ITEM_STORE_ALIAS } from './manifests.js';
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/manifests.ts
new file mode 100644
index 0000000000..2bdc867ee6
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/manifests.ts
@@ -0,0 +1,22 @@
+import { UmbUserItemStore } from './user-item.store.js';
+import { UmbUserItemRepository } from './user-item.repository.js';
+import { ManifestItemStore, ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
+
+export const UMB_USER_ITEM_REPOSITORY_ALIAS = 'Umb.Repository.User.Item';
+export const UMB_USER_ITEM_STORE_ALIAS = 'Umb.ItemStore.User';
+
+const itemRepository: ManifestRepository = {
+ type: 'repository',
+ alias: UMB_USER_ITEM_REPOSITORY_ALIAS,
+ name: 'User Item Repository',
+ api: UmbUserItemRepository,
+};
+
+const itemStore: ManifestItemStore = {
+ type: 'itemStore',
+ alias: UMB_USER_ITEM_STORE_ALIAS,
+ name: 'User Item Store',
+ api: UmbUserItemStore,
+};
+
+export const manifests = [itemRepository, itemStore];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.repository.ts
index 4a0e976ca3..759cc1700a 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.repository.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.repository.ts
@@ -1,44 +1,11 @@
-import { UmbUserRepositoryBase } from '../user-repository-base.js';
import { UmbUserItemServerDataSource } from './user-item.server.data.js';
+import { UMB_USER_ITEM_STORE_CONTEXT } from './user-item.store.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
-import { UmbItemDataSource, UmbItemRepository } from '@umbraco-cms/backoffice/repository';
+import { UmbItemRepositoryBase } from '@umbraco-cms/backoffice/repository';
import { UserItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
-export class UmbUserItemRepository extends UmbUserRepositoryBase implements UmbItemRepository {
- #itemSource: UmbItemDataSource;
-
+export class UmbUserItemRepository extends UmbItemRepositoryBase {
constructor(host: UmbControllerHost) {
- super(host);
- this.#itemSource = new UmbUserItemServerDataSource(host);
- }
-
- /**
- * Requests the user items for the given ids
- * @param {Array} ids
- * @return {*}
- * @memberof UmbUserItemRepository
- */
- async requestItems(ids: Array) {
- if (!ids) throw new Error('Ids are missing');
- await this.init;
-
- const { data, error } = await this.#itemSource.getItems(ids);
-
- if (data) {
- this.itemStore?.appendItems(data);
- }
-
- return { data, error, asObservable: () => this.itemStore!.items(ids) };
- }
-
- /**
- * Returns a promise with an observable of the user items for the given ids
- * @param {Array} ids
- * @return {Promise>}
- * @memberof UmbUserItemRepository
- */
- async items(ids: Array) {
- await this.init;
- return this.itemStore!.items(ids);
+ super(host, UmbUserItemServerDataSource, UMB_USER_ITEM_STORE_CONTEXT);
}
}
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.store.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.store.ts
index 16a563cdc0..a14bbf062d 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.store.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/item/user-item.store.ts
@@ -21,11 +21,7 @@ export class UmbUserItemStore
* @memberof UmbUserItemStore
*/
constructor(host: UmbControllerHostElement) {
- super(
- host,
- UMB_USER_ITEM_STORE_CONTEXT_TOKEN.toString(),
- new UmbArrayState([], (x) => x.id)
- );
+ super(host, UMB_USER_ITEM_STORE_CONTEXT.toString(), new UmbArrayState([], (x) => x.id));
}
items(ids: Array) {
@@ -33,4 +29,4 @@ export class UmbUserItemStore
}
}
-export const UMB_USER_ITEM_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbUserItemStore');
+export const UMB_USER_ITEM_STORE_CONTEXT = new UmbContextToken('UmbUserItemStore');
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/manifests.ts
index ff86ffbbeb..a4ccd4441b 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/manifests.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/manifests.ts
@@ -1,12 +1,12 @@
import { UmbUserRepository } from './user.repository.js';
-import { UmbUserItemStore } from './item/user-item.store.js';
import { UmbUserStore } from './user.store.js';
import { UmbDisableUserRepository } from './disable/disable-user.repository.js';
import { UmbEnableUserRepository } from './enable/enable-user.repository.js';
import { UmbChangeUserPasswordRepository } from './change-password/change-user-password.repository.js';
import { UmbUnlockUserRepository } from './unlock/unlock-user.repository.js';
import { UmbInviteUserRepository } from './invite/invite-user.repository.js';
-import type { ManifestStore, ManifestRepository, ManifestItemStore } from '@umbraco-cms/backoffice/extension-registry';
+import { manifests as itemManifests } from './item/manifests.js';
+import type { ManifestStore, ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
export const USER_REPOSITORY_ALIAS = 'Umb.Repository.User';
const repository: ManifestRepository = {
@@ -63,13 +63,6 @@ const store: ManifestStore = {
api: UmbUserStore,
};
-const itemStore: ManifestItemStore = {
- type: 'itemStore',
- alias: 'Umb.ItemStore.User',
- name: 'User Store',
- api: UmbUserItemStore,
-};
-
export const manifests = [
repository,
disableRepository,
@@ -78,5 +71,5 @@ export const manifests = [
unlockRepository,
inviteRepository,
store,
- itemStore,
+ ...itemManifests,
];
diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/user-repository-base.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/user-repository-base.ts
index 5245117f59..1cdf85f57e 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/user-repository-base.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/user-repository-base.ts
@@ -1,5 +1,5 @@
import { UMB_USER_STORE_CONTEXT_TOKEN, UmbUserStore } from './user.store.js';
-import { UMB_USER_ITEM_STORE_CONTEXT_TOKEN, UmbUserItemStore } from './item/user-item.store.js';
+import { UMB_USER_ITEM_STORE_CONTEXT, UmbUserItemStore } from './item/user-item.store.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UMB_NOTIFICATION_CONTEXT_TOKEN, UmbNotificationContext } from '@umbraco-cms/backoffice/notification';
import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
@@ -19,13 +19,13 @@ export class UmbUserRepositoryBase extends UmbRepositoryBase {
this.detailStore = instance;
}).asPromise(),
- this.consumeContext(UMB_USER_ITEM_STORE_CONTEXT_TOKEN, (instance) => {
+ this.consumeContext(UMB_USER_ITEM_STORE_CONTEXT, (instance) => {
this.itemStore = instance;
}).asPromise(),
this.consumeContext(UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => {
this.notificationContext = instance;
- }).asPromise()
+ }).asPromise(),
]);
}
}