@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.
Files changed (29) hide show
  1. package/dist-cms/custom-elements.json +0 -16
  2. package/dist-cms/external/backend-api/index.js +1 -1
  3. package/dist-cms/external/backend-api/src/index.d.ts +9 -1
  4. package/dist-cms/external/backend-api/src/models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel.d.ts +9 -0
  5. package/dist-cms/external/backend-api/src/models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel.d.ts +9 -0
  6. package/dist-cms/external/backend-api/src/models/ContentTypeCollectionReferenceResponseModelBaseModel.d.ts +5 -0
  7. package/dist-cms/external/backend-api/src/models/DocumentCollectionResponseModel.d.ts +6 -0
  8. package/dist-cms/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.d.ts +2 -0
  9. package/dist-cms/external/backend-api/src/models/MediaCollectionResponseModel.d.ts +5 -0
  10. package/dist-cms/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.d.ts +2 -0
  11. package/dist-cms/external/backend-api/src/models/PagedDocumentCollectionResponseModel.d.ts +5 -0
  12. package/dist-cms/external/backend-api/src/models/PagedMediaCollectionResponseModel.d.ts +5 -0
  13. package/dist-cms/external/backend-api/src/services/DocumentResource.d.ts +16 -0
  14. package/dist-cms/external/backend-api/src/services/MediaResource.d.ts +29 -0
  15. package/dist-cms/external/backend-api/src/services/TemplateResource.d.ts +0 -8
  16. package/dist-cms/mocks/data/document-type/document-type.data.js +47 -0
  17. package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.d.ts +1 -0
  18. package/dist-cms/packages/documents/document-types/components/input-document-type/input-document-type.element.js +3 -0
  19. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.d.ts +1 -1
  20. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.js +63 -66
  21. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.js +5 -0
  22. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.d.ts +2 -7
  23. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.js +98 -102
  24. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.d.ts +1 -5
  25. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.js +40 -64
  26. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  27. package/dist-cms/vscode-html-custom-data.json +2 -2
  28. package/package.json +1 -1
  29. 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
- const SORTER_CONFIG = {
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.config = {
66
- ...SORTER_CONFIG,
67
- // TODO: Missing handlers to work properly: performItemMove and performItemRemove
68
- performItemInsert: async (args) => {
69
- if (!this._groups)
70
- return false;
71
- const oldIndex = this._groups.findIndex((group) => group.id === args.item.id);
72
- if (args.newIndex === oldIndex)
73
- return true;
74
- let sortOrder = 0;
75
- //TODO the sortOrder set is not correct
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.sorter?.setModel(this._groups);
78
+ __classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditTabElement_sorter, "f").setModel(this._groups);
104
79
  }
105
80
  else {
106
- this.sorter?.setModel([]);
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
- ${!this._noTabName
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
- <div id="group-list">
132
- ${repeat(this._groups, (group) => group.id ?? '' + group.name, (group) => html `<span data-umb-group-id=${ifDefined(group.id)}>
133
- <uui-box>
134
- ${this._groupStructureHelper.isOwnerChildContainer(group.id)
135
- ? html `
136
- <div slot="header">
137
- <div>
138
- ${this._sortModeActive ? html `<uui-icon name="icon-navigation"></uui-icon>` : ''}
139
-
140
- <uui-input
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
- .sorting {
218
+ [sort-mode-active] div[slot='header'] {
221
219
  cursor: grab;
222
220
  }
223
221
 
224
- .--umb-sorter-placeholder > uui-box {
225
- visibility: hidden;
222
+ .container-list {
223
+ display: grid;
224
+ gap: 10px;
226
225
  }
227
226
 
228
- .--umb-sorter-placeholder::after {
229
- content: '';
230
- inset: 0;
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 sortModeActive?;
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.config = {
43
- ...SORTER_CONFIG,
44
- // TODO: Missing handlers to work properly: performItemMove and performItemRemove
45
- performItemInsert: async (args) => {
46
- if (!this._tabs)
47
- return false;
48
- const oldIndex = this._tabs.findIndex((tab) => tab.id === args.item.id);
49
- if (args.newIndex === oldIndex)
50
- return true;
51
- let sortOrder = 0;
52
- //TODO the sortOrder set is not correct
53
- if (this._tabs.length > 0) {
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) => (this.sortModeActive = isSorting), '_observeIsSorting');
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="tabs-wrapper" class="flex">
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.sortModeActive)
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.sortModeActive
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.sortModeActive) {
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
- @keypress=${(e) => __classPrivateFieldGet(this, _UmbDocumentTypeWorkspaceViewEditElement_instances, "m", _UmbDocumentTypeWorkspaceViewEditElement_changeOrderNumber).call(this, tab, e)}></uui-input>`}
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.sortModeActive);
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
- .--umb-sorter-placeholder > * {
453
- visibility: hidden;
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, "sortModeActive", void 0);
457
+ ], UmbDocumentTypeWorkspaceViewEditElement.prototype, "_sortModeActive", void 0);
482
458
  __decorate([
483
459
  state()
484
460
  ], UmbDocumentTypeWorkspaceViewEditElement.prototype, "_buttonDisabled", void 0);