Skip to content

Commit 1f2e014

Browse files
committed
Merge branch 'master' into allow-ember-truth-helpers-v5
2 parents d5e13d1 + 2b9d1b1 commit 1f2e014

10 files changed

Lines changed: 1863 additions & 2301 deletions

File tree

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Component from '@glimmer/component';
22
import { action } from '@ember/object';
3-
import { runTask, cancelTask } from 'ember-lifeline';
3+
import { task, timeout } from 'ember-concurrency';
44

55
export default class extends Component {
66
notifications = [
@@ -17,23 +17,17 @@ export default class extends Component {
1717

1818
@action
1919
open(dropdown) {
20-
if (this.closeTimer) {
21-
cancelTask(this, this.closeTimer);
22-
this.closeTimer = null;
23-
} else {
24-
dropdown.actions.open();
25-
}
20+
this.closeLaterTask.cancelAll();
21+
dropdown.actions.open();
2622
}
2723

2824
@action
2925
closeLater(dropdown) {
30-
this.closeTimer = runTask(
31-
this,
32-
() => {
33-
this.closeTimer = null;
34-
dropdown.actions.close();
35-
},
36-
200,
37-
);
26+
this.closeLaterTask.perform(dropdown);
3827
}
28+
29+
closeLaterTask = task(async (dropdown) => {
30+
await timeout(200);
31+
dropdown.actions.close();
32+
});
3933
}
Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,6 @@
11
import Controller from '@ember/controller';
2-
import { runTask, cancelTask } from 'ember-lifeline';
3-
import { action } from '@ember/object';
42
import ContentEvents1Component from '../../../components/snippets/content-events-1';
53

64
export default class extends Controller {
75
contentEvents1Component = ContentEvents1Component;
8-
9-
notifications = [
10-
{ text: 'Edward' },
11-
{ text: 'Jonathan' },
12-
{ text: 'Tom' },
13-
{ text: 'Eric' },
14-
];
15-
16-
prevent(e) {
17-
return e.stopImmediatePropagation();
18-
}
19-
20-
@action
21-
open(dropdown) {
22-
if (this.closeTimer) {
23-
cancelTask(this, this.closeTimer);
24-
this.closeTimer = null;
25-
} else {
26-
dropdown.actions.open();
27-
}
28-
}
29-
30-
@action
31-
closeLater(dropdown) {
32-
this.closeTimer = runTask(
33-
this,
34-
() => {
35-
this.closeTimer = null;
36-
dropdown.actions.close();
37-
},
38-
200,
39-
);
40-
}
416
}

docs/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
"ember-code-snippet": "git://github.com/ef4/ember-code-snippet.git#d054b697098ad52481c94a952ccf8d89ba1f25fe",
7474
"ember-concurrency": "^4.0.4",
7575
"ember-fetch": "^8.1.2",
76-
"ember-lifeline": "^7.0.0",
7776
"ember-load-initializers": "^3.0.1",
7877
"ember-modifier": "^4.2.0",
7978
"ember-page-title": "^9.0.1",

ember-basic-dropdown/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
"decorator-transforms": "^2.3.0",
6969
"ember-element-helper": "^0.8.7",
7070
"ember-modifier": "^4.2.0",
71-
"ember-lifeline": "^7.0.0",
7271
"ember-style-modifier": "^4.4.0",
7372
"ember-truth-helpers": "^4.0.3 || ^5.0.0"
7473
},

ember-basic-dropdown/src/components/basic-dropdown-content.ts

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import hasMoved from '../utils/has-moved.ts';
1111
import { isTesting } from '@embroider/macros';
1212
import { modifier } from 'ember-modifier';
1313
import type { Dropdown, TRootEventType } from './basic-dropdown.ts';
14-
import { runTask } from 'ember-lifeline';
1514

1615
export interface BasicDropdownContentSignature {
1716
Element: Element;
@@ -205,11 +204,8 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
205204
);
206205
}
207206

208-
window.addEventListener('resize', this.runloopAwareRepositionBound);
209-
window.addEventListener(
210-
'orientationchange',
211-
this.runloopAwareRepositionBound,
212-
);
207+
window.addEventListener('resize', this.repositionBound);
208+
window.addEventListener('orientationchange', this.repositionBound);
213209

