@umbraco-cms/backoffice 14.0.0--preview007-2aa9121f → 14.0.0--preview007-bcd459cf

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 (58) hide show
  1. package/dist-cms/custom-elements.json +98 -0
  2. package/dist-cms/external/backend-api/index.js +1 -1
  3. package/dist-cms/external/backend-api/src/models/DataTypeItemResponseModel.d.ts +1 -0
  4. package/dist-cms/external/backend-api/src/models/DataTypeResponseModel.d.ts +1 -0
  5. package/dist-cms/external/backend-api/src/models/DataTypeTreeItemResponseModel.d.ts +1 -0
  6. package/dist-cms/external/backend-api/src/services/MemberResource.d.ts +12 -12
  7. package/dist-cms/external/backend-api/src/services/TemporaryFileResource.d.ts +4 -4
  8. package/dist-cms/external/backend-api/src/services/UserResource.d.ts +13 -13
  9. package/dist-cms/mocks/data/data-type/data-type.data.js +39 -0
  10. package/dist-cms/mocks/data/data-type/data-type.db.js +4 -0
  11. package/dist-cms/mocks/data/dictionary/dictionary.data.js +6 -6
  12. package/dist-cms/mocks/data/document/document.db.js +1 -1
  13. package/dist-cms/mocks/data/language/language.data.js +2 -2
  14. package/dist-cms/mocks/handlers/dictionary/import-export.handlers.js +2 -2
  15. package/dist-cms/packages/core/components/index.d.ts +1 -0
  16. package/dist-cms/packages/core/components/index.js +1 -0
  17. package/dist-cms/packages/core/components/split-panel/index.d.ts +2 -0
  18. package/dist-cms/packages/core/components/split-panel/index.js +2 -0
  19. package/dist-cms/packages/core/components/split-panel/split-panel.element.d.ts +47 -0
  20. package/dist-cms/packages/core/components/split-panel/split-panel.element.js +298 -0
  21. package/dist-cms/packages/core/debug/debug.element.d.ts +1 -1
  22. package/dist-cms/packages/core/debug/debug.element.js +17 -16
  23. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.d.ts +8 -2
  24. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.js +4 -1
  25. package/dist-cms/packages/core/section/section-default.element.js +25 -10
  26. package/dist-cms/packages/core/temporary-file/temporary-file.server.data-source.js +3 -3
  27. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +2 -2
  28. package/dist-cms/packages/documents/documents/entity-actions/publish.action.d.ts +1 -0
  29. package/dist-cms/packages/documents/documents/entity-actions/publish.action.js +21 -3
  30. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.d.ts +1 -0
  31. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.js +21 -3
  32. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.d.ts +34 -0
  33. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.js +104 -0
  34. package/dist-cms/packages/documents/documents/global-contexts/index.d.ts +1 -0
  35. package/dist-cms/packages/documents/documents/global-contexts/index.js +1 -0
  36. package/dist-cms/packages/documents/documents/global-contexts/manifests.d.ts +2 -0
  37. package/dist-cms/packages/documents/documents/global-contexts/manifests.js +8 -0
  38. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  39. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.element.js +5 -0
  40. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.token.js +0 -1
  41. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +20 -12
  42. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +1 -1
  43. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +18 -42
  44. package/dist-cms/packages/language/app-language-select/app-language-select.element.js +2 -2
  45. package/dist-cms/packages/language/app-language-select/manifests.js +0 -6
  46. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.d.ts +1 -0
  47. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.js +1 -0
  48. package/dist-cms/packages/language/global-contexts/index.d.ts +1 -0
  49. package/dist-cms/packages/language/global-contexts/index.js +1 -0
  50. package/dist-cms/packages/language/global-contexts/manifests.d.ts +2 -0
  51. package/dist-cms/packages/language/global-contexts/manifests.js +8 -0
  52. package/dist-cms/packages/language/index.d.ts +1 -0
  53. package/dist-cms/packages/language/index.js +1 -0
  54. package/dist-cms/packages/language/manifests.js +2 -0
  55. package/dist-cms/packages/user/user/collection/repository/user-collection.server.data-source.js +1 -1
  56. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  57. package/dist-cms/vscode-html-custom-data.json +30 -0
  58. package/package.json +1 -1
