@umbraco-cms/backoffice 14.0.0--preview007-2aa9121f → 14.0.0--preview007-bcd459cf

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.
Files changed (58) hide show
  1. package/dist-cms/custom-elements.json +98 -0
  2. package/dist-cms/external/backend-api/index.js +1 -1
  3. package/dist-cms/external/backend-api/src/models/DataTypeItemResponseModel.d.ts +1 -0
  4. package/dist-cms/external/backend-api/src/models/DataTypeResponseModel.d.ts +1 -0
  5. package/dist-cms/external/backend-api/src/models/DataTypeTreeItemResponseModel.d.ts +1 -0
  6. package/dist-cms/external/backend-api/src/services/MemberResource.d.ts +12 -12
  7. package/dist-cms/external/backend-api/src/services/TemporaryFileResource.d.ts +4 -4
  8. package/dist-cms/external/backend-api/src/services/UserResource.d.ts +13 -13
  9. package/dist-cms/mocks/data/data-type/data-type.data.js +39 -0
  10. package/dist-cms/mocks/data/data-type/data-type.db.js +4 -0
  11. package/dist-cms/mocks/data/dictionary/dictionary.data.js +6 -6
  12. package/dist-cms/mocks/data/document/document.db.js +1 -1
  13. package/dist-cms/mocks/data/language/language.data.js +2 -2
  14. package/dist-cms/mocks/handlers/dictionary/import-export.handlers.js +2 -2
  15. package/dist-cms/packages/core/components/index.d.ts +1 -0
  16. package/dist-cms/packages/core/components/index.js +1 -0
  17. package/dist-cms/packages/core/components/split-panel/index.d.ts +2 -0
  18. package/dist-cms/packages/core/components/split-panel/index.js +2 -0
  19. package/dist-cms/packages/core/components/split-panel/split-panel.element.d.ts +47 -0
  20. package/dist-cms/packages/core/components/split-panel/split-panel.element.js +298 -0
  21. package/dist-cms/packages/core/debug/debug.element.d.ts +1 -1
  22. package/dist-cms/packages/core/debug/debug.element.js +17 -16
  23. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.d.ts +8 -2
  24. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.js +4 -1
  25. package/dist-cms/packages/core/section/section-default.element.js +25 -10
  26. package/dist-cms/packages/core/temporary-file/temporary-file.server.data-source.js +3 -3
  27. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +2 -2
  28. package/dist-cms/packages/documents/documents/entity-actions/publish.action.d.ts +1 -0
  29. package/dist-cms/packages/documents/documents/entity-actions/publish.action.js +21 -3
  30. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.d.ts +1 -0
  31. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.js +21 -3
  32. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.d.ts +34 -0
  33. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.js +104 -0
  34. package/dist-cms/packages/documents/documents/global-contexts/index.d.ts +1 -0
  35. package/dist-cms/packages/documents/documents/global-contexts/index.js +1 -0
  36. package/dist-cms/packages/documents/documents/global-contexts/manifests.d.ts +2 -0
  37. package/dist-cms/packages/documents/documents/global-contexts/manifests.js +8 -0
  38. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  39. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.element.js +5 -0
  40. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.token.js +0 -1
  41. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +20 -12
  42. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +1 -1
  43. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +18 -42
  44. package/dist-cms/packages/language/app-language-select/app-language-select.element.js +2 -2
  45. package/dist-cms/packages/language/app-language-select/manifests.js +0 -6
  46. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.d.ts +1 -0
  47. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.js +1 -0
  48. package/dist-cms/packages/language/global-contexts/index.d.ts +1 -0
  49. package/dist-cms/packages/language/global-contexts/index.js +1 -0
  50. package/dist-cms/packages/language/global-contexts/manifests.d.ts +2 -0
  51. package/dist-cms/packages/language/global-contexts/manifests.js +8 -0
  52. package/dist-cms/packages/language/index.d.ts +1 -0
  53. package/dist-cms/packages/language/index.js +1 -0
  54. package/dist-cms/packages/language/manifests.js +2 -0
  55. package/dist-cms/packages/user/user/collection/repository/user-collection.server.data-source.js +1 -1
  56. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  57. package/dist-cms/vscode-html-custom-data.json +30 -0
  58. package/package.json +1 -1