214210
if (this.isTouchDevice) {
215211
document.addEventListener(
@@ -350,7 +346,7 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
350346
}
351347

352348
if (shouldReposition) {
353-
this.runloopAwareReposition();
349+
this.reposition();
354350
}
355351
});
356352
this.mutationObserver.observe(dropdownElement, {
@@ -405,31 +401,22 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
405401
}
406402

407403
@action
408-
runloopAwareReposition(): void {
404+
reposition(): void {
409405
if (!this.args.dropdown) {
410406
return;
411407
}
412408

413-
runTask(this, () => {
414-
if (!this.args.dropdown) {
415-
return;
416-
}
417-
418-
this.args.dropdown.actions.reposition();
419-
});
409+
this.args.dropdown.actions.reposition();
420410
}
421411

422412
@action
423413
removeGlobalEvents(): void {
424-
window.removeEventListener('resize', this.runloopAwareRepositionBound);
425-
window.removeEventListener(
426-
'orientationchange',
427-
this.runloopAwareRepositionBound,
428-
);
414+
window.removeEventListener('resize', this.repositionBound);
415+
window.removeEventListener('orientationchange', this.repositionBound);
429416
}
430417

431418
touchMoveHandlerBound = (e: TouchEvent) => this.touchMoveHandler(e);
432-
runloopAwareRepositionBound = () => this.runloopAwareReposition();
419+
repositionBound = () => this.reposition();
433420
touchStartHandlerBound = () => this.touchStartHandler();
434421

435422
// Methods
@@ -522,15 +509,15 @@ export default class BasicDropdownContent extends Component<BasicDropdownContent
522509
// These two functions wire up scroll handling if `preventScroll` is false.
523510
// These trigger reposition of the dropdown.
524511
addScrollEvents(): void {
525-
window.addEventListener('scroll', this.runloopAwareRepositionBound);
512+
window.addEventListener('scroll', this.repositionBound);
526513
this.scrollableAncestors.forEach((el) => {
527-
el.addEventListener('scroll', this.runloopAwareRepositionBound);
514+
el.addEventListener('scroll', this.repositionBound);
528515
});
529516
}
530517
removeScrollEvents(): void {
531-
window.removeEventListener('scroll', this.runloopAwareRepositionBound);
518+
window.removeEventListener('scroll', this.repositionBound);
532519
this.scrollableAncestors.forEach((el) => {
533-
el.removeEventListener('scroll', this.runloopAwareRepositionBound);
520+
el.removeEventListener('scroll', this.repositionBound);
534521
});
535522
}
536523
}

ember-basic-dropdown/src/components/basic-dropdown.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import Component from '@glimmer/component';
22
import { tracked } from '@glimmer/tracking';
33
import { action } from '@ember/object';
44
import { guidFor } from '@ember/object/internals';
5-
import { scheduleTask } from 'ember-lifeline';
65
import calculatePosition from '../utils/calculate-position.ts';
76
import type {
87
CalculatePosition,
@@ -12,6 +11,7 @@ import type {
1211
} from '../utils/calculate-position.ts';
1312
import { getOwner } from '@ember/application';
1413
import type Owner from '@ember/owner';
14+
import { schedule } from '@ember/runloop';
1515
import type { ComponentLike } from '@glint/template';
1616
import type { BasicDropdownTriggerSignature } from './basic-dropdown-trigger.ts';
1717
import type { BasicDropdownContentSignature } from './basic-dropdown-content.ts';
@@ -166,7 +166,8 @@ export default class BasicDropdown extends Component<BasicDropdownSignature> {
166166
this._previousDisabled !== UNINITIALIZED &&
167167
this._previousDisabled !== newVal
168168
) {
169-
scheduleTask(this, 'actions', () => {
169+
// eslint-disable-next-line ember/no-runloop
170+
schedule('actions', () => {
170171
if (newVal && this.publicAPI.isOpen) {
171172
// eslint-disable-next-line ember/no-side-effects
172173
this.isOpen = false;

0 commit comments

Comments
 (0)