@umbraco-cms/backoffice 14.0.0--preview004-e91a3686 → 14.0.0--preview004-d4db8e54

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.
@@ -1064,6 +1064,8 @@ export default {
1064
1064
  },
1065
1065
  contentPicker: {
1066
1066
  allowedItemTypes: 'Du kan kun vælge følgende type(r) dokumenter: %0%',
1067
+ defineDynamicRoot: 'Definer Dynamisk Udgangspunkt',
1068
+ defineRootNode: 'Vælg udgangspunkt',
1067
1069
  pickedTrashedItem: 'Du har valgt et dokument som er slettet eller lagt i papirkurven',
1068
1070
  pickedTrashedItems: 'Du har valgt dokumenter som er slettede eller lagt i papirkurven',
1069
1071
  },
@@ -1151,6 +1151,8 @@ export default {
1151
1151
  },
1152
1152
  contentPicker: {
1153
1153
  allowedItemTypes: 'Du kan kun vælge følgende type(r) dokumenter: %0%',
1154
+ defineDynamicRoot: 'Definer Dynamisk Udgangspunkt',
1155
+ defineRootNode: 'Vælg udgangspunkt',
1154
1156
  pickedTrashedItem: 'Du har valgt et dokument som er slettet eller lagt i papirkurven',
1155
1157
  pickedTrashedItems: 'Du har valgt dokumenter som er slettede eller lagt i papirkurven',
1156
1158
  },
@@ -1059,6 +1059,8 @@ export default {
1059
1059
  },
1060
1060
  contentPicker: {
1061
1061
  allowedItemTypes: 'You can only select items of type(s): %0%',
1062
+ defineDynamicRoot: 'Specify a Dynamic Root',
1063
+ defineRootNode: 'Pick root node',
1062
1064
  pickedTrashedItem: 'You have picked a content item currently deleted or in the recycle bin',
1063
1065
  pickedTrashedItems: 'You have picked content items currently deleted or in the recycle bin',
1064
1066
  },
@@ -1148,6 +1148,8 @@ export default {
1148
1148
  },
1149
1149
  contentPicker: {
1150
1150
  allowedItemTypes: 'You can only select items of type(s): %0%',
1151
+ defineDynamicRoot: 'Specify a Dynamic Root',
1152
+ defineRootNode: 'Pick root node',
1151
1153
  pickedTrashedItem: 'You have picked a content item currently deleted or in the recycle bin',
1152
1154
  pickedTrashedItems: 'You have picked content items currently deleted or in the recycle bin',
1153
1155
  },
@@ -1808,13 +1808,7 @@
1808
1808
  },
1809
1809
  {
1810
1810
  "name": "node-id",
1811
- "type": "string",
1812
- "default": "\"\""
1813
- },
1814
- {
1815
- "name": "dynamic-path",
1816
- "type": "string",
1817
- "default": "\"\""
1811
+ "type": "string | null | undefined"
1818
1812
  }
1819
1813
  ],
1820
1814
  "properties": [
@@ -1826,25 +1820,17 @@
1826
1820
  {
1827
1821
  "name": "nodeId",
1828
1822
  "attribute": "node-id",
1829
- "type": "string",
1830
- "default": "\"\""
1823
+ "type": "string | null | undefined"
1831
1824
  },
1832
1825
  {
1833
- "name": "dynamicPath",
1834
- "attribute": "dynamic-path",
1835
- "type": "string",
1836
- "default": "\"\""
1826
+ "name": "dynamicRoot",
1827
+ "type": "DynamicRootType | null | undefined"
1837
1828
  },
1838
1829
  {
1839
1830
  "name": "styles",
1840
1831
  "type": "array",
1841
1832
  "default": "[null]"
1842
1833
  }
1843
- ],
1844
- "events": [
1845
- {
1846
- "name": "change"
1847
- }
1848
1834
  ]
1849
1835
  },
1850
1836
  {
@@ -6228,6 +6214,27 @@
6228
6214
  }
6229
6215
  ]
6230
6216
  },
