@umbraco-cms/backoffice 14.0.0--preview007-cccfbc9c → 14.0.0--preview007-02546fcd
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/custom-elements.json +0 -16
- package/dist-cms/external/backend-api/index.js +1 -1
- package/dist-cms/external/backend-api/src/index.d.ts +9 -1
- package/dist-cms/external/backend-api/src/models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel.d.ts +9 -0
- package/dist-cms/external/backend-api/src/models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel.d.ts +9 -0
- package/dist-cms/external/backend-api/src/models/ContentTypeCollectionReferenceResponseModelBaseModel.d.ts +5 -0
- package/dist-cms/external/backend-api/src/models/DocumentCollectionResponseModel.d.ts +6 -0
- package/dist-cms/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.d.ts +2 -0
- package/dist-cms/external/backend-api/src/models/MediaCollectionResponseModel.d.ts +5 -0
- package/dist-cms/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.d.ts +2 -0
- package/dist-cms/external/backend-api/src/models/PagedDocumentCollectionResponseModel.d.ts +5 -0
- package/dist-cms/external/backend-api/src/models/PagedMediaCollectionResponseModel.d.ts +5 -0
- package/dist-cms/external/backend-api/src/services/DocumentResource.d.ts +16 -0
- package/dist-cms/external/backend-api/src/services/MediaResource.d.ts +29 -0
- package/dist-cms/external/backend-api/src/services/TemplateResource.d.ts +0 -8
- package/dist-cms/mocks/data/document-type/document-type.data.js +47 -0
- package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.d.ts +1 -0
- package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.js +3 -0
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.d.ts +1 -1
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.js +63 -66
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.js +5 -0
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.d.ts +2 -7
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.js +98 -102
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.d.ts +1 -5
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.js +40 -64
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/vscode-html-custom-data.json +2 -2
- package/package.json +1 -1
- package/dist-cms/external/backend-api/src/models/TemplateScaffoldResponseModel.d.ts +0 -3
|
@@ -9,26 +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 _UmbDocumentTypeWorkspaceViewEditTabElement_onAddGroup;
|
|
12
|
+
var _UmbDocumentTypeWorkspaceViewEditTabElement_instances, _UmbDocumentTypeWorkspaceViewEditTabElement_sorter, _UmbDocumentTypeWorkspaceViewEditTabElement_onAddGroup, _UmbDocumentTypeWorkspaceViewEditTabElement_renderHeader, _UmbDocumentTypeWorkspaceViewEditTabElement_renderInputGroupName, _UmbDocumentTypeWorkspaceViewEditTabElement_renderAddGroupButton;
|
|
13
|
+
import { UmbLitElement } from '../../../../../core/lit-element/index.js';
|
|
13
14
|
import { css, html, customElement, property, state, repeat, ifDefined } from '../../../../../../external/lit/index.js';
|
|
14
15
|
import { UmbTextStyles } from '../../../../../../shared/style/index.js';
|
|
15
|
-
import { UmbContentTypeContainerStructureHelper } from '../../../../../core/content-type/index.js';
|
|
16
|
-
import { UmbLitElement } from '../../../../../core/lit-element/index.js';
|
|
16
|
+
import { UmbContentTypeContainerStructureHelper, } from '../../../../../core/content-type/index.js';
|
|
17
17
|
import { UMB_WORKSPACE_CONTEXT } from '../../../../../core/workspace/index.js';
|
|
18
|
-
import { UmbSorterController } from '../../../../../core/sorter/index.js';
|
|
19
18
|
import './document-type-workspace-view-edit-properties.element.js';
|
|
20
|
-
|
|
21
|
-
getUniqueOfElement: (element) => {
|
|
22
|
-
return element.getAttribute('data-umb-group-id');
|
|
23
|
-
},
|
|
24
|
-
getUniqueOfModel: (modelEntry) => {
|
|
25
|
-
return modelEntry.id;
|
|
26
|
-
},
|
|
27
|
-
identifier: 'content-type-group-sorter',
|
|
28
|
-
itemSelector: '[data-umb-group-id]',
|
|
29
|
-
disabledItemSelector: '[inherited]',
|
|
30
|
-
containerSelector: '#group-list',
|
|
31
|
-
};
|
|
19
|
+
import { UmbSorterController } from '../../../../../core/sorter/index.js';
|
|
32
20
|
let UmbDocumentTypeWorkspaceViewEditTabElement = class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement {
|
|
33
21
|
// TODO: get rid of this:
|
|
34
22
|
get ownerTabId() {
|
|
@@ -62,31 +50,19 @@ let UmbDocumentTypeWorkspaceViewEditTabElement = class UmbDocumentTypeWorkspaceV
|
|
|
62
50
|
}
|
|
63
51
|
constructor() {
|
|
64
52
|
super();
|
|
65
|
-
this
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (this._groups.length > 0) {
|
|
77
|
-
if (args.newIndex === 0) {
|
|
78
|
-
sortOrder = (this._groups[0].sortOrder ?? 0) - 1;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
sortOrder = (this._groups[Math.min(args.newIndex, this._groups.length - 1)].sortOrder ?? 0) + 1;
|
|
82
|
-
}
|
|
83
|
-
if (sortOrder !== args.item.sortOrder) {
|
|
84
|
-
await this._groupStructureHelper.partialUpdateContainer(args.item.id, { sortOrder });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return true;
|
|
53
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_instances.add(this);
|
|
54
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_sorter.set(this, new UmbSorterController(this, {
|
|
55
|
+
getUniqueOfElement: (element) => element.querySelector('umb-document-type-workspace-view-edit-properties').getAttribute('container-id'),
|
|
56
|
+
getUniqueOfModel: (modelEntry) => modelEntry.id,
|
|
57
|
+
identifier: 'document-type-container-sorter',
|
|
58
|
+
itemSelector: '.container-handle',
|
|
59
|
+
containerSelector: '.container-list',
|
|
60
|
+
onChange: ({ model }) => {
|
|
61
|
+
model.forEach((modelItem, index) => {
|
|
62
|
+
this._groupStructureHelper.partialUpdateContainer(modelItem.id, { sortOrder: index });
|
|
63
|
+
});
|
|
88
64
|
},
|
|
89
|
-
};
|
|
65
|
+
}));
|
|
90
66
|
this._groupStructureHelper = new UmbContentTypeContainerStructureHelper(this);
|
|
91
67
|
this._groups = [];
|
|
92
68
|
this._hasProperties = false;
|
|
@@ -94,16 +70,15 @@ let UmbDocumentTypeWorkspaceViewEditTabElement = class UmbDocumentTypeWorkspaceV
|
|
|
94
70
|
// Idea, maybe we can gather the sortOrder from the last group rendered and add 1 to it?
|
|
95
71
|
this._groupStructureHelper.addContainer(this._ownerTabId);
|
|
96
72
|
});
|
|
97
|
-
this.sorter = new UmbSorterController(this, this.config);
|
|
98
73
|
this.consumeContext(UMB_WORKSPACE_CONTEXT, (context) => {
|
|
99
74
|
this._groupStructureHelper.setStructureManager(context.structure);
|
|
100
75
|
this.observe(context.isSorting, (isSorting) => {
|
|
101
76
|
this._sortModeActive = isSorting;
|
|
102
77
|
if (isSorting) {
|
|
103
|
-
this.
|
|
78
|
+
__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_sorter, "f").setModel(this._groups);
|
|
104
79
|
}
|
|
105
80
|
else {
|
|
106
|
-
this.
|
|
81
|
+
__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_sorter, "f").setModel([]);
|
|
107
82
|
}
|
|
108
83
|
}, '_observeIsSorting');
|
|
109
84
|
});
|
|
@@ -118,7 +93,14 @@ let UmbDocumentTypeWorkspaceViewEditTabElement = class UmbDocumentTypeWorkspaceV
|
|
|
118
93
|
}
|
|
119
94
|
render() {
|
|
120
95
|
return html `
|
|
121
|
-
|
|
96
|
+
${this._sortModeActive
|
|
97
|
+
? html `<uui-button
|
|
98
|
+
id="convert-to-tab"
|
|
99
|
+
label=${this.localize.term('contentTypeEditor_convertToTab') + '(Not implemented)'}
|
|
100
|
+
look="placeholder"></uui-button>`
|
|
101
|
+
: ''}
|
|
102
|
+
|
|
103
|
+
${!this._noTabName
|
|
122
104
|
? html `
|
|
123
105
|
<uui-box>
|
|
124
106
|
<umb-document-type-workspace-view-edit-properties
|
|
@@ -128,63 +110,77 @@ let UmbDocumentTypeWorkspaceViewEditTabElement = class UmbDocumentTypeWorkspaceV
|
|
|
128
110
|
</uui-box>
|
|
129
111
|
`
|
|
130
112
|
: ''}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
label="Group name"
|
|
142
|
-
placeholder="Enter a group name"
|
|
143
|
-
value=${group.name ?? ''}
|
|
144
|
-
@change=${(e) => {
|
|
145
|
-
const newName = e.target.value;
|
|
146
|
-
this._groupStructureHelper.updateContainerName(group.id, group.parent?.id ?? null, newName);
|
|
147
|
-
}}>
|
|
148
|
-
</uui-input>
|
|
149
|
-
</div>
|
|
150
|
-
${this._sortModeActive
|
|
151
|
-
? html `<uui-input type="number" label="sort order" .value=${group.sortOrder ?? 0}></uui-input>`
|
|
152
|
-
: ''}
|
|
153
|
-
</div>
|
|
154
|
-
`
|
|
155
|
-
: html `<div slot="header">
|
|
156
|
-
<div><uui-icon name="icon-merge"></uui-icon><b>${group.name ?? ''}</b> (Inherited)</div>
|
|
157
|
-
${!this._sortModeActive
|
|
158
|
-
? html `<uui-input
|
|
159
|
-
readonly
|
|
160
|
-
type="number"
|
|
161
|
-
label="sort order"
|
|
162
|
-
.value=${group.sortOrder ?? 0}></uui-input>`
|
|
163
|
-
: ''}
|
|
164
|
-
</div>`}
|
|
165
|
-
</div>
|
|
166
|
-
<umb-document-type-workspace-view-edit-properties
|
|
167
|
-
container-id=${ifDefined(group.id)}
|
|
168
|
-
container-type="Group"
|
|
169
|
-
container-name=${group.name || ''}></umb-document-type-workspace-view-edit-properties>
|
|
170
|
-
</uui-box></span>`)}
|
|
113
|
+
<div class="container-list" ?sort-mode-active=${this._sortModeActive}>
|
|
114
|
+
${repeat(this._groups, (group) => group.id ?? '' + group.name, (group) => html `<uui-box class="container-handle">
|
|
115
|
+
${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditTabElement_renderHeader).call(this, group)}
|
|
116
|
+
<umb-document-type-workspace-view-edit-properties
|
|
117
|
+
container-id=${ifDefined(group.id)}
|
|
118
|
+
container-type="Group"
|
|
119
|
+
container-name=${group.name || ''}></umb-document-type-workspace-view-edit-properties>
|
|
120
|
+
</uui-box> `)}
|
|
121
|
+
</div>
|
|
122
|
+
${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditTabElement_renderAddGroupButton).call(this)}
|
|
171
123
|
</div>
|
|
172
|
-
${!this._sortModeActive
|
|
173
|
-
? html `<uui-button
|
|
174
|
-
label=${this.localize.term('contentTypeEditor_addGroup')}
|
|
175
|
-
id="add"
|
|
176
|
-
look="placeholder"
|
|
177
|
-
@click=${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_onAddGroup, "f")}>
|
|
178
|
-
${this.localize.term('contentTypeEditor_addGroup')}
|
|
179
|
-
</uui-button>`
|
|
180
|
-
: ''}
|
|
181
124
|
`;
|
|
182
125
|
}
|
|
183
126
|
};
|
|
127
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_sorter = new WeakMap();
|
|
184
128
|
_UmbDocumentTypeWorkspaceViewEditTabElement_onAddGroup = new WeakMap();
|
|
129
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_instances = new WeakSet();
|
|
130
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_renderHeader = function _UmbDocumentTypeWorkspaceViewEditTabElement_renderHeader(group) {
|
|
131
|
+
const inherited = !this._groupStructureHelper.isOwnerChildContainer(group.id);
|
|
132
|
+
if (this._sortModeActive) {
|
|
133
|
+
return html `<div slot="header">
|
|
134
|
+
<div>
|
|
135
|
+
<uui-icon name=${inherited ? 'icon-merge' : 'icon-navigation'}></uui-icon>
|
|
136
|
+
${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditTabElement_renderInputGroupName).call(this, group)}
|
|
137
|
+
</div>
|
|
138
|
+
<uui-input
|
|
139
|
+
type="number"
|
|
140
|
+
label=${this.localize.term('sort_sortOrder')}
|
|
141
|
+
@change=${(e) => {
|
|
142
|
+
this._groupStructureHelper.partialUpdateContainer(group.id, {
|
|
143
|
+
sortOrder: parseInt(e.target.value) || 0,
|
|
144
|
+
});
|
|
145
|
+
}}
|
|
146
|
+
.value=${group.sortOrder || 0}
|
|
147
|
+
?disabled=${inherited}></uui-input>
|
|
148
|
+
</div> `;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return html `<div slot="header">
|
|
152
|
+
${inherited ? html `<uui-icon name="icon-merge"></uui-icon>` : __classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditTabElement_renderInputGroupName).call(this, group)}
|
|
153
|
+
</div> `;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_renderInputGroupName = function _UmbDocumentTypeWorkspaceViewEditTabElement_renderInputGroupName(group) {
|
|
157
|
+
return html `<uui-input
|
|
158
|
+
label=${this.localize.term('contentTypeEditor_group')}
|
|
159
|
+
placeholder=${this.localize.term('placeholders_entername')}
|
|
160
|
+
.value=${group.name}
|
|
161
|
+
@change=${(e) => {
|
|
162
|
+
const newName = e.target.value;
|
|
163
|
+
this._groupStructureHelper.updateContainerName(group.id, group.parent?.id ?? null, newName);
|
|
164
|
+
}}></uui-input>`;
|
|
165
|
+
};
|
|
166
|
+
_UmbDocumentTypeWorkspaceViewEditTabElement_renderAddGroupButton = function _UmbDocumentTypeWorkspaceViewEditTabElement_renderAddGroupButton() {
|
|
167
|
+
if (this._sortModeActive)
|
|
168
|
+
return;
|
|
169
|
+
return html `<uui-button
|
|
170
|
+
label=${this.localize.term('contentTypeEditor_addGroup')}
|
|
171
|
+
id="add"
|
|
172
|
+
look="placeholder"
|
|
173
|
+
@click=${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_onAddGroup, "f")}>
|
|
174
|
+
${this.localize.term('contentTypeEditor_addGroup')}
|
|
175
|
+
</uui-button>`;
|
|
176
|
+
};
|
|
185
177
|
UmbDocumentTypeWorkspaceViewEditTabElement.styles = [
|
|
186
178
|
UmbTextStyles,
|
|
187
179
|
css `
|
|
180
|
+
[drag-placeholder] {
|
|
181
|
+
opacity: 0.2;
|
|
182
|
+
}
|
|
183
|
+
|
|
188
184
|
#add {
|
|
189
185
|
width: 100%;
|
|
190
186
|
}
|
|
@@ -192,6 +188,7 @@ UmbDocumentTypeWorkspaceViewEditTabElement.styles = [
|
|
|
192
188
|
#add:first-child {
|
|
193
189
|
margin-top: var(--uui-size-layout-1);
|
|
194
190
|
}
|
|
191
|
+
|
|
195
192
|
uui-box {
|
|
196
193
|
margin-bottom: var(--uui-size-layout-1);
|
|
197
194
|
}
|
|
@@ -202,6 +199,7 @@ UmbDocumentTypeWorkspaceViewEditTabElement.styles = [
|
|
|
202
199
|
}
|
|
203
200
|
|
|
204
201
|
div[slot='header'] {
|
|
202
|
+
flex: 1;
|
|
205
203
|
display: flex;
|
|
206
204
|
align-items: center;
|
|
207
205
|
justify-content: space-between;
|
|
@@ -217,20 +215,18 @@ UmbDocumentTypeWorkspaceViewEditTabElement.styles = [
|
|
|
217
215
|
max-width: 75px;
|
|
218
216
|
}
|
|
219
217
|
|
|
220
|
-
|
|
218
|
+
[sort-mode-active] div[slot='header'] {
|
|
221
219
|
cursor: grab;
|
|
222
220
|
}
|
|
223
221
|
|
|
224
|
-
|
|
225
|
-
|
|
222
|
+
.container-list {
|
|
223
|
+
display: grid;
|
|
224
|
+
gap: 10px;
|
|
226
225
|
}
|
|
227
226
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
position: absolute;
|
|
232
|
-
border-radius: var(--uui-border-radius);
|
|
233
|
-
border: 1px dashed var(--uui-color-divider-emphasis);
|
|
227
|
+
#convert-to-tab {
|
|
228
|
+
margin-bottom: var(--uui-size-layout-1);
|
|
229
|
+
display: flex;
|
|
234
230
|
}
|
|
235
231
|
`,
|
|
236
232
|
];
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { UmbLitElement } from '../../../../../core/lit-element/index.js';
|
|
2
2
|
import { type PropertyTypeContainerModelBaseModel } from '../../../../../../external/backend-api/index.js';
|
|
3
3
|
import type { UmbWorkspaceViewElement } from '../../../../../core/extension-registry/index.js';
|
|
4
|
-
import type { UmbSorterConfig } from '../../../../../core/sorter/index.js';
|
|
5
|
-
import { UmbSorterController } from '../../../../../core/sorter/index.js';
|
|
6
4
|
export declare class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement implements UmbWorkspaceViewElement {
|
|
7
5
|
#private;
|
|
8
|
-
sorter?: UmbSorterController<PropertyTypeContainerModelBaseModel>;
|
|
9
|
-
config: UmbSorterConfig<PropertyTypeContainerModelBaseModel>;
|
|
10
6
|
private _hasRootGroups;
|
|
11
7
|
private _routes;
|
|
12
8
|
_tabs?: Array<PropertyTypeContainerModelBaseModel>;
|
|
13
9
|
private _routerPath?;
|
|
14
10
|
private _activePath;
|
|
15
|
-
private
|
|
11
|
+
private _sortModeActive?;
|
|
16
12
|
private _buttonDisabled;
|
|
17
13
|
private _workspaceContext?;
|
|
18
14
|
private _tabsStructureHelper;
|
|
@@ -9,7 +9,7 @@ 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 _UmbDocumentTypeWorkspaceViewEditElement_instances, _UmbDocumentTypeWorkspaceViewEditElement_changeMode, _UmbDocumentTypeWorkspaceViewEditElement_requestRemoveTab, _UmbDocumentTypeWorkspaceViewEditElement_remove, _UmbDocumentTypeWorkspaceViewEditElement_addTab, _UmbDocumentTypeWorkspaceViewEditElement_focusInput, _UmbDocumentTypeWorkspaceViewEditElement_tabNameChanged, _UmbDocumentTypeWorkspaceViewEditElement_openCompositionModal, _UmbDocumentTypeWorkspaceViewEditElement_changeOrderNumber;
|
|
12
|
+
var _UmbDocumentTypeWorkspaceViewEditElement_instances, _UmbDocumentTypeWorkspaceViewEditElement_sorter, _UmbDocumentTypeWorkspaceViewEditElement_changeMode, _UmbDocumentTypeWorkspaceViewEditElement_requestRemoveTab, _UmbDocumentTypeWorkspaceViewEditElement_remove, _UmbDocumentTypeWorkspaceViewEditElement_addTab, _UmbDocumentTypeWorkspaceViewEditElement_focusInput, _UmbDocumentTypeWorkspaceViewEditElement_tabNameChanged, _UmbDocumentTypeWorkspaceViewEditElement_openCompositionModal, _UmbDocumentTypeWorkspaceViewEditElement_changeOrderNumber;
|
|
13
13
|
import { UMB_COMPOSITION_PICKER_MODAL } from '../../../modals/index.js';
|
|
14
14
|
import { css, html, customElement, state, repeat, nothing, ifDefined } from '../../../../../../external/lit/index.js';
|
|
15
15
|
import { UmbContentTypeContainerStructureHelper } from '../../../../../core/content-type/index.js';
|
|
@@ -20,57 +20,30 @@ import { UMB_WORKSPACE_CONTEXT } from '../../../../../core/workspace/index.js';
|
|
|
20
20
|
import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '../../../../../core/modal/index.js';
|
|
21
21
|
import { UmbTextStyles } from '../../../../../../shared/style/index.js';
|
|
22
22
|
import { UmbSorterController } from '../../../../../core/sorter/index.js';
|
|
23
|
-
const SORTER_CONFIG = {
|
|
24
|
-
getUniqueOfElement: (element) => {
|
|
25
|
-
return element.getAttribute('data-umb-tabs-id');
|
|
26
|
-
},
|
|
27
|
-
getUniqueOfModel: (modelEntry) => {
|
|
28
|
-
return modelEntry.id;
|
|
29
|
-
},
|
|
30
|
-
identifier: 'content-type-tabs-sorter',
|
|
31
|
-
itemSelector: '[data-umb-tabs-id]',
|
|
32
|
-
containerSelector: '#tabs-group',
|
|
33
|
-
disabledItemSelector: '[inherited]',
|
|
34
|
-
resolveVerticalDirection: () => {
|
|
35
|
-
return false;
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
23
|
let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement {
|
|
39
24
|
constructor() {
|
|
40
25
|
super();
|
|
41
26
|
_UmbDocumentTypeWorkspaceViewEditElement_instances.add(this);
|
|
42
|
-
this
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (args.newIndex === 0) {
|
|
55
|
-
sortOrder = (this._tabs[0].sortOrder ?? 0) - 1;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
sortOrder = (this._tabs[Math.min(args.newIndex, this._tabs.length - 1)].sortOrder ?? 0) + 1;
|
|
59
|
-
}
|
|
60
|
-
if (sortOrder !== args.item.sortOrder) {
|
|
61
|
-
await this._tabsStructureHelper.partialUpdateContainer(args.item.id, { sortOrder });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
27
|
+
_UmbDocumentTypeWorkspaceViewEditElement_sorter.set(this, new UmbSorterController(this, {
|
|
28
|
+
getUniqueOfElement: (element) => element.getAttribute('data-umb-tabs-id'),
|
|
29
|
+
getUniqueOfModel: (modelEntry) => modelEntry.id,
|
|
30
|
+
identifier: 'document-type-tabs-sorter',
|
|
31
|
+
itemSelector: 'uui-tab',
|
|
32
|
+
containerSelector: 'uui-tab-group',
|
|
33
|
+
disabledItemSelector: '#root-tab',
|
|
34
|
+
resolveVerticalDirection: () => false,
|
|
35
|
+
onChange: ({ model }) => {
|
|
36
|
+
model.forEach((modelItem, index) => {
|
|
37
|
+
this._tabsStructureHelper.partialUpdateContainer(modelItem.id, { sortOrder: index });
|
|
38
|
+
});
|
|
65
39
|
},
|
|
66
|
-
};
|
|
40
|
+
}));
|
|
67
41
|
//private _hasRootProperties = false;
|
|
68
42
|
this._hasRootGroups = false;
|
|
69
43
|
this._routes = [];
|
|
70
44
|
this._activePath = '';
|
|
71
45
|
this._buttonDisabled = false;
|
|
72
46
|
this._tabsStructureHelper = new UmbContentTypeContainerStructureHelper(this);
|
|
73
|
-
this.sorter = new UmbSorterController(this, this.config);
|
|
74
47
|
//TODO: We need to differentiate between local and composition tabs (and hybrids)
|
|
75
48
|
this._tabsStructureHelper.setIsRoot(true);
|
|
76
49
|
this._tabsStructureHelper.setContainerChildType('Tab');
|
|
@@ -82,7 +55,15 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
82
55
|
this.consumeContext(UMB_WORKSPACE_CONTEXT, (workspaceContext) => {
|
|
83
56
|
this._workspaceContext = workspaceContext;
|
|
84
57
|
this._tabsStructureHelper.setStructureManager(workspaceContext.structure);
|
|
85
|
-
this.observe(this._workspaceContext.isSorting, (isSorting) =>
|
|
58
|
+
this.observe(this._workspaceContext.isSorting, (isSorting) => {
|
|
59
|
+
this._sortModeActive = isSorting;
|
|
60
|
+
if (isSorting) {
|
|
61
|
+
__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditElement_sorter, "f").setModel(this._tabs);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditElement_sorter, "f").setModel([]);
|
|
65
|
+
}
|
|
66
|
+
}, '_observeIsSorting');
|
|
86
67
|
const unique = this._workspaceContext.getEntityId();
|
|
87
68
|
//TODO Figure out the correct data that needs to be sent to the compositions modal. Do we really have to send isElement, currentPropertyAliases - isn't unique enough?
|
|
88
69
|
this.observe(this._workspaceContext.structure.contentTypes, (contentTypes) => {
|
|
@@ -151,7 +132,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
151
132
|
return html `
|
|
152
133
|
<umb-body-layout header-fit-height>
|
|
153
134
|
<div id="header" slot="header">
|
|
154
|
-
<div id="
|
|
135
|
+
<div id="container-list" class="flex">
|
|
155
136
|
${this._routerPath ? this.renderTabsNavigation() : ''} ${this.renderAddButton()}
|
|
156
137
|
</div>
|
|
157
138
|
${this.renderActions()}
|
|
@@ -169,7 +150,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
169
150
|
`;
|
|
170
151
|
}
|
|
171
152
|
renderAddButton() {
|
|
172
|
-
if (this.
|
|
153
|
+
if (this._sortModeActive)
|
|
173
154
|
return;
|
|
174
155
|
return html `<uui-button id="add-tab" @click="${__classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditElement_addTab)}" label="Add tab" compact>
|
|
175
156
|
<uui-icon name="icon-add"></uui-icon>
|
|
@@ -177,7 +158,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
177
158
|
</uui-button>`;
|
|
178
159
|
}
|
|
179
160
|
renderActions() {
|
|
180
|
-
const sortButtonText = this.
|
|
161
|
+
const sortButtonText = this._sortModeActive
|
|
181
162
|
? this.localize.term('general_reorderDone')
|
|
182
163
|
: this.localize.term('general_reorder');
|
|
183
164
|
return html `<div class="tab-actions">
|
|
@@ -209,6 +190,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
209
190
|
const rootTabPath = this._routerPath + '/root';
|
|
210
191
|
const rootTabActive = rootTabPath === this._activePath;
|
|
211
192
|
return html `<uui-tab
|
|
193
|
+
id="root-tab"
|
|
212
194
|
class=${this._hasRootGroups || rootTabActive ? '' : 'content-tab-is-empty'}
|
|
213
195
|
label=${this.localize.term('general_content')}
|
|
214
196
|
.active=${rootTabActive}
|
|
@@ -229,7 +211,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
229
211
|
</uui-tab>`;
|
|
230
212
|
}
|
|
231
213
|
renderTabInner(tab, tabActive, tabInherited) {
|
|
232
|
-
if (this.
|
|
214
|
+
if (this._sortModeActive) {
|
|
233
215
|
return html `<div class="no-edit">
|
|
234
216
|
${tabInherited
|
|
235
217
|
? html `<uui-icon class="external" name="icon-merge"></uui-icon>${tab.name}`
|
|
@@ -239,7 +221,7 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
239
221
|
type="number"
|
|
240
222
|
value=${ifDefined(tab.sortOrder)}
|
|
241
223
|
style="width:50px"
|
|
242
|
-
@
|
|
224
|
+
@change=${(e) => __classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditElement_changeOrderNumber).call(this, tab, e)}></uui-input>`}
|
|
243
225
|
</div>`;
|
|
244
226
|
}
|
|
245
227
|
if (tabActive && !tabInherited) {
|
|
@@ -278,15 +260,10 @@ let UmbDocumentTypeWorkspaceViewEditElement = class UmbDocumentTypeWorkspaceView
|
|
|
278
260
|
</uui-button>`;
|
|
279
261
|
}
|
|
280
262
|
};
|
|
263
|
+
_UmbDocumentTypeWorkspaceViewEditElement_sorter = new WeakMap();
|
|
281
264
|
_UmbDocumentTypeWorkspaceViewEditElement_instances = new WeakSet();
|
|
282
265
|
_UmbDocumentTypeWorkspaceViewEditElement_changeMode = function _UmbDocumentTypeWorkspaceViewEditElement_changeMode() {
|
|
283
|
-
this._workspaceContext?.setIsSorting(!this.
|
|
284
|
-
if (this.sortModeActive && this._tabs) {
|
|
285
|
-
this.sorter?.setModel(this._tabs);
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
this.sorter?.setModel([]);
|
|
289
|
-
}
|
|
266
|
+
this._workspaceContext?.setIsSorting(!this._sortModeActive);
|
|
290
267
|
};
|
|
291
268
|
_UmbDocumentTypeWorkspaceViewEditElement_requestRemoveTab = function _UmbDocumentTypeWorkspaceViewEditElement_requestRemoveTab(tab) {
|
|
292
269
|
const modalData = {
|
|
@@ -389,7 +366,12 @@ UmbDocumentTypeWorkspaceViewEditElement.styles = [
|
|
|
389
366
|
--uui-tab-background: var(--uui-color-surface);
|
|
390
367
|
}
|
|
391
368
|
|
|
369
|
+
[drag-placeholder] {
|
|
370
|
+
opacity: 0.2;
|
|
371
|
+
}
|
|
372
|
+
|
|
392
373
|
/* TODO: This should be replaced with a general workspace bar — naming is hard */
|
|
374
|
+
|
|
393
375
|
#header {
|
|
394
376
|
width: 100%;
|
|
395
377
|
display: flex;
|
|
@@ -401,6 +383,7 @@ UmbDocumentTypeWorkspaceViewEditElement.styles = [
|
|
|
401
383
|
.flex {
|
|
402
384
|
display: flex;
|
|
403
385
|
}
|
|
386
|
+
|
|
404
387
|
uui-tab-group {
|
|
405
388
|
flex-wrap: nowrap;
|
|
406
389
|
}
|
|
@@ -449,15 +432,8 @@ UmbDocumentTypeWorkspaceViewEditElement.styles = [
|
|
|
449
432
|
vertical-align: sub;
|
|
450
433
|
}
|
|
451
434
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
.--umb-sorter-placeholder::after {
|
|
457
|
-
content: '';
|
|
458
|
-
position: absolute;
|
|
459
|
-
inset: 2px;
|
|
460
|
-
border: 1px dashed var(--uui-color-divider-emphasis);
|
|
435
|
+
[drag-placeholder] {
|
|
436
|
+
opacity: 0.2;
|
|
461
437
|
}
|
|
462
438
|
`,
|
|
463
439
|
];
|
|
@@ -478,7 +454,7 @@ __decorate([
|
|
|
478
454
|
], UmbDocumentTypeWorkspaceViewEditElement.prototype, "_activePath", void 0);
|
|
479
455
|
__decorate([
|
|
480
456
|
state()
|
|
481
|
-
], UmbDocumentTypeWorkspaceViewEditElement.prototype, "
|
|
457
|
+
], UmbDocumentTypeWorkspaceViewEditElement.prototype, "_sortModeActive", void 0);
|
|
482
458
|
__decorate([
|
|
483
459
|
state()
|
|
484
460
|
], UmbDocumentTypeWorkspaceViewEditElement.prototype, "_buttonDisabled", void 0);
|