@umbraco-cms/backoffice 14.0.0--preview005-d8ecd776 → 14.0.0--preview005-b4989b95
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 -14
- package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +4 -4
- package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.js +3 -3
- package/dist-cms/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.js +4 -5
- package/dist-cms/packages/core/components/multiple-text-string-input/input-multiple-text-string.element.js +4 -4
- package/dist-cms/packages/core/sorter/sorter.controller.d.ts +18 -6
- package/dist-cms/packages/core/sorter/sorter.controller.js +206 -189
- package/dist-cms/packages/documents/document-types/workspace/document-type-workspace-sorter.js +8 -8
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-properties.element.js +4 -4
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-tab.element.js +4 -4
- package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit.element.js +4 -4
- package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +5 -3
- package/dist-cms/packages/media/media/components/input-media/input-media.element.js +5 -3
- package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-properties.element.js +4 -4
- package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit-tab.element.js +4 -4
- package/dist-cms/packages/media/media-types/workspace/views/design/media-type-workspace-view-edit.element.js +4 -4
- package/dist-cms/packages/members/members/components/input-member/input-member.element.js +5 -3
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/vscode-html-custom-data.json +0 -5
- package/examples/sorter-with-nested-containers/README.md +3 -0
- package/examples/sorter-with-nested-containers/index.ts +15 -0
- package/examples/sorter-with-nested-containers/sorter-dashboard.ts +90 -0
- package/examples/sorter-with-nested-containers/sorter-group.ts +103 -0
- package/examples/sorter-with-nested-containers/sorter-item.ts +58 -0
- package/examples/sorter-with-two-containers/README.md +1 -3
- package/examples/sorter-with-two-containers/sorter-dashboard.ts +1 -1
- package/examples/sorter-with-two-containers/sorter-group.ts +24 -48
- package/examples/sorter-with-two-containers/sorter-item.ts +16 -5
- package/package.json +2 -2
- package/dist-cms/packages/core/sorter/stories/test-sorter-controller.element.d.ts +0 -16
- package/dist-cms/packages/core/sorter/stories/test-sorter-controller.element.js +0 -134
|
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
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");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _UmbSorterController_instances, _UmbSorterController_host, _UmbSorterController_config, _UmbSorterController_observer, _UmbSorterController_model, _UmbSorterController_rqaId, _UmbSorterController_containerElement,
|
|
12
|
+
var _UmbSorterController_instances, _a, _UmbSorterController_host, _UmbSorterController_config, _UmbSorterController_observer, _UmbSorterController_model, _UmbSorterController_rqaId, _UmbSorterController_containerElement, _UmbSorterController_useContainerShadowRoot, _UmbSorterController_scrollElement, _UmbSorterController_dragX, _UmbSorterController_dragY, _UmbSorterController_lastIndicationContainerCtrl, _UmbSorterController_setupPlaceholderStyle, _UmbSorterController_removePlaceholderStyle, _UmbSorterController_setCurrentElement, _UmbSorterController_handleDragStart, _UmbSorterController_handleDragEnd, _UmbSorterController_handleDragMove, _UmbSorterController_updateDragMove, _UmbSorterController_moveElementTo, _UmbSorterController_autoScrollRAF, _UmbSorterController_autoScrollEl, _UmbSorterController_performAutoScroll, _UmbSorterController_stopAutoScroll;
|
|
13
13
|
const autoScrollSensitivity = 50;
|
|
14
14
|
const autoScrollSpeed = 16;
|
|
15
15
|
function isWithinRect(x, y, rect, modifier = 0) {
|
|
@@ -45,9 +45,6 @@ function getParentScrollElement(el, includeSelf) {
|
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
function preventDragOver(e) {
|
|
49
|
-
e.preventDefault();
|
|
50
|
-
}
|
|
51
48
|
function setupIgnorerElements(element, ignorerSelectors) {
|
|
52
49
|
ignorerSelectors.split(',').forEach(function (criteria) {
|
|
53
50
|
element.querySelectorAll(criteria.trim()).forEach(setupPreventEvent);
|
|
@@ -72,6 +69,10 @@ function destroyPreventEvent(element) {
|
|
|
72
69
|
*/
|
|
73
70
|
export class UmbSorterController {
|
|
74
71
|
get controllerAlias() {
|
|
72
|
+
// We only support one Sorter Controller pr. Controller Host.
|
|
73
|
+
return 'umbSorterController';
|
|
74
|
+
}
|
|
75
|
+
get identifier() {
|
|
75
76
|
return __classPrivateFieldGet(this, _UmbSorterController_config, "f").identifier;
|
|
76
77
|
}
|
|
77
78
|
constructor(host, config) {
|
|
@@ -82,15 +83,8 @@ export class UmbSorterController {
|
|
|
82
83
|
_UmbSorterController_model.set(this, []);
|
|
83
84
|
_UmbSorterController_rqaId.set(this, void 0);
|
|
84
85
|
_UmbSorterController_containerElement.set(this, void 0);
|
|
85
|
-
_UmbSorterController_currentContainerCtrl.set(this, this);
|
|
86
|
-
_UmbSorterController_currentContainerElement.set(this, null);
|
|
87
86
|
_UmbSorterController_useContainerShadowRoot.set(this, void 0);
|
|
88
87
|
_UmbSorterController_scrollElement.set(this, void 0);
|
|
89
|
-
_UmbSorterController_currentElement.set(this, void 0);
|
|
90
|
-
_UmbSorterController_currentDragElement.set(this, void 0);
|
|
91
|
-
_UmbSorterController_currentDragRect.set(this, void 0);
|
|
92
|
-
_UmbSorterController_currentItem.set(this, void 0);
|
|
93
|
-
_UmbSorterController_currentIndex.set(this, void 0);
|
|
94
88
|
_UmbSorterController_dragX.set(this, 0);
|
|
95
89
|
_UmbSorterController_dragY.set(this, 0);
|
|
96
90
|
_UmbSorterController_lastIndicationContainerCtrl.set(this, null);
|
|
@@ -100,17 +94,12 @@ export class UmbSorterController {
|
|
|
100
94
|
: __classPrivateFieldGet(this, _UmbSorterController_host, "f")) ?? __classPrivateFieldGet(this, _UmbSorterController_host, "f");
|
|
101
95
|
__classPrivateFieldSet(this, _UmbSorterController_containerElement, containerEl, "f");
|
|
102
96
|
__classPrivateFieldSet(this, _UmbSorterController_useContainerShadowRoot, __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f") === __classPrivateFieldGet(this, _UmbSorterController_host, "f"), "f");
|
|
103
|
-
if (!__classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f") || __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f") === __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")) {
|
|
104
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, containerEl, "f");
|
|
105
|
-
}
|
|
106
97
|
// Only look at the shadowRoot if the containerElement is host.
|
|
107
98
|
const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
|
|
108
99
|
? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
|
|
109
100
|
: __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
|
|
110
|
-
containerElement.addEventListener('dragover',
|
|
111
|
-
|
|
112
|
-
return this;
|
|
113
|
-
};
|
|
101
|
+
containerElement.addEventListener('dragover', this._itemDraggedOver);
|
|
102
|
+
// TODO: Do we need to handle dragleave?
|
|
114
103
|
__classPrivateFieldGet(this, _UmbSorterController_observer, "f").disconnect();
|
|
115
104
|
containerElement.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector).forEach((child) => {
|
|
116
105
|
if (child.matches && child.matches(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector)) {
|
|
@@ -122,151 +111,130 @@ export class UmbSorterController {
|
|
|
122
111
|
subtree: false,
|
|
123
112
|
});
|
|
124
113
|
};
|
|
114
|
+
this._itemDraggedOver = (e) => {
|
|
115
|
+
//if(UmbSorterController.activeSorter === this) return;
|
|
116
|
+
const dropSorter = _a.dropSorter;
|
|
117
|
+
if (!dropSorter || dropSorter.identifier !== this.identifier)
|
|
118
|
+
return;
|
|
119
|
+
if (dropSorter === this) {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
if (e.dataTransfer) {
|
|
122
|
+
e.dataTransfer.dropEffect = 'move';
|
|
123
|
+
}
|
|
124
|
+
// Do nothing as we are the active sorter.
|
|
125
|
+
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_handleDragMove).call(this, e);
|
|
126
|
+
// Maybe we need to stop the event in this case.
|
|
127
|
+
// Do not bubble up to parent sorters:
|
|
128
|
+
e.stopPropagation();
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// TODO: Check if dropping here is okay..
|
|
133
|
+
// If so lets set the approaching sorter:
|
|
134
|
+
_a.dropSorter = this;
|
|
135
|
+
// Do not bubble up to parent sorters:
|
|
136
|
+
e.stopPropagation();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
125
139
|
_UmbSorterController_handleDragStart.set(this, (event) => {
|
|
126
140
|
const element = event.target.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector);
|
|
127
141
|
if (!element)
|
|
128
142
|
return;
|
|
129
|
-
if (
|
|
143
|
+
if (_a.activeElement && _a.activeElement !== element) {
|
|
144
|
+
// TODO: Remove this console log at one point.
|
|
145
|
+
console.log("drag start realized that something was already active, so we'll end it. -------!!!!#€#%#€");
|
|
130
146
|
__classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f").call(this);
|
|
131
147
|
}
|
|
132
148
|
event.stopPropagation();
|
|
133
149
|
if (event.dataTransfer) {
|
|
134
|
-
event.dataTransfer.effectAllowed = '
|
|
135
|
-
event.dataTransfer.dropEffect = 'none'; // visual feedback when dropped.
|
|
150
|
+
event.dataTransfer.effectAllowed = 'all'; // copyMove when we enhance the drag with clipboard data.// defaults to 'all'
|
|
136
151
|
}
|
|
137
152
|
if (!__classPrivateFieldGet(this, _UmbSorterController_scrollElement, "f")) {
|
|
138
153
|
__classPrivateFieldSet(this, _UmbSorterController_scrollElement, getParentScrollElement(__classPrivateFieldGet(this, _UmbSorterController_containerElement, "f"), true), "f");
|
|
139
154
|
}
|
|
140
155
|
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setCurrentElement).call(this, element);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
156
|
+
_a.activeItem = this.getItemOfElement(_a.activeElement);
|
|
157
|
+
_a.originalSorter = this;
|
|
158
|
+
_a.originalIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(_a.activeItem);
|
|
159
|
+
if (!_a.activeItem) {
|
|
144
160
|
console.error('Could not find item related to this element.');
|
|
145
161
|
return;
|
|
146
162
|
}
|
|
147
163
|
// Get the current index of the item:
|
|
148
|
-
|
|
149
|
-
|
|
164
|
+
_a.activeIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(_a.activeItem);
|
|
165
|
+
_a.activeElement.style.transform = 'translateZ(0)'; // Solves problem with FireFox and ShadowDom in the drag-image.
|
|
150
166
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver) {
|
|
151
|
-
__classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver(event.dataTransfer,
|
|
167
|
+
__classPrivateFieldGet(this, _UmbSorterController_config, "f").dataTransferResolver(event.dataTransfer, _a.activeItem);
|
|
152
168
|
}
|
|
153
169
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart) {
|
|
154
|
-
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart({
|
|
170
|
+
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onStart({
|
|
171
|
+
item: _a.activeItem,
|
|
172
|
+
element: _a.activeElement,
|
|
173
|
+
});
|
|
155
174
|
}
|
|
156
|
-
|
|
157
|
-
|
|
175
|
+
// Assuming we can only drag one thing at the time.
|
|
176
|
+
_a.activeSorter = this;
|
|
177
|
+
_a.dropSorter = this;
|
|
158
178
|
// We must wait one frame before changing the look of the block.
|
|
159
179
|
__classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(() => {
|
|
160
180
|
// It should be okay to use the same rqaId, as the move does not, or is okay not, to happen on first frame/drag-move.
|
|
161
181
|
__classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setupPlaceholderStyle).call(this);
|
|
182
|
+
if (_a.activeElement) {
|
|
183
|
+
_a.activeElement.style.transform = '';
|
|
165
184
|
}
|
|
166
185
|
}), "f");
|
|
186
|
+
return true;
|
|
167
187
|
});
|
|
168
|
-
_UmbSorterController_handleDragEnd.set(this, async () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f") || !__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f")) {
|
|
188
|
+
_UmbSorterController_handleDragEnd.set(this, async (event) => {
|
|
189
|
+
// If not good drop, revert model?
|
|
190
|
+
if (!_a.activeElement || !_a.activeItem) {
|
|
172
191
|
return;
|
|
173
192
|
}
|
|
174
|
-
|
|
193
|
+
if (_a.originalSorter && event?.dataTransfer != null && event.dataTransfer.dropEffect === 'none') {
|
|
194
|
+
// Revert move, to start position.
|
|
195
|
+
_a.originalSorter.moveItemInModel(_a.originalIndex ?? 0, _a.activeSorter);
|
|
196
|
+
}
|
|
197
|
+
_a.activeElement.style.transform = '';
|
|
175
198
|
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_removePlaceholderStyle).call(this);
|
|
176
199
|
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_stopAutoScroll).call(this);
|
|
177
200
|
this.removeAllowIndication();
|
|
178
201
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd) {
|
|
179
|
-
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd({
|
|
202
|
+
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onEnd({
|
|
203
|
+
item: _a.activeItem,
|
|
204
|
+
element: _a.activeElement,
|
|
205
|
+
});
|
|
180
206
|
}
|
|
181
207
|
if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f")) {
|
|
182
208
|
cancelAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f"));
|
|
183
209
|
__classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
|
|
184
210
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
211
|
+
_a.activeItem = undefined;
|
|
212
|
+
_a.activeElement = undefined;
|
|
213
|
+
_a.activeDragElement = undefined;
|
|
214
|
+
_a.activeSorter = undefined;
|
|
215
|
+
_a.dropSorter = undefined;
|
|
216
|
+
_a.originalIndex = undefined;
|
|
217
|
+
_a.originalSorter = undefined;
|
|
191
218
|
__classPrivateFieldSet(this, _UmbSorterController_dragX, 0, "f");
|
|
192
219
|
__classPrivateFieldSet(this, _UmbSorterController_dragY, 0, "f");
|
|
193
220
|
});
|
|
194
|
-
_UmbSorterController_handleDragMove.set(this, (event) => {
|
|
195
|
-
if (!__classPrivateFieldGet(this, _UmbSorterController_currentElement, "f")) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
const clientX = event.touches
|
|
199
|
-
? event.touches[0].clientX
|
|
200
|
-
: event.clientX;
|
|
201
|
-
const clientY = event.touches
|
|
202
|
-
? event.touches[0].clientY
|
|
203
|
-
: event.clientY;
|
|
204
|
-
if (clientX !== 0 && clientY !== 0) {
|
|
205
|
-
if (__classPrivateFieldGet(this, _UmbSorterController_dragX, "f") === clientX && __classPrivateFieldGet(this, _UmbSorterController_dragY, "f") === clientY) {
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
__classPrivateFieldSet(this, _UmbSorterController_dragX, clientX, "f");
|
|
209
|
-
__classPrivateFieldSet(this, _UmbSorterController_dragY, clientY, "f");
|
|
210
|
-
this.handleAutoScroll(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"));
|
|
211
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentDragRect, __classPrivateFieldGet(this, _UmbSorterController_currentDragElement, "f").getBoundingClientRect(), "f");
|
|
212
|
-
const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentDragRect, "f"));
|
|
213
|
-
if (!insideCurrentRect) {
|
|
214
|
-
if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f") === undefined) {
|
|
215
|
-
__classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f")), "f");
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
221
|
_UmbSorterController_updateDragMove.set(this, () => {
|
|
221
222
|
__classPrivateFieldSet(this, _UmbSorterController_rqaId, undefined, "f");
|
|
222
|
-
if (!
|
|
223
|
+
if (!_a.activeElement || !_a.activeItem) {
|
|
223
224
|
return;
|
|
224
225
|
}
|
|
225
|
-
|
|
226
|
+
// Maybe no need to check this twice, like we do it before the RAF an inside it, I think its fine to choose one of them.
|
|
227
|
+
const currentElementRect = _a.activeElement.getBoundingClientRect();
|
|
226
228
|
const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), currentElementRect);
|
|
227
229
|
if (insideCurrentRect) {
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
230
|
-
let toBeCurrentContainerCtrl = undefined;
|
|
231
|
-
// If we have a boundarySelector, try it. If we didn't get anything fall back to currentContainerElement:
|
|
232
|
-
const currentBoundaryElement = (__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector
|
|
233
|
-
? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector)
|
|
234
|
-
: __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f")) ?? __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f");
|
|
235
|
-
const currentBoundaryRect = currentBoundaryElement.getBoundingClientRect();
|
|
236
|
-
const currentContainerHasItems = __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f").hasOtherItemsThan(__classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"));
|
|
237
|
-
// if empty we will be move likely to accept an item (add 20px to the bounding box)
|
|
238
|
-
// If we have items we must be 10px within the container to accept the move.
|
|
239
|
-
const offsetEdge = currentContainerHasItems ? -10 : 20;
|
|
240
|
-
if (!isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), currentBoundaryRect, offsetEdge)) {
|
|
241
|
-
// we are outside the current container boundary, so lets see if there is a parent we can move to.
|
|
242
|
-
const parentNode = __classPrivateFieldGet(this, _UmbSorterController_currentContainerElement, "f").parentNode;
|
|
243
|
-
if (parentNode && __classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector) {
|
|
244
|
-
// TODO: support multiple parent shadowDOMs?
|
|
245
|
-
const parentContainer = parentNode.host
|
|
246
|
-
? parentNode.host.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector)
|
|
247
|
-
: parentNode.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector);
|
|
248
|
-
if (parentContainer) {
|
|
249
|
-
const parentContainerCtrl = parentContainer['__umbBlockGridSorterController']();
|
|
250
|
-
if (parentContainerCtrl.unique === this.controllerAlias) {
|
|
251
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, parentContainer, "f");
|
|
252
|
-
toBeCurrentContainerCtrl = parentContainerCtrl;
|
|
253
|
-
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange) {
|
|
254
|
-
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange({
|
|
255
|
-
item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"),
|
|
256
|
-
element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"),
|
|
257
|
-
//ownerVM: this.#currentContainerVM.ownerVM,
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
232
|
const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
|
|
265
|
-
? __classPrivateFieldGet(this,
|
|
266
|
-
: __classPrivateFieldGet(this,
|
|
233
|
+
? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
|
|
234
|
+
: __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
|
|
267
235
|
// We want to retrieve the children of the container, every time to ensure we got the right order and index
|
|
268
236
|
const orderedContainerElements = Array.from(containerElement.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector));
|
|
269
|
-
const currentContainerRect = __classPrivateFieldGet(this,
|
|
237
|
+
const currentContainerRect = __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").getBoundingClientRect();
|
|
270
238
|
// gather elements on the same row.
|
|
271
239
|
const elementsInSameRow = [];
|
|
272
240
|
let placeholderIsInThisRow = false;
|
|
@@ -277,7 +245,7 @@ export class UmbSorterController {
|
|
|
277
245
|
const dragElement = __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector ? el.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector) : el;
|
|
278
246
|
if (dragElement) {
|
|
279
247
|
const dragElementRect = dragElement.getBoundingClientRect();
|
|
280
|
-
if (el !==
|
|
248
|
+
if (el !== _a.activeElement) {
|
|
281
249
|
elementsInSameRow.push({ el: el, dragRect: dragElementRect });
|
|
282
250
|
}
|
|
283
251
|
else {
|
|
@@ -302,54 +270,19 @@ export class UmbSorterController {
|
|
|
302
270
|
});
|
|
303
271
|
if (foundEl) {
|
|
304
272
|
// If we are on top or closest to our self, we should not do anything.
|
|
305
|
-
if (foundEl ===
|
|
273
|
+
if (foundEl === _a.activeElement) {
|
|
306
274
|
return;
|
|
307
275
|
}
|
|
308
|
-
const isInsideFound = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), foundElDragRect, 0);
|
|
309
|
-
// If we are inside the found element, lets look for sub containers.
|
|
310
|
-
// use the itemHasNestedContainersResolver, if not configured fallback to looking for the existence of a container via DOM.
|
|
311
|
-
// TODO: Ability to look into shadowDOMs for sub containers?
|
|
312
|
-
if (isInsideFound && __classPrivateFieldGet(this, _UmbSorterController_config, "f").itemHasNestedContainersResolver
|
|
313
|
-
? __classPrivateFieldGet(this, _UmbSorterController_config, "f").itemHasNestedContainersResolver(foundEl)
|
|
314
|
-
: foundEl.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector)) {
|
|
315
|
-
// Find all sub containers:
|
|
316
|
-
const subLayouts = foundEl.querySelectorAll(__classPrivateFieldGet(this, _UmbSorterController_config, "f").containerSelector);
|
|
317
|
-
for (const subLayoutEl of subLayouts) {
|
|
318
|
-
// Use boundary element or fallback to container element.
|
|
319
|
-
const subBoundaryElement = (__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector ? subLayoutEl.closest(__classPrivateFieldGet(this, _UmbSorterController_config, "f").boundarySelector) : subLayoutEl) ||
|
|
320
|
-
subLayoutEl;
|
|
321
|
-
const subBoundaryRect = subBoundaryElement.getBoundingClientRect();
|
|
322
|
-
const subContainerHasItems = subLayoutEl.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").itemSelector + ':not(.' + __classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass + ')');
|
|
323
|
-
// gather elements on the same row.
|
|
324
|
-
const subOffsetEdge = subContainerHasItems ? -10 : 20;
|
|
325
|
-
if (isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), subBoundaryRect, subOffsetEdge)) {
|
|
326
|
-
const subCtrl = subLayoutEl['__umbBlockGridSorterController']();
|
|
327
|
-
if (subCtrl.unique === this.controllerAlias) {
|
|
328
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentContainerElement, subLayoutEl, "f");
|
|
329
|
-
toBeCurrentContainerCtrl = subCtrl;
|
|
330
|
-
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange) {
|
|
331
|
-
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onContainerChange({
|
|
332
|
-
item: __classPrivateFieldGet(this, _UmbSorterController_currentItem, "f"),
|
|
333
|
-
element: __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"),
|
|
334
|
-
//ownerVM: this.#currentContainerVM.ownerVM,
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
__classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f").call(this);
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
276
|
// Indication if drop is good:
|
|
344
|
-
if (this.updateAllowIndication(
|
|
277
|
+
if (this.updateAllowIndication(_a.activeItem) === false) {
|
|
345
278
|
return;
|
|
346
279
|
}
|
|
347
280
|
const verticalDirection = __classPrivateFieldGet(this, _UmbSorterController_config, "f").resolveVerticalDirection
|
|
348
281
|
? __classPrivateFieldGet(this, _UmbSorterController_config, "f").resolveVerticalDirection({
|
|
349
|
-
containerElement: __classPrivateFieldGet(this,
|
|
282
|
+
containerElement: __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f"),
|
|
350
283
|
containerRect: currentContainerRect,
|
|
351
|
-
item:
|
|
352
|
-
element:
|
|
284
|
+
item: _a.activeItem,
|
|
285
|
+
element: _a.activeElement,
|
|
353
286
|
elementRect: currentElementRect,
|
|
354
287
|
relatedElement: foundEl,
|
|
355
288
|
relatedRect: foundElDragRect,
|
|
@@ -386,19 +319,23 @@ export class UmbSorterController {
|
|
|
386
319
|
}
|
|
387
320
|
const foundElIndex = orderedContainerElements.indexOf(foundEl);
|
|
388
321
|
const newIndex = placeAfter ? foundElIndex + 1 : foundElIndex;
|
|
389
|
-
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this,
|
|
322
|
+
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, newIndex);
|
|
390
323
|
return;
|
|
391
324
|
}
|
|
392
|
-
// We skipped the above part cause we are above or below container:
|
|
325
|
+
// We skipped the above part cause we are above or below container, or within an empty container:
|
|
393
326
|
// Indication if drop is good:
|
|
394
|
-
if (this.updateAllowIndication(
|
|
327
|
+
if (this.updateAllowIndication(_a.activeItem) === false) {
|
|
395
328
|
return;
|
|
396
329
|
}
|
|
397
|
-
if (__classPrivateFieldGet(this,
|
|
398
|
-
|
|
330
|
+
if (__classPrivateFieldGet(this, _UmbSorterController_model, "f").length === 0) {
|
|
331
|
+
// Here is no items, so we should just move into the top of the container.
|
|
332
|
+
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, 0);
|
|
333
|
+
}
|
|
334
|
+
else if (__classPrivateFieldGet(this, _UmbSorterController_dragY, "f") < currentContainerRect.top) {
|
|
335
|
+
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, 0);
|
|
399
336
|
}
|
|
400
337
|
else if (__classPrivateFieldGet(this, _UmbSorterController_dragY, "f") > currentContainerRect.bottom) {
|
|
401
|
-
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this,
|
|
338
|
+
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_moveElementTo).call(this, -1);
|
|
402
339
|
}
|
|
403
340
|
});
|
|
404
341
|
// TODO: Move auto scroll into its own class?
|
|
@@ -413,6 +350,7 @@ export class UmbSorterController {
|
|
|
413
350
|
});
|
|
414
351
|
__classPrivateFieldSet(this, _UmbSorterController_host, host, "f");
|
|
415
352
|
// Set defaults:
|
|
353
|
+
config.identifier ?? (config.identifier = Symbol());
|
|
416
354
|
config.ignorerSelector ?? (config.ignorerSelector = 'a, img, iframe');
|
|
417
355
|
if (!config.placeholderClass && !config.placeholderAttr) {
|
|
418
356
|
config.placeholderAttr = 'drag-placeholder';
|
|
@@ -440,15 +378,24 @@ export class UmbSorterController {
|
|
|
440
378
|
}
|
|
441
379
|
__classPrivateFieldSet(this, _UmbSorterController_model, model, "f");
|
|
442
380
|
}
|
|
381
|
+
hasItem(unique) {
|
|
382
|
+
return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((x) => __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(x) === unique) !== undefined;
|
|
383
|
+
}
|
|
384
|
+
getItem(unique) {
|
|
385
|
+
return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((x) => __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(x) === unique);
|
|
386
|
+
}
|
|
443
387
|
hostConnected() {
|
|
444
388
|
requestAnimationFrame(this._onFirstRender);
|
|
445
389
|
}
|
|
446
390
|
hostDisconnected() {
|
|
447
|
-
// TODO:
|
|
391
|
+
// TODO: Is there more clean up to do??
|
|
448
392
|
__classPrivateFieldGet(this, _UmbSorterController_observer, "f").disconnect();
|
|
449
393
|
if (__classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")) {
|
|
450
|
-
|
|
451
|
-
__classPrivateFieldGet(this,
|
|
394
|
+
// Only look at the shadowRoot if the containerElement is host.
|
|
395
|
+
const containerElement = __classPrivateFieldGet(this, _UmbSorterController_useContainerShadowRoot, "f")
|
|
396
|
+
? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f").shadowRoot ?? __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f")
|
|
397
|
+
: __classPrivateFieldGet(this, _UmbSorterController_containerElement, "f");
|
|
398
|
+
containerElement.removeEventListener('dragover', this._itemDraggedOver);
|
|
452
399
|
__classPrivateFieldSet(this, _UmbSorterController_containerElement, undefined, "f");
|
|
453
400
|
}
|
|
454
401
|
}
|
|
@@ -459,11 +406,12 @@ export class UmbSorterController {
|
|
|
459
406
|
if (!__classPrivateFieldGet(this, _UmbSorterController_config, "f").disabledItemSelector || !element.matches(__classPrivateFieldGet(this, _UmbSorterController_config, "f").disabledItemSelector)) {
|
|
460
407
|
element.draggable = true;
|
|
461
408
|
element.addEventListener('dragstart', __classPrivateFieldGet(this, _UmbSorterController_handleDragStart, "f"));
|
|
409
|
+
element.addEventListener('dragend', __classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f"));
|
|
462
410
|
}
|
|
463
411
|
// If we have a currentItem and the element matches, we should set the currentElement to this element.
|
|
464
|
-
if (
|
|
465
|
-
|
|
466
|
-
|
|
412
|
+
if (_a.activeItem &&
|
|
413
|
+
__classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfElement(element) === __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(_a.activeItem)) {
|
|
414
|
+
if (_a.activeElement !== element) {
|
|
467
415
|
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setCurrentElement).call(this, element);
|
|
468
416
|
}
|
|
469
417
|
}
|
|
@@ -473,13 +421,20 @@ export class UmbSorterController {
|
|
|
473
421
|
destroyIgnorerElements(element, __classPrivateFieldGet(this, _UmbSorterController_config, "f").ignorerSelector);
|
|
474
422
|
}
|
|
475
423
|
element.removeEventListener('dragstart', __classPrivateFieldGet(this, _UmbSorterController_handleDragStart, "f"));
|
|
424
|
+
// We are not ready to remove the dragend or drop, as this is might be the active one just moving container:
|
|
425
|
+
//element.removeEventListener('dragend', this.#handleDragEnd);
|
|
426
|
+
//element.addEventListener('drop', this.#handleDrop);
|
|
476
427
|
}
|
|
477
428
|
/** Management methods: */
|
|
478
429
|
getItemOfElement(element) {
|
|
479
430
|
if (!element) {
|
|
480
|
-
|
|
431
|
+
throw new Error('Element was not defined');
|
|
481
432
|
}
|
|
482
|
-
|
|
433
|
+
const elementUnique = __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfElement(element);
|
|
434
|
+
if (!elementUnique) {
|
|
435
|
+
throw new Error('Could not find unique of element');
|
|
436
|
+
}
|
|
437
|
+
return __classPrivateFieldGet(this, _UmbSorterController_model, "f").find((entry) => elementUnique === __classPrivateFieldGet(this, _UmbSorterController_config, "f").getUniqueOfModel(entry));
|
|
483
438
|
}
|
|
484
439
|
async removeItem(item) {
|
|
485
440
|
if (!item) {
|
|
@@ -500,11 +455,32 @@ export class UmbSorterController {
|
|
|
500
455
|
}
|
|
501
456
|
return false;
|
|
502
457
|
}
|
|
458
|
+
/*
|
|
459
|
+
public async insertItem(item: T, newIndex: number = 0) {
|
|
460
|
+
if (!item) {
|
|
461
|
+
return false;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
if (this.#config.performItemInsert) {
|
|
465
|
+
const result = await this.#config.performItemInsert({ item, newIndex });
|
|
466
|
+
if (result === false) {
|
|
467
|
+
return false;
|
|
468
|
+
}
|
|
469
|
+
} else {
|
|
470
|
+
const newModel = [...this.#model];
|
|
471
|
+
newModel.splice(newIndex, 0, item);
|
|
472
|
+
this.#model = newModel;
|
|
473
|
+
this.#config.onChange?.({ model: newModel, item });
|
|
474
|
+
}
|
|
475
|
+
return false;
|
|
476
|
+
}
|
|
477
|
+
*/
|
|
503
478
|
hasOtherItemsThan(item) {
|
|
504
479
|
return __classPrivateFieldGet(this, _UmbSorterController_model, "f").filter((x) => x !== item).length > 0;
|
|
505
480
|
}
|
|
506
|
-
|
|
507
|
-
|
|
481
|
+
// TODO: Could get item via attr.
|
|
482
|
+
async moveItemInModel(newIndex, fromCtrl) {
|
|
483
|
+
const item = _a.activeItem;
|
|
508
484
|
if (!item) {
|
|
509
485
|
console.error('Could not find item of sync item');
|
|
510
486
|
return false;
|
|
@@ -517,6 +493,10 @@ export class UmbSorterController {
|
|
|
517
493
|
// Local move:
|
|
518
494
|
// TODO: Maybe this should be replaceable/configurable:
|
|
519
495
|
const oldIndex = __classPrivateFieldGet(this, _UmbSorterController_model, "f").indexOf(item);
|
|
496
|
+
if (oldIndex === -1) {
|
|
497
|
+
console.error('Could not find item in model');
|
|
498
|
+
return false;
|
|
499
|
+
}
|
|
520
500
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").performItemMove) {
|
|
521
501
|
const result = await __classPrivateFieldGet(this, _UmbSorterController_config, "f").performItemMove({ item, newIndex, oldIndex });
|
|
522
502
|
if (result === false) {
|
|
@@ -533,6 +513,7 @@ export class UmbSorterController {
|
|
|
533
513
|
__classPrivateFieldSet(this, _UmbSorterController_model, newModel, "f");
|
|
534
514
|
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onChange?.({ model: newModel, item });
|
|
535
515
|
}
|
|
516
|
+
_a.activeIndex = newIndex;
|
|
536
517
|
}
|
|
537
518
|
else {
|
|
538
519
|
// Not a local move:
|
|
@@ -552,21 +533,30 @@ export class UmbSorterController {
|
|
|
552
533
|
__classPrivateFieldSet(this, _UmbSorterController_model, newModel, "f");
|
|
553
534
|
__classPrivateFieldGet(this, _UmbSorterController_config, "f").onChange?.({ model: newModel, item });
|
|
554
535
|
}
|
|
536
|
+
// If everything went well, we can set new activeSorter to this:
|
|
537
|
+
_a.activeSorter = this;
|
|
538
|
+
_a.activeIndex = newIndex;
|
|
555
539
|
}
|
|
556
540
|
return true;
|
|
557
541
|
}
|
|
558
|
-
updateAllowIndication(
|
|
542
|
+
updateAllowIndication(item) {
|
|
543
|
+
// TODO: Allow indication.
|
|
544
|
+
/*
|
|
559
545
|
// Remove old indication:
|
|
560
|
-
if (
|
|
561
|
-
|
|
546
|
+
if (this.#lastIndicationContainerCtrl !== null && this.#lastIndicationContainerCtrl !== controller) {
|
|
547
|
+
this.#lastIndicationContainerCtrl.notifyAllowed();
|
|
562
548
|
}
|
|
563
|
-
|
|
549
|
+
this.#lastIndicationContainerCtrl = controller;
|
|
550
|
+
|
|
564
551
|
if (controller.notifyRequestDrop({ item: item }) === true) {
|
|
565
552
|
controller.notifyAllowed();
|
|
566
553
|
return true;
|
|
567
554
|
}
|
|
555
|
+
|
|
568
556
|
controller.notifyDisallowed(); // This block is not accepted to we will indicate that its not allowed.
|
|
569
557
|
return false;
|
|
558
|
+
*/
|
|
559
|
+
return true;
|
|
570
560
|
}
|
|
571
561
|
removeAllowIndication() {
|
|
572
562
|
// Remove old indication:
|
|
@@ -633,7 +623,7 @@ export class UmbSorterController {
|
|
|
633
623
|
}
|
|
634
624
|
destroy() {
|
|
635
625
|
// Do something when host element is destroyed.
|
|
636
|
-
if (
|
|
626
|
+
if (_a.activeElement) {
|
|
637
627
|
__classPrivateFieldGet(this, _UmbSorterController_handleDragEnd, "f").call(this);
|
|
638
628
|
}
|
|
639
629
|
__classPrivateFieldSet(this, _UmbSorterController_lastIndicationContainerCtrl, null, "f");
|
|
@@ -643,44 +633,71 @@ export class UmbSorterController {
|
|
|
643
633
|
__classPrivateFieldSet(this, _UmbSorterController_scrollElement, null, "f");
|
|
644
634
|
}
|
|
645
635
|
}
|
|
646
|
-
_UmbSorterController_host = new WeakMap(), _UmbSorterController_config = new WeakMap(), _UmbSorterController_observer = new WeakMap(), _UmbSorterController_model = new WeakMap(), _UmbSorterController_rqaId = new WeakMap(), _UmbSorterController_containerElement = new WeakMap(),
|
|
636
|
+
_a = UmbSorterController, _UmbSorterController_host = new WeakMap(), _UmbSorterController_config = new WeakMap(), _UmbSorterController_observer = new WeakMap(), _UmbSorterController_model = new WeakMap(), _UmbSorterController_rqaId = new WeakMap(), _UmbSorterController_containerElement = new WeakMap(), _UmbSorterController_useContainerShadowRoot = new WeakMap(), _UmbSorterController_scrollElement = new WeakMap(), _UmbSorterController_dragX = new WeakMap(), _UmbSorterController_dragY = new WeakMap(), _UmbSorterController_lastIndicationContainerCtrl = new WeakMap(), _UmbSorterController_handleDragStart = new WeakMap(), _UmbSorterController_handleDragEnd = new WeakMap(), _UmbSorterController_updateDragMove = new WeakMap(), _UmbSorterController_autoScrollRAF = new WeakMap(), _UmbSorterController_autoScrollEl = new WeakMap(), _UmbSorterController_performAutoScroll = new WeakMap(), _UmbSorterController_instances = new WeakSet(), _UmbSorterController_setupPlaceholderStyle = function _UmbSorterController_setupPlaceholderStyle() {
|
|
647
637
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass) {
|
|
648
|
-
|
|
638
|
+
_a.activeElement?.classList.add(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
|
|
649
639
|
}
|
|
650
640
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr) {
|
|
651
|
-
|
|
641
|
+
_a.activeElement?.setAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr, '');
|
|
652
642
|
}
|
|
653
643
|
}, _UmbSorterController_removePlaceholderStyle = function _UmbSorterController_removePlaceholderStyle() {
|
|
654
644
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass) {
|
|
655
|
-
|
|
645
|
+
_a.activeElement?.classList.remove(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderClass);
|
|
656
646
|
}
|
|
657
647
|
if (__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr) {
|
|
658
|
-
|
|
648
|
+
_a.activeElement?.removeAttribute(__classPrivateFieldGet(this, _UmbSorterController_config, "f").placeholderAttr);
|
|
659
649
|
}
|
|
660
650
|
}, _UmbSorterController_setCurrentElement = function _UmbSorterController_setCurrentElement(element) {
|
|
661
|
-
|
|
662
|
-
|
|
651
|
+
_a.activeElement = element;
|
|
652
|
+
_a.activeDragElement = __classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector
|
|
663
653
|
? element.querySelector(__classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector) ?? undefined
|
|
664
|
-
: element
|
|
665
|
-
if (!
|
|
654
|
+
: element;
|
|
655
|
+
if (!_a.activeDragElement) {
|
|
666
656
|
throw new Error('Could not find drag element, query was made with the `draggableSelector` of "' +
|
|
667
657
|
__classPrivateFieldGet(this, _UmbSorterController_config, "f").draggableSelector +
|
|
668
658
|
'"');
|
|
669
659
|
return;
|
|
670
660
|
}
|
|
671
661
|
__classPrivateFieldGet(this, _UmbSorterController_instances, "m", _UmbSorterController_setupPlaceholderStyle).call(this);
|
|
672
|
-
},
|
|
673
|
-
if (!
|
|
662
|
+
}, _UmbSorterController_handleDragMove = function _UmbSorterController_handleDragMove(event) {
|
|
663
|
+
if (!_a.activeElement) {
|
|
674
664
|
return;
|
|
675
665
|
}
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
666
|
+
const clientX = event.touches
|
|
667
|
+
? event.touches[0].clientX
|
|
668
|
+
: event.clientX;
|
|
669
|
+
const clientY = event.touches
|
|
670
|
+
? event.touches[0].clientY
|
|
671
|
+
: event.clientY;
|
|
672
|
+
if (clientX !== 0 && clientY !== 0) {
|
|
673
|
+
if (__classPrivateFieldGet(this, _UmbSorterController_dragX, "f") === clientX && __classPrivateFieldGet(this, _UmbSorterController_dragY, "f") === clientY) {
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
__classPrivateFieldSet(this, _UmbSorterController_dragX, clientX, "f");
|
|
677
|
+
__classPrivateFieldSet(this, _UmbSorterController_dragY, clientY, "f");
|
|
678
|
+
this.handleAutoScroll(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"));
|
|
679
|
+
const activeDragRect = _a.activeDragElement.getBoundingClientRect();
|
|
680
|
+
const insideCurrentRect = isWithinRect(__classPrivateFieldGet(this, _UmbSorterController_dragX, "f"), __classPrivateFieldGet(this, _UmbSorterController_dragY, "f"), activeDragRect);
|
|
681
|
+
if (!insideCurrentRect) {
|
|
682
|
+
if (__classPrivateFieldGet(this, _UmbSorterController_rqaId, "f") === undefined) {
|
|
683
|
+
__classPrivateFieldSet(this, _UmbSorterController_rqaId, requestAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_updateDragMove, "f")), "f");
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
}, _UmbSorterController_moveElementTo =
|
|
688
|
+
//
|
|
689
|
+
async function _UmbSorterController_moveElementTo(newIndex) {
|
|
690
|
+
if (!_a.activeElement || !_a.activeSorter) {
|
|
679
691
|
return;
|
|
680
|
-
if (await containerCtrl.moveItemInModel(newIndex, __classPrivateFieldGet(this, _UmbSorterController_currentElement, "f"), __classPrivateFieldGet(this, _UmbSorterController_currentContainerCtrl, "f"))) {
|
|
681
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentContainerCtrl, containerCtrl, "f");
|
|
682
|
-
__classPrivateFieldSet(this, _UmbSorterController_currentIndex, newIndex, "f");
|
|
683
692
|
}
|
|
693
|
+
const requestingSorter = _a.dropSorter;
|
|
694
|
+
if (!requestingSorter) {
|
|
695
|
+
throw new Error('Could not find requestingSorter');
|
|
696
|
+
}
|
|
697
|
+
// If same container and same index, do nothing:
|
|
698
|
+
if (requestingSorter === _a.activeSorter && _a.activeIndex === newIndex)
|
|
699
|
+
return;
|
|
700
|
+
await requestingSorter.moveItemInModel(newIndex, _a.activeSorter);
|
|
684
701
|
}, _UmbSorterController_stopAutoScroll = function _UmbSorterController_stopAutoScroll() {
|
|
685
702
|
cancelAnimationFrame(__classPrivateFieldGet(this, _UmbSorterController_autoScrollRAF, "f"));
|
|
686
703
|
__classPrivateFieldSet(this, _UmbSorterController_autoScrollRAF, null, "f");
|