@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.
- package/dist-cms/assets/lang/en-us.js +1 -1
- package/dist-cms/assets/lang/en-us.ts +1 -1
- package/dist-cms/custom-elements.json +0 -5
- package/dist-cms/packages/core/modal/token/template-picker-modal.token.js +1 -1
- package/dist-cms/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.d.ts +1 -1
- package/dist-cms/packages/documents/document-types/workspace/views/templates/document-type-workspace-view-templates.element.js +5 -5
- package/dist-cms/packages/templating/templates/components/input-template/input-template.element.js +39 -18
- package/dist-cms/packages/templating/templates/components/template-card/template-card.element.js +6 -2
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/vscode-html-custom-data.json +1 -5
- package/package.json +2 -2
|
@@ -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
|
|
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
|
|
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',
|
|
@@ -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="
|
|
51
|
-
<umb-property-layout alias="Templates" label="
|
|
52
|
-
<div slot="description"
|
|
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
|
-
.
|
|
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>
|
package/dist-cms/packages/templating/templates/components/input-template/input-template.element.js
CHANGED
|
@@ -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
|
|
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="
|
|
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
|
|
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
|
|
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');
|
package/dist-cms/packages/templating/templates/components/template-card/template-card.element.js
CHANGED
|
@@ -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
|
|
49
|
-
|
|
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>`;
|