Skip to content

Commit a6203bc

Browse files
Remove @ember/render-modifiers
1 parent ce4dede commit a6203bc

7 files changed

Lines changed: 102 additions & 107 deletions

File tree

.template-lintrc.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,4 @@
22

33
module.exports = {
44
extends: 'recommended',
5-
rules: {
6-
'no-at-ember-render-modifiers': false,
7-
},
85
};

addon/components/drag-sort-item.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
{{if this.shouldShowPlaceholderBefore '-placeholderBefore'}}
99
{{if this.shouldShowPlaceholderAfter '-placeholderAfter'}}"
1010
draggable={{this.draggable}}
11-
{{did-insert this.elementInserted}}
1211
{{on "dragstart" this.dragStart}}
1312
{{on "dragend" this.dragEnd}}
1413
{{on "dragover" this.dragOver}}

addon/components/drag-sort-item.ts

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-disable ember/no-runloop */
22
import Component from '@glimmer/component';
33
import { assert } from '@ember/debug';
4+
import { action } from '@ember/object';
45
import { service } from '@ember/service';
56
import type DragSort from 'ember-drag-sort/services/drag-sort';
67
import { next } from '@ember/runloop';
@@ -17,7 +18,7 @@ interface DragSortItemSignature<Item extends object> {
1718
Args: {
1819
additionalArgs: object;
1920
determineForeignPositionAction: unknown;
20-
draggingEnabled: boolean;
21+
draggingEnabled?: boolean;
2122
dragEndAction?: unknown;
2223
dragStartAction?: (args: {
2324
event: DragEvent;
@@ -106,15 +107,13 @@ export default class DragSortItem<Item extends object> extends Component<
106107
return !sourceOnly && isDraggingOver && !isDraggingUp;
107108
}
108109

109-
elementInserted = (element: HTMLElement) => {
110-
this.el = element;
111-
};
112-
113-
dragStart = (event: DragEvent) => {
110+
@action
111+
dragStart(event: DragEvent) {
112+
const element = event.currentTarget as HTMLElement;
114113
// Ignore irrelevant drags
115114
if (!this.args.draggingEnabled) return;
116115

117-
if (!this.isHandleUsed(event.target as HTMLElement)) {
116+
if (!this.isHandleUsed(event)) {
118117
event.preventDefault();
119118
return;
120119
}
@@ -125,7 +124,7 @@ export default class DragSortItem<Item extends object> extends Component<
125124
if (event.dataTransfer) {
126125
if (event.dataTransfer.setData) event.dataTransfer.setData('text', '');
127126
if (event.dataTransfer.setDragImage)
128-
event.dataTransfer.setDragImage(this.el, 0, 0);
127+
event.dataTransfer.setDragImage(element, 0, 0);
129128
}
130129

131130
const dragStartAction = this.args.dragStartAction;
@@ -135,30 +134,33 @@ export default class DragSortItem<Item extends object> extends Component<
135134

136135
dragStartAction({
137136
event,
138-
element: this.el,
137+
element,
139138
draggedItem: item,
140139
});
141140
}
142141

143142
this.startDragging();
144-
};
143+
}
145144

146-
dragEnd = (event: DragEvent) => {
145+
@action
146+
dragEnd(event: DragEvent) {
147147
// Ignore irrelevant drags
148148
if (!this.dragSort.isDragging) return;
149149

150150
event.stopPropagation();
151151
event.preventDefault();
152152

153153
this.endDragging();
154-
};
154+
}
155155

156156
// Required for Firefox. http://stackoverflow.com/a/32592759/901944
157-
drop = (event: DragEvent) => {
157+
@action
158+
drop(event: DragEvent) {
158159
event.preventDefault();
159-
};
160+
}
160161

161-
dragOver = (event: DragEvent) => {
162+
@action
163+
dragOver(event: DragEvent) {
162164
// Ignore irrelevant drags
163165
if (
164166
!this.dragSort.isDragging ||
@@ -176,9 +178,10 @@ export default class DragSortItem<Item extends object> extends Component<
176178
event.preventDefault();
177179

178180
this.draggingOver(event);
179-
};
181+
}
180182

181-
startDragging = () => {
183+
@action
184+
startDragging() {
182185
this.collapse();
183186

184187
const additionalArgs = this.args.additionalArgs;
@@ -197,15 +200,18 @@ export default class DragSortItem<Item extends object> extends Component<
197200
group,
198201
isHorizontal,
199202
});
200-
};
203+
}
201204

202-
endDragging = () => {
205+
@action
206+
endDragging() {
203207
this.restore();
204208

205209
this.dragSort.endDragging({ action: this.args.dragEndAction });
206-
};
210+
}
207211

208-
draggingOver = (event: DragEvent) => {
212+
@action
213+
draggingOver(event: DragEvent) {
214+
const element = event.currentTarget as HTMLElement;
209215
const sourceOnly = this.args.sourceOnly;
210216

211217
if (sourceOnly) {
@@ -229,16 +235,16 @@ export default class DragSortItem<Item extends object> extends Component<
229235
}
230236

231237
const placeholderCorrection = isPlaceholderBefore
232-
? getComputedStyleInt(this.el, beforeAttribute) * placeholderModifier
238+
? getComputedStyleInt(element, beforeAttribute) * placeholderModifier
233239
: isPlaceholderAfter
234-
? -getComputedStyleInt(this.el, afterAttribute) * placeholderModifier
240+
? -getComputedStyleInt(element, afterAttribute) * placeholderModifier
235241
: 0;
236242

237243
const offset = isHorizontal
238-
? this.el.getBoundingClientRect().left
239-
: this.el.getBoundingClientRect().top;
244+
? element.getBoundingClientRect().left
245+
: element.getBoundingClientRect().top;
240246

241-
const itemSize = isHorizontal ? this.el.offsetWidth : this.el.offsetHeight;
247+
const itemSize = isHorizontal ? element.offsetWidth : element.offsetHeight;
242248

243249
const mousePosition = isHorizontal ? event.clientX : event.clientY;
244250

@@ -247,35 +253,41 @@ export default class DragSortItem<Item extends object> extends Component<
247253
: mousePosition - offset < (itemSize + placeholderCorrection) / 2;
248254

249255
dragSort.draggingOver({ group, index, items, isDraggingUp });
250-
};
256+
}
251257

252-
collapse = () => {
258+
@action
259+
collapse() {
253260
// The delay is necessary for HTML classes to update with a delay.
254261
// Otherwise, dragging is finished immediately.
255262
next(() => {
256263
if (this.isDestroying || this.isDestroyed) return;
257264
this._isDragged = true;
258265
});
259-
};
266+
}
260267

261-
restore = () => {
268+
@action
269+
restore() {
262270
// The delay is necessary for HTML class to update with a delay.
263271
// Otherwise, dragging is finished immediately.
264272
next(() => {
265273
if (this.isDestroying || this.isDestroyed) return;
266274
this._isDragged = false;
267275
});
268-
};
276+
}
269277

270-
isHandleUsed = (target: HTMLElement) => {
278+
@action
279+
isHandleUsed(event: DragEvent) {
271280
const handle = this.args.handle;
281+
const target = event.target as HTMLElement;
272282

273283
if (!handle) return true;
274284

275-
const handleElement = this.el.querySelector(handle);
285+
const handleElement = (event.currentTarget as HTMLElement).querySelector(
286+
handle,
287+
);
276288

277289
assert('Handle not found', !!handleElement);
278290

279291
return handleElement === target || handleElement.contains(target);
280-
};
292+
}
281293
}

addon/components/drag-sort-list.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
{{if @isRtl '-rtl'}}
1111
{{if this.isVertical '-vertical'}}
1212
{{if this.sourceOnly '-sourceOnlyList'}}"
13-
{{did-insert this.elementInserted}}
1413
{{on "dragenter" this.dragEnter}}
1514
{{on "dragover" this.dragOver}}
1615
...attributes

addon/components/drag-sort-list.ts

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Component from '@glimmer/component';
2+
import { action } from '@ember/object';
23
import { service } from '@ember/service';
34
import { A } from '@ember/array';
45
import type DragSort from 'ember-drag-sort/services/drag-sort';
@@ -13,15 +14,15 @@ interface DragSortListSignature<Item extends object> {
1314
draggedItem: unknown;
1415
items: Array<Item>;
1516
}) => number;
16-
draggingEnabled: boolean;
17+
draggingEnabled?: boolean;
1718
dragEndAction?: unknown;
1819
dragStartAction?: unknown;
1920
handle?: string;
2021
items: Array<Item>;
2122
isHorizontal?: boolean;
2223
isRtl?: boolean;
2324
group?: string;
24-
sourceOnly: boolean;
25+
sourceOnly?: boolean;
2526
};
2627
Blocks: {
2728
default: [item: Item, index: number];
@@ -84,11 +85,8 @@ export default class DragSortList<Item extends object> extends Component<
8485
return this.args.sourceOnly ?? false;
8586
}
8687