@@ -0,0 +1,104 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _UmbDocumentVariantManagerContext_publishingRepository, _UmbDocumentVariantManagerContext_documentRepository, _UmbDocumentVariantManagerContext_modalManagerContext, _UmbDocumentVariantManagerContext_appLanguageCulture;
13
+ import { UmbDocumentVariantState } from '../types.js';
14
+ import { UmbDocumentDetailRepository } from '../repository/detail/document-detail.repository.js';
15
+ import { UMB_DOCUMENT_LANGUAGE_PICKER_MODAL, } from '../modals/variant-picker/index.js';
16
+ import { UmbDocumentPublishingRepository } from '../repository/publishing/index.js';
17
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
18
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
19
+ import { UMB_MODAL_MANAGER_CONTEXT } from '../../../core/modal/index.js';
20
+ import { UmbVariantId } from '../../../core/variant/index.js';
21
+ import { UMB_APP_LANGUAGE_CONTEXT } from '../../../language/index.js';
22
+ export class UmbDocumentVariantManagerContext extends UmbContextBase {
23
+ constructor(host) {
24
+ super(host, UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT);
25
+ _UmbDocumentVariantManagerContext_publishingRepository.set(this, new UmbDocumentPublishingRepository(this));
26
+ _UmbDocumentVariantManagerContext_documentRepository.set(this, new UmbDocumentDetailRepository(this));
27
+ _UmbDocumentVariantManagerContext_modalManagerContext.set(this, void 0);
28
+ _UmbDocumentVariantManagerContext_appLanguageCulture.set(this, void 0);
29
+ this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {
30
+ __classPrivateFieldSet(this, _UmbDocumentVariantManagerContext_modalManagerContext, instance, "f");
31
+ });
32
+ this.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (appLanguageContext) => {
33
+ this.observe(appLanguageContext.appLanguageCulture, (culture) => {
34
+ __classPrivateFieldSet(this, _UmbDocumentVariantManagerContext_appLanguageCulture, culture?.toLowerCase(), "f");
35
+ });
36
+ });
37
+ }
38
+ /**
39
+ * Helps the user pick variants for a specific operation.
40
+ * If there is only one variant, it will be selected automatically.
41
+ * If there are multiple variants, a modal will be shown to the user.
42
+ * @param type The type of operation to perform.
43
+ * @param documentUnique The unique identifier of the document.
44
+ * @param activeVariantCulture The culture of the active variant (will be pre-selected in the modal).
45
+ * @param filterFn Optional filter function to filter the available variants.
46
+ * @returns The selected variants to perform the operation on.
47
+ */
48
+ async pickVariants(availableVariants, type, activeVariantCulture) {
49
+ // If there is only one variant, we don't need to select anything.
50
+ if (availableVariants.length === 1) {
51
+ return [UmbVariantId.Create(availableVariants[0])];
52
+ }
53
+ if (!__classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_modalManagerContext, "f"))
54
+ throw new Error('Modal manager context is missing');
55
+ const modalData = {
56
+ type,
57
+ variants: availableVariants,
58
+ };
59
+ const modalContext = __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_modalManagerContext, "f").open(UMB_DOCUMENT_LANGUAGE_PICKER_MODAL, {
60
+ data: modalData,
61
+ value: { selection: activeVariantCulture ? [activeVariantCulture] : [] },
62
+ });
63
+ const result = await modalContext.onSubmit().catch(() => undefined);
64
+ if (!result?.selection.length)
65
+ return [];
66
+ const selectedVariants = result.selection.map((x) => x?.toLowerCase() ?? '');
67
+ // Match the result to the available variants.
68
+ const variantIds = availableVariants
69
+ .filter((x) => selectedVariants.includes(x.culture))
70
+ .map((x) => UmbVariantId.Create(x));
71
+ return variantIds;
72
+ }
73
+ /**
74
+ * Publish the latest version of a document indescriminately.
75
+ * @param documentUnique The unique identifier of the document.
76
+ */
77
+ async publish(documentUnique) {
78
+ const { data } = await __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_documentRepository, "f").requestByUnique(documentUnique);
79
+ if (!data)
80
+ throw new Error('Document not found');
81
+ const variantIds = await this.pickVariants(data.variants, 'publish', __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_appLanguageCulture, "f"));
82
+ if (variantIds.length) {
83
+ await __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_publishingRepository, "f").publish(documentUnique, variantIds);
84
+ }
85
+ }
86
+ /**
87
+ * Unpublish the latest version of a document indescriminately.
88
+ * @param documentUnique The unique identifier of the document.
89
+ */
90
+ async unpublish(documentUnique) {
91
+ const { data } = await __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_documentRepository, "f").requestByUnique(documentUnique);
92
+ if (!data)
93
+ throw new Error('Document not found');
94
+ // Only show published variants
95
+ const variants = data.variants.filter((variant) => variant.state === UmbDocumentVariantState.PUBLISHED);
96
+ const variantIds = await this.pickVariants(variants, 'unpublish', __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_appLanguageCulture, "f"));
97
+ if (variantIds.length) {
98
+ await __classPrivateFieldGet(this, _UmbDocumentVariantManagerContext_publishingRepository, "f").unpublish(documentUnique, variantIds);
99
+ }
100
+ }
101
+ }
102
+ _UmbDocumentVariantManagerContext_publishingRepository = new WeakMap(), _UmbDocumentVariantManagerContext_documentRepository = new WeakMap(), _UmbDocumentVariantManagerContext_modalManagerContext = new WeakMap(), _UmbDocumentVariantManagerContext_appLanguageCulture = new WeakMap();
103
+ export default UmbDocumentVariantManagerContext;
104
+ export const UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT = new UmbContextToken('UmbDocumentVariantManagerContext');
@@ -0,0 +1 @@
1
+ export * from './document-variant-manager.context.js';
@@ -0,0 +1 @@
1
+ export * from './document-variant-manager.context.js';
@@ -0,0 +1,2 @@
1
+ import type { ManifestGlobalContext } from '../../../core/extension-registry/index.js';
2
+ export declare const manifests: Array<ManifestGlobalContext>;
@@ -0,0 +1,8 @@
1
+ export const manifests = [
2
+ {
3
+ type: 'globalContext',
4
+ alias: 'Umb.GlobalContext.DocumentVariantManager',
5
+ name: 'Document Variant Manager Context',
6
+ js: () => import('./document-variant-manager.context.js'),
7
+ },
8
+ ];
@@ -12,6 +12,7 @@ import { manifests as modalManifests } from './modals/manifests.js';
12
12
  import { manifests as treeManifests } from './tree/manifests.js';
