@umbraco-cms/backoffice 14.0.0--preview004-efeba5b0 → 14.0.0--preview004-62c3fc89

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 (105) hide show
  1. package/dist-cms/custom-elements.json +17 -3
  2. package/dist-cms/libs/extension-api/controller/extension-element-controller.js +0 -1
  3. package/dist-cms/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.d.ts +5 -2
  4. package/dist-cms/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.js +37 -6
  5. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.d.ts +0 -2
  6. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.js +0 -4
  7. package/dist-cms/packages/core/culture/components/input-culture-select/input-culture-select.element.js +1 -1
  8. package/dist-cms/packages/core/extension-registry/interfaces/modal-extension-element.interface.d.ts +2 -2
  9. package/dist-cms/packages/core/modal/common/code-editor/code-editor-modal.element.d.ts +2 -2
  10. package/dist-cms/packages/core/modal/common/confirm/confirm-modal.element.d.ts +2 -2
  11. package/dist-cms/packages/core/modal/common/confirm/confirm-modal.element.js +1 -1
  12. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.d.ts +2 -2
  13. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.js +8 -8
  14. package/dist-cms/packages/core/modal/common/folder/folder-modal.element.d.ts +2 -2
  15. package/dist-cms/packages/core/modal/common/folder/folder-modal.element.js +1 -1
  16. package/dist-cms/packages/core/modal/common/icon-picker/icon-picker-modal.element.d.ts +2 -2
  17. package/dist-cms/packages/core/modal/common/icon-picker/icon-picker-modal.element.js +4 -2
  18. package/dist-cms/packages/core/modal/common/link-picker/link-picker-modal.element.d.ts +2 -2
  19. package/dist-cms/packages/core/modal/common/property-settings/property-settings-modal.element.d.ts +4 -4
  20. package/dist-cms/packages/core/modal/common/property-settings/property-settings-modal.element.js +9 -11
  21. package/dist-cms/packages/core/modal/common/section-picker/section-picker-modal.element.d.ts +2 -2
  22. package/dist-cms/packages/core/modal/common/section-picker/section-picker-modal.element.js +1 -1
  23. package/dist-cms/packages/core/modal/common/template/template-modal.element.d.ts +2 -2
  24. package/dist-cms/packages/core/modal/common/tree-picker/tree-picker-modal.element.d.ts +2 -2
  25. package/dist-cms/packages/core/modal/index.d.ts +3 -1
  26. package/dist-cms/packages/core/modal/index.js +3 -1
  27. package/dist-cms/packages/core/modal/modal-manager.context.d.ts +2 -1
  28. package/dist-cms/packages/core/modal/modal-manager.context.js +2 -13
  29. package/dist-cms/packages/core/modal/modal-route-registration.d.ts +2 -2
  30. package/dist-cms/packages/core/modal/modal-route-registration.js +9 -9
  31. package/dist-cms/packages/core/modal/modal.context.d.ts +65 -0
  32. package/dist-cms/packages/core/modal/modal.context.js +85 -0
  33. package/dist-cms/packages/core/modal/modal.element.d.ts +18 -0
  34. package/dist-cms/packages/core/modal/modal.element.js +122 -0
  35. package/dist-cms/packages/core/modal/modal.interfaces.d.ts +1 -1
  36. package/dist-cms/packages/core/modal/token/code-editor-modal.token.d.ts +2 -2
  37. package/dist-cms/packages/core/modal/token/confirm-modal.token.d.ts +1 -1
  38. package/dist-cms/packages/core/modal/token/create-dictionary-modal.token.d.ts +2 -2
  39. package/dist-cms/packages/core/modal/token/create-document-modal.token.d.ts +2 -2
  40. package/dist-cms/packages/core/modal/token/data-type-picker-flow-data-type-picker-modal.token.d.ts +2 -2
  41. package/dist-cms/packages/core/modal/token/data-type-picker-flow-modal.token.d.ts +2 -2
  42. package/dist-cms/packages/core/modal/token/data-type-picker-modal.token.d.ts +3 -3
  43. package/dist-cms/packages/core/modal/token/dictionary-item-picker-modal.token.d.ts +3 -3
  44. package/dist-cms/packages/core/modal/token/document-picker-modal.token.d.ts +3 -3
  45. package/dist-cms/packages/core/modal/token/document-type-picker-modal.token.d.ts +3 -3
  46. package/dist-cms/packages/core/modal/token/embedded-media-modal.token.d.ts +2 -2
  47. package/dist-cms/packages/core/modal/token/examine-fields-settings-modal.token.d.ts +2 -2
  48. package/dist-cms/packages/core/modal/token/export-dictionary-modal.token.d.ts +2 -2
  49. package/dist-cms/packages/core/modal/token/folder-modal.token.d.ts +2 -2
  50. package/dist-cms/packages/core/modal/token/icon-picker-modal.token.d.ts +2 -2
  51. package/dist-cms/packages/core/modal/token/import-dictionary-modal.token.d.ts +2 -2
  52. package/dist-cms/packages/core/modal/token/language-picker-modal.token.d.ts +2 -2
  53. package/dist-cms/packages/core/modal/token/link-picker-modal.token.d.ts +2 -2
  54. package/dist-cms/packages/core/modal/token/media-tree-picker-modal.token.d.ts +3 -3
  55. package/dist-cms/packages/core/modal/token/modal-token.d.ts +3 -3
  56. package/dist-cms/packages/core/modal/token/modal-token.js +1 -1
  57. package/dist-cms/packages/core/modal/token/partial-view-picker-modal.token.d.ts +2 -2
  58. package/dist-cms/packages/core/modal/token/property-editor-ui-picker-modal.token.d.ts +2 -2
  59. package/dist-cms/packages/core/modal/token/property-settings-modal.token.d.ts +1 -1
  60. package/dist-cms/packages/core/modal/token/section-picker-modal.token.d.ts +2 -2
  61. package/dist-cms/packages/core/modal/token/template-modal.token.d.ts +2 -2
  62. package/dist-cms/packages/core/modal/token/template-picker-modal.token.d.ts +3 -3
  63. package/dist-cms/packages/core/modal/token/user-picker-modal.token.d.ts +2 -2
  64. package/dist-cms/packages/core/workspace/workspace-footer/workspace-footer.element.js +1 -1
  65. package/dist-cms/packages/dictionary/dictionary/entity-actions/create/create-dictionary-modal.element.d.ts +2 -2
  66. package/dist-cms/packages/dictionary/dictionary/entity-actions/create/create-dictionary-modal.element.js +1 -1
  67. package/dist-cms/packages/dictionary/dictionary/entity-actions/export/export-dictionary-modal.element.d.ts +2 -2
  68. package/dist-cms/packages/dictionary/dictionary/entity-actions/export/export-dictionary-modal.element.js +1 -1
  69. package/dist-cms/packages/dictionary/dictionary/entity-actions/import/import-dictionary-modal.element.d.ts +2 -2
  70. package/dist-cms/packages/dictionary/dictionary/entity-actions/import/import-dictionary-modal.element.js +1 -1
  71. package/dist-cms/packages/documents/documents/entity-actions/create/create-document-modal.element.d.ts +2 -2
  72. package/dist-cms/packages/search/examine-management-dashboard/views/modal-views/fields-settings.element.d.ts +2 -2
  73. package/dist-cms/packages/search/examine-management-dashboard/views/modal-views/fields-settings.element.js +1 -1
  74. package/dist-cms/packages/settings/data-types/components/data-type-flow-input/data-type-flow-input.element.js +0 -1
  75. package/dist-cms/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.d.ts +2 -2
  76. package/dist-cms/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js +1 -1
  77. package/dist-cms/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.d.ts +2 -2
  78. package/dist-cms/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.js +20 -20
  79. package/dist-cms/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.d.ts +2 -2
  80. package/dist-cms/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.js +6 -6
  81. package/dist-cms/packages/settings/data-types/repository/data-type.repository.js +1 -1
  82. package/dist-cms/packages/settings/languages/modals/language-picker/language-picker-modal.element.d.ts +2 -2
  83. package/dist-cms/packages/settings/languages/modals/language-picker/language-picker-modal.element.js +1 -1
  84. package/dist-cms/packages/templating/components/insert-menu/templating-insert-menu.element.d.ts +2 -2
  85. package/dist-cms/packages/templating/components/insert-menu/templating-insert-menu.element.js +7 -7
  86. package/dist-cms/packages/templating/modals/insert-choose-type-sidebar.element.d.ts +4 -4
  87. package/dist-cms/packages/templating/modals/insert-choose-type-sidebar.element.js +7 -7
  88. package/dist-cms/packages/templating/modals/insert-section-modal/insert-section-modal.element.d.ts +3 -3
  89. package/dist-cms/packages/templating/modals/insert-section-modal/insert-section-modal.element.js +1 -1
  90. package/dist-cms/packages/templating/modals/partial-view-picker-modal.element.d.ts +2 -2
  91. package/dist-cms/packages/templating/modals/partial-view-picker-modal.element.js +1 -1
  92. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-from-snippet.action.d.ts +1 -1
  93. package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace-edit.element.js +3 -3
  94. package/dist-cms/packages/templating/stylesheets/workspace/views/rich-text-editor/stylesheet-workspace-view-rich-text-editor-style-sidebar.element.d.ts +2 -2
  95. package/dist-cms/packages/templating/templates/modals/modal-tokens.d.ts +2 -2
  96. package/dist-cms/packages/templating/templates/modals/query-builder/query-builder.element.d.ts +2 -2
  97. package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +6 -6
  98. package/dist-cms/packages/user/user/modals/user-picker/user-picker-modal.element.d.ts +2 -2
  99. package/dist-cms/shared/modal/modal-element.element.d.ts +4 -2
  100. package/dist-cms/shared/modal/modal-element.element.js +10 -1
  101. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  102. package/dist-cms/vscode-html-custom-data.json +7 -2
  103. package/package.json +1 -1
  104. package/dist-cms/packages/core/modal/modal-context.d.ts +0 -52
  105. package/dist-cms/packages/core/modal/modal-context.js +0 -158