87-
elementInserted = (element: HTMLElement) => {
88-
this.el = element;
89-
};
90-
91-
dragEnter = (event: DragEvent) => {
88+
@action
89+
dragEnter(event: DragEvent) {
9290
// Ignore irrelevant drags
9391
if (!this.dragSort.isDragging) return;
9492

@@ -109,9 +107,10 @@ export default class DragSortList<Item extends object> extends Component<
109107
if (this.args.determineForeignPositionAction) {
110108
this.forceDraggingOver();
111109
}
112-
};
110+
}
113111

114-
dragOver = (event: DragEvent) => {
112+
@action
113+
dragOver(event: DragEvent) {
115114
// This event is only used for placing the dragged element into the end of a horizontal list
116115
if (this.isVertical) {
117116
return;
@@ -129,9 +128,10 @@ export default class DragSortList<Item extends object> extends Component<
129128
event.stopPropagation();
130129

131130
this.isDraggingOverHorizontal(event);
132-
};
131+
}
133132

134-
dragEntering = (event: DragEvent) => {
133+
@action
134+
dragEntering(event: DragEvent) {
135135
const group = this.args.group;
136136
const items = this.args.items;
137137
const dragSort = this.dragSort;
@@ -151,11 +151,14 @@ export default class DragSortList<Item extends object> extends Component<
151151
targetArgs,
152152
targetIndex,
153153
});
154-
};
154+
}
155155