@@ -0,0 +1,298 @@
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
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var _UmbSplitPanelElement_instances, _UmbSplitPanelElement_lockedPanelWidth, _UmbSplitPanelElement_resizeObserver, _UmbSplitPanelElement_SNAP_THRESHOLD, _UmbSplitPanelElement_hasBothPanels_get, _UmbSplitPanelElement_hasInitialized, _UmbSplitPanelElement_clamp, _UmbSplitPanelElement_onResize, _UmbSplitPanelElement_setPosition, _UmbSplitPanelElement_updateSplit, _UmbSplitPanelElement_onDragStart, _UmbSplitPanelElement_disconnect, _UmbSplitPanelElement_connect, _UmbSplitPanelElement_onSlotChanged;
19
+ import { LitElement, css, customElement, html, property, query, state, } from '../../../../external/lit/index.js';
20
+ /**
21
+ * Custom element for a split panel with adjustable divider.
22
+ * @element umb-split-panel
23
+ * @slot start - Content for the start panel.
24
+ * @slot end - Content for the end panel.
25
+ * @cssprop --umb-split-panel-initial-position - Initial position of the divider.
26
+ * @cssprop --umb-split-panel-start-min-width - Minimum width of the start panel.
27
+ * @cssprop --umb-split-panel-end-min-width - Minimum width of the end panel.
28
+ * @cssprop --umb-split-panel-divider-touch-area-width - Width of the divider touch area.
29
+ * @cssprop --umb-split-panel-divider-width - Width of the divider.
30
+ * @cssprop --umb-split-panel-divider-color - Color of the divider.
31
+ */
32
+ let UmbSplitPanelElement = class UmbSplitPanelElement extends LitElement {
33
+ constructor() {
34
+ super(...arguments);
35
+ _UmbSplitPanelElement_instances.add(this);
36
+ /**
37
+ * Locking mode for the split panel.
38
+ * Possible values: "start", "end", "none" (default).
39
+ */
40
+ this.lock = 'none';
41
+ /**
42
+ * Initial position of the divider.
43
+ * Pixel or percent value: e.g., "100px" or "25%".
44
+ * Defaults to a CSS variable if not set: "var(--umb-split-panel-initial-position) which defaults to 50%".
45
+ */
46
+ this.position = 'var(--umb-split-panel-initial-position)';
47
+ //TODO: Add support for negative values (relative to end of container) similar to snap points.
48
+ /** Width of the locked panel when in "start" or "end" lock mode */
49
+ _UmbSplitPanelElement_lockedPanelWidth.set(this, 0);
50
+ /** Resize observer for tracking container size changes. */
51
+ _UmbSplitPanelElement_resizeObserver.set(this, void 0);
52
+ /** Pixel value for the snap threshold. Determines how close the divider needs to be to a snap point to snap to it. */
53
+ _UmbSplitPanelElement_SNAP_THRESHOLD.set(this, 25);
54
+ this._hasStartPanel = false;
55
+ this._hasEndPanel = false;
56
+ _UmbSplitPanelElement_hasInitialized.set(this, false);
57
+ _UmbSplitPanelElement_onDragStart.set(this, (event) => {
58
+ event.preventDefault();
59
+ const move = (event) => {
60
+ const { clientX } = event;
61
+ const { left, width } = this.mainElement.getBoundingClientRect();
62
+ const localPos = __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_clamp).call(this, clientX - left, 0, width);
63
+ const mappedPos = mapXAxisToSnap(localPos, width);
64
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_lockedPanelWidth, this.lock === 'start' ? mappedPos : width - mappedPos, "f");
65
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, mappedPos);
66
+ };
67
+ function stop() {
68
+ document.removeEventListener('pointermove', move);
69
+ document.removeEventListener('pointerup', stop);
70
+ }
71
+ const mapXAxisToSnap = (xPos, containerWidth) => {
72
+ const snaps = this.snap?.split(' ');
73
+ if (!snaps)
74
+ return xPos;
75
+ const snapsInPixels = snaps.map((snap) => {
76
+ let snapPx = parseFloat(snap);
77
+ if (snap.endsWith('%')) {
78
+ snapPx = (snapPx / 100) * containerWidth;
79
+ }
80
+ if (snap.startsWith('-')) {
81
+ snapPx = containerWidth + snapPx;
82
+ }
83
+ return snapPx;
84
+ });
85
+ const closestSnap = snapsInPixels.reduce((prev, curr) => {
86
+ return Math.abs(curr - xPos) < Math.abs(prev - xPos) ? curr : prev;
87
+ });
88
+ if (closestSnap < xPos + __classPrivateFieldGet(this, _UmbSplitPanelElement_SNAP_THRESHOLD, "f") && closestSnap > xPos - __classPrivateFieldGet(this, _UmbSplitPanelElement_SNAP_THRESHOLD, "f")) {
89
+ xPos = closestSnap;
90
+ }
91
+ return xPos;
92
+ };
93
+ document.addEventListener('pointermove', move, { passive: true });
94
+ document.addEventListener('pointerup', stop);
95
+ });
96
+ }
97
+ disconnectedCallback() {
98
+ super.disconnectedCallback();
99
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_disconnect).call(this);
100
+ }
101
+ updated(_changedProperties) {
102
+ super.updated(_changedProperties);
103
+ if (!__classPrivateFieldGet(this, _UmbSplitPanelElement_hasInitialized, "f"))
104
+ return;
105
+ if (_changedProperties.has('position')) {
106
+ if (this.lock !== 'none') {
107
+ const { width } = this.mainElement.getBoundingClientRect();
108
+ let pos = parseFloat(this.position);
109
+ if (this.position.endsWith('%')) {
110
+ pos = (pos / 100) * width;
111
+ }
112
+ const lockedPanelWidth = this.lock === 'start' ? pos : width - pos;
113
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_lockedPanelWidth, lockedPanelWidth, "f");
114
+ }
115
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_updateSplit).call(this);
116
+ }
117
+ }
118
+ render() {
119
+ console.log('render', this._hasStartPanel, this._hasEndPanel);
120
+ return html `
121
+ <div id="main">
122
+ <slot
123
+ name="start"
124
+ @slotchange=${__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onSlotChanged)}
125
+ style="width: ${this._hasStartPanel ? '100%' : '0'}"></slot>
126
+ <div id="divider">
127
+ <div id="divider-touch-area" tabindex="0"></div>
128
+ </div>
129
+ <slot name="end" @slotchange=${__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onSlotChanged)} style="width: ${this._hasEndPanel ? '100%' : '0'}"></slot>
130
+ </div>
131
+ `;
132
+ }
133
+ };
134
+ _UmbSplitPanelElement_lockedPanelWidth = new WeakMap();
135
+ _UmbSplitPanelElement_resizeObserver = new WeakMap();
136
+ _UmbSplitPanelElement_SNAP_THRESHOLD = new WeakMap();
137
+ _UmbSplitPanelElement_hasInitialized = new WeakMap();
138
+ _UmbSplitPanelElement_onDragStart = new WeakMap();
139
+ _UmbSplitPanelElement_instances = new WeakSet();
140
+ _UmbSplitPanelElement_hasBothPanels_get = function _UmbSplitPanelElement_hasBothPanels_get() {
141
+ return this._hasStartPanel && this._hasEndPanel;
142
+ };
143
+ _UmbSplitPanelElement_clamp = function _UmbSplitPanelElement_clamp(value, min, max) {
144
+ return Math.min(Math.max(value, min), max);
145
+ };
146
+ _UmbSplitPanelElement_onResize = function _UmbSplitPanelElement_onResize(entries) {
147
+ const mainContainerWidth = entries[0].contentRect.width;
148
+ if (this.lock === 'start') {
149
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f"));
150
+ }
151
+ if (this.lock === 'end') {
152
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, mainContainerWidth - __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f"));
153
+ }
154
+ };
155
+ _UmbSplitPanelElement_setPosition = function _UmbSplitPanelElement_setPosition(pos) {
156
+ const { width } = this.mainElement.getBoundingClientRect();
157
+ const localPos = __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_clamp).call(this, pos, 0, width);
158
+ const percentagePos = (localPos / width) * 100;
159
+ this.position = percentagePos + '%';
160
+ };
161
+ _UmbSplitPanelElement_updateSplit = function _UmbSplitPanelElement_updateSplit() {
162
+ // If lock is none
163
+ let maxStartWidth = this.position;
164
+ let maxEndWidth = '1fr';
165
+ if (this.lock === 'start') {
166
+ maxStartWidth = __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f") + 'px';
167
+ maxEndWidth = `1fr`;
168
+ }
169
+ if (this.lock === 'end') {
170
+ maxStartWidth = `1fr`;
171
+ maxEndWidth = __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f") + 'px';
172
+ }
173
+ this.mainElement.style.gridTemplateColumns = `
174
+ minmax(var(--umb-split-panel-start-min-width), ${maxStartWidth})
175
+ 0px
176
+ minmax(var(--umb-split-panel-end-min-width), ${maxEndWidth})
177
+ `;
178
+ };
179
+ _UmbSplitPanelElement_disconnect = function _UmbSplitPanelElement_disconnect() {
180
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_resizeObserver, "f")?.unobserve(this);
181
+ this.dividerTouchAreaElement.removeEventListener('pointerdown', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
182
+ this.dividerTouchAreaElement.removeEventListener('touchstart', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
183
+ this.dividerElement.style.display = 'none';
184
+ this.mainElement.style.display = 'flex';
185
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_hasInitialized, false, "f");
186
+ };
187
+ _UmbSplitPanelElement_connect = async function _UmbSplitPanelElement_connect() {
188
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_hasInitialized, true, "f");
189
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_resizeObserver, new ResizeObserver(__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onResize).bind(this)), "f");
190
+ this.mainElement.style.display = 'grid';
191
+ this.mainElement.style.gridTemplateColumns = `${this.position} 0px 1fr`;
192
+ this.dividerElement.style.display = 'unset';
193
+ this.dividerTouchAreaElement.addEventListener('pointerdown', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
194
+ this.dividerTouchAreaElement.addEventListener('touchstart', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"), { passive: false });
195
+ // Wait for the next frame to get the correct position of the divider.
196
+ await new Promise((resolve) => requestAnimationFrame(resolve));
197
+ const { left: dividerLeft } = this.shadowRoot.querySelector('#divider').getBoundingClientRect();
198
+ const { left: mainLeft, width: mainWidth } = this.mainElement.getBoundingClientRect();
199
+ const percentagePos = ((dividerLeft - mainLeft) / mainWidth) * 100;
200
+ this.position = `${percentagePos}%`;
201
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_resizeObserver, "f")?.observe(this);
202
+ };
203
+ _UmbSplitPanelElement_onSlotChanged = function _UmbSplitPanelElement_onSlotChanged(event) {
204
+ const slot = event.target;
205
+ const name = slot.name;
206
+ if (name === 'start') {
207
+ this._hasStartPanel = slot.assignedElements().length > 0;
208
+ }
209
+ if (name === 'end') {
210
+ this._hasEndPanel = slot.assignedElements().length > 0;
211
+ }
212
+ if (!__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "a", _UmbSplitPanelElement_hasBothPanels_get)) {
213
+ if (__classPrivateFieldGet(this, _UmbSplitPanelElement_hasInitialized, "f")) {
214
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_disconnect).call(this);
215
+ }
216
+ return;
217
+ }
218
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_connect).call(this);
219
+ };
220
+ UmbSplitPanelElement.styles = css `
221
+ :host {
222
+ display: contents;
223
+ --umb-split-panel-initial-position: 50%;
224
+ --umb-split-panel-start-min-width: 0;
225
+ --umb-split-panel-end-min-width: 0;
226
+
227
+ --umb-split-panel-divider-touch-area-width: 20px;
228
+ --umb-split-panel-divider-width: 1px;
229
+ --umb-split-panel-divider-color: transparent;
230
+ }
231
+ slot {
232
+ overflow: hidden;
233
+ display: block;
234
+ }
235
+ #main {
236
+ width: 100%;
237
+ height: 100%;
238
+ display: flex;
239
+ position: relative;
240
+ z-index: 0;
241
+ overflow: hidden;
242
+ }
243
+ #divider {
244
+ height: 100%;
245
+ position: relative;
246
+ z-index: 999999;
247
+ display: none;
248
+ }
249
+ #divider-touch-area {
250
+ position: absolute;
251
+ top: 0;
252
+ left: 0;
253
+ height: 100%;
254
+ width: var(--umb-split-panel-divider-touch-area-width);
255
+ transform: translateX(-50%);
256
+ cursor: col-resize;
257
+ }
258
+ /* Do we want a line that shows the divider? */
259
+ #divider::after {
260
+ content: '';
261
+ position: absolute;
262
+ top: 0;
263
+ left: 50%;
264
+ width: var(--umb-split-panel-divider-width);
265
+ height: 100%;
266
+ transform: round(translateX(-50%));
267
+ background-color: var(--umb-split-panel-divider-color);
268
+ z-index: -1;
269
+ }
270
+ `;
271
+ __decorate([
272
+ query('#main')
273
+ ], UmbSplitPanelElement.prototype, "mainElement", void 0);
274
+ __decorate([
275
+ query('#divider-touch-area')
276
+ ], UmbSplitPanelElement.prototype, "dividerTouchAreaElement", void 0);
277
+ __decorate([
278
+ query('#divider')
279
+ ], UmbSplitPanelElement.prototype, "dividerElement", void 0);
280
+ __decorate([
281
+ property({ type: String })
282
+ ], UmbSplitPanelElement.prototype, "snap", void 0);
283
+ __decorate([
284
+ property({ type: String })
285
+ ], UmbSplitPanelElement.prototype, "lock", void 0);
286
+ __decorate([
287
+ property({ type: String, reflect: true })
288
+ ], UmbSplitPanelElement.prototype, "position", void 0);
289
+ __decorate([
290
+ state()
291
+ ], UmbSplitPanelElement.prototype, "_hasStartPanel", void 0);
292
+ __decorate([
293
+ state()
294
+ ], UmbSplitPanelElement.prototype, "_hasEndPanel", void 0);
295
+ UmbSplitPanelElement = __decorate([
296
+ customElement('umb-split-panel')
297
+ ], UmbSplitPanelElement);
298
+ export { UmbSplitPanelElement };
@@ -9,8 +9,8 @@ export declare class UmbDebugElement extends UmbLitElement {
9
9
  private _debugPaneOpen;
10
10
  private _modalContext?;
11
11
  constructor();
12
- connectedCallback(): void;
13
12
  render(): TemplateResult<1> | typeof nothing;
13
+ private _update;
14
14
  private _toggleDebugPane;
15
15
  private _openDialog;
16
16
  private _renderDialog;
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { UmbTextStyles } from '../../../shared/style/index.js';
8
- import { css, html, nothing, customElement, property, state } from '../../../external/lit/index.js';
8
+ import { css, html, nothing, customElement, property, state, repeat } from '../../../external/lit/index.js';
9
9
  import { contextData, UmbContextDebugRequest } from '../../../libs/context-api/index.js';
10
10
  import { UmbLitElement } from '../lit-element/index.js';
11
11
  import { UMB_CONTEXT_DEBUGGER_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '../modal/index.js';
@@ -20,8 +20,15 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
20
20
  this._modalContext = instance;
21
21
  });