6217
+ {
6218
+ "name": "umb-input-document-picker-root",
6219
+ "path": "./../src/packages/documents/documents/components/input-document-picker-root/input-document-picker-root.element.ts",
6220
+ "attributes": [
6221
+ {
6222
+ "name": "value",
6223
+ "type": "string"
6224
+ }
6225
+ ],
6226
+ "properties": [
6227
+ {
6228
+ "name": "nodeId",
6229
+ "type": "string | null | undefined"
6230
+ },
6231
+ {
6232
+ "name": "value",
6233
+ "attribute": "value",
6234
+ "type": "string"
6235
+ }
6236
+ ]
6237
+ },
6231
6238
  {
6232
6239
  "name": "umb-input-document",
6233
6240
  "path": "./../src/packages/documents/documents/components/input-document/input-document.element.ts",
@@ -1,9 +1,17 @@
1
1
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
2
2
  export type ContentType = 'content' | 'member' | 'media';
3
+ export type DynamicRootQueryStepType = {
4
+ alias: string;
5
+ anyOfDocTypeKeys: Array<string>;
6
+ };
7
+ export type DynamicRootType = {
8
+ originAlias: string;
9
+ querySteps?: Array<DynamicRootQueryStepType> | null;
10
+ };
3
11
  export type StartNode = {
4
12
  type?: ContentType;
5
13
  id?: string | null;
6
- query?: string | null;
14
+ dynamicRoot?: DynamicRootType | null;
7
15
  };
8
16
  declare const UmbInputStartNodeElement_base: (new (...args: any[]) => import("../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
9
17
  export declare class UmbInputStartNodeElement extends UmbInputStartNodeElement_base {
@@ -12,8 +20,8 @@ export declare class UmbInputStartNodeElement extends UmbInputStartNodeElement_b
12
20
  private _type;
13
21
  set type(value: StartNode['type']);
14
22
  get type(): StartNode['type'];
15
- nodeId: string;
16
- dynamicPath: string;
23
+ nodeId?: string | null;
24
+ dynamicRoot?: DynamicRootType | null;
17
25
  _options: Array<Option>;
18
26
  render(): import("lit-html").TemplateResult<1>;
19
27
  static styles: import("@lit/reactive-element/css-tag").CSSResult[];
@@ -7,23 +7,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, customElement, property, css, state } from '../../../../external/lit/index.js';
8
8
  import { FormControlMixin } from '../../../../external/uui/index.js';
9
9
  import { UmbLitElement } from '../../../../shared/lit-element/index.js';
10
- import { UmbChangeEvent } from '../../event/index.js';
11
10
  let UmbInputStartNodeElement = class UmbInputStartNodeElement extends FormControlMixin(UmbLitElement) {
12
11
  constructor() {
13
12
  super(...arguments);
14
13
  this._type = 'content';
15
- this.nodeId = '';
16
- this.dynamicPath = '';
17
14
  this._options = [
18
15
  { value: 'content', name: 'Content' },
19
- { value: 'member', name: 'Members' },
20
16
  { value: 'media', name: 'Media' },
17
+ { value: 'member', name: 'Members' },
21
18
  ];
22
19
  }
23
20
  getFormElement() {
24
21
  return undefined;
25
22
  }
26
23
  set type(value) {
24
+ if (value === undefined) {
25
+ value = this._type;
26
+ }
27
27
  const oldValue = this._type;
28
28
  this._options = this._options.map((option) => option.value === value ? { ...option, selected: true } : { ...option, selected: false });
29
29
  this._type = value;
@@ -33,15 +33,25 @@ let UmbInputStartNodeElement = class UmbInputStartNodeElement extends FormContro
33
33
  return this._type;
34
34
  }
35
35
  #onTypeChange(event) {
36
+ //console.log('onTypeChange');
36
37
  this.type = event.target.value;
37
- // Clear others
38
38
  this.nodeId = '';
39
- this.dynamicPath = '';
40
- this.dispatchEvent(new UmbChangeEvent());
39
+ // TODO: Appears that the event gets bubbled up. Will need to review. [LK]
40
+ //this.dispatchEvent(new UmbChangeEvent());
41
41
  }
42
42
  #onIdChange(event) {
43
- this.nodeId = event.target.selectedIds.join('');
44
- this.dispatchEvent(new CustomEvent('change'));
43
+ //console.log('onIdChange', event.target);
44
+ switch (this.type) {
45
+ case 'content':
46
+ this.nodeId = event.target.nodeId;
47
+ break;
48
+ case 'media':
49
+ this.nodeId = event.target.selectedIds.join('');
50
+ break;
51
+ default:
52
+ break;
53
+ }
54
+ this.dispatchEvent(new CustomEvent(event.type));
45
55
  }
46
56
  render() {
47
57
  return html `<umb-input-dropdown-list
@@ -62,19 +72,19 @@ let UmbInputStartNodeElement = class UmbInputStartNodeElement extends FormContro
62
72
  }
63
73
  }
64
74
  #renderTypeContent() {
65
- const nodeId = this.nodeId ? [this.nodeId] : [];
66
- //TODO: Dynamic paths
67
- return html ` <umb-input-document @change=${this.#onIdChange} .selectedIds=${nodeId} max="1"></umb-input-document> `;
75
+ return html `<umb-input-document-picker-root
76
+ @change=${this.#onIdChange}
77
+ .nodeId=${this.nodeId}></umb-input-document-picker-root>`;
68
78
  }
69
79
  #renderTypeMedia() {
70
80
  const nodeId = this.nodeId ? [this.nodeId] : [];
71
81
  //TODO => MediaTypes
72
- return html ` <umb-input-media @change=${this.#onIdChange} .selectedIds=${nodeId} max="1"></umb-input-media> `;
82
+ return html `<umb-input-media @change=${this.#onIdChange} .selectedIds=${nodeId} max="1"></umb-input-media>`;
73
83
  }
74
84
  #renderTypeMember() {
75
85
  const nodeId = this.nodeId ? [this.nodeId] : [];
76
86
  //TODO => Members
77
- return html ` <umb-input-member @change=${this.#onIdChange} .selectedIds=${nodeId} max="1"></umb-input-member> `;
87
+ return html `<umb-input-member @change=${this.#onIdChange} .selectedIds=${nodeId} max="1"></umb-input-member>`;
78
88
  }
79
89
  static { this.styles = [
80
90
  css `
@@ -93,8 +103,8 @@ __decorate([
93
103
  property({ attribute: 'node-id' })
94
104
  ], UmbInputStartNodeElement.prototype, "nodeId", void 0);
95
105
  __decorate([
96
- property({ attribute: 'dynamic-path' })
97
- ], UmbInputStartNodeElement.prototype, "dynamicPath", void 0);
106
+ property({ attribute: false })
107
+ ], UmbInputStartNodeElement.prototype, "dynamicRoot", void 0);
98
108
  __decorate([
99
109
  state()
100
110
  ], UmbInputStartNodeElement.prototype, "_options", void 0);
@@ -16,13 +16,15 @@ let UmbPropertyEditorUITreePickerStartNodeElement = class UmbPropertyEditorUITre
16
16
  this.value = {
17
17
  type: target.type,
18
18
  id: target.nodeId,
19
- // TODO: Please check this makes sense, Check if we want to support XPath in this version, if not then make sure we handle DynamicRoot correct.
20
- query: target.dynamicPath,
19
+ dynamicRoot: target.dynamicRoot,
21
20
  };
22
21
  this.dispatchEvent(new CustomEvent('property-value-change'));
23
22
  }
24
23
  render() {
25
- return html `<umb-input-start-node @change="${this.#onChange}" .type=${this.value?.type}></umb-input-start-node>`;
24
+ return html `<umb-input-start-node
25
+ @change=${this.#onChange}
26
+ .type=${this.value?.type}
27
+ .nodeId=${this.value?.id}></umb-input-start-node>`;
26
28
  }
27
29
  static { this.styles = [UmbTextStyles]; }
28
30
  };
@@ -1,2 +1,3 @@
1
1
  export * from './input-document/input-document.element.js';
2
2
  export * from './input-document-granular-permission/input-document-granular-permission.element.js';
3
+ export * from './input-document-picker-root/input-document-picker-root.element.js';
@@ -1,2 +1,3 @@
1
1
  export * from './input-document/input-document.element.js';
2
2
  export * from './input-document-granular-permission/input-document-granular-permission.element.js';
3
+ export * from './input-document-picker-root/input-document-picker-root.element.js';
@@ -0,0 +1,19 @@
1
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
2
+ declare const UmbInputDocumentPickerRootElement_base: (new (...args: any[]) => import("../../../../../external/uui/index.js").FormControlMixinInterface) & typeof UmbLitElement;
3
+ export declare class UmbInputDocumentPickerRootElement extends UmbInputDocumentPickerRootElement_base {
4
+ #private;
5
+ get nodeId(): string | null | undefined;
6
+ set nodeId(id: string | null | undefined);
7
+ set value(id: string);
8
+ private _items?;
9
+ constructor();
10
+ protected getFormElement(): undefined;
11
+ render(): import("lit-html").TemplateResult<1>;
12
+ private _renderItem;
13
+ }
14
+ export default UmbInputDocumentPickerRootElement;
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'umb-input-document-picker-root': UmbInputDocumentPickerRootElement;
18
+ }
19
+ }
@@ -0,0 +1,93 @@
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 { UmbDocumentPickerContext } from '../input-document/input-document.context.js';
8
+ import { html, customElement, property, state, ifDefined, repeat } from '../../../../../external/lit/index.js';
9
+ import { FormControlMixin } from '../../../../../external/uui/index.js';
10
+ import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
11
+ let UmbInputDocumentPickerRootElement = class UmbInputDocumentPickerRootElement extends FormControlMixin(UmbLitElement) {
12
+ get nodeId() {
13
+ return this.#documentPickerContext.getSelection()[0];
14
+ }
15
+ set nodeId(id) {
16
+ const selection = id ? [id] : [];
17
+ this.#documentPickerContext.setSelection(selection);
18
+ }
19
+ set value(id) {
20
+ this.nodeId = id;
21
+ }
22
+ #documentPickerContext = new UmbDocumentPickerContext(this);
23
+ // TODO: DynamicRoot - once feature implemented, wire up context and picker UI. [LK]
24
+ #dynamicRootPickerContext = {
25
+ openPicker: () => {
26
+ throw new Error('DynamicRoot picker has not been implemented yet.');
27
+ },
28
+ };
29
+ constructor() {
30
+ super();
31
+ this.#documentPickerContext.max = 1;
32
+ this.observe(this.#documentPickerContext.selection, (selection) => (super.value = selection.join(',')));
33
+ this.observe(this.#documentPickerContext.selectedItems, (selectedItems) => (this._items = selectedItems));
34
+ }
35
+ getFormElement() {
36
+ return undefined;
37
+ }
38
+ render() {
39
+ return html `
40
+ ${this._items
41
+ ? html ` <uui-ref-list
42
+ >${repeat(this._items, (item) => item.id, (item) => this._renderItem(item))}
43
+ </uui-ref-list>`
44
+ : ''}
45
+ ${this.#renderButtons()}
46
+ `;
47
+ }
48
+ #renderButtons() {
49
+ if (this.nodeId)
50
+ return;
51
+ //TODO: Dynamic paths
52
+ return html ` <uui-button-group>
53
+ <uui-button
54
+ look="placeholder"
55
+ @click=${() => this.#documentPickerContext.openPicker()}
56
+ label=${this.localize.term('contentPicker_defineRootNode')}></uui-button>
57
+ <uui-button
58
+ look="placeholder"
59
+ @click=${() => this.#dynamicRootPickerContext.openPicker()}
60
+ label=${this.localize.term('contentPicker_defineDynamicRoot')}></uui-button>
61
+ </uui-button-group>`;
62
+ }
63
+ _renderItem(item) {
64
+ if (!item.id)
65
+ return;
66
+ return html `
67
+ <uui-ref-node name=${ifDefined(item.name)} detail=${ifDefined(item.id)}>
68
+ <!-- TODO: implement is trashed <uui-tag size="s" slot="tag" color="danger">Trashed</uui-tag> -->
69
+ <uui-action-bar slot="actions">
70
+ <uui-button @click=${() => this.#documentPickerContext.openPicker()} label="Edit document ${item.name}"
71
+ >Edit</uui-button
72
+ >
73
+ <uui-button
74
+ @click=${() => this.#documentPickerContext.requestRemoveItem(item.id)}
75
+ label="Remove document ${item.name}"
76
+ >Remove</uui-button
77
+ >
78
+ </uui-action-bar>
79
+ </uui-ref-node>
80
+ `;
81
+ }
82
+ };
83
+ __decorate([
84
+ property()
85
+ ], UmbInputDocumentPickerRootElement.prototype, "value", null);
86
+ __decorate([
87
+ state()
88
+ ], UmbInputDocumentPickerRootElement.prototype, "_items", void 0);
89
+ UmbInputDocumentPickerRootElement = __decorate([
90
+ customElement('umb-input-document-picker-root')
91
+ ], UmbInputDocumentPickerRootElement);
92
+ export { UmbInputDocumentPickerRootElement };
93
+ export default UmbInputDocumentPickerRootElement;