156-
getClosestHorizontalIndex = (event: DragEvent) => {
156+
@action
157+
getClosestHorizontalIndex(event: DragEvent) {
157158
// Calculate which item is closest and make that the target
158-
const itemsNodeList = this.el.querySelectorAll('.dragSortItem');
159+
const itemsNodeList = (event.currentTarget as HTMLElement).querySelectorAll(
160+
'.dragSortItem',
161+
);
159162
const draggableItems = A<HTMLElement>(
160163
Array.prototype.slice.call(itemsNodeList),
161164
);
@@ -169,9 +172,10 @@ export default class DragSortList<Item extends object> extends Component<
169172
const closestItem = positions.filterBy('top', currentRowPosition).pop();
170173

171174
return closestItem ? positions.indexOf(closestItem) : 0;
172-
};
175+
}
173176

174-
forceDraggingOver = () => {
177+
@action
178+
forceDraggingOver() {
175179
const determineForeignPositionAction =
176180
this.args.determineForeignPositionAction;
177181

@@ -196,15 +200,16 @@ export default class DragSortList<Item extends object> extends Component<
196200

197201
this.dragSort.draggingOver({ group, index, items, isDraggingUp });
198202
}
199-
};
203+
}
200204

201-
isDraggingOverHorizontal = (event: DragEvent) => {
205+
@action
206+
isDraggingOverHorizontal(event: DragEvent) {
202207
const dragSort = this.dragSort;
203208
const group = this.args.group;
204209
const items = this.args.items;
205210
const index = this.getClosestHorizontalIndex(event);
206211
const isDraggingUp = false;
207212

208213
dragSort.draggingOver({ group, index, items, isDraggingUp });
209-
};
214+
}
210215
}

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
},
6262
"dependencies": {
6363
"@babel/core": "^7.28.4",
64-
"@ember/render-modifiers": "^3.0.0",
6564
"ember-auto-import": "^2.10.0",
6665
"ember-cli-babel": "^8.2.0",
6766
"ember-cli-htmlbars": "^6.3.0",

0 commit comments

Comments
 (0)