@umbraco-cms/backoffice 14.0.0--preview004-478ab905 → 14.0.0--preview004-eaff2f45

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 (117) hide show
  1. package/dist-cms/apps/app/app.context.js +1 -1
  2. package/dist-cms/custom-elements.json +184 -173
  3. package/dist-cms/packages/core/collection/default/collection-default.context.js +1 -1
  4. package/dist-cms/packages/core/components/property-type-based-property/property-type-based-property.element.js +2 -2
  5. package/dist-cms/packages/core/components/variant-selector/variant-selector.element.js +4 -3
  6. package/dist-cms/packages/core/data-type/components/property-editor-config/property-editor-config.element.d.ts +1 -1
  7. package/dist-cms/packages/core/data-type/components/property-editor-config/property-editor-config.element.js +9 -8
  8. package/dist-cms/packages/core/data-type/index.d.ts +0 -1
  9. package/dist-cms/packages/core/data-type/index.js +0 -1
  10. package/dist-cms/packages/core/data-type/workspace/data-type-workspace-editor.element.js +1 -1
  11. package/dist-cms/packages/core/data-type/workspace/data-type-workspace.context.d.ts +3 -3
  12. package/dist-cms/packages/core/data-type/workspace/data-type-workspace.context.js +44 -6
  13. package/dist-cms/packages/core/data-type/workspace/views/details/data-type-details-workspace-view.element.js +2 -2
  14. package/dist-cms/packages/core/data-type/workspace/views/info/workspace-view-data-type-info.element.js +6 -6
  15. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.js +12 -12
  16. package/dist-cms/packages/core/modal/common/section-picker/section-picker-modal.element.js +4 -9
  17. package/dist-cms/packages/core/property/index.d.ts +4 -0
  18. package/dist-cms/packages/core/property/index.js +4 -0
  19. package/dist-cms/packages/core/property/property/index.d.ts +2 -0
  20. package/dist-cms/packages/core/property/property/index.js +2 -0
  21. package/dist-cms/packages/core/{workspace/workspace-property/workspace-property.context.d.ts → property/property/property.context.d.ts} +3 -3
  22. package/dist-cms/packages/core/{workspace/workspace-property/workspace-property.context.js → property/property/property.context.js} +15 -15
  23. package/dist-cms/packages/core/{workspace/workspace-property/workspace-property.element.d.ts → property/property/property.element.d.ts} +9 -10
  24. package/dist-cms/packages/core/{workspace/workspace-property/workspace-property.element.js → property/property/property.element.js} +63 -56
  25. package/dist-cms/packages/core/property/property-dataset/index.d.ts +6 -0
  26. package/dist-cms/packages/core/property/property-dataset/index.js +6 -0
  27. package/dist-cms/packages/core/property/property-dataset/nameable-property-dataset-context.interface.d.ts +7 -0
  28. package/dist-cms/packages/core/property/property-dataset/nameable-property-dataset-context.token.d.ts +5 -0
  29. package/dist-cms/packages/core/property/property-dataset/nameable-property-dataset-context.token.js +4 -0
  30. package/dist-cms/packages/core/property/property-dataset/property-dataset-base-context.d.ts +33 -0
  31. package/dist-cms/packages/core/property/property-dataset/property-dataset-base-context.js +58 -0
  32. package/dist-cms/packages/core/{workspace/variant-context/variant-context.interface.d.ts → property/property-dataset/property-dataset-context.interface.d.ts} +7 -6
  33. package/dist-cms/packages/core/property/property-dataset/property-dataset-context.token.d.ts +3 -0
  34. package/dist-cms/packages/core/property/property-dataset/property-dataset-context.token.js +2 -0
  35. package/dist-cms/packages/core/property/property-dataset/property-dataset.element.d.ts +67 -0
  36. package/dist-cms/packages/core/property/property-dataset/property-dataset.element.js +119 -0
  37. package/dist-cms/packages/core/property/property-layout/index.d.ts +1 -0
  38. package/dist-cms/packages/core/property/property-layout/index.js +1 -0
  39. package/dist-cms/packages/core/{workspace/workspace-property-layout/workspace-property-layout.element.d.ts → property/property-layout/property-layout.element.d.ts} +4 -4
  40. package/dist-cms/packages/core/{workspace/workspace-property-layout/workspace-property-layout.element.js → property/property-layout/property-layout.element.js} +12 -12
  41. package/dist-cms/packages/core/property/types/index.d.ts +1 -0
  42. package/dist-cms/packages/core/property/types/index.js +1 -0
  43. package/dist-cms/packages/core/property/types/property-value-data.type.d.ts +4 -0
  44. package/dist-cms/packages/core/property/types/property-value-data.type.js +1 -0
  45. package/dist-cms/packages/core/property-action/common/clear/property-action-clear.element.js +2 -2
  46. package/dist-cms/packages/core/property-editor/uis/block-grid/property-editor-ui-block-grid.element.js +2 -2
  47. package/dist-cms/packages/core/property-editor/uis/block-list/config/block-configuration/property-editor-ui-block-list-block-configuration.element.js +1 -1
  48. package/dist-cms/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.js +2 -2
  49. package/dist-cms/packages/core/property-editor/uis/text-box/property-editor-ui-text-box.element.js +5 -2
  50. package/dist-cms/packages/core/tree/tree-item-base/tree-item-base.context.js +6 -6
  51. package/dist-cms/packages/core/tree/tree.context.d.ts +3 -21
  52. package/dist-cms/packages/core/tree/tree.context.js +1 -37
  53. package/dist-cms/packages/core/tree/tree.element.js +6 -6
  54. package/dist-cms/packages/core/workspace/index.d.ts +1 -3
  55. package/dist-cms/packages/core/workspace/index.js +1 -3
  56. package/dist-cms/packages/core/workspace/workspace-context/workspace-invariantable-context.interface.d.ts +3 -2
  57. package/dist-cms/packages/core/workspace/workspace-context/workspace-variantable-context.interface.d.ts +2 -2
  58. package/dist-cms/packages/core/workspace/workspace-modal/workspace-modal.element.d.ts +1 -1
  59. package/dist-cms/packages/core/workspace/workspace-modal/workspace-modal.element.js +2 -2
  60. package/dist-cms/packages/core/workspace/workspace-property-dataset/index.d.ts +1 -0
  61. package/dist-cms/packages/core/workspace/workspace-property-dataset/index.js +1 -0
  62. package/dist-cms/packages/core/workspace/workspace-property-dataset/invariant-workspace-property-dataset-context.d.ts +26 -0
  63. package/dist-cms/packages/core/workspace/workspace-property-dataset/invariant-workspace-property-dataset-context.js +44 -0
  64. package/dist-cms/packages/core/workspace/workspace-split-view/workspace-split-view.context.js +1 -1
  65. package/dist-cms/packages/dictionary/dictionary/workspace/views/editor/workspace-view-dictionary-editor.element.js +2 -2
  66. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.js +1 -1
  67. package/dist-cms/packages/documents/document-types/workspace/views/settings/document-type-workspace-view-settings.element.js +8 -8
  68. package/dist-cms/packages/documents/document-types/workspace/views/structure/document-type-workspace-view-structure.element.js +6 -6
  69. package/dist-cms/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.js +4 -4
  70. package/dist-cms/packages/documents/documents/{variant-context/document-variant-context.d.ts → property-dataset-context/document-property-dataset-context.d.ts} +4 -4
  71. package/dist-cms/packages/documents/documents/{variant-context/document-variant-context.js → property-dataset-context/document-property-dataset-context.js} +6 -8
  72. package/dist-cms/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.d.ts +5 -0
  73. package/dist-cms/packages/documents/documents/{variant-context/document-variant-context.token.js → property-dataset-context/document-property-dataset-context.token.js} +1 -1
  74. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +2 -2
  75. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +3 -3
  76. package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-property.element.js +1 -1
  77. package/dist-cms/packages/media/media-types/workspace/views/structure/media-type-workspace-view-structure.element.js +6 -6
  78. package/dist-cms/packages/packages/package-builder/workspace/workspace-package-builder.element.js +15 -29
  79. package/dist-cms/packages/settings/languages/modals/language-picker/language-picker-modal.element.js +1 -1
  80. package/dist-cms/packages/settings/languages/workspace/language/views/details/language-details-workspace-view.element.js +8 -8
  81. package/dist-cms/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.js +6 -6
  82. package/dist-cms/packages/tags/property-editors/tags/property-editor-ui-tags.element.js +2 -2
  83. package/dist-cms/packages/user/user/modals/user-picker/user-picker-modal.element.js +1 -1
  84. package/dist-cms/packages/user/user/workspace/components/user-workspace-access-settings/user-workspace-access-settings.element.js +6 -6
  85. package/dist-cms/packages/user/user/workspace/components/user-workspace-profile-settings/user-workspace-profile-settings.element.js +4 -4
  86. package/dist-cms/packages/user/user-group/modals/user-group-picker/user-group-picker-modal.element.js +1 -1
  87. package/dist-cms/packages/user/user-group/workspace/user-group-workspace-editor.element.js +6 -6
  88. package/dist-cms/shared/utils/index.d.ts +1 -1
  89. package/dist-cms/shared/utils/index.js +1 -1
  90. package/dist-cms/shared/utils/{selection-manager.d.ts → selection-manager/selection.manager.d.ts} +17 -1
  91. package/dist-cms/shared/utils/{selection-manager.js → selection-manager/selection.manager.js} +48 -6
  92. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  93. package/dist-cms/vscode-html-custom-data.json +63 -68
  94. package/examples/dashboard-with-property-dataset/README.md +5 -0
  95. package/examples/dashboard-with-property-dataset/dataset-dashboard.ts +75 -0
  96. package/examples/dashboard-with-property-dataset/index.ts +15 -0
  97. package/package.json +4 -1
  98. package/dist-cms/packages/core/data-type/variant-context/data-type-variant-context.d.ts +0 -7
  99. package/dist-cms/packages/core/data-type/variant-context/data-type-variant-context.js +0 -7
  100. package/dist-cms/packages/core/data-type/variant-context/data-type-variant-context.token.d.ts +0 -5
  101. package/dist-cms/packages/core/data-type/variant-context/data-type-variant-context.token.js +0 -3
  102. package/dist-cms/packages/core/data-type/variant-context/index.d.ts +0 -2
  103. package/dist-cms/packages/core/data-type/variant-context/index.js +0 -2
  104. package/dist-cms/packages/core/workspace/variant-context/index.d.ts +0 -5
  105. package/dist-cms/packages/core/workspace/variant-context/index.js +0 -5
  106. package/dist-cms/packages/core/workspace/variant-context/invariant-workspace-variant-context.d.ts +0 -29
  107. package/dist-cms/packages/core/workspace/variant-context/invariant-workspace-variant-context.js +0 -48
  108. package/dist-cms/packages/core/workspace/variant-context/nameable-variant-context.interface.d.ts +0 -7
  109. package/dist-cms/packages/core/workspace/variant-context/nameable-variant-context.token.d.ts +0 -5
  110. package/dist-cms/packages/core/workspace/variant-context/nameable-variant-context.token.js +0 -3
  111. package/dist-cms/packages/core/workspace/variant-context/variant-context.token.d.ts +0 -3
  112. package/dist-cms/packages/core/workspace/variant-context/variant-context.token.js +0 -2
  113. package/dist-cms/packages/core/workspace/workspace-property/index.d.ts +0 -2
  114. package/dist-cms/packages/core/workspace/workspace-property/index.js +0 -2
  115. package/dist-cms/packages/documents/documents/variant-context/document-variant-context.token.d.ts +0 -5
  116. /package/dist-cms/packages/core/{workspace/variant-context/nameable-variant-context.interface.js → property/property-dataset/nameable-property-dataset-context.interface.js} +0 -0
  117. /package/dist-cms/packages/core/{workspace/variant-context/variant-context.interface.js → property/property-dataset/property-dataset-context.interface.js} +0 -0
