@umbraco-cms/backoffice 14.0.0-rc5 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,18 @@
1
1
  import type { UmbBlockDataType, UmbBlockLayoutBaseModel } from '../types.js';
2
- import { UMB_BLOCK_WORKSPACE_MODAL } from '../workspace/block-workspace.modal-token.js';
2
+ import type { UmbBlockWorkspaceData } from '../workspace/block-workspace.modal-token.js';
3
3
  import type { UmbBlockDataObjectModel, UmbBlockManagerContext } from './block-manager.context.js';
4
+ import { type Observable, UmbArrayState, UmbBasicState, UmbStringState } from '../../../../libs/observable-api/index.js';
5
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
4
6
  import type { UmbBlockTypeBaseModel } from '../../block-type/index.js';
5
7
  import type { UmbContextToken } from '../../../../libs/context-api/index.js';
6
- import { UmbContextBase } from '../../../../libs/class-api/index.js';
7
8
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
8
- import { type Observable, UmbArrayState, UmbBasicState } from '../../../../libs/observable-api/index.js';
9
- import { type UmbModalRouteBuilder, UmbModalRouteRegistrationController } from '../../../core/router/index.js';
9
+ import type { UmbModalRouteBuilder } from '../../../core/router/index.js';
10
10
  export declare abstract class UmbBlockEntriesContext<BlockManagerContextTokenType extends UmbContextToken<BlockManagerContextType, BlockManagerContextType>, BlockManagerContextType extends UmbBlockManagerContext<BlockType, BlockLayoutType>, BlockType extends UmbBlockTypeBaseModel, BlockLayoutType extends UmbBlockLayoutBaseModel> extends UmbContextBase<UmbBlockEntriesContext<BlockManagerContextTokenType, BlockManagerContextType, BlockType, BlockLayoutType>> {
11
- #private;
12
11
  _manager?: BlockManagerContextType;
13
12
  _retrieveManager: Promise<BlockManagerContextType>;
14
- _workspaceModal: UmbModalRouteRegistrationController;
15
13
  protected _catalogueRouteBuilderState: UmbBasicState<UmbModalRouteBuilder | undefined>;
16
14
  readonly catalogueRouteBuilder: Observable<UmbModalRouteBuilder | undefined>;
15
+ protected _workspacePath: UmbStringState<undefined>;
17
16
  workspacePath: Observable<string | undefined>;
18
17
  abstract readonly canCreate: Observable<boolean>;
19
18
  protected _layoutEntries: UmbArrayState<BlockLayoutType>;
@@ -28,7 +27,7 @@ export declare abstract class UmbBlockEntriesContext<BlockManagerContextTokenTyp
28
27
  setOneLayout(layoutData: BlockLayoutType): UmbArrayState<BlockLayoutType>;
29
28
  abstract getPathForCreateBlock(index: number): string | undefined;
30
29
  abstract getPathForClipboard(index: number): string | undefined;
31
- abstract create(contentElementTypeKey: string, layoutEntry?: Omit<BlockLayoutType, 'contentUdi'>, modalData?: typeof UMB_BLOCK_WORKSPACE_MODAL.DATA): Promise<UmbBlockDataObjectModel<BlockLayoutType> | undefined>;
32
- abstract insert(layoutEntry: BlockLayoutType, content: UmbBlockDataType, settings: UmbBlockDataType | undefined, modalData: typeof UMB_BLOCK_WORKSPACE_MODAL.DATA): Promise<boolean>;
30
+ abstract create(contentElementTypeKey: string, layoutEntry?: Omit<BlockLayoutType, 'contentUdi'>, modalData?: UmbBlockWorkspaceData): Promise<UmbBlockDataObjectModel<BlockLayoutType> | undefined>;
31
+ abstract insert(layoutEntry: BlockLayoutType, content: UmbBlockDataType, settings: UmbBlockDataType | undefined, modalData: UmbBlockWorkspaceData): Promise<boolean>;
33
32
  delete(contentUdi: string): Promise<void>;
34
33
  }
@@ -1,16 +1,13 @@
1
- import { UMB_BLOCK_WORKSPACE_MODAL } from '../workspace/block-workspace.modal-token.js';
2
1
  import { UMB_BLOCK_ENTRIES_CONTEXT } from './block-entries.context-token.js';
