@umbraco-cms/backoffice 14.0.0--preview006-0420711d → 14.0.0--preview006-0bd2add0

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.
@@ -1443,7 +1443,7 @@ export default {
1443
1443
  enableListViewHeading: 'Enable list view',
1444
1444
  enableListViewDescription: 'Configures the content item to show a sortable and searchable list of its\n children, the children will not be shown in the tree\n ',
1445
1445
  allowedTemplatesHeading: 'Allowed Templates',
1446
- allowedTemplatesDescription: 'Choose which templates editors are allowed to use on content of this type\n ',
1446
+ allowedTemplatesDescription: 'Choose which templates editors are allowed to use on content of this type',
1447
1447
  allowAsRootHeading: 'Allow as root',
1448
1448
  allowAsRootDescription: 'Allow editors to create content of this type in the root of the content tree.\n ',
1449
1449
  childNodesHeading: 'Allowed child node types',
@@ -1563,7 +1563,7 @@ export default {
1563
1563
  enableListViewDescription:
1564
1564
  'Configures the content item to show a sortable and searchable list of its\n children, the children will not be shown in the tree\n ',
1565
1565
  allowedTemplatesHeading: 'Allowed Templates',
1566
- allowedTemplatesDescription: 'Choose which templates editors are allowed to use on content of this type\n ',
1566
+ allowedTemplatesDescription: 'Choose which templates editors are allowed to use on content of this type',
1567
1567
  allowAsRootHeading: 'Allow as root',
1568
1568
  allowAsRootDescription: 'Allow editors to create content of this type in the root of the content tree.\n ',
1569
1569
  childNodesHeading: 'Allowed child node types',
@@ -9722,11 +9722,6 @@
9722
9722
  "type": "array",
9723
9723
  "default": "[null]"
9724
9724
  }
9725
- ],
9726
- "events": [
9727
- {
9728
- "name": "change"
9729
- }
9730
9725
  ]
9731
9726
  },
9732
9727
  {
@@ -5,6 +5,6 @@ export const UMB_TEMPLATE_PICKER_MODAL = new UmbModalToken('Umb.Modal.TreePicker
5
5
  size: 'small',
6
6
  },
7
7
  data: {
8
- treeAlias: 'Umb.Tree.Templates',
8
+ treeAlias: 'Umb.Tree.Template',
9
9
  },
10
10
  });
@@ -1,6 +1,6 @@
1
- import '../../../../../templating/templates/components/input-template/input-template.element.js';
2
1
  import { UmbLitElement } from '../../../../../../shared/lit-element/index.js';
3
2
  import type { UmbWorkspaceViewElement } from '../../../../../core/extension-registry/index.js';
3
+ import '../../../../../templating/templates/index.js';
4
4
  export declare class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement implements UmbWorkspaceViewElement {
5
5
  #private;
6
6
  private _defaultTemplateId;
@@ -16,11 +16,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
16
16
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
17
  };
18
18
  var _UmbDocumentTypeWorkspaceViewTemplatesElement_instances, _UmbDocumentTypeWorkspaceViewTemplatesElement_workspaceContext, _UmbDocumentTypeWorkspaceViewTemplatesElement_templateInputChange;
19
- import '../../../../../templating/templates/components/input-template/input-template.element.js';
20
19
  import { css, html, customElement, state } from '../../../../../../external/lit/index.js';
21
20
  import { UmbTextStyles } from '../../../../../../shared/style/index.js';
22
21
  import { UmbLitElement } from '../../../../../../shared/lit-element/index.js';
23
22
  import { UMB_WORKSPACE_CONTEXT } from '../../../../../core/workspace/index.js';
23
+ import '../../../../../templating/templates/index.js'; // TODO: This is needed to register the <umb-input-template> element, but it should be done in a better way without importing the whole module.
24
24
  let UmbDocumentTypeWorkspaceViewTemplatesElement = class UmbDocumentTypeWorkspaceViewTemplatesElement extends UmbLitElement {
25
25
  constructor() {
26
26
  super();
@@ -47,12 +47,12 @@ let UmbDocumentTypeWorkspaceViewTemplatesElement = class UmbDocumentTypeWorkspac
47
47
  }, 'allowedTemplateIds');
48
48
  }