@@ -0,0 +1,58 @@
1
+ import { UMB_PROPERTY_DATASET_CONTEXT, } from '../index.js';
2
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
3
+ import { UmbArrayState, UmbStringState } from '../../../../libs/observable-api/index.js';
4
+ import { UmbVariantId } from '../../variant/index.js';
5
+ /**
6
+ * A base property dataset context implementation.
7
+ * @class UmbPropertyDatasetBaseContext
8
+ * @extends {UmbContextBase}
9
+ */
10
+ export class UmbPropertyDatasetBaseContext extends UmbContextBase {
11
+ #name;
12
+ #values;
13
+ getEntityType() {
14
+ return this._entityType;
15
+ }
16
+ getUnique() {
17
+ return this._unique;
18
+ }
19
+ getName() {
20
+ return this.#name.getValue();
21
+ }
22
+ setName(name) {
23
+ this.#name.next(name);
24
+ }
25
+ getVariantId() {
26
+ return UmbVariantId.CreateInvariant();
27
+ }
28
+ // variant id for a specific property?
29
+ constructor(host) {
30
+ // The controller alias, is a very generic name cause we want only one of these for this controller host.
31
+ super(host, UMB_PROPERTY_DATASET_CONTEXT);
32
+ this.#name = new UmbStringState(undefined);
33
+ this.name = this.#name.asObservable();
34
+ this.#values = new UmbArrayState([], (x) => x.alias);
35
+ this.values = this.#values.asObservable();
36
+ }
37
+ /**
38
+ * TODO: Write proper JSDocs here.
39
+ */
40
+ async propertyValueByAlias(propertyAlias) {
41
+ return this.#values.asObservablePart((values) => {
42
+ const valueObj = values.find((x) => x.alias === propertyAlias);
43
+ return valueObj ? valueObj.value : undefined;
44
+ });
45
+ }
46
+ /**
47
+ * TODO: Write proper JSDocs here.
48
+ */
49
+ setPropertyValue(alias, value) {
50
+ this.#values.appendOne({ alias, value });
51
+ }
52
+ getValues() {
53
+ return this.#values.getValue();
54
+ }
55
+ setValues(map) {
56
+ this.#values.next(map);
57
+ }
58
+ }
@@ -1,20 +1,21 @@
1
1
  import type { UmbVariantId } from '../../variant/variant-id.class.js';