22
22
  }
23
- connectedCallback() {
24
- super.connectedCallback();
23
+ render() {
24
+ if (this.visible) {
25
+ return this.dialog ? this._renderDialog() : this._renderPanel();
26
+ }
27
+ else {
28
+ return nothing;
29
+ }
30
+ }
31
+ _update() {
25
32
  // Dispatch it
26
33
  this.dispatchEvent(new UmbContextDebugRequest((contexts) => {
27
34
  // The Contexts are collected
@@ -32,18 +39,14 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
32
39
  // Massage the data into a simplier array of objects
33
40
  // From a function in the context-api '
34
41
  this.contextData = contextData(contexts);
42
+ this.requestUpdate('contextData');
35
43
  }));
36
44
  }
37
- render() {
38
- if (this.visible) {
39
- return this.dialog ? this._renderDialog() : this._renderPanel();
40
- }
41
- else {
42
- return nothing;
43
- }
44
- }
45
45
  _toggleDebugPane() {
46
46
  this._debugPaneOpen = !this._debugPaneOpen;
47
+ if (this._debugPaneOpen) {
48
+ this._update();
49
+ }
47
50
  }
48
51
  _openDialog() {
49
52
  this._modalContext?.open(UMB_CONTEXT_DEBUGGER_MODAL, {
@@ -76,17 +79,15 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
76
79
  </div>`;
77
80
  }
78
81
  _renderContextAliases() {
79
- const contextsTemplates = [];
80
- this.contextData.forEach((contextData) => {
81
- contextsTemplates.push(html ` <li>
82
+ return repeat(this.contextData, (contextData) => contextData.alias, (contextData) => {
83
+ return html ` <li>
82
84
  Context: <strong>${contextData.alias}</strong>
83
85
  <em>(${contextData.type})</em>
84
86
  <ul>
85
87
  ${this._renderInstance(contextData.data)}
86
88
  </ul>
87
- </li>`);
89
+ </li>`;
88
90
  });
89
- return contextsTemplates;
90
91
  }
91
92
  _renderInstance(instance) {
92
93
  const instanceTemplates = [];
@@ -1,10 +1,16 @@
1
+ import type { ManifestTypes } from '../../models/index.js';
1
2
  import { UmbRepositoryBase, type UmbCollectionRepository } from '../../../repository/index.js';
2
3
  import type { UmbControllerHost } from '../../../../../libs/controller-api/index.js';
4
+ export interface UmbExtensionCollectionFilter {
5
+ skip: number;
6
+ take: number;
7
+ type?: ManifestTypes['type'];
8
+ }
3
9
  export declare class UmbExtensionCollectionRepository extends UmbRepositoryBase implements UmbCollectionRepository {
4
10
  constructor(host: UmbControllerHost);
5
- requestCollection(filter: any): Promise<{
11
+ requestCollection(filter: UmbExtensionCollectionFilter): Promise<{
6
12
  data: {
7
- items: import("../../index.js").ManifestTypes[];
13
+ items: ManifestTypes[];
8
14
  total: number;
9
15
  };
10
16
  }>;
@@ -5,7 +5,10 @@ export class UmbExtensionCollectionRepository extends UmbRepositoryBase {
5
5
  super(host);
6
6
  }
7
7
  async requestCollection(filter) {
8
- const extensions = umbExtensionsRegistry.getAllExtensions();
8
+ let extensions = umbExtensionsRegistry.getAllExtensions();
9
+ if (filter.type) {
10
+ extensions = extensions.filter((x) => x.type === filter.type);
11
+ }
9
12
  const total = extensions.length;
10
13
  const items = extensions.slice(filter.skip, filter.skip + filter.take);
11
14
  const data = { items, total };
@@ -43,20 +43,22 @@ let UmbSectionDefaultElement = class UmbSectionDefaultElement extends UmbLitElem
43
43
  }
44
44
  render() {
45
45
  return html `
46
- ${this._sidebarApps && this._sidebarApps.length > 0
46
+ <umb-split-panel lock="start" snap="300px">
47
+ ${this._sidebarApps && this._sidebarApps.length > 0
47
48
  ? html `
48
- <!-- TODO: these extensions should be combined into one type: sectionSidebarApp with a "subtype" -->
49
- <umb-section-sidebar>
50
- ${repeat(this._sidebarApps, (app) => app.alias, (app) => app.component)}
51
- </umb-section-sidebar>
52
- `
49
+ <!-- TODO: these extensions should be combined into one type: sectionSidebarApp with a "subtype" -->
50
+ <umb-section-sidebar slot="start">
51
+ ${repeat(this._sidebarApps, (app) => app.alias, (app) => app.component)}
52
+ </umb-section-sidebar>
53
+ `
53
54
  : nothing}
54
- <umb-section-main>
55
- ${this._routes && this._routes.length > 0
55
+ <umb-section-main slot="end">
56
+ ${this._routes && this._routes.length > 0
56
57
  ? html `<umb-router-slot id="router-slot" .routes="${this._routes}"></umb-router-slot>`
57
58
  : nothing}
58
- <slot></slot>
59
- </umb-section-main>
59
+ <slot></slot>
60
+ </umb-section-main>
61
+ </umb-split-panel>
60
62
  `;
61
63
  }
62
64
  };
@@ -91,6 +93,19 @@ UmbSectionDefaultElement.styles = [
91
93
  h3 {
92
94
  padding: var(--uui-size-4) var(--uui-size-8);
93
95
  }
96
+
97
+ umb-split-panel {
98
+ --umb-split-panel-initial-position: 200px;
99
+ --umb-split-panel-start-min-width: 200px;
100
+ --umb-split-panel-start-max-width: 400px;
101
+ --umb-split-panel-end-min-width: 600px;
102
+ }
103
+
104
+ @media only screen and (min-width: 800px) {
105
+ umb-split-panel {
106
+ --umb-split-panel-initial-position: 300px;
107
+ }
108
+ }
94
109
  `,
95
110
  ];
96
111
  __decorate([
@@ -36,7 +36,7 @@ export class UmbTemporaryFileServerDataSource {
36
36
  * @memberof UmbTemporaryFileServerDataSource
37
37
  */
38
38
  async create(id, file) {
39
- return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.postTemporaryfile({
39
+ return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.postTemporaryFile({
40
40
  formData: {
41
41
  Id: id,
42
42
  File: file,
@@ -52,7 +52,7 @@ export class UmbTemporaryFileServerDataSource {
52
52
  read(id) {
53
53
  if (!id)
54
54
  throw new Error('Id is missing');
55
- return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.getTemporaryfileById({ id }));
55
+ return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.getTemporaryFileById({ id }));
56
56
  }
57
57
  /**
58
58
  * Deletes a temporary file from the server
@@ -63,7 +63,7 @@ export class UmbTemporaryFileServerDataSource {
63
63
  delete(id) {
64
64
  if (!id)
65
65
  throw new Error('Id is missing');
66
- return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.deleteTemporaryfileById({ id }));
66
+ return tryExecuteAndNotify(__classPrivateFieldGet(this, _UmbTemporaryFileServerDataSource_host, "f"), TemporaryFileResource.deleteTemporaryFileById({ id }));
67
67
  }
68
68
  }
69
69
  _UmbTemporaryFileServerDataSource_host = new WeakMap();
@@ -73,7 +73,7 @@ const entityActions = [
73
73
  api: UmbPublishDocumentEntityAction,
74
74
  meta: {
75
75
  icon: 'icon-globe',
76
- label: 'Publish (TBD)',
76
+ label: 'Publish',
77
77
  repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS,
78
78
  entityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
79
79
  },
@@ -85,7 +85,7 @@ const entityActions = [
85
85
  api: UmbUnpublishDocumentEntityAction,
86
86
  meta: {
87
87
  icon: 'icon-globe',
88
- label: 'Unpublish (TBD)',
88
+ label: 'Unpublish',
89
89
  repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS,
90
90
  entityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
91
91
  },
@@ -2,6 +2,7 @@ import type { UmbDocumentPublishingRepository } from '../repository/index.js';
2
2
  import { UmbEntityActionBase } from '../../../core/entity-action/index.js';
3
3
  import type { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
4
4
  export declare class UmbPublishDocumentEntityAction extends UmbEntityActionBase<UmbDocumentPublishingRepository> {
5
+ #private;
5
6
  constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string, entityType: string);
6
7
  execute(): Promise<void>;
7
8
  }
@@ -1,11 +1,29 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _UmbPublishDocumentEntityAction_variantManagerContext;
13
+ import { UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT } from '../global-contexts/index.js';
1
14
  import { UmbEntityActionBase } from '../../../core/entity-action/index.js';
2
15
  export class UmbPublishDocumentEntityAction extends UmbEntityActionBase {
3
16
  constructor(host, repositoryAlias, unique, entityType) {
4
17
  super(host, repositoryAlias, unique, entityType);
18
+ _UmbPublishDocumentEntityAction_variantManagerContext.set(this, void 0);
19
+ this.consumeContext(UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT, (context) => {
20
+ __classPrivateFieldSet(this, _UmbPublishDocumentEntityAction_variantManagerContext, context, "f");
21
+ });
5
22
  }
6
23
  async execute() {
7
- console.log(`publish: ${this.unique}`);
8
- // TODO: implement dialog or something to handle variants.
9
- //await this.repository?.publish();
24
+ if (!__classPrivateFieldGet(this, _UmbPublishDocumentEntityAction_variantManagerContext, "f"))
25
+ throw new Error('Variant manager context is missing');
26
+ await __classPrivateFieldGet(this, _UmbPublishDocumentEntityAction_variantManagerContext, "f").publish(this.unique);
10
27
  }
11
28
  }
29
+ _UmbPublishDocumentEntityAction_variantManagerContext = new WeakMap();
@@ -2,6 +2,7 @@ import type { UmbDocumentPublishingRepository } from '../repository/index.js';
2
2
  import { UmbEntityActionBase } from '../../../core/entity-action/index.js';
3
3
  import type { UmbControllerHostElement } from '../../../../libs/controller-api/index.js';
4
4
  export declare class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase<UmbDocumentPublishingRepository> {
5
+ #private;
5
6
  constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string, entityType: string);
6
7
  execute(): Promise<void>;
7
8
  }
@@ -1,11 +1,29 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _UmbUnpublishDocumentEntityAction_variantManagerContext;
13
+ import { UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT } from '../global-contexts/index.js';
1
14
  import { UmbEntityActionBase } from '../../../core/entity-action/index.js';
2
15
  export class UmbUnpublishDocumentEntityAction extends UmbEntityActionBase {
3
16
  constructor(host, repositoryAlias, unique, entityType) {
4
17
  super(host, repositoryAlias, unique, entityType);
18
+ _UmbUnpublishDocumentEntityAction_variantManagerContext.set(this, void 0);
19
+ this.consumeContext(UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT, (context) => {
20
+ __classPrivateFieldSet(this, _UmbUnpublishDocumentEntityAction_variantManagerContext, context, "f");
21
+ });
5
22
  }
6
23
  async execute() {
7
- console.log(`unpublish: ${this.unique}`);
8
- // TODO: implement dialog or something to handle variants.
9
- //await this.repository?.unpublish();
24
+ if (!__classPrivateFieldGet(this, _UmbUnpublishDocumentEntityAction_variantManagerContext, "f"))
25
+ throw new Error('Variant manager context is missing');
26
+ await __classPrivateFieldGet(this, _UmbUnpublishDocumentEntityAction_variantManagerContext, "f").unpublish(this.unique);
10
27
  }
11
28
  }
29
+ _UmbUnpublishDocumentEntityAction_variantManagerContext = new WeakMap();
@@ -0,0 +1,34 @@
1
+ import { type UmbDocumentVariantModel } from '../types.js';
2
+ import { type UmbDocumentVariantPickerModalData } from '../modals/variant-picker/index.js';
3
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
4
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
5
+ import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
6
+ import type { UmbApi } from '../../../../libs/extension-api/index.js';
7
+ import { UmbVariantId } from '../../../core/variant/index.js';
8
+ export declare class UmbDocumentVariantManagerContext extends UmbContextBase<UmbDocumentVariantManagerContext> implements UmbApi {
9
+ #private;
10
+ constructor(host: UmbControllerHost);
11
+ /**
12
+ * Helps the user pick variants for a specific operation.
13
+ * If there is only one variant, it will be selected automatically.
14
+ * If there are multiple variants, a modal will be shown to the user.
15
+ * @param type The type of operation to perform.
16
+ * @param documentUnique The unique identifier of the document.
17
+ * @param activeVariantCulture The culture of the active variant (will be pre-selected in the modal).
18
+ * @param filterFn Optional filter function to filter the available variants.
19
+ * @returns The selected variants to perform the operation on.
20
+ */
21
+ pickVariants(availableVariants: Array<UmbDocumentVariantModel>, type: UmbDocumentVariantPickerModalData['type'], activeVariantCulture?: string): Promise<UmbVariantId[]>;
22
+ /**
23
+ * Publish the latest version of a document indescriminately.
24
+ * @param documentUnique The unique identifier of the document.
25
+ */
26
+ publish(documentUnique: string): Promise<void>;
27
+ /**
28
+ * Unpublish the latest version of a document indescriminately.
29
+ * @param documentUnique The unique identifier of the document.
30
+ */
31
+ unpublish(documentUnique: string): Promise<void>;
32
+ }
33
+ export default UmbDocumentVariantManagerContext;
34
+ export declare const UMB_DOCUMENT_VARIANT_MANAGER_CONTEXT: UmbContextToken<UmbDocumentVariantManagerContext, UmbDocumentVariantManagerContext>;