3
- import { UmbContextBase } from '../../../../libs/class-api/index.js';
4
2
  import { UmbArrayState, UmbBasicState, UmbStringState } from '../../../../libs/observable-api/index.js';
5
- import { UmbModalRouteRegistrationController } from '../../../core/router/index.js';
3
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
6
4
  export class UmbBlockEntriesContext extends UmbContextBase {
7
- #workspacePath;
8
5
  constructor(host, blockManagerContextToken) {
9
6
  super(host, UMB_BLOCK_ENTRIES_CONTEXT.toString());
10
7
  this._catalogueRouteBuilderState = new UmbBasicState(undefined);
11
8
  this.catalogueRouteBuilder = this._catalogueRouteBuilderState.asObservable();
12
- this.#workspacePath = new UmbStringState(undefined);
13
- this.workspacePath = this.#workspacePath.asObservable();
9
+ this._workspacePath = new UmbStringState(undefined);
10
+ this.workspacePath = this._workspacePath.asObservable();
14
11
  this._layoutEntries = new UmbArrayState([], (x) => x.contentUdi);
15
12
  this.layoutEntries = this._layoutEntries.asObservable();
16
13
  this.layoutEntriesLength = this._layoutEntries.asObservablePart((x) => x.length);
@@ -18,24 +15,7 @@ export class UmbBlockEntriesContext extends UmbContextBase {
18
15
  this._retrieveManager = this.consumeContext(blockManagerContextToken, (blockGridManager) => {
19
16
  this._manager = blockGridManager;
20
17
  this._gotBlockManager();
21
- this.observe(this._manager.propertyAlias, (alias) => {
22
- this._workspaceModal.setUniquePathValue('propertyAlias', alias);
23
- }, 'observePropertyAlias');
24
- this.observe(this._manager.variantId, (variantId) => {
25
- // TODO: This might not be the property variant ID, but the content variant ID. Check up on what makes most sense?
26
- this._workspaceModal.setUniquePathValue('variantId', variantId?.toString());
27
- }, 'observePropertyVariantId');
28
18
  }).asPromise();
29
- this._workspaceModal = new UmbModalRouteRegistrationController(this, UMB_BLOCK_WORKSPACE_MODAL)
30
- .addUniquePaths(['propertyAlias', 'variantId'])
31
- .addAdditionalPath('block')
32
- .onSetup(() => {
33
- return { data: { entityType: 'block', preset: {} }, modal: { size: 'medium' } };
34
- })
35
- .observeRouteBuilder((routeBuilder) => {
36
- const newPath = routeBuilder({});
37
- this.#workspacePath.setValue(newPath);
38
- });
39
19
  }
40
20
  async getManager() {
41
21
  await this._retrieveManager;
@@ -246,7 +246,7 @@ export class UmbBlockWorkspaceContext extends UmbSubmittableWorkspaceContextBase
246
246
  }
247
247
  else {
248
248
  // Update data:
249
- this.#blockManager.setOneLayout(layoutData, this.#modalContext?.data);
249
+ this.#blockManager.setOneLayout(layoutData, this.#modalContext.data);
250
250
  if (contentData) {
251
251
  this.#blockManager.setOneContent(contentData);
252
252
  }
@@ -1,5 +1,5 @@
1
1
  import { UMB_BLOCK_CATALOGUE_MODAL, UmbBlockEntriesContext } from '../../block/index.js';
2
- import { UMB_BLOCK_GRID_ENTRY_CONTEXT } from '../index.js';
2
+ import { UMB_BLOCK_GRID_ENTRY_CONTEXT, UMB_BLOCK_GRID_WORKSPACE_MODAL, } from '../index.js';
3
3
  import { UMB_BLOCK_GRID_MANAGER_CONTEXT } from './block-grid-manager.context-token.js';
4
4
  import { UmbArrayState, UmbNumberState, UmbObjectState, UmbStringState } from '../../../../libs/observable-api/index.js';
5
5
  import { UmbModalRouteRegistrationController } from '../../../core/router/index.js';
@@ -7,6 +7,7 @@ import { pathFolderName } from '../../../core/utils/index.js';
7
7
  export class UmbBlockGridEntriesContext extends UmbBlockEntriesContext {
8
8
  //
9
9
  #catalogueModal;
10
+ #workspaceModal;
10
11
  #parentEntry;
11
12
  #layoutColumns;
12
13
  #areaType;
@@ -34,12 +35,12 @@ export class UmbBlockGridEntriesContext extends UmbBlockEntriesContext {
34
35
  setParentUnique(contentUdi) {
35
36
  this.#parentUnique = contentUdi;
36
37
  // Notice pathFolderName can be removed when we have switched to use a proper GUID/ID/KEY. [NL]
37
- this._workspaceModal.setUniquePathValue('parentUnique', pathFolderName(contentUdi ?? 'null'));
38
+ this.#workspaceModal.setUniquePathValue('parentUnique', pathFolderName(contentUdi ?? 'null'));
38
39
  this.#catalogueModal.setUniquePathValue('parentUnique', pathFolderName(contentUdi ?? 'null'));
39
40
  }
40
41
  setAreaKey(areaKey) {
41
42
  this.#areaKey = areaKey;
42
- this._workspaceModal.setUniquePathValue('areaKey', areaKey ?? 'null');
43
+ this.#workspaceModal.setUniquePathValue('areaKey', areaKey ?? 'null');
43
44
  this.#catalogueModal.setUniquePathValue('areaKey', areaKey ?? 'null');
44
45
  this.#gotAreaKey();
45
46
  }
@@ -62,7 +63,6 @@ export class UmbBlockGridEntriesContext extends UmbBlockEntriesContext {
62
63
  this.allowedBlockTypes = this.#allowedBlockTypes.asObservable();
63
64
  this.amountOfAllowedBlockTypes = this.#allowedBlockTypes.asObservablePart((x) => x.length);
64
65
  this.canCreate = this.#allowedBlockTypes.asObservablePart((x) => x.length > 0);
65
- this._workspaceModal.addUniquePaths(['parentUnique', 'areaKey']);
66
66
  this.consumeContext(UMB_BLOCK_GRID_ENTRY_CONTEXT, (blockGridEntry) => {
67
67
  this.#parentEntry = blockGridEntry;
68
68
  this.#gotBlockParentEntry(); // is not used at this point. [NL]
@@ -86,6 +86,23 @@ export class UmbBlockGridEntriesContext extends UmbBlockEntriesContext {
86
86
  // TODO: Does it make any sense that this is a state? Check usage and confirm. [NL]
87
87
  this._catalogueRouteBuilderState.setValue(routeBuilder);
88
88
  });
89
+ this.#workspaceModal = new UmbModalRouteRegistrationController(this, UMB_BLOCK_GRID_WORKSPACE_MODAL)
90
+ .addUniquePaths(['propertyAlias', 'variantId', 'parentUnique', 'areaKey'])
91
+ .addAdditionalPath('block')
92
+ .onSetup(() => {
93
+ return {
94
+ data: {
95
+ entityType: 'block',
96
+ preset: {},
97
+ originData: { areaKey: this.#areaKey, parentUnique: this.#parentUnique },
98
+ },
99
+ modal: { size: 'medium' },
100
+ };
101
+ })
102
+ .observeRouteBuilder((routeBuilder) => {
103
+ const newPath = routeBuilder({});
104
+ this._workspacePath.setValue(newPath);
105
+ });
89
106
  }
90
107
  _gotBlockManager() {
91
108
  if (!this._manager)
@@ -94,11 +111,12 @@ export class UmbBlockGridEntriesContext extends UmbBlockEntriesContext {
94
111
  this.#getRangeLimits();
95
112
  this.observe(this._manager.propertyAlias, (alias) => {
96
113
  this.#catalogueModal.setUniquePathValue('propertyAlias', alias ?? 'null');
114
+ this.#workspaceModal.setUniquePathValue('propertyAlias', alias ?? 'null');
97
115
  }, 'observePropertyAlias');
98
116
  this.observe(this._manager.variantId, (variantId) => {
99
- if (variantId) {
100
- this.#catalogueModal.setUniquePathValue('variantId', variantId.toString());
101
- }
117
+ // TODO: This might not be the property variant ID, but the content variant ID. Check up on what makes most sense?
118
+ this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString());
119
+ this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString());
102
120
  }, 'observePropertyAlias');
103
121
  }
104
122
  #gotAreaKey() {
@@ -1,6 +1,6 @@
1
1
  import type { UmbBlockDataType } from '../../block/index.js';
2
2
  import { UmbBlockEntriesContext } from '../../block/index.js';
3
- import type { UmbBlockListWorkspaceData } from '../index.js';
3
+ import { type UmbBlockListWorkspaceData } from '../index.js';
4
4
  import type { UmbBlockListLayoutModel, UmbBlockListTypeModel } from '../types.js';
5
5
  import { UMB_BLOCK_LIST_MANAGER_CONTEXT } from './block-list-manager.context-token.js';
6
6
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
@@ -1,10 +1,12 @@
1
1
  import { UMB_BLOCK_CATALOGUE_MODAL, UmbBlockEntriesContext } from '../../block/index.js';
2
+ import { UMB_BLOCK_LIST_WORKSPACE_MODAL } from '../index.js';
2
3
  import { UMB_BLOCK_LIST_MANAGER_CONTEXT } from './block-list-manager.context-token.js';
3
4
  import { UmbBooleanState } from '../../../../libs/observable-api/index.js';
4
5
  import { UmbModalRouteRegistrationController } from '../../../core/router/index.js';
5
6
  export class UmbBlockListEntriesContext extends UmbBlockEntriesContext {
6
7
  //
7
8
  #catalogueModal;
9
+ #workspaceModal;
8
10
  constructor(host) {
9
11
  super(host, UMB_BLOCK_LIST_MANAGER_CONTEXT);
10
12
  // We will just say its always allowed for list for now: [NL]
@@ -27,6 +29,16 @@ export class UmbBlockListEntriesContext extends UmbBlockEntriesContext {
27
29
  .observeRouteBuilder((routeBuilder) => {
28
30
  this._catalogueRouteBuilderState.setValue(routeBuilder);
29
31
  });
32
+ this.#workspaceModal = new UmbModalRouteRegistrationController(this, UMB_BLOCK_LIST_WORKSPACE_MODAL)
33
+ .addUniquePaths(['propertyAlias', 'variantId'])
34
+ .addAdditionalPath('block')
35
+ .onSetup(() => {
36
+ return { data: { entityType: 'block', preset: {} }, modal: { size: 'medium' } };
37
+ })
38
+ .observeRouteBuilder((routeBuilder) => {
39
+ const newPath = routeBuilder({});
40
+ this._workspacePath.setValue(newPath);
41
+ });
30
42
  }
31
43
  _gotBlockManager() {
32
44
  if (!this._manager)
@@ -39,11 +51,12 @@ export class UmbBlockListEntriesContext extends UmbBlockEntriesContext {
39
51
  }, 'observeThisLayouts');
40
52
  this.observe(this._manager.propertyAlias, (alias) => {
41
53
  this.#catalogueModal.setUniquePathValue('propertyAlias', alias ?? 'null');
54
+ this.#workspaceModal.setUniquePathValue('propertyAlias', alias ?? 'null');
42
55
  }, 'observePropertyAlias');
43
56
  this.observe(this._manager.variantId, (variantId) => {
44
- if (variantId) {
45
- this.#catalogueModal.setUniquePathValue('variantId', variantId.toString());
46
- }
57
+ // TODO: This might not be the property variant ID, but the content variant ID. Check up on what makes most sense?
58
+ this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString());
59
+ this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString());
47
60
  }, 'observePropertyAlias');
48
61
  }
49
62
  getPathForCreateBlock(index) {
@@ -1,7 +1,7 @@
1
1
  import type { UmbBlockDataType } from '../../block/index.js';
2
2
  import { UmbBlockEntriesContext } from '../../block/index.js';
3
- import type { UmbBlockRteWorkspaceData } from '../index.js';
4
3
  import type { UmbBlockRteLayoutModel, UmbBlockRteTypeModel } from '../types.js';
4
+ import { type UmbBlockRteWorkspaceData } from '../workspace/block-rte-workspace.modal-token.js';
5
5
  import { UMB_BLOCK_RTE_MANAGER_CONTEXT } from './block-rte-manager.context-token.js';
6
6
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
7
7
  export declare class UmbBlockRteEntriesContext extends UmbBlockEntriesContext<typeof UMB_BLOCK_RTE_MANAGER_CONTEXT, typeof UMB_BLOCK_RTE_MANAGER_CONTEXT.TYPE, UmbBlockRteTypeModel, UmbBlockRteLayoutModel> {
@@ -1,10 +1,12 @@
1
1
  import { UMB_BLOCK_CATALOGUE_MODAL, UmbBlockEntriesContext } from '../../block/index.js';
2
+ import { UMB_BLOCK_RTE_WORKSPACE_MODAL, } from '../workspace/block-rte-workspace.modal-token.js';
2
3
  import { UMB_BLOCK_RTE_MANAGER_CONTEXT } from './block-rte-manager.context-token.js';
3
4
  import { UmbBooleanState } from '../../../../libs/observable-api/index.js';
4
5
  import { UmbModalRouteRegistrationController } from '../../../core/router/index.js';
5
6
  export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext {
6
7
  //
7
8
  #catalogueModal;
9
+ #workspaceModal;
8
10
  constructor(host) {
9
11
  super(host, UMB_BLOCK_RTE_MANAGER_CONTEXT);
10
12
  // We will just say its always allowed for RTE for now: [NL]
@@ -25,6 +27,16 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext {
25
27
  .observeRouteBuilder((routeBuilder) => {
26
28
  this._catalogueRouteBuilderState.setValue(routeBuilder);
27
29
  });
30
+ this.#workspaceModal = new UmbModalRouteRegistrationController(this, UMB_BLOCK_RTE_WORKSPACE_MODAL)
31
+ .addUniquePaths(['propertyAlias', 'variantId'])
32
+ .addAdditionalPath('block')
33
+ .onSetup(() => {
34
+ return { data: { entityType: 'block', preset: {} }, modal: { size: 'medium' } };
35
+ })
36
+ .observeRouteBuilder((routeBuilder) => {
37
+ const newPath = routeBuilder({});
38
+ this._workspacePath.setValue(newPath);
39
+ });
28
40
  }
29
41
  _gotBlockManager() {
30
42
  if (!this._manager)
@@ -37,11 +49,12 @@ export class UmbBlockRteEntriesContext extends UmbBlockEntriesContext {
37
49
  }, 'observeThisLayouts');
38
50
  this.observe(this._manager.propertyAlias, (alias) => {
39
51
  this.#catalogueModal.setUniquePathValue('propertyAlias', alias ?? 'null');
52
+ this.#workspaceModal.setUniquePathValue('propertyAlias', alias ?? 'null');
40
53
  }, 'observePropertyAlias');
41
54
  this.observe(this._manager.variantId, (variantId) => {
42
- if (variantId) {
43
- this.#catalogueModal.setUniquePathValue('variantId', variantId.toString());
44
- }
55
+ // TODO: This might not be the property variant ID, but the content variant ID. Check up on what makes most sense?
56
+ this.#catalogueModal.setUniquePathValue('variantId', variantId?.toString());
57
+ this.#workspaceModal.setUniquePathValue('variantId', variantId?.toString());
45
58
  }, 'observePropertyAlias');
46
59
  }
47
60
  getPathForCreateBlock() {
@@ -1,7 +1,6 @@
1
- import type { UmbBlockLayoutBaseModel, UmbBlockViewPropsType, UmbBlockWorkspaceData } from '../../block/index.js';
2
- import type { UmbWorkspaceModalData } from '../../../core/modal/index.js';
1
+ import type { UmbBlockWorkspaceData } from '../../block/index.js';
2
+ import type { UmbWorkspaceModalData, UmbWorkspaceModalValue } from '../../../core/modal/index.js';
3
3
  import { UmbModalToken } from '../../../core/modal/index.js';
4
4
  export interface UmbBlockRteWorkspaceData extends UmbBlockWorkspaceData<object> {
5
5
  }
6
- export type UmbBlockRteWorkspaceValue = Array<UmbBlockViewPropsType<UmbBlockLayoutBaseModel>>;
7
- export declare const UMB_BLOCK_RTE_WORKSPACE_MODAL: UmbModalToken<Omit<UmbWorkspaceModalData<unknown>, "entityType">, UmbBlockRteWorkspaceValue>;
6
+ export declare const UMB_BLOCK_RTE_WORKSPACE_MODAL: UmbModalToken<Omit<UmbWorkspaceModalData<unknown>, "entityType">, UmbWorkspaceModalValue>;