2
2
  import type { Observable } from '../../../../external/rxjs/index.js';
3
3
  /**
4
- * A variant context, represents a set of properties.
4
+ * A property dataset context, represents the data of a set of properties.
5
5
  * This can take form as many, so to list a few:
6
- * - A specific variant of content
7
- * - Content that does not vary
6
+ * - A specific variant of content.
7
+ * - Content that does not vary.
8
8
  * - A block.
9
9
  * - A DataType configuration.
10
+ * - A property editor that hosts a set of properties.
10
11
  *
11
12
  * The base type of this holds a Name and some Properties.
12
13
  * Some might be enriches with Variant Info, like culture and segment.
13
14
  * Others might have saved publishing status.
14
15
  * Also setting the name is an additional feature.
15
16
  */
16
- export interface UmbVariantContext {
17
- getType(): string;
17
+ export interface UmbPropertyDatasetContext {
18
+ getEntityType(): string;
18
19
  getUnique(): string | undefined;
19
20
  getVariantId: () => UmbVariantId;
20
21
  getName(): string | undefined;
@@ -22,5 +23,5 @@ export interface UmbVariantContext {
22
23
  destroy(): void;
23
24
  propertyVariantId?: (propertyAlias: string) => Promise<Observable<UmbVariantId | undefined>>;
24
25
  propertyValueByAlias<ReturnType = unknown>(propertyAlias: string): Promise<Observable<ReturnType | undefined>>;
25
- setPropertyValue(propertyAlias: string, value: unknown): Promise<void>;
26
+ setPropertyValue(propertyAlias: string, value: unknown): void;
26
27
  }
@@ -0,0 +1,3 @@
1
+ import { type UmbPropertyDatasetContext } from './property-dataset-context.interface.js';
2
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
3
+ export declare const UMB_PROPERTY_DATASET_CONTEXT: UmbContextToken<UmbPropertyDatasetContext, UmbPropertyDatasetContext>;
@@ -0,0 +1,2 @@
1
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
2
+ export const UMB_PROPERTY_DATASET_CONTEXT = new UmbContextToken('UmbPropertyDatasetContext');
@@ -0,0 +1,67 @@
1
+ import type { UmbPropertyValueData } from '../types/property-value-data.type.js';
2
+ import { UmbPropertyDatasetBaseContext } from './property-dataset-base-context.js';
3
+ import { UmbLitElement } from '../../../../shared/lit-element/index.js';
4
+ /**
5
+ * @element umb-property-dataset
6
+ * @description - Element for hosting a property dataset. This is needed for umb-property to work.
7
+ * @slot default - Slot for rendering content within.
8
+ */
9
+ export declare class UmbPropertyDatasetElement extends UmbLitElement {
10
+ #private;
11
+ readonly context: UmbPropertyDatasetBaseContext;
12
+ /**
13
+ * The value of the dataset.
14
+ * @returns {Array<UmbPropertyValueData>}
15
+ * @memberof UmbBasicVariantElement
16
+ * @example
17
+ * ```ts
18
+ * const dataSet = [
19
+ * {
20
+ * alias: 'testAlias',
21
+ * value: 'value as a string',
22
+ * },
23
+ * {
24
+ * alias: 'anotherAlias',
25
+ * value: 123,
26
+ * }
27
+ * ]
28
+ *
29
+ * html`
30
+ * <umb-property-dataset .value="${dataSet}">
31
+ * <umb-property
32
+ * label="My label for this property"
33
+ * description="The description to show on the property"
34
+ * alias="testAlias"
35
+ * property-editor-ui-alias="Umb.PropertyEditorUi.TextBox"
36
+ * .config=${...}>
37
+ * </umb-property>
38
+ * </umb-property-dataset>
39
+ * `
40
+ * ```
41
+ */
42
+ get value(): Array<UmbPropertyValueData>;
43
+ set value(value: Array<UmbPropertyValueData>);
44
+ /**
45
+ * The name of the dataset, this name varies depending on the use-case. But this is either
46
+ * @type {string}
47
+ * @returns {string}
48
+ * @memberof UmbBasicVariantElement
49
+ * @example
50
+ * ```ts
51
+ * html`
52
+ * <umb-property-dataset name="My variant name">
53
+ * ...
54
+ * </umb-property-dataset>
55
+ * `
56
+ */
57
+ get name(): string | undefined;
58
+ set name(value: string | undefined);
59
+ constructor();
60
+ render(): import("lit-html").TemplateResult<1>;
61
+ }
62
+ export default UmbPropertyDatasetElement;
63
+ declare global {
64
+ interface HTMLElementTagNameMap {
65
+ 'umb-property-dataset': UmbPropertyDatasetElement;
66
+ }
67
+ }
@@ -0,0 +1,119 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { UmbPropertyDatasetBaseContext } from './property-dataset-base-context.js';
8
+ import { UmbLitElement } from '../../../../shared/lit-element/index.js';
9
+ import { customElement, html, property } from '../../../../external/lit/index.js';
10
+ import { UmbChangeEvent } from '../../event/index.js';
11
+ /**
12
+ * @element umb-property-dataset
13
+ * @description - Element for hosting a property dataset. This is needed for umb-property to work.
14
+ * @slot default - Slot for rendering content within.
15
+ */
16
+ let UmbPropertyDatasetElement = class UmbPropertyDatasetElement extends UmbLitElement {
17
+ // Determine wether state change should fire an event when the value is changed.
18
+ #allowChangeEvent = false;
19
+ /**
20
+ * The value of the dataset.
21
+ * @returns {Array<UmbPropertyValueData>}
22
+ * @memberof UmbBasicVariantElement
23
+ * @example
24
+ * ```ts
25
+ * const dataSet = [
26
+ * {
27
+ * alias: 'testAlias',
28
+ * value: 'value as a string',
29
+ * },
30
+ * {
31
+ * alias: 'anotherAlias',
32
+ * value: 123,
33
+ * }
34
+ * ]
35
+ *
36
+ * html`
37
+ * <umb-property-dataset .value="${dataSet}">
38
+ * <umb-property
39
+ * label="My label for this property"
40
+ * description="The description to show on the property"
41
+ * alias="testAlias"
42
+ * property-editor-ui-alias="Umb.PropertyEditorUi.TextBox"
43
+ * .config=${...}>
44
+ * </umb-property>
45
+ * </umb-property-dataset>
46
+ * `
47
+ * ```
48
+ */
49
+ get value() {
50
+ return this.context.getValues();
51
+ }
52
+ set value(value) {
53
+ this.#allowChangeEvent = false;
54
+ this.context.setValues(value);
55
+ // Above might not trigger a observer callback (if no change), so set the allow change event to true:
56
+ this.#allowChangeEvent = true;
57
+ }
58
+ /**
59
+ * The name of the dataset, this name varies depending on the use-case. But this is either
60
+ * @type {string}
61
+ * @returns {string}
62
+ * @memberof UmbBasicVariantElement
63
+ * @example
64
+ * ```ts
65
+ * html`
66
+ * <umb-property-dataset name="My variant name">
67
+ * ...
68
+ * </umb-property-dataset>
69
+ * `
70
+ */
71
+ get name() {
72
+ return this.context.getName();
73
+ }
74
+ set name(value) {
75
+ this.#allowChangeEvent = false;
76
+ this.context.setName(value);
77
+ // Above might not trigger a observer callback (if no change), so set the allow change event to true:
78
+ this.#allowChangeEvent = true;
79
+ }
80
+ constructor() {
81
+ super();
82
+ // Prevent any child events escaping this element.
83
+ this.addEventListener('change', (e) => {
84
+ if (e.target !== this) {
85
+ e.stopImmediatePropagation();
86
+ }
87
+ });
88
+ this.context = new UmbPropertyDatasetBaseContext(this);
89
+ // prevent the first change event from firing:
90
+ this.#allowChangeEvent = false;
91
+ this.observe(this.context.name, this.#observerCallback);
92
+ // prevent the first change event from firing:
93
+ this.#allowChangeEvent = false;
94
+ this.observe(this.context.values, this.#observerCallback);
95
+ }
96
+ #observerCallback = () => {
97
+ if (this.#allowChangeEvent) {
98
+ this.dispatchEvent(new UmbChangeEvent());
99
+ }
100
+ else {
101
+ // Set allow change event to true.
102
+ this.#allowChangeEvent = true;
103
+ }
104
+ };
105
+ render() {
106
+ return html `<slot></slot>`;
107
+ }
108
+ };
109
+ __decorate([
110
+ property({ attribute: false })
111
+ ], UmbPropertyDatasetElement.prototype, "value", null);
112
+ __decorate([
113
+ property({ attribute: false })
114
+ ], UmbPropertyDatasetElement.prototype, "name", null);
115
+ UmbPropertyDatasetElement = __decorate([
116
+ customElement('umb-property-dataset')
117
+ ], UmbPropertyDatasetElement);
118
+ export { UmbPropertyDatasetElement };
119
+ export default UmbPropertyDatasetElement;
@@ -0,0 +1 @@
1
+ export * from './property-layout.element.js';
@@ -0,0 +1 @@
1
+ export * from './property-layout.element.js';
@@ -1,12 +1,12 @@
1
1
  import { LitElement } from '../../../../external/lit/index.js';
2
2
  /**
3
- * @element umb-workspace-property-layout
3
+ * @element umb-property-layout
4
4
  * @description - Element for displaying a property in an workspace.
5
5
  * @slot editor - Slot for rendering the Property Editor
6
6
  * @slot description - Slot for rendering things below the label.
7
- * @slot property-action-menu - Slot for rendering the Property Action Menu
7
+ * @slot action-menu - Slot for rendering the Property Action Menu
8
8
  */
9
- export declare class UmbWorkspacePropertyLayoutElement extends LitElement {
9
+ export declare class UmbPropertyLayoutElement extends LitElement {
10
10
  /**
11
11
  * Alias. The technical name of the property.
12
12
  * @type {string}
@@ -41,6 +41,6 @@ export declare class UmbWorkspacePropertyLayoutElement extends LitElement {
41
41
  }
42
42
  declare global {
43
43
  interface HTMLElementTagNameMap {
44
- 'umb-workspace-property-layout': UmbWorkspacePropertyLayoutElement;
44
+ 'umb-property-layout': UmbPropertyLayoutElement;
45
45
  }
46
46
  }
@@ -7,13 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { css, html, LitElement, customElement, property } from '../../../../external/lit/index.js';
8
8
  import { UmbTextStyles } from '../../../../shared/style/index.js';
9
9
  /**
10
- * @element umb-workspace-property-layout
10
+ * @element umb-property-layout
11
11
  * @description - Element for displaying a property in an workspace.
12
12
  * @slot editor - Slot for rendering the Property Editor
13
13
  * @slot description - Slot for rendering things below the label.
14
- * @slot property-action-menu - Slot for rendering the Property Action Menu
14
+ * @slot action-menu - Slot for rendering the Property Action Menu
15
15
  */
16
- let UmbWorkspacePropertyLayoutElement = class UmbWorkspacePropertyLayoutElement extends LitElement {
16
+ let UmbPropertyLayoutElement = class UmbPropertyLayoutElement extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
19
  /**
@@ -51,7 +51,7 @@ let UmbWorkspacePropertyLayoutElement = class UmbWorkspacePropertyLayoutElement
51
51
  return html `
52
52
  <div id="headerColumn">
53
53
  <uui-label title=${this.alias}>${this.label}</uui-label>
54
- <slot name="property-action-menu"></slot>
54
+ <slot name="action-menu"></slot>
55
55
  <div id="description">${this.description}</div>
56
56
  <slot name="description"></slot>
57
57
  </div>
@@ -114,17 +114,17 @@ let UmbWorkspacePropertyLayoutElement = class UmbWorkspacePropertyLayoutElement
114
114
  };
115
115
  __decorate([
116
116
  property({ type: String })
117
- ], UmbWorkspacePropertyLayoutElement.prototype, "alias", void 0);
117
+ ], UmbPropertyLayoutElement.prototype, "alias", void 0);
118
118
  __decorate([
119
119
  property({ type: String })
120
- ], UmbWorkspacePropertyLayoutElement.prototype, "label", void 0);
120
+ ], UmbPropertyLayoutElement.prototype, "label", void 0);
121
121
  __decorate([
122
122
  property({ type: String })
123
- ], UmbWorkspacePropertyLayoutElement.prototype, "orientation", void 0);
123
+ ], UmbPropertyLayoutElement.prototype, "orientation", void 0);
124
124
  __decorate([
125
125
  property({ type: String })
126
- ], UmbWorkspacePropertyLayoutElement.prototype, "description", void 0);
127
- UmbWorkspacePropertyLayoutElement = __decorate([
128
- customElement('umb-workspace-property-layout')
129
- ], UmbWorkspacePropertyLayoutElement);
130
- export { UmbWorkspacePropertyLayoutElement };
126
+ ], UmbPropertyLayoutElement.prototype, "description", void 0);
127
+ UmbPropertyLayoutElement = __decorate([
128
+ customElement('umb-property-layout')
129
+ ], UmbPropertyLayoutElement);
130
+ export { UmbPropertyLayoutElement };
@@ -0,0 +1 @@
1
+ export * from './property-value-data.type.js';
@@ -0,0 +1 @@
1
+ export * from './property-value-data.type.js';
@@ -0,0 +1,4 @@
1
+ export type UmbPropertyValueData<ValueType = unknown> = {
2
+ alias: string;
3
+ value?: ValueType;
4
+ };
@@ -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 { UMB_PROPERTY_CONTEXT } from '../../../property/index.js';
7
8
  import { html, customElement, property } from '../../../../../external/lit/index.js';
8
- import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../workspace/index.js';
9
9
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
10
10
  let UmbPropertyActionClearElement = class UmbPropertyActionClearElement extends UmbLitElement {
11
11
  constructor() {
@@ -16,7 +16,7 @@ let UmbPropertyActionClearElement = class UmbPropertyActionClearElement extends
16
16
  this._propertyActionMenuContext = propertyActionsContext;
17
17
  });
18
18
  */
19
- this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (propertyContext) => {
19
+ this.consumeContext(UMB_PROPERTY_CONTEXT, (propertyContext) => {
20
20
  this._propertyContext = propertyContext;
21
21
  });
22
22
  }
@@ -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 { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../workspace/workspace-property/workspace-property.context.js';
7
+ import { UMB_PROPERTY_CONTEXT } from '../../../property/index.js';
8
8
  import { html, customElement, property, state } from '../../../../../external/lit/index.js';
9
9
  import { UmbTextStyles } from '../../../../../shared/style/index.js';
10
10
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
@@ -16,7 +16,7 @@ let UmbPropertyEditorUIBlockGridElement = class UmbPropertyEditorUIBlockGridElem
16
16
  super();
17
17
  this.value = '';
18
18
  this._routes = [];
19
- this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (context) => {
19
+ this.consumeContext(UMB_PROPERTY_CONTEXT, (context) => {
20
20
  this.observe(context?.variantId, (propertyVariantId) => {
21
21
  this._variantId = propertyVariantId;
22
22
  this.setupRoutes();
@@ -16,7 +16,7 @@ let UmbPropertyEditorUIBlockListBlockConfigurationElement = class UmbPropertyEdi
16
16
  this.value = '';
17
17
  }
18
18
  render() {
19
- return html `<div>umb-property-editor-ui-block-list-block-configuration</div>`;
19
+ return html ` <div>umb-property-editor-ui-block-list-block-configuration</div> `;
20
20
  }
21
21
  static { this.styles = [UmbTextStyles]; }
22
22
  };
@@ -4,9 +4,9 @@ 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 { UMB_PROPERTY_CONTEXT } from '../../../property/index.js';
7
8
  import { html, customElement, property, state } from '../../../../../external/lit/index.js';
8
9
  import { UmbTextStyles } from '../../../../../shared/style/index.js';
9
- import { UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN } from '../../../workspace/index.js';
10
10
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
11
11
  /**
12
12
  * @element umb-property-editor-ui-multi-url-picker
@@ -22,7 +22,7 @@ let UmbPropertyEditorUIMultiUrlPickerElement = class UmbPropertyEditorUIMultiUrl
22
22
  constructor() {
23
23
  super();
24
24
  this.value = [];
25
- this.consumeContext(UMB_WORKSPACE_PROPERTY_CONTEXT_TOKEN, (context) => {
25
+ this.consumeContext(UMB_PROPERTY_CONTEXT, (context) => {
26
26
  this.observe(context.alias, (alias) => {
27
27
  this._alias = alias;
28
28
  });
@@ -21,7 +21,10 @@ let UmbPropertyEditorUITextBoxElement = class UmbPropertyEditorUITextBoxElement
21
21
  this._maxChars = config?.getValueByAlias('maxChars');
22
22
  }
23
23
  onChange(e) {
24
- this.value = e.target.value;
24
+ const newValue = e.target.value;
25
+ if (newValue === this.value)
26
+ return;
27
+ this.value = newValue;
25
28
  this.dispatchEvent(new CustomEvent('property-value-change'));
26
29
  }
27
30
  render() {
@@ -30,7 +33,7 @@ let UmbPropertyEditorUITextBoxElement = class UmbPropertyEditorUITextBoxElement
30
33
  .type=${this._type}
31
34
  inputMode=${ifDefined(this._inputMode)}
32
35
  maxlength=${ifDefined(this._maxChars)}
33
- @change=${this.onChange}></uui-input>`;
36
+ @input=${this.onChange}></uui-input>`;
34
37
  }
35
38
  static { this.styles = [
36
39
  UmbTextStyles,
@@ -81,13 +81,13 @@ export class UmbTreeItemContextBase extends UmbBaseController {
81
81
  }
82
82
  select() {
83
83
  if (this.unique === undefined)
84
- throw new Error('Could not select, unique key is missing');
85
- this.treeContext?.select(this.unique);
84
+ throw new Error('Could not select. Unique is missing');
85
+ this.treeContext?.selection.select(this.unique);
86
86
  }
87
87
  deselect() {
88
88
  if (this.unique === undefined)
89
- throw new Error('Could not deselect, unique key is missing');
90
- this.treeContext?.deselect(this.unique);
89
+ throw new Error('Could not deselect. Unique is missing');
90
+ this.treeContext?.selection.deselect(this.unique);
91
91
  }
92
92
  #consumeContexts() {
93
93
  this.consumeContext(UMB_SECTION_CONTEXT_TOKEN, (instance) => {
@@ -110,7 +110,7 @@ export class UmbTreeItemContextBase extends UmbBaseController {
110
110
  #observeIsSelectable() {
111
111
  if (!this.treeContext)
112
112
  return;
113
- this.observe(this.treeContext.selectable, (value) => {
113
+ this.observe(this.treeContext.selection.selectable, (value) => {
114
114
  this.#isSelectableContext.next(value);
115
115
  // If the tree is selectable, check if this item is selectable
116
116
  if (value === true) {
@@ -122,7 +122,7 @@ export class UmbTreeItemContextBase extends UmbBaseController {
122
122
  #observeIsSelected() {
123
123
  if (!this.treeContext || !this.unique)
124
124
  return;
125
- this.observe(this.treeContext.selection.pipe(map((selection) => selection.includes(this.unique))), (isSelected) => {
125
+ this.observe(this.treeContext.selection.selection.pipe(map((selection) => selection.includes(this.unique))), (isSelected) => {
126
126
  this.#isSelected.next(isSelected);
127
127
  }, 'observeIsSelected');
128
128
  }
@@ -5,17 +5,9 @@ import { UmbPagedData } from '../repository/index.js';
5
5
  import { UmbBaseController } from '../../../libs/class-api/index.js';
6
6
  import { type UmbControllerHostElement } from '../../../libs/controller-api/index.js';
7
7
  import { ProblemDetails } from '../../../external/backend-api/index.js';
8
+ import { UmbSelectionManager } from '../../../shared/utils/index.js';
8
9
  export interface UmbTreeContext<TreeItemType extends UmbTreeItemModelBase> extends UmbBaseController {
9
- readonly selectable: Observable<boolean>;
10
- readonly selection: Observable<Array<string | null>>;
11
- setSelectable(value: boolean): void;
12
- getSelectable(): boolean;
13
- setMultiple(value: boolean): void;
14
- getMultiple(): boolean;
15
- setSelection(value: Array<string | null>): void;
16
- getSelection(): Array<string | null>;
17
- select(unique: string | null): void;
18
- deselect(unique: string | null): void;
10
+ selection: UmbSelectionManager;
19
11
  requestChildrenOf: (parentUnique: string | null) => Promise<{
20
12
  data?: UmbPagedData<TreeItemType>;
21
13
  error?: ProblemDetails;
@@ -24,22 +16,12 @@ export interface UmbTreeContext<TreeItemType extends UmbTreeItemModelBase> exten
24
16
  }
25
17
  export declare class UmbTreeContextBase<TreeItemType extends UmbTreeItemModelBase> extends UmbBaseController implements UmbTreeContext<TreeItemType> {
26
18
  #private;
27
- readonly selectable: Observable<boolean>;
28
- readonly multiple: Observable<boolean>;
29
- readonly selection: Observable<(string | null)[]>;
30
19
  repository?: UmbTreeRepository<TreeItemType>;
31
20
  selectableFilter?: (item: TreeItemType) => boolean;
21
+ readonly selection: UmbSelectionManager;
32
22
  constructor(host: UmbControllerHostElement);
33
23
  setTreeAlias(treeAlias?: string): Promise<void>;
34
24
  getTreeAlias(): string | undefined;
35
- setSelectable(value: boolean): void;
36
- getSelectable(): boolean;
37
- setMultiple(value: boolean): void;
38
- getMultiple(): boolean;
39
- setSelection(value: Array<string | null>): void;
40
- getSelection(): (string | null)[];
41
- select(unique: string | null): void;
42
- deselect(unique: string | null): void;
43
25
  requestTreeRoot(): Promise<{
44
26
  data?: UmbTreeItemModelBase | undefined;
45
27
  error?: ProblemDetails | undefined;
@@ -1,24 +1,16 @@
1
1
  import { umbExtensionsRegistry, } from '../extension-registry/index.js';
2
- import { UmbBooleanState } from '../../../libs/observable-api/index.js';
3
2
  import { UmbBaseController } from '../../../libs/class-api/index.js';
4
3
  import { UmbExtensionApiInitializer } from '../../../libs/extension-api/index.js';
5
4
  import { UmbSelectionManager } from '../../../shared/utils/index.js';
6
- import { UmbSelectionChangeEvent } from '../event/index.js';
7
5
  export class UmbTreeContextBase extends UmbBaseController {
8
- #selectionManager;
9
- #selectable;
10
6
  #treeAlias;
11
7
  #initResolver;
12
8
  #initialized;
13
9
  #init;
14
10
  constructor(host) {
15
11
  super(host);
16
- this.#selectionManager = new UmbSelectionManager();
17
- this.#selectable = new UmbBooleanState(false);
18
- this.selectable = this.#selectable.asObservable();
19
- this.multiple = this.#selectionManager.multiple;
20
- this.selection = this.#selectionManager.selection;
21
12
  this.selectableFilter = () => true;
13
+ this.selection = new UmbSelectionManager(this._host);
22
14
  this.#initialized = false;
23
15
  this.#init = new Promise((resolve) => {
24
16
  this.#initialized ? resolve() : (this.#initResolver = resolve);
@@ -41,34 +33,6 @@ export class UmbTreeContextBase extends UmbBaseController {
41
33
  getTreeAlias() {
42
34
  return this.#treeAlias;
43
35
  }
44
- setSelectable(value) {
45
- this.#selectable.next(value);
46
- }
47
- getSelectable() {
48
- return this.#selectable.getValue();
49
- }
50
- setMultiple(value) {
51
- this.#selectionManager.setMultiple(value);
52
- }
53
- getMultiple() {
54
- return this.#selectionManager.getMultiple();
55
- }
56
- setSelection(value) {
57
- this.#selectionManager.setSelection(value);
58
- }
59
- getSelection() {
60
- return this.#selectionManager.getSelection();
61
- }
62
- select(unique) {
63
- if (!this.getSelectable())
64
- return;
65
- this.#selectionManager.select(unique);
66
- this._host.getHostElement().dispatchEvent(new UmbSelectionChangeEvent());
67
- }
68
- deselect(unique) {
69
- this.#selectionManager.deselect(unique);
70
- this._host.getHostElement().dispatchEvent(new UmbSelectionChangeEvent());
71
- }
72
36
  async requestTreeRoot() {
73
37
  await this.#init;
74
38
  return this.repository.requestTreeRoot();
@@ -17,24 +17,24 @@ let UmbTreeElement = class UmbTreeElement extends UmbLitElement {
17
17
  this.#treeContext.setTreeAlias(newVal);
18
18
  }
19
19
  get selectable() {
20
- return this.#treeContext.getSelectable();
20
+ return this.#treeContext.selection.getSelectable();
21
21
  }
22
22
  set selectable(newVal) {
23
- this.#treeContext.setSelectable(newVal);
23
+ this.#treeContext.selection.setSelectable(newVal);
24
24
  }
25
25
  get selection() {
26
- return this.#treeContext.getSelection();
26
+ return this.#treeContext.selection.getSelection();
27
27
  }
28
28
  set selection(newVal) {
29
29
  if (!Array.isArray(newVal))
30
30
  return;
31
- this.#treeContext?.setSelection(newVal);
31
+ this.#treeContext?.selection.setSelection(newVal);
32
32
  }
33
33
  get multiple() {
34
- return this.#treeContext.getMultiple();
34
+ return this.#treeContext.selection.getMultiple();
35
35
  }
36
36
  set multiple(newVal) {
37
- this.#treeContext.setMultiple(newVal);
37
+ this.#treeContext.selection.setMultiple(newVal);
38
38
  }
39
39
  get hideTreeRoot() {
40
40
  return this._hideTreeRoot;