13
13
  import { manifests as userPermissionManifests } from './user-permissions/manifests.js';
14
14
  import { manifests as workspaceManifests } from './workspace/manifests.js';
15
+ import { manifests as globalContextManifests } from './global-contexts/manifests.js';
15
16
  export const manifests = [
16
17
  ...breadcrumbManifests,
17
18
  ...collectionManifests,
@@ -27,4 +28,5 @@ export const manifests = [
27
28
  ...treeManifests,
28
29
  ...userPermissionManifests,
29
30
  ...workspaceManifests,
31
+ ...globalContextManifests,
30
32
  ];
@@ -136,6 +136,11 @@ _UmbDocumentVariantPickerModalElement_renderVariantStatus = function _UmbDocumen
136
136
  UmbDocumentVariantPickerModalElement.styles = [
137
137
  UmbTextStyles,
138
138
  css `
139
+ :host {
140
+ display: block;
141
+ width: 400px;
142
+ max-width: 90vw;
143
+ }
139
144
  #subtitle {
140
145
  margin-top: 0;
141
146
  }
@@ -3,6 +3,5 @@ import { UmbModalToken } from '../../../../core/modal/index.js';
3
3
  export const UMB_DOCUMENT_LANGUAGE_PICKER_MODAL = new UmbModalToken(UMB_DOCUMENT_VARIANT_PICKER_MODAL_ALIAS, {
4
4
  modal: {
5
5
  type: 'dialog',
6
- size: 'small',
7
6
  },
8
7
  });
@@ -25,18 +25,21 @@ let UmbDocumentWorkspaceSplitViewElement = class UmbDocumentWorkspaceSplitViewEl
25
25
  }, '_observeActiveVariantsInfo');
26
26
  }
27
27
  render() {
28
- return this._variants
29
- ? html `<div id="splitViews">
30
- ${repeat(this._variants, (view) => view.index + '_' + (view.culture ?? '') + '_' + (view.segment ?? '') + '_' + this._variants.length, (view) => html `
31
- <umb-workspace-split-view
32
- alias="Umb.Workspace.Document"
33
- .splitViewIndex=${view.index}
34
- .displayNavigation=${view.index === this._variants.length - 1}></umb-workspace-split-view>
35
- `)}
36
- </div>
28
+ if (!this._variants)
29
+ return nothing;
30
+ return html `<div id="splitViews">
31
+ <umb-split-panel snap="50%">
32
+ ${repeat(this._variants, (view) => view.index + '_' + (view.culture ?? '') + '_' + (view.segment ?? '') + '_' + this._variants.length, (view, index) => html `
33
+ <umb-workspace-split-view
34
+ slot=${['start', 'end'][index] || ''}
35
+ alias="Umb.Workspace.Document"
36
+ .splitViewIndex=${view.index}
37
+ .displayNavigation=${view.index === this._variants.length - 1}></umb-workspace-split-view>
38
+ `)}
39
+ </umb-split-panel>
40
+ </div>
37
41
 
38
- <umb-workspace-footer alias="Umb.Workspace.Document"></umb-workspace-footer>`
39
- : nothing;
42
+ <umb-workspace-footer alias="Umb.Workspace.Document"></umb-workspace-footer>`;
40
43
  }
41
44
  };
42
45
  UmbDocumentWorkspaceSplitViewElement.styles = [
@@ -52,11 +55,16 @@ UmbDocumentWorkspaceSplitViewElement.styles = [
52
55
  }
53
56
 
54
57
  #splitViews {
55
- display: flex;
56
58
  width: 100%;
57
59
  height: calc(100% - var(--umb-footer-layout-height));
58
60
  }
59
61
 
62
+ umb-split-panel {
63
+ --umb-split-panel-start-min-width: 25%;
64
+ --umb-split-panel-end-min-width: 25%;
65
+ --umb-split-panel-divider-color: var(--uui-color-border);
66
+ }
67
+
60
68
  #breadcrumbs {
61
69
  margin: 0 var(--uui-size-layout-1);
62
70
  }
@@ -2,7 +2,7 @@ import { UmbDocumentPropertyDataContext } from '../property-dataset-context/docu
2
2
  import { UmbDocumentDetailRepository } from '../repository/index.js';
3
3
  import type { UmbDocumentDetailModel } from '../types.js';
4
4
  import { UmbDocumentPublishingRepository } from '../repository/publishing/index.js';
5
- import { UmbVariantId } from '../../../core/variant/index.js';
5
+ import type { UmbVariantId } from '../../../core/variant/index.js';
6
6
  import { UmbContentTypePropertyStructureManager } from '../../../core/content-type/index.js';
7
7
  import { UmbEditableWorkspaceContextBase, UmbWorkspaceSplitViewManager, type UmbVariantableWorkspaceContextInterface, type UmbPublishableWorkspaceContextInterface } from '../../../core/workspace/index.js';
8
8
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
@@ -9,19 +9,17 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _UmbDocumentWorkspaceContext_instances, _UmbDocumentWorkspaceContext_currentData, _UmbDocumentWorkspaceContext_getDataPromise, _UmbDocumentWorkspaceContext_modalManagerContext, _UmbDocumentWorkspaceContext_selectVariants, _UmbDocumentWorkspaceContext_createOrSave;
12
+ var _UmbDocumentWorkspaceContext_instances, _UmbDocumentWorkspaceContext_currentData, _UmbDocumentWorkspaceContext_getDataPromise, _UmbDocumentWorkspaceContext_variantManagerContext, _UmbDocumentWorkspaceContext_createOrSave;
13
13
  import { UmbDocumentTypeDetailRepository } from '../../document-types/repository/detail/document-type-detail.repository.js';
14
14
  import { UmbDocumentPropertyDataContext } from '../property-dataset-context/document-property-dataset-context.js';
15
15
  import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js';
16
16
  import { UmbDocumentDetailRepository } from '../repository/index.js';
17
- import { UMB_DOCUMENT_LANGUAGE_PICKER_MODAL } from '../modals/index.js';
18
17
  import { UmbDocumentPublishingRepository } from '../repository/publishing/index.js';
18
+ import { UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT } from '../global-contexts/document-variant-manager.context.js';
19
19
  import { UMB_DOCUMENT_WORKSPACE_ALIAS } from './manifests.js';
20
- import { UmbVariantId } from '../../../core/variant/index.js';
21
20
  import { UmbContentTypePropertyStructureManager } from '../../../core/content-type/index.js';
22
21
  import { UmbEditableWorkspaceContextBase, UmbWorkspaceSplitViewManager, } from '../../../core/workspace/index.js';
23
22
  import { appendToFrozenArray, partialUpdateFrozenArray, UmbObjectState } from '../../../../libs/observable-api/index.js';
24
- import { UMB_MODAL_MANAGER_CONTEXT } from '../../../core/modal/index.js';
25
23
  export class UmbDocumentWorkspaceContext extends UmbEditableWorkspaceContextBase {
26
24
  isLoaded() {
27
25
  return __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_getDataPromise, "f");
@@ -45,9 +43,9 @@ export class UmbDocumentWorkspaceContext extends UmbEditableWorkspaceContextBase
45
43
  this.templateId = __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_currentData, "f").asObservablePart((data) => data?.template?.unique || null);
46
44
  this.structure = new UmbContentTypePropertyStructureManager(this, new UmbDocumentTypeDetailRepository(this));
47
45
  this.splitView = new UmbWorkspaceSplitViewManager();
48
- _UmbDocumentWorkspaceContext_modalManagerContext.set(this, void 0);
49
- this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {
50
- __classPrivateFieldSet(this, _UmbDocumentWorkspaceContext_modalManagerContext, instance, "f");
46
+ _UmbDocumentWorkspaceContext_variantManagerContext.set(this, void 0);
47
+ this.consumeContext(UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT, (instance) => {
48
+ __classPrivateFieldSet(this, _UmbDocumentWorkspaceContext_variantManagerContext, instance, "f");
51
49
  });
52
50
  this.observe(this.contentTypeUnique, (unique) => this.structure.loadType(unique));
53
51
  /*
@@ -147,10 +145,10 @@ export class UmbDocumentWorkspaceContext extends UmbEditableWorkspaceContextBase
147
145
  }
148
146
  }
149
147
  async save() {
148
+ await __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_instances, "m", _UmbDocumentWorkspaceContext_createOrSave).call(this, 'save');
150
149
  const data = this.getData();
151
150
  if (!data)
152
151
  throw new Error('Data is missing');
153
- await __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_instances, "m", _UmbDocumentWorkspaceContext_createOrSave).call(this, 'save');
154
152
  this.saveComplete(data);
155
153
  }
156
154
  async publish() {
@@ -164,11 +162,12 @@ export class UmbDocumentWorkspaceContext extends UmbEditableWorkspaceContextBase
164
162
  await this.publish();
165
163
  }
166
164
  async unpublish() {
167
- const variantIds = await __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_instances, "m", _UmbDocumentWorkspaceContext_selectVariants).call(this, 'unpublish');
168
165
  const unique = this.getEntityId();
169
- if (variantIds.length && unique) {
170
- await this.publishingRepository.unpublish(unique, variantIds);
171
- }
166
+ if (!unique)
167
+ throw new Error('Unique is missing');
168
+ if (!__classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_variantManagerContext, "f"))
169
+ throw new Error('Variant manager context is missing');
170
+ __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_variantManagerContext, "f").unpublish(unique);
172
171
  }
173
172
  async delete() {
174
173
  const id = this.getEntityId();
@@ -192,41 +191,18 @@ export class UmbDocumentWorkspaceContext extends UmbEditableWorkspaceContextBase
192
191
  super.destroy();
193
192
  }
194
193
  }
195
- _UmbDocumentWorkspaceContext_currentData = new WeakMap(), _UmbDocumentWorkspaceContext_getDataPromise = new WeakMap(), _UmbDocumentWorkspaceContext_modalManagerContext = new WeakMap(), _UmbDocumentWorkspaceContext_instances = new WeakSet(), _UmbDocumentWorkspaceContext_selectVariants = async function _UmbDocumentWorkspaceContext_selectVariants(type) {
196
- const currentData = this.getData();
197
- if (!currentData)
198
- throw new Error('Data is missing');
199
- const variants = currentData.variants;
200
- // If there is only one variant, we don't need to select anything.
201
- if (variants.length === 1) {
202
- return [UmbVariantId.Create(variants[0])];
203
- }
204
- if (!__classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_modalManagerContext, "f"))
205
- throw new Error('Modal manager context is missing');
206
- const modalData = {
207
- type,
208
- variants, // TODO: Filter out variants that do not have any changes unless it is the current variant.
209
- };
210
- const activeVariants = this.splitView.getActiveVariants();
211
- const activeVariant = activeVariants[activeVariants.length - 1];
212
- const modalContext = __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_modalManagerContext, "f").open(UMB_DOCUMENT_LANGUAGE_PICKER_MODAL, {
213
- data: modalData,
214
- value: { selection: activeVariant ? [activeVariant.culture] : [] },
215
- });
216
- const result = await modalContext.onSubmit().catch(() => undefined);
217
- if (!result?.selection.length)
218
- return [];
219
- const selectedVariants = result.selection.map((x) => x?.toLowerCase() ?? '');
220
- // Match the result to the available variants.
221
- const variantIds = variants.filter((x) => selectedVariants.includes(x.culture)).map((x) => UmbVariantId.Create(x));
222
- return variantIds;
223
- }, _UmbDocumentWorkspaceContext_createOrSave = async function _UmbDocumentWorkspaceContext_createOrSave(type) {
194
+ _UmbDocumentWorkspaceContext_currentData = new WeakMap(), _UmbDocumentWorkspaceContext_getDataPromise = new WeakMap(), _UmbDocumentWorkspaceContext_variantManagerContext = new WeakMap(), _UmbDocumentWorkspaceContext_instances = new WeakSet(), _UmbDocumentWorkspaceContext_createOrSave = async function _UmbDocumentWorkspaceContext_createOrSave(type) {
224
195
  const data = this.getData();
225
196
  if (!data)
226
197
  throw new Error('Data is missing');
227
198
  if (!data.unique)
228
199
  throw new Error('Unique is missing');
229
- const selectedVariants = await __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_instances, "m", _UmbDocumentWorkspaceContext_selectVariants).call(this, type);
200
+ if (!__classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_variantManagerContext, "f"))
201
+ throw new Error('Variant manager context is missing');
202
+ const activeVariants = this.splitView.getActiveVariants();
203
+ const activeVariant = activeVariants.length ? activeVariants[0] : undefined;
204
+ const selectedVariants = await __classPrivateFieldGet(this, _UmbDocumentWorkspaceContext_variantManagerContext, "f").pickVariants(data.variants, // TODO: Add a filter function to only show variants that have been changed
205
+ type, activeVariant?.culture ?? undefined);
230
206
  // If no variants are selected, we don't save anything.
231
207
  if (!selectedVariants.length)
232
208
  return [];
@@ -17,7 +17,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
17
17
  };
18
18
  var _UmbAppLanguageSelectElement_instances, _UmbAppLanguageSelectElement_collectionRepository, _UmbAppLanguageSelectElement_appLanguageContext, _UmbAppLanguageSelectElement_languagesObserver, _UmbAppLanguageSelectElement_observeAppLanguage, _UmbAppLanguageSelectElement_observeLanguages, _UmbAppLanguageSelectElement_onPopoverToggle, _UmbAppLanguageSelectElement_onLabelClick, _UmbAppLanguageSelectElement_renderTrigger, _UmbAppLanguageSelectElement_renderContent;
19
19
  import { UmbLanguageCollectionRepository } from '../collection/index.js';
20
- import { UMB_APP_LANGUAGE_CONTEXT } from './app-language.context.js';
20
+ import { UMB_APP_LANGUAGE_CONTEXT } from '../global-contexts/index.js';
21
21
  import { css, html, customElement, state, repeat, ifDefined, query } from '../../../external/lit/index.js';
22
22
  import { UmbLitElement } from '../../core/lit-element/index.js';
23
23
  let UmbAppLanguageSelectElement = class UmbAppLanguageSelectElement extends UmbLitElement {
@@ -104,7 +104,7 @@ UmbAppLanguageSelectElement.styles = [
104
104
  }
105
105
 
106
106
  #toggle {
107
- width: var(--umb-section-sidebar-width);
107
+ width: 100%;
108
108
  text-align: left;
109
109
  background: none;
110
110
  border: none;
@@ -1,10 +1,4 @@
1
1
  const entityActions = [
2
- {
3
- type: 'globalContext',
4
- alias: 'Umb.GlobalContext.AppLanguage',
5
- name: 'App Language Context',
6
- js: () => import('./app-language.context.js'),
7
- },
8
2
  {
9
3
  type: 'sectionSidebarApp',
10
4
  alias: 'Umb.SectionSidebarItem.LanguageSelect',
@@ -6,6 +6,7 @@ import type { UmbApi } from '../../../libs/extension-api/index.js';
6
6
  export declare class UmbAppLanguageContext extends UmbBaseController implements UmbApi {
7
7
  #private;
8
8
  appLanguage: import("rxjs").Observable<UmbLanguageDetailModel | undefined>;
9
+ appLanguageCulture: import("rxjs").Observable<string | undefined>;
9
10
  constructor(host: UmbControllerHost);
10
11
  setLanguage(unique: string): void;
11
12
  }
@@ -22,6 +22,7 @@ export class UmbAppLanguageContext extends UmbBaseController {
22
22
  _UmbAppLanguageContext_languages.set(this, []);
23
23
  _UmbAppLanguageContext_appLanguage.set(this, new UmbObjectState(undefined));
24
24
  this.appLanguage = __classPrivateFieldGet(this, _UmbAppLanguageContext_appLanguage, "f").asObservable();
25
+ this.appLanguageCulture = __classPrivateFieldGet(this, _UmbAppLanguageContext_appLanguage, "f").asObservablePart((x) => x?.unique);
25
26
  this.provideContext(UMB_APP_LANGUAGE_CONTEXT, this);
26
27
  __classPrivateFieldSet(this, _UmbAppLanguageContext_languageCollectionRepository, new UmbLanguageCollectionRepository(this), "f");
27
28
  __classPrivateFieldGet(this, _UmbAppLanguageContext_instances, "m", _UmbAppLanguageContext_observeLanguages).call(this);
@@ -0,0 +1 @@
1
+ export * from './app-language.context.js';
@@ -0,0 +1 @@
1
+ export * from './app-language.context.js';
@@ -0,0 +1,2 @@
1
+ import type { ManifestGlobalContext } from '../../core/extension-registry/index.js';
2
+ export declare const manifests: Array<ManifestGlobalContext>;
@@ -0,0 +1,8 @@
1
+ export const manifests = [
2
+ {
3
+ type: 'globalContext',
4
+ alias: 'Umb.GlobalContext.AppLanguage',
5
+ name: 'App Language Context',
6
+ js: () => import('./app-language.context.js'),
7
+ },
8
+ ];
@@ -1,4 +1,5 @@
1
1
  import './components/index.js';
2
2
  export * from './repository/index.js';
3
3
  export * from './collection/index.js';
4
+ export * from './global-contexts/index.js';
4
5
  export type { UmbLanguageDetailModel } from './types.js';
@@ -1,3 +1,4 @@
1
1
  import './components/index.js';
2
2
  export * from './repository/index.js';
3
3
  export * from './collection/index.js';
4
+ export * from './global-contexts/index.js';
@@ -5,6 +5,7 @@ import { manifests as workspaceManifests } from './workspace/manifests.js';
5
5
  import { manifests as appLanguageSelect } from './app-language-select/manifests.js';
6
6
  import { manifests as modalManifests } from './modals/manifests.js';
7
7
  import { manifests as collectionManifests } from './collection/manifests.js';
8
+ import { manifests as globalContextManifests } from './global-contexts/manifests.js';
8
9
  export const manifests = [
9
10
  ...repositoryManifests,
10
11
  ...entityActions,
@@ -13,4 +14,5 @@ export const manifests = [
13
14
  ...appLanguageSelect,
14
15
  ...modalManifests,
15
16
  ...collectionManifests,
17
+ ...globalContextManifests,
16
18
  ];
@@ -36,7 +36,7 @@ export class UmbUserCollectionServerDataSource {
36
36
  * @memberof UmbUserCollectionServerDataSource
37
37
  */
38
38
  async getCollection(filter) {
39
- const { data, error } = await tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbUserCollectionServerDataSource_host, "f"), UserResource.getUserFilter(filter));
39
+ const { data, error } = await tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbUserCollectionServerDataSource_host, "f"), UserResource.getFilterUser(filter));
40
40
  if (error) {
41
41
  return { error };
42
42
  }