@@ -1597,9 +1597,6 @@
1597
1597
  {
1598
1598
  "name": "configuration"
1599
1599
  },
1600
- {
1601
- "name": "modalContext"
1602
- },
1603
1600
  {
1604
1601
  "name": "styles",
1605
1602
  "type": "array",
@@ -2534,6 +2531,23 @@
2534
2531
  }
2535
2532
  ]
2536
2533
  },
2534
+ {
2535
+ "name": "umb-modal",
2536
+ "path": "./../src/packages/core/modal/modal.element.ts",
2537
+ "properties": [
2538
+ {
2539
+ "name": "modalContext",
2540
+ "type": "UmbModalContext<object, any> | undefined"
2541
+ },
2542
+ {
2543
+ "name": "element"
2544
+ },
2545
+ {
2546
+ "name": "styles",
2547
+ "default": "[\"UmbTextStyles\"]"
2548
+ }
2549
+ ]
2550
+ },
2537
2551
  {
2538
2552
  "name": "umb-notification-layout-default",
2539
2553
  "path": "./../src/packages/core/notification/layouts/default/notification-layout-default.element.ts",
@@ -48,7 +48,6 @@ export class UmbExtensionElementController extends UmbBaseExtensionController {
48
48
  };
49
49
  async _conditionsAreGood() {
50
50
  const manifest = this.manifest; // In this case we are sure its not undefined.
51
- console.log("---defaultElement", this._defaultElement);
52
51
  if (isManifestElementableType(manifest)) {
53
52
  const newComponent = await createExtensionElement(manifest, this._defaultElement);
54
53
  if (!this._positive) {
@@ -1,8 +1,11 @@
1
1
  import { CSSResultGroup } from '../../../../external/lit/index.js';
2
+ import { UmbModalContext } from '../../modal/index.js';
2
3
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
3
4
  export declare class UmbBackofficeModalContainerElement extends UmbLitElement {
4
- private _modals?;
5
- private _modalContext?;
5
+ #private;
6
+ private _modalElementMap;
7
+ _modals: Array<UmbModalContext>;
8
+ private _modalManager?;
6
9
  constructor();
7
10
  private _observeModals;
8
11
  render(): import("lit-html").TemplateResult<1>;
@@ -6,27 +6,55 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { UmbTextStyles } from '../../../../shared/style/index.js';
8
8
  import { css, html, repeat, customElement, state } from '../../../../external/lit/index.js';
9
- import { UMB_MODAL_MANAGER_CONTEXT_TOKEN, } from '../../modal/index.js';
9
+ import { UMB_MODAL_MANAGER_CONTEXT_TOKEN, UmbModalElement, } from '../../modal/index.js';
10
10
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
11
11
  export let UmbBackofficeModalContainerElement = class UmbBackofficeModalContainerElement extends UmbLitElement {
12
12
  constructor() {
13
13
  super();
14
+ this._modalElementMap = new Map();
15
+ this._modals = [];
14
16
  this.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (instance) => {
15
- this._modalContext = instance;
17
+ this._modalManager = instance;
16
18
  this._observeModals();
17
19
  });
18
20
  }
19
21
  _observeModals() {
20
- if (!this._modalContext)
22
+ if (!this._modalManager)
21
23
  return;
22
- this.observe(this._modalContext.modals, (modals) => {
23
- this._modals = modals;
24
+ this.observe(this._modalManager.modals, (modals) => this.#createModalElements(modals));
25
+ }
26
+ /** We cannot render the umb-modal element directly in the uui-modal-container because it wont get reconised by UUI.
27
+ * We therefore have a helper class which creates the uui-modal element and returns it. */
28
+ #createModalElements(modals) {
29
+ this._modals = modals;
30
+ if (this._modals.length === 0) {
31
+ this._modalElementMap.clear();
32
+ return;
33
+ }
34
+ this._modals.forEach((modal) => {
35
+ if (this._modalElementMap.has(modal.key))
36
+ return;
37
+ const modalElement = new UmbModalElement();
38
+ modalElement.modalContext = modal;
39
+ // TODO: We need to change this to the close-end event, when it is added to UUI again.
40
+ // This solution solves the memory leak issue where the modal contexts where not removed from the manager when they are closed.
41
+ // It breaks the modal animation though, so we need to wait for the close-end so we are sure the animation is done.
42
+ modalElement.element?.addEventListener('close', () => this._modalManager?.remove(modal.key));
43
+ this._modalElementMap.set(modal.key, modalElement);
24
44
  });
25
45
  }
46
+ #renderModal(key) {
47
+ const modalElement = this._modalElementMap.get(key);
48
+ if (!modalElement)
49
+ return;
50
+ return modalElement.render();
51
+ }
26
52
  render() {
27
53
  return html `
28
54
  <uui-modal-container>
29
- ${this._modals ? repeat(this._modals, (modalContext) => html `${modalContext.modalElement}`) : ''}
55
+ ${this._modals.length > 0
56
+ ? repeat(this._modals, (modal) => modal.key, (modal) => this.#renderModal(modal.key))
57
+ : ''}
30
58
  </uui-modal-container>
31
59
  `;
32
60
  }
@@ -40,6 +68,9 @@ export let UmbBackofficeModalContainerElement = class UmbBackofficeModalContaine
40
68
  `,
41
69
  ]; }
42
70
  };
71
+ __decorate([
72
+ state()
73
+ ], UmbBackofficeModalContainerElement.prototype, "_modalElementMap", void 0);
43
74
  __decorate([
44
75
  state()
45
76
  ], UmbBackofficeModalContainerElement.prototype, "_modals", void 0);
@@ -1,5 +1,4 @@
1
1
  import { PropertyValueMap } from '../../../../external/lit/index.js';
2
- import { UmbModalContext } from '../../modal/index.js';
3
2
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
4
3
  import { UmbPropertyEditorConfigCollection } from '../../property-editor/index.js';
5
4
  declare const UmbInputTinyMceElement_base: (new (...args: any[]) => import("../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
@@ -7,7 +6,6 @@ export declare class UmbInputTinyMceElement extends UmbInputTinyMceElement_base
7
6
  #private;
8
7
  configuration?: UmbPropertyEditorConfigCollection;
9
8
  private _tinyConfig;
10
- modalContext: UmbModalContext;
11
9
  protected getFormElement(): HTMLIFrameElement | undefined;
12
10
  private _editorElement?;
13
11
  constructor();
@@ -14,7 +14,6 @@ import { hasDefaultExport, loadExtension } from '../../../../libs/extension-api/
14
14
  import { umbExtensionsRegistry } from '../../extension-registry/index.js';
15
15
  import { css, customElement, html, property, query, state, } from '../../../../external/lit/index.js';
16
16
  import { firstValueFrom } from '../../../../external/rxjs/index.js';
17
- import { UMB_MODAL_CONTEXT_TOKEN } from '../../modal/index.js';
18
17
  import { UmbMediaHelper } from '../../../../shared/utils/index.js';
19
18
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
20
19
  // TODO => integrate macro picker, update stylesheet fetch when backend CLI exists (ref tinymce.service.js in existing backoffice)
@@ -33,9 +32,6 @@ export let UmbInputTinyMceElement = class UmbInputTinyMceElement extends FormCon
33
32
  this.#mediaHelper = new UmbMediaHelper();
34
33
  this.#plugins = [];
35
34
  this.#editorRef = null;
36
- this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (modalContext) => {
37
- this.modalContext = modalContext;
38
- });
39
35
  // TODO => this breaks tests, removing for now will ignore user language
40
36
  // and fall back to tinymce default language
41
37
  // this.consumeContext(UMB_AUTH, (instance) => {
@@ -4,8 +4,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UmbChangeEvent } from '../../../event/index.js';
8
7
  import { UmbCultureRepository } from '../../repository/culture.repository.js';
8
+ import { UmbChangeEvent } from '../../../event/index.js';
9
9
  import { html, repeat, ifDefined, customElement, property, state } from '../../../../../external/lit/index.js';
10
10
  import { FormControlMixin } from '../../../../../external/uui/index.js';
11
11
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
@@ -1,7 +1,7 @@
1
1
  import type { ManifestModal } from '../models/index.js';
2
2
  import type { UmbModalContext } from '../../modal/index.js';
3
- export interface UmbModalExtensionElement<UmbModalData extends object = object, UmbModalResult = unknown, ModalManifestType extends ManifestModal = ManifestModal> extends HTMLElement {
3
+ export interface UmbModalExtensionElement<UmbModalData extends object = object, UmbModalValue = unknown, ModalManifestType extends ManifestModal = ManifestModal> extends HTMLElement {
4
4
  manifest?: ModalManifestType;
5
- modalContext?: UmbModalContext<UmbModalData, UmbModalResult>;
5
+ modalContext?: UmbModalContext<UmbModalData, UmbModalValue>;
6
6
  data?: UmbModalData;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { type UmbCodeEditorElement } from '../../../../templating/code-editor/index.js';
2
- import { UmbCodeEditorModalData, UmbCodeEditorModalResult } from '../../index.js';
2
+ import { UmbCodeEditorModalData, UmbCodeEditorModalValue } from '../../index.js';
3
3
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
4
- export declare class UmbCodeEditorModalElement extends UmbModalBaseElement<UmbCodeEditorModalData, UmbCodeEditorModalResult> {
4
+ export declare class UmbCodeEditorModalElement extends UmbModalBaseElement<UmbCodeEditorModalData, UmbCodeEditorModalValue> {
5
5
  #private;
6
6
  isCodeEditorReady: import("rxjs").Observable<boolean>;
7
7
  _codeEditor?: UmbCodeEditorElement;
@@ -1,7 +1,7 @@
1
- import { UmbConfirmModalData, UmbConfirmModalResult, UmbModalContext } from '../../index.js';
1
+ import { UmbConfirmModalData, UmbConfirmModalValue, UmbModalContext } from '../../index.js';
2
2
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
3
3
  export declare class UmbConfirmModalElement extends UmbLitElement {
4
- modalContext?: UmbModalContext<UmbConfirmModalData, UmbConfirmModalResult>;
4
+ modalContext?: UmbModalContext<UmbConfirmModalData, UmbConfirmModalValue>;
5
5
  data?: UmbConfirmModalData;
6
6
  private _handleConfirm;
7
7
  private _handleCancel;
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { html, customElement, property } from '../../../../../external/lit/index.js';
8
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
9
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
10
10
  export let UmbConfirmModalElement = class UmbConfirmModalElement extends UmbLitElement {
11
11
  _handleConfirm() {
@@ -1,6 +1,6 @@
1
- import { UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalResult } from '../../index.js';
1
+ import { UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalValue } from '../../index.js';
2
2
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
- export declare class UmbEmbeddedMediaModalElement extends UmbModalBaseElement<UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalResult> {
3
+ export declare class UmbEmbeddedMediaModalElement extends UmbModalBaseElement<UmbEmbeddedMediaModalData, UmbEmbeddedMediaModalValue> {
4
4
  #private;
5
5
  private _model;
6
6
  connectedCallback(): void;
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { css, html, unsafeHTML, when, customElement, state } from '../../../../../external/lit/index.js';
8
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
9
  import { OEmbedStatus, } from '../../index.js';
10
10
  import { umbracoPath } from '../../../../../shared/utils/index.js';
11
11
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
@@ -145,13 +145,13 @@ export let UmbEmbeddedMediaModalElement = class UmbEmbeddedMediaModalElement ext
145
145
  </umb-workspace-property-layout>
146
146
 
147
147
  ${when(this.#embedResult?.oEmbedStatus === OEmbedStatus.Success || this._model.a11yInfo, () => html ` <umb-workspace-property-layout label="Preview" orientation="vertical">
148
- <div slot="editor">
149
- ${when(this.#loading, () => html `<uui-loader-circle></uui-loader-circle>`)}
150
- ${when(this.#embedResult?.markup, () => html `${unsafeHTML(this.#embedResult.markup)}`)}
151
- ${when(this._model.info, () => html ` <p aria-hidden="true">${this._model.info}</p>`)}
152
- ${when(this._model.a11yInfo, () => html ` <p class="sr-only" role="alert">${this._model.a11yInfo}</p>`)}
153
- </div>
154
- </umb-workspace-property-layout>`)}
148
+ <div slot="editor">
149
+ ${when(this.#loading, () => html `<uui-loader-circle></uui-loader-circle>`)}
150
+ ${when(this.#embedResult?.markup, () => html `${unsafeHTML(this.#embedResult.markup)}`)}
151
+ ${when(this._model.info, () => html ` <p aria-hidden="true">${this._model.info}</p>`)}
152
+ ${when(this._model.a11yInfo, () => html ` <p class="sr-only" role="alert">${this._model.a11yInfo}</p>`)}
153
+ </div>
154
+ </umb-workspace-property-layout>`)}
155
155
 
156
156
  <umb-workspace-property-layout label="Width" orientation="vertical">
157
157
  <uui-input
@@ -1,9 +1,9 @@
1
- import { UmbFolderModalData, UmbFolderModalResult, UmbModalContext } from '../../index.js';
1
+ import { UmbFolderModalData, UmbFolderModalValue, UmbModalContext } from '../../index.js';
2
2
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
3
3
  import { FolderResponseModel } from '../../../../../external/backend-api/index.js';
4
4
  export declare class UmbFolderModalElement extends UmbLitElement {
5
5
  #private;
6
- modalContext?: UmbModalContext<UmbFolderModalData, UmbFolderModalResult>;
6
+ modalContext?: UmbModalContext<UmbFolderModalData, UmbFolderModalValue>;
7
7
  private _data?;
8
8
  get data(): UmbFolderModalData | undefined;
9
9
  set data(value: UmbFolderModalData | undefined);
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { css, html, customElement, property, query, state } from '../../../../../external/lit/index.js';
8
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
8
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
9
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
10
10
  import { createExtensionApi } from '../../../../../libs/extension-api/index.js';
11
11
  import { umbExtensionsRegistry } from '../../../extension-registry/index.js';
@@ -1,6 +1,6 @@
1
- import { UmbIconPickerModalData, UmbIconPickerModalResult } from '../../index.js';
1
+ import { UmbIconPickerModalData, UmbIconPickerModalValue } from '../../index.js';
2
2
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
- export declare class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPickerModalData, UmbIconPickerModalResult> {
3
+ export declare class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPickerModalData, UmbIconPickerModalValue> {
4
4
  private _iconList;
5
5
  private _iconListFiltered;
6
6
  private _colorList;
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import icons from '../../../../../shared/icon-registry/icons/icons.json' assert { type: 'json' };
8
8
  import { css, html, styleMap, customElement, state } from '../../../../../external/lit/index.js';
9
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
9
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
10
10
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
11
11
  // TODO: Make use of UmbPickerLayoutBase
12
12
  // TODO: to prevent element extension we need to move the Picker logic into a separate class we can reuse across all pickers
@@ -76,7 +76,9 @@ export let UmbIconPickerModalElement = class UmbIconPickerModalElement extends U
76
76
  .value="${this._currentColor || ''}"
77
77
  label="Color switcher for icons"
78
78
  @change="${this._onColorChange}">
79
- ${this._colorList.map((color) => html ` <uui-color-swatch label="${color}" title="${color}" value="${color}"></uui-color-swatch> `)}
79
+ ${this._colorList.map((color) => html `
80
+ <uui-color-swatch label="${color}" title="${color}" value="${color}"></uui-color-swatch>
81
+ `)}
80
82
  </uui-color-swatches>
81
83
 
82
84
  <hr />
@@ -1,6 +1,6 @@
1
- import { UmbLinkPickerConfig, UmbLinkPickerLink, UmbLinkPickerModalData, UmbLinkPickerModalResult } from '../../index.js';
1
+ import { UmbLinkPickerConfig, UmbLinkPickerLink, UmbLinkPickerModalData, UmbLinkPickerModalValue } from '../../index.js';
2
2
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
- export declare class UmbLinkPickerModalElement extends UmbModalBaseElement<UmbLinkPickerModalData, UmbLinkPickerModalResult> {
3
+ export declare class UmbLinkPickerModalElement extends UmbModalBaseElement<UmbLinkPickerModalData, UmbLinkPickerModalValue> {
4
4
  _selectedKey?: string;
5
5
  _index: number | null;
6
6
  _link: UmbLinkPickerLink;
@@ -1,12 +1,12 @@
1
1
  import { PropertyValueMap } from '../../../../../external/lit/index.js';
2
2
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
- import { UmbPropertySettingsModalResult, UmbPropertySettingsModalData } from '../../index.js';
4
- export declare class UmbPropertySettingsModalElement extends UmbModalBaseElement<UmbPropertySettingsModalData, UmbPropertySettingsModalResult> {
3
+ import { UmbPropertySettingsModalValue, UmbPropertySettingsModalData } from '../../index.js';
4
+ export declare class UmbPropertySettingsModalElement extends UmbModalBaseElement<UmbPropertySettingsModalData, UmbPropertySettingsModalValue> {
5
5
  #private;
6
6
  private _customValidationOptions;
7
7
  private _aliasLocked;
8
- protected _ownerDocumentType?: UmbPropertySettingsModalResult;
9
- protected _returnData: UmbPropertySettingsModalResult;
8
+ protected _ownerDocumentType?: UmbPropertySettingsModalValue;
9
+ protected _returnData: UmbPropertySettingsModalValue;
10
10
  connectedCallback(): void;
11
11
  protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
12
12
  render(): import("lit-html").TemplateResult<1>;
@@ -299,21 +299,19 @@ export let UmbPropertySettingsModalElement = class UmbPropertySettingsModalEleme
299
299
  : nothing} `;
300
300
  }
301
301
  #renderVariationControls() {
302
- return this._ownerDocumentType?.variesByCulture || this._ownerDocumentType?.variesBySegment ?
303
- html `
304
- <div class="container">
305
- <b>Variation</b>
306
- ${this._ownerDocumentType?.variesByCulture ? this.#renderVaryByCulture() : ''}
307
- </div>
308
- <hr />`
302
+ return this._ownerDocumentType?.variesByCulture || this._ownerDocumentType?.variesBySegment
303
+ ? html ` <div class="container">
304
+ <b>Variation</b>
305
+ ${this._ownerDocumentType?.variesByCulture ? this.#renderVaryByCulture() : ''}
306
+ </div>
307
+ <hr />`
309
308
  : '';
310
309
  }
311
310
  #renderVaryByCulture() {
312
311
  return html `<uui-toggle
313
- @change=${this.#onVaryByCultureChange}
314
- .checked=${this._returnData.variesByCulture ?? false}
315
- label="Vary by culture"></uui-toggle>
316
- `;
312
+ @change=${this.#onVaryByCultureChange}
313
+ .checked=${this._returnData.variesByCulture ?? false}
314
+ label="Vary by culture"></uui-toggle> `;
317
315
  }
318
316
  static { this.styles = [
319
317
  UmbTextStyles,
@@ -1,6 +1,6 @@
1
1
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
2
- import { UmbSectionPickerModalData, UmbSectionPickerModalResult } from '../../index.js';
3
- export declare class UmbSectionPickerModalElement extends UmbModalBaseElement<UmbSectionPickerModalData, UmbSectionPickerModalResult> {
2
+ import { UmbSectionPickerModalData, UmbSectionPickerModalValue } from '../../index.js';
3
+ export declare class UmbSectionPickerModalElement extends UmbModalBaseElement<UmbSectionPickerModalData, UmbSectionPickerModalValue> {
4
4
  #private;
5
5
  private _sections;
6
6
  connectedCallback(): void;
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UmbTextStyles } from "../../../../../shared/style/index.js";
7
+ import { UmbTextStyles } from '../../../../../shared/style/index.js';
8
8
  import { css, html, customElement, state } from '../../../../../external/lit/index.js';
9
9
  import { UmbSelectionManagerBase } from '../../../../../shared/utils/index.js';
10
10
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
@@ -1,8 +1,8 @@
1
1
  import type { UmbCodeEditorElement } from '../../../../templating/code-editor/index.js';
2
- import { UmbTemplateModalData, UmbTemplateModalResult } from '../../index.js';
2
+ import { UmbTemplateModalData, UmbTemplateModalValue } from '../../index.js';
3
3
  import { TemplateResponseModel } from '../../../../../external/backend-api/index.js';
4
4
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
5
- export declare class UmbTemplateModalElement extends UmbModalBaseElement<UmbTemplateModalData, UmbTemplateModalResult> {
5
+ export declare class UmbTemplateModalElement extends UmbModalBaseElement<UmbTemplateModalData, UmbTemplateModalValue> {
6
6
  #private;
7
7
  _id: string;
8
8
  _template?: TemplateResponseModel;
@@ -1,7 +1,7 @@
1
- import { UmbTreePickerModalData, UmbPickerModalResult } from '../../index.js';
1
+ import { UmbTreePickerModalData, UmbPickerModalValue } from '../../index.js';
2
2
  import { UmbModalBaseElement } from '../../../../../shared/modal/index.js';
3
3
  import { TreeItemPresentationModel } from '../../../../../external/backend-api/index.js';
4
- export declare class UmbTreePickerModalElement<TreeItemType extends TreeItemPresentationModel> extends UmbModalBaseElement<UmbTreePickerModalData<TreeItemType>, UmbPickerModalResult> {
4
+ export declare class UmbTreePickerModalElement<TreeItemType extends TreeItemPresentationModel> extends UmbModalBaseElement<UmbTreePickerModalData<TreeItemType>, UmbPickerModalValue> {
5
5
  #private;
6
6
  _selection: Array<string | null>;
7
7
  _multiple: boolean;
@@ -1,6 +1,8 @@
1
+ import './modal.element.js';
1
2
  export * from './modal-manager.context.js';
2
- export * from './modal-context.js';
3
+ export * from './modal.context.js';
3
4
  export * from './modal-route-registration.js';
4
5
  export * from './modal-route-registration.controller.js';
5
6
  export * from './token/index.js';
6
7
  export * from './modal.interfaces.js';
8
+ export * from './modal.element.js';
@@ -1,6 +1,8 @@
1
+ import './modal.element.js';
1
2
  export * from './modal-manager.context.js';
2
- export * from './modal-context.js';
3
+ export * from './modal.context.js';
3
4
  export * from './modal-route-registration.js';
4
5
  export * from './modal-route-registration.controller.js';
5
6
  export * from './token/index.js';
6
7
  export * from './modal.interfaces.js';
8
+ export * from './modal.element.js';
@@ -25,7 +25,7 @@ export declare class UmbModalManagerContext {
25
25
  * @return {*} {UmbModalHandler}
26
26
  * @memberof UmbModalManagerContext
27
27
  */
28
- open<ModalData extends object = object, ModalResult = unknown>(modalAlias: string | UmbModalToken<ModalData, ModalResult>, data?: ModalData, config?: UmbModalConfig, router?: IRouterSlot | null): UmbModalContext<ModalData, ModalResult>;
28
+ open<ModalData extends object = object, ModalValue = unknown>(modalAlias: string | UmbModalToken<ModalData, ModalValue>, data?: ModalData, config?: UmbModalConfig, router?: IRouterSlot | null): UmbModalContext<ModalData, ModalValue>;
29
29
  /**
30
30
  * Closes a modal or sidebar modal
31
31
  * @private
@@ -33,5 +33,6 @@ export declare class UmbModalManagerContext {
33
33
  * @memberof UmbModalManagerContext
34
34
  */
35
35
  close(key: string): void;
36
+ remove(key: string): void;
36
37
  }
37
38
  export declare const UMB_MODAL_MANAGER_CONTEXT_TOKEN: UmbContextToken<UmbModalManagerContext, UmbModalManagerContext>;
@@ -22,8 +22,7 @@ export class UmbModalManagerContext {
22
22
  * @memberof UmbModalManagerContext
23
23
  */
24
24
  open(modalAlias, data, config, router = null) {
25
- const modalContext = new UmbModalContextClass(this.host, router, modalAlias, data, config);
26
- modalContext.modalElement.addEventListener('close-end', () => this.#onCloseEnd(modalContext));
25
+ const modalContext = new UmbModalContextClass(router, modalAlias, data, config);
27
26
  this.#modals.next(appendToFrozenArray(this.#modals.getValue(), modalContext, (entry) => entry.key === modalContext.key));
28
27
  return modalContext;
29
28
  }
@@ -39,18 +38,8 @@ export class UmbModalManagerContext {
39
38
  modal.reject();
40
39
  }
41
40
  }
42
- #remove(key) {
41
+ remove(key) {
43
42
  this.#modals.next(this.#modals.getValue().filter((modal) => modal.key !== key));
44
43
  }
45
- /**
46
- * Handles the close-end event
47
- * @private
48
- * @param {UmbModalContext} modalContext
49
- * @memberof UmbModalManagerContext
50
- */
51
- #onCloseEnd(modalContext) {
52
- modalContext.modalElement.removeEventListener('close-end', () => this.#onCloseEnd(modalContext));
53
- this.#remove(modalContext.key);
54
- }
55
44
  }
56
45
  export const UMB_MODAL_MANAGER_CONTEXT_TOKEN = new UmbContextToken('UmbModalManagerContext');
@@ -1,4 +1,4 @@
1
- import { UmbModalContext } from './modal-context.js';
1
+ import { UmbModalContext } from './modal.context.js';
2
2
  import { UmbModalConfig, UmbModalManagerContext } from './modal-manager.context.js';
3
3
  import { UmbModalToken } from './token/modal-token.js';
4
4
  import type { IRouterSlot } from '../../../external/router-slot/index.js';
@@ -31,5 +31,5 @@ export declare class UmbModalRouteRegistration<UmbModalTokenData extends object
31
31
  onSetup(callback: (routingInfo: Params) => Promise<UmbModalTokenData | false> | UmbModalTokenData | false): this;
32
32
  onSubmit(callback: (data: UmbModalTokenResult) => void): this;
33
33
  onReject(callback: () => void): this;
34
- routeSetup(router: IRouterSlot, modalContext: UmbModalManagerContext, params: Params): Promise<UmbModalContext<UmbModalTokenData, UmbModalTokenResult> | null | undefined>;
34
+ routeSetup(router: IRouterSlot, modalManagerContext: UmbModalManagerContext, params: Params): Promise<UmbModalContext<UmbModalTokenData, UmbModalTokenResult> | null | undefined>;
35
35
  }
@@ -8,7 +8,7 @@ export class UmbModalRouteRegistration {
8
8
  #onSetupCallback;
9
9
  #onSubmitCallback;
10
10
  #onRejectCallback;
11
- #modalContext;
11
+ #modalManagerContext;
12
12
  #routeBuilder;
13
13
  #urlBuilderCallback;
14
14
  // Notice i removed the key in the transferring to this class.
@@ -40,7 +40,7 @@ export class UmbModalRouteRegistration {
40
40
  * Returns true if the modal is currently active.
41
41
  */
42
42
  get active() {
43
- return !!this.#modalContext;
43
+ return !!this.#modalManagerContext;
44
44
  }
45
45
  open(params, prepend) {
46
46
  if (this.active)
@@ -51,7 +51,7 @@ export class UmbModalRouteRegistration {
51
51
  * Returns the modal handler if the modal is currently active. Otherwise its undefined.
52
52
  */
53
53
  get modalContext() {
54
- return this.#modalContext;
54
+ return this.#modalManagerContext;
55
55
  }
56
56
  observeRouteBuilder(callback) {
57
57
  this.#urlBuilderCallback = callback;
@@ -75,21 +75,21 @@ export class UmbModalRouteRegistration {
75
75
  }
76
76
  #onSubmit = (data) => {
77
77
  this.#onSubmitCallback?.(data);
78
- this.#modalContext = undefined;
78
+ this.#modalManagerContext = undefined;
79
79
  };
80
80
  #onReject = () => {
81
81
  this.#onRejectCallback?.();
82
- this.#modalContext = undefined;
82
+ this.#modalManagerContext = undefined;
83
83
  };
84
- async routeSetup(router, modalContext, params) {
84
+ async routeSetup(router, modalManagerContext, params) {
85
85
  // If already open, don't do anything:
86
86
  if (this.active)
87
87
  return;
88
88
  const modalData = this.#onSetupCallback ? await this.#onSetupCallback(params) : undefined;
89
89
  if (modalData !== false) {
90
- this.#modalContext = modalContext.open(this.#modalAlias, modalData, this.modalConfig, router);
91
- this.#modalContext.onSubmit().then(this.#onSubmit, this.#onReject);
92
- return this.#modalContext;
90
+ this.#modalManagerContext = modalManagerContext.open(this.#modalAlias, modalData, this.modalConfig, router);
91
+ this.#modalManagerContext.onSubmit().then(this.#onSubmit, this.#onReject);
92
+ return this.#modalManagerContext;
93
93
  }
94
94
  return null;
95
95
  }
@@ -0,0 +1,65 @@
1
+ import { UmbModalConfig, UmbModalType } from './modal-manager.context.js';
2
+ import { UmbModalToken } from './token/modal-token.js';
3
+ import type { IRouterSlot } from '../../../external/router-slot/index.js';
4
+ import type { UUIModalSidebarSize } from '../../../external/uui/index.js';
5
+ import { UmbContextToken } from '../../../libs/context-api/index.js';
6
+ /**
7
+ * Type which omits the real submit method, and replaces it with a submit method which accepts an optional argument depending on the generic type.
8
+ */
9
+ export type UmbModalContext<ModalData extends object = object, ModalValue = any> = Omit<UmbModalContextClass<ModalData, ModalValue>, 'submit'> & OptionalSubmitArgumentIfUndefined<ModalValue>;
10
+ type OptionalSubmitArgumentIfUndefined<T> = T extends undefined ? {
11
+ submit: () => void;
12
+ } : T extends unknown ? {
13
+ submit: (arg?: T) => void;
14
+ } : {
15
+ submit: (arg: T) => void;
16
+ };
17
+ export declare class UmbModalContextClass<ModalPreset extends object = object, ModalValue = unknown> extends EventTarget {
18
+ #private;
19
+ readonly key: string;
20
+ readonly data: ModalPreset;
21
+ readonly type: UmbModalType;
22
+ readonly size: UUIModalSidebarSize;
23
+ readonly router: IRouterSlot | null;
24
+ readonly alias: string | UmbModalToken<ModalPreset, ModalValue>;
25
+ readonly value: import("rxjs").Observable<ModalValue | undefined>;
26
+ constructor(router: IRouterSlot | null, modalAlias: string | UmbModalToken<ModalPreset, ModalValue>, data?: ModalPreset, config?: UmbModalConfig);
27
+ /**
28
+ * Submits this modal, returning with a value to the initiator of the modal.
29
+ * @public
30
+ * @memberof UmbModalContext
31
+ */
32
+ private submit;
33
+ /**
34
+ * Closes this modal
35
+ * @public
36
+ * @memberof UmbModalContext
37
+ */
38
+ reject(): void;
39
+ /**
40
+ * Gives a Promise which will be resolved when this modal is submitted.
41
+ * @public
42
+ * @memberof UmbModalContext
43
+ */
44
+ onSubmit(): Promise<ModalValue>;
45
+ /**
46
+ * Gives the current value of this modal.
47
+ * @public
48
+ * @memberof UmbModalContext
49
+ */
50
+ getValue(): ModalValue | undefined;
51
+ /**
52
+ * Sets the current value of this modal.
53
+ * @public
54
+ * @memberof UmbModalContext
55
+ */
56
+ setValue(value: ModalValue): void;
57
+ /**
58
+ * Updates the current value of this modal.
59
+ * @public
60
+ * @memberof UmbModalContext
61
+ */
62
+ updateValue(partialValue: Partial<ModalValue>): void;
63
+ }
64
+ export declare const UMB_MODAL_CONTEXT_TOKEN: UmbContextToken<UmbModalContext<object, any>, UmbModalContext<object, any>>;
65
+ export {};