Skip to content

Commit 3b8ec46

Browse files
authored
Merge pull request #2342 from umbraco/v15/feature/tree-folder-workspace
Feature: Folder workspace
2 parents af740a1 + 4ce4e6b commit 3b8ec46

File tree

155 files changed

+1973
-546
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+1973
-546
lines changed

src/packages/core/repository/detail/detail-repository-base.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
77
import type { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
88
import type { UmbDetailStore } from '@umbraco-cms/backoffice/store';
99
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
10+
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
1011

1112
export abstract class UmbDetailRepositoryBase<
12-
DetailModelType extends { unique: string; entityType: string },
13+
DetailModelType extends UmbEntityModel,
1314
UmbDetailDataSourceType extends UmbDetailDataSource<DetailModelType> = UmbDetailDataSource<DetailModelType>,
1415
>
1516
extends UmbRepositoryBase
@@ -28,6 +29,9 @@ export abstract class UmbDetailRepositoryBase<
2829
) {
2930
super(host);
3031

32+
if (!detailSource) throw new Error('Detail source is missing');
33+
if (!detailStoreContextAlias) throw new Error('Detail store context alias is missing');
34+
3135
this.detailDataSource = new detailSource(host) as UmbDetailDataSourceType;
3236

3337
this.#init = Promise.all([

src/packages/core/server-file-system/rename/rename-server-file-repository-base.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
44
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
55
import type { UmbDetailStore } from '@umbraco-cms/backoffice/store';
66
import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
7+
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
78

89
export abstract class UmbRenameServerFileRepositoryBase<
9-
DetailModelType extends { unique: string },
10+
DetailModelType extends UmbEntityModel,
1011
> extends UmbRepositoryBase {
1112
#renameSource: UmbRenameServerFileDataSource<DetailModelType>;
1213
#detailStoreContextAlias: string | UmbContextToken<UmbDetailStore<DetailModelType>>;
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
2+
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
23
import type { UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository';
34

4-
export interface UmbRenameServerFileRepository<DetailType extends { unique: string }> {
5+
export interface UmbRenameServerFileRepository<DetailType extends UmbEntityModel> {
56
rename(unique: string, name: string): Promise<UmbDataSourceResponse<DetailType>>;
67
}
78

8-
export interface UmbRenameServerFileDataSourceConstructor<DetailType extends { unique: string }> {
9+
export interface UmbRenameServerFileDataSourceConstructor<DetailType extends UmbEntityModel> {
910
new (host: UmbControllerHost): UmbRenameServerFileDataSource<DetailType>;
1011
}
1112

12-
export interface UmbRenameServerFileDataSource<DetailType extends { unique: string }> {
13+
export interface UmbRenameServerFileDataSource<DetailType extends UmbEntityModel> {
1314
rename(unique: string, name: string): Promise<UmbDataSourceResponse<DetailType>>;
1415
}

src/packages/core/store/detail/detail-store-base.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { UmbStoreBase } from '../store-base.js';
22
import type { UmbDetailStore } from './detail-store.interface.js';
3+
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
34
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
45
import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
56

@@ -9,14 +10,14 @@ import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api';
910
* @description - Data Store for Data Type items
1011
*/
1112

12-
export abstract class UmbDetailStoreBase<T extends { unique: string }>
13+
export abstract class UmbDetailStoreBase<T extends UmbEntityModel>
1314
extends UmbStoreBase<T>
1415
implements UmbDetailStore<T>
1516
{
1617
/**
1718
* Creates an instance of UmbDetailStoreBase.
1819
* @param {UmbControllerHost} host - The controller host for this controller to be appended to
19-
* @param storeAlias
20+
* @param storeAlias - The alias of the store
2021
* @memberof UmbDetailStoreBase
2122
*/
2223
constructor(host: UmbControllerHost, storeAlias: string) {
@@ -25,8 +26,9 @@ export abstract class UmbDetailStoreBase<T extends { unique: string }>
2526

2627
/**
2728
* Retrieve a detail model from the store
28-
* @param {unique} string unique
29+
* @param {unique} string unique identifier
2930
* @param unique
31+
* @returns {Observable<T>}
3032
* @memberof UmbDetailStoreBase
3133
*/
3234
byUnique(unique: string) {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import type { UmbStore } from '../store.interface.js';
22
import type { Observable } from '@umbraco-cms/backoffice/external/rxjs';
33
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';
4+
import type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';
45

5-
export interface UmbDetailStore<T extends { unique: string }> extends UmbStore<T>, UmbApi {
6+
export interface UmbDetailStore<T extends UmbEntityModel> extends UmbStore<T>, UmbApi {
67
byUnique: (unique: string) => Observable<T | undefined>;
78
}

src/packages/core/tree/folder/entity-action/delete-folder/delete-folder.action.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { UmbFolderRepository } from '../../folder-repository.interface.js';
1+
import type { UmbFolderModel } from '../../types.js';
22
import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action';
33
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
44
import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action';
@@ -7,10 +7,11 @@ import { UmbExtensionApiInitializer } from '@umbraco-cms/backoffice/extension-ap
77
import type { MetaEntityActionFolderKind } from '@umbraco-cms/backoffice/extension-registry';
88
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
99
import { umbConfirmModal } from '@umbraco-cms/backoffice/modal';
10+
import type { UmbDetailRepository } from '@umbraco-cms/backoffice/repository';
1011

1112
export class UmbDeleteFolderEntityAction extends UmbEntityActionBase<MetaEntityActionFolderKind> {
1213
// TODO: make base type for item and detail models
13-
#folderRepository?: UmbFolderRepository;
14+
#folderRepository?: UmbDetailRepository<UmbFolderModel>;
1415
#init: Promise<unknown>;
1516

1617
constructor(host: UmbControllerHost, args: UmbEntityActionArgs<MetaEntityActionFolderKind>) {
@@ -25,7 +26,7 @@ export class UmbDeleteFolderEntityAction extends UmbEntityActionBase<MetaEntityA
2526
this.args.meta.folderRepositoryAlias,
2627
[this._host],
2728
(permitted, ctrl) => {
28-
this.#folderRepository = permitted ? (ctrl.api as UmbFolderRepository) : undefined;
29+
this.#folderRepository = permitted ? (ctrl.api as UmbDetailRepository<UmbFolderModel>) : undefined;
2930
},
3031
).asPromise(),
3132
]);
@@ -35,7 +36,7 @@ export class UmbDeleteFolderEntityAction extends UmbEntityActionBase<MetaEntityA
3536
if (!this.args.unique) throw new Error('Unique is not available');
3637
await this.#init;
3738

38-
const { data: folder } = await this.#folderRepository!.request(this.args.unique);
39+
const { data: folder } = await this.#folderRepository!.requestByUnique(this.args.unique);
3940

4041
if (folder) {
4142
// TODO: maybe we can show something about how many items are part of the folder?

src/packages/core/tree/folder/folder-data-source.interface.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/packages/core/tree/folder/folder-repository-base.ts

Lines changed: 0 additions & 115 deletions
This file was deleted.

src/packages/core/tree/folder/folder-repository.interface.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
export { type UmbFolderRepository } from './folder-repository.interface.js';
2-
export { type UmbFolderDataSource } from './folder-data-source.interface.js';
3-
export { UmbFolderRepositoryBase } from './folder-repository-base.js';
4-
51
export * from './types.js';
62
export * from './modal/index.js';
73
export * from './entity-action/index.js';

0 commit comments

Comments
 (0)