49
49
  render() {
50
- return html `<uui-box headline="Templates">
51
- <umb-property-layout alias="Templates" label="Allowed Templates">
52
- <div slot="description">Choose which templates editors are allowed to use on content of this type</div>
50
+ return html `<uui-box headline="${this.localize.term('treeHeaders_templates')}">
51
+ <umb-property-layout alias="Templates" label="${this.localize.term('contentTypeEditor_allowedTemplatesHeading')}">
52
+ <div slot="description">${this.localize.term('contentTypeEditor_allowedTemplatesDescription')}</div>
53
53
  <div id="templates" slot="editor">
54
54
  <umb-input-template
55
- .defaultId=${this._defaultTemplateId ?? ''}
55
+ .defaultUnique=${this._defaultTemplateId ?? ''}
56
56
  .selectedIds=${this._allowedTemplateIds}
57
57
  @change=${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewTemplatesElement_instances, "m", _UmbDocumentTypeWorkspaceViewTemplatesElement_templateInputChange)}></umb-input-template>
58
58
  </div>
@@ -9,13 +9,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _UmbInputTemplateElement_instances, _UmbInputTemplateElement_observePickedTemplates, _UmbInputTemplateElement_onCardChange, _UmbInputTemplateElement_openPicker, _UmbInputTemplateElement_removeTemplate, _UmbInputTemplateElement_openTemplate;
12
+ var _UmbInputTemplateElement_instances, _UmbInputTemplateElement_observePickedTemplates, _UmbInputTemplateElement_appendTemplates, _UmbInputTemplateElement_onCardChange, _UmbInputTemplateElement_openPicker, _UmbInputTemplateElement_removeTemplate, _UmbInputTemplateElement_openTemplate;
13
13
  import '../template-card/template-card.element.js';
14
14
  import { UmbTemplateItemRepository } from '../../repository/item/index.js';
15
15
  import { css, html, customElement, property, state } from '../../../../../external/lit/index.js';
16
16
  import { FormControlMixin } from '../../../../../external/uui/index.js';
17
17
  import { UMB_TEMPLATE_PICKER_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '../../../../core/modal/index.js';
18
18
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
19
+ import { UmbChangeEvent } from '../../../../core/event/index.js';
19
20
  let UmbInputTemplateElement = class UmbInputTemplateElement extends FormControlMixin(UmbLitElement) {
20
21
  get selectedIds() {
21
22
  return this._selectedIds;
@@ -30,7 +31,6 @@ let UmbInputTemplateElement = class UmbInputTemplateElement extends FormControlM
30
31
  set defaultUnique(newId) {
31
32
  this._defaultUnique = newId;
32
33
  super.value = newId;
33
- __classPrivateFieldGet(this, _UmbInputTemplateElement_instances, "m", _UmbInputTemplateElement_observePickedTemplates).call(this);
34
34
  }
35
35
  constructor() {
36
36
  super();
@@ -41,7 +41,7 @@ let UmbInputTemplateElement = class UmbInputTemplateElement extends FormControlM
41
41
  * @attr
42
42
  * @default
43
43
  */
44
- this.minMessage = 'This field need more items';
44
+ this.minMessage = 'This field needs more items';
45
45
  /**
46
46
  * Max validation message.
47
47
  * @type {boolean}
@@ -71,14 +71,18 @@ let UmbInputTemplateElement = class UmbInputTemplateElement extends FormControlM
71
71
  ?default="${template.unique === this.defaultUnique}">
72
72
  <uui-button
73
73
  slot="actions"
74
- label="Remove Template ${template.name}"
74
+ label="${this.localize.term('general_remove') + ' ' + template.name}"
75
75
  @click="${() => __classPrivateFieldGet(this, _UmbInputTemplateElement_instances, "m", _UmbInputTemplateElement_removeTemplate).call(this, template.unique ?? '')}"
76
76
  compact>
77
77
  <uui-icon name="icon-trash"></uui-icon>
78
78
  </uui-button>
79
79
  </umb-template-card>
80
80
  `)}
81
- <uui-button id="add-button" look="placeholder" label="open" @click="${__classPrivateFieldGet(this, _UmbInputTemplateElement_instances, "m", _UmbInputTemplateElement_openPicker)}">Add</uui-button>
81
+ <uui-button
82
+ id="add-button"
83
+ look="placeholder"
84
+ label="${this.localize.term('general_add')}"
85
+ @click="${__classPrivateFieldGet(this, _UmbInputTemplateElement_instances, "m", _UmbInputTemplateElement_openPicker)}"></uui-button>
82
86
  `;
83
87
  }
84
88
  };
@@ -90,29 +94,36 @@ _UmbInputTemplateElement_observePickedTemplates = async function _UmbInputTempla
90
94
  this.requestUpdate('_pickedTemplates', oldValue);
91
95
  }, '_observeTemplates');
92
96
  };
97
+ _UmbInputTemplateElement_appendTemplates = function _UmbInputTemplateElement_appendTemplates(unique) {
98
+ this.selectedIds = [...(this.selectedIds ?? []), ...unique];
99
+ // If there is no default, set the first picked template as default.
100
+ if (!this.defaultUnique && this.selectedIds.length) {
101
+ this.defaultUnique = this.selectedIds[0];
102
+ }
103
+ this.dispatchEvent(new UmbChangeEvent());
104
+ };
93
105
  _UmbInputTemplateElement_onCardChange = function _UmbInputTemplateElement_onCardChange(e) {
94
106
  e.stopPropagation();
95
107
  const unique = e.target.value;
96
108
  this.defaultUnique = unique;
97
- this.dispatchEvent(new CustomEvent('change'));
109
+ this.dispatchEvent(new UmbChangeEvent());
98
110
  };
99
- _UmbInputTemplateElement_openPicker = function _UmbInputTemplateElement_openPicker() {
100
- // TODO: Change experience, so its not multi selectable. But instead already picked templates should be unpickable. (awaiting general picker features for such)
111
+ _UmbInputTemplateElement_openPicker = async function _UmbInputTemplateElement_openPicker() {
101
112
  const modalContext = this._modalContext?.open(UMB_TEMPLATE_PICKER_MODAL, {
102
113
  data: {
114
+ hideTreeRoot: true,
103
115
  multiple: true,
104
- pickableFilter: (template) => template.unique !== null,
116
+ pickableFilter: (template) => template.unique !== null && !this._selectedIds.includes(template.unique),
105
117
  },
106
- value: {
107
- selection: [...this._selectedIds],
108
- },
109
- });
110
- modalContext?.onSubmit().then((value) => {
111
- if (!value?.selection)
112
- return;
113
- this.selectedIds = value.selection.filter((x) => x !== null);
114
- this.dispatchEvent(new CustomEvent('change'));
115
118
  });
119
+ const value = await modalContext?.onSubmit().catch(() => undefined);
120
+ if (!value?.selection)
121
+ return;
122
+ const selectedIds = value.selection.filter((x) => x !== null);
123
+ if (!selectedIds.length)
124
+ return;
125
+ // Add templates to row of picked templates and dispatch change event
126
+ __classPrivateFieldGet(this, _UmbInputTemplateElement_instances, "m", _UmbInputTemplateElement_appendTemplates).call(this, selectedIds);
116
127
  };
117
128
  _UmbInputTemplateElement_removeTemplate = function _UmbInputTemplateElement_removeTemplate(unique) {
118
129
  /*
@@ -125,6 +136,16 @@ _UmbInputTemplateElement_removeTemplate = function _UmbInputTemplateElement_remo
125
136
  BTW. its weird cause the damage of removing the default template is equally bad when there is one or more templates.
126
137
  */
127
138
  this.selectedIds = this._selectedIds.filter((x) => x !== unique);
139
+ // If the default template is removed, set the first picked template as default or reset defaultUnique.
140
+ if (unique === this.defaultUnique) {
141
+ if (this.selectedIds.length) {
142
+ this.defaultUnique = this.selectedIds[0];
143
+ }
144
+ else {
145
+ this.defaultUnique = '';
146
+ }
147
+ }
148
+ this.dispatchEvent(new UmbChangeEvent());
128
149
  };
129
150
  _UmbInputTemplateElement_openTemplate = function _UmbInputTemplateElement_openTemplate(e) {
130
151
  alert('open template modal');
@@ -45,8 +45,12 @@ let UmbTemplateCardElement = class UmbTemplateCardElement extends FormControlMix
45
45
  <uui-icon class="logo" name="icon-layout"></uui-icon>
46
46
  <strong>${this.name.length ? this.name : 'Untitled template'}</strong>
47
47
  </button>
48
- <uui-button id="bottom" label="Default template" ?disabled="${this.default}" @click="${__classPrivateFieldGet(this, _UmbTemplateCardElement_instances, "m", _UmbTemplateCardElement_setSelection)}">
49
- ${this.default ? '(Default template)' : 'Make default'}
48
+ <uui-button
49
+ id="bottom"
50
+ label="${this.localize.term('settings_defaulttemplate')}"
51
+ ?disabled="${this.default}"
52
+ @click="${__classPrivateFieldGet(this, _UmbTemplateCardElement_instances, "m", _UmbTemplateCardElement_setSelection)}">
53
+ (${this.localize.term(this.default ? 'settings_defaulttemplate' : 'grid_setAsDefault')})
50
54
  </uui-button>
51
55
  <slot name="actions"></slot>
52
56
  </div>`;