Skip to content

Commit 051db59

Browse files
jmar910Dhaulagiri
authored andcommitted
Ember 3.5 (#206)
* added ember-cli-update * ran update to 3.0.4 * ran codemods * Finalized and all tests passing * updated exportable helpers * rm MODULE_REPORT.md * Use yarn in travis.yml * Remove commented debug code * Remove double await * remove ember-cli-update * Cleanup helper and correctly wait for async * re-remove ember-invoke-action * Fix offsetFn in test * useYarn: true in ember-try * undo readme change * ember-cli 3.5 * let 2.16 fail for now * re-add node 4 * fix '
1 parent 874d9d1 commit 051db59

32 files changed

+3142
-2896
lines changed

.eslintignore

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# unconventional js
2+
/blueprints/*/files/
3+
/vendor/
4+
5+
# compiled output
6+
/dist/
7+
/tmp/
8+
9+
# dependencies
10+
/bower_components/
11+
/node_modules/
12+
13+
# misc
14+
/coverage/
15+
!.*
16+
17+
# ember-try
18+
/.node_modules.ember-try/
19+
/bower.json.ember-try
20+
/package.json.ember-try

.eslintrc.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,20 @@ module.exports = {
2121
// node files
2222
{
2323
files: [
24+
'.eslintrc.js',
25+
'.template-lintrc.js',
26+
'ember-cli-build.js',
2427
'index.js',
2528
'testem.js',
26-
'ember-cli-build.js',
29+
'blueprints/*/index.js',
2730
'config/**/*.js',
2831
'tests/dummy/config/**/*.js'
2932
],
3033
excludedFiles: [
34+
'addon/**',
35+
'addon-test-support/**',
3136
'app/**',
32-
'addon/**'
37+
'tests/dummy/app/**'
3338
],
3439
parserOptions: {
3540
sourceType: 'script',
@@ -43,15 +48,6 @@ module.exports = {
4348
rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
4449
// add your custom rules and overrides for node files here
4550
})
46-
},
47-
48-
// test files
49-
{
50-
files: ['tests/**/*.js'],
51-
excludedFiles: ['tests/dummy/**/*.js'],
52-
env: {
53-
embertest: true
54-
}
5551
}
5652
]
5753
};

.gitignore

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
# See https://help.github.com/ignore-files/ for more about ignoring files.
22

33
# compiled output
4-
/dist
5-
/tmp
4+
/dist/
5+
/tmp/
66

77
# dependencies
8-
/node_modules
9-
/bower_components
8+
/bower_components/
9+
/node_modules/
1010

1111
# misc
1212
/.sass-cache
1313
/connect.lock
14-
/coverage/*
14+
/coverage/
1515
/libpeerconnection.log
16-
npm-debug.log*
17-
yarn-error.log
18-
testem.log
16+
/npm-debug.log*
17+
/testem.log
18+
/yarn-error.log
1919

2020
# ember-try
21-
.node_modules.ember-try/
22-
bower.json.ember-try
23-
package.json.ember-try
21+
/.node_modules.ember-try/
22+
/bower.json.ember-try
23+
/package.json.ember-try

.npmignore

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
1-
/bower_components
1+
# compiled output
2+
/dist/
3+
/tmp/
4+
5+
# dependencies
6+
/bower_components/
7+
8+
# misc
9+
/.bowerrc
10+
/.editorconfig
11+
/.ember-cli
12+
/.eslintignore
13+
/.eslintrc.js
14+
/.gitignore
15+
/.template-lintrc.js
16+
/.travis.yml
17+
/.watchmanconfig
18+
/bower.json
219
/config/ember-try.js
3-
/dist
4-
/tests
5-
/tmp
6-
**/.gitkeep
7-
.bowerrc
8-
.editorconfig
9-
.ember-cli
10-
.eslintrc.js
11-
.gitignore
12-
.watchmanconfig
13-
.travis.yml
14-
bower.json
15-
ember-cli-build.js
16-
testem.js
20+
/ember-cli-build.js
21+
/testem.js
22+
/tests/
23+
/yarn.lock
24+
.gitkeep
1725

1826
# ember-try
19-
.node_modules.ember-try/
20-
bower.json.ember-try
21-
package.json.ember-try
27+
/.node_modules.ember-try/
28+
/bower.json.ember-try
29+
/package.json.ember-try

.template-lintrc.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
module.exports = {
4+
extends: 'recommended'
5+
};

.travis.yml

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,32 @@ env:
1818
global:
1919
# See https://git.io/vdao3 for details.
2020
- JOBS=1
21-
matrix:
21+
22+
jobs:
23+
fail_fast: true
24+
allow_failures:
25+
- env: EMBER_TRY_SCENARIO=ember-canary
26+
- env: EMBER_TRY_SCENARIO=ember-lts-2.16
27+
28+
include:
29+
# runs linting and tests with current locked deps
30+
31+
- stage: "Tests"
32+
name: "Tests"
33+
script:
34+
- yarn run lint:hbs
35+
- yarn run lint:js
36+
- yarn test
37+
2238
# we recommend new addons test the current and previous LTS
2339
# as well as latest stable release (bonus points to beta/canary)
24-
- EMBER_TRY_SCENARIO=ember-lts-2.12
25-
- EMBER_TRY_SCENARIO=ember-lts-2.16
26-
- EMBER_TRY_SCENARIO=ember-release
27-
- EMBER_TRY_SCENARIO=ember-beta
28-
- EMBER_TRY_SCENARIO=ember-canary
29-
- EMBER_TRY_SCENARIO=ember-default
30-
31-
matrix:
32-
fast_finish: true
33-
allow_failures:
40+
- stage: "Additional Tests"
41+
env: EMBER_TRY_SCENARIO=ember-lts-2.16
42+
- env: EMBER_TRY_SCENARIO=ember-lts-2.18
43+
- env: EMBER_TRY_SCENARIO=ember-release
44+
- env: EMBER_TRY_SCENARIO=ember-beta
3445
- env: EMBER_TRY_SCENARIO=ember-canary
46+
- env: EMBER_TRY_SCENARIO=ember-default-with-jquery
3547

3648
before_install:
3749
- curl -o- -L https://yarnpkg.com/install.sh | bash
@@ -41,7 +53,4 @@ install:
4153
- yarn install --no-lockfile --non-interactive
4254

4355
script:
44-
- npm run lint:js
45-
# Usually, it's ok to finish the test scenario without reverting
46-
# to the addon's original dependency state, skipping "cleanup".
47-
- node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO --skip-cleanup
56+
- node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO

addon/components/sortable-group.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ export default Component.extend({
4141
*/
4242
itemPosition: computed(function() {
4343
let direction = this.get('direction');
44-
45-
return this.get(`sortedItems.firstObject.${direction}`) - this.get('sortedItems.firstObject.spacing');
44+
const firstObject = this.get('sortedItems').objectAt(0)
45+
return get(firstObject, direction) - get(firstObject, 'spacing');
4646
}).volatile(),
4747

4848
/**
@@ -52,7 +52,6 @@ export default Component.extend({
5252
sortedItems: computed(function() {
5353
let items = a(this.get('items'));
5454
let direction = this.get('direction');
55-
5655
return a(items.sortBy(direction));
5756
}).volatile(),
5857

@@ -90,6 +89,7 @@ export default Component.extend({
9089
*/
9190
update() {
9291
let sortedItems = this.get('sortedItems');
92+
9393
// Position of the first element
9494
let position = this._itemPosition;
9595

addon/helpers/drag.js

Lines changed: 48 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { registerAsyncHelper } from '@ember/test';
21
import $ from 'jquery';
2+
import { triggerEvent, settled } from '@ember/test-helpers'
3+
import { assert } from '@ember/debug'
34

45
/**
56
Drags elements by an offset specified in pixels.
@@ -26,15 +27,9 @@ import $ from 'jquery';
2627
@return {Promise}
2728
*/
2829

29-
export function drag(app, mode, itemSelector, offsetFn, callbacks = {}) {
30+
export async function drag(mode, itemSelector, offsetFn, callbacks = {}) {
3031
let start, move, end, which;
3132

32-
const {
33-
andThen,
34-
findWithAssert,
35-
wait
36-
} = app.testHelpers;
37-
3833
if (mode === 'mouse') {
3934
start = 'mousedown';
4035
move = 'mousemove';
@@ -47,66 +42,52 @@ export function drag(app, mode, itemSelector, offsetFn, callbacks = {}) {
4742
} else {
4843
throw new Error(`Unsupported mode: '${mode}'`);
4944
}
45+
let item = $(itemSelector);
46+
assert(`could not find item: ${itemSelector}`, !!item)
47+
48+
let itemOffset = item.offset();
49+
50+
let offset = offsetFn();
51+
52+
let itemElement = item.get(0);
53+
let rect = itemElement.getBoundingClientRect();
54+
let scale = itemElement.clientHeight / (rect.bottom - rect.top);
55+
let halfwayX = itemOffset.left + (offset.dx * scale) / 2;
56+
let halfwayY = itemOffset.top + (offset.dy * scale) / 2;
57+
let targetX = itemOffset.left + offset.dx * scale;
58+
let targetY = itemOffset.top + offset.dy * scale;
59+
60+
const getCoords = (x,y) => ({
61+
pageX: x,
62+
pageY: y,
63+
clientX: x,
64+
clientY: y,
65+
changedTouches: [{ screenX: x, screenY: y }],
66+
which
67+
})
68+
69+
await triggerEvent(itemElement, start, getCoords(itemOffset.left, itemOffset.top));
70+
71+
if (callbacks.dragstart) {
72+
await callbacks.dragstart;
73+
}
74+
await triggerEvent(itemElement, move, getCoords(itemOffset.left, itemOffset.top));
5075

51-
andThen(() => {
52-
let item = findWithAssert(itemSelector);
53-
let itemOffset = item.offset();
54-
let offset = offsetFn();
55-
let itemElement = item.get(0);
56-
let rect = itemElement.getBoundingClientRect();
57-
let scale = itemElement.clientHeight / (rect.bottom - rect.top);
58-
let halfwayX = itemOffset.left + (offset.dx * scale) / 2;
59-
let halfwayY = itemOffset.top + (offset.dy * scale) / 2;
60-
let targetX = itemOffset.left + offset.dx * scale;
61-
let targetY = itemOffset.top + offset.dy * scale;
62-
63-
triggerEvent(app, item, start, {
64-
pageX: itemOffset.left,
65-
pageY: itemOffset.top,
66-
which
67-
});
68-
69-
if (callbacks.dragstart) {
70-
andThen(callbacks.dragstart);
71-
}
72-
73-
triggerEvent(app, item, move, {
74-
pageX: itemOffset.left,
75-
pageY: itemOffset.top
76-
});
77-
78-
if (callbacks.dragmove) {
79-
andThen(callbacks.dragmove);
80-
}
81-
82-
triggerEvent(app, item, move, {
83-
pageX: halfwayX,
84-
pageY: halfwayY
85-
});
86-
87-
triggerEvent(app, item, move, {
88-
pageX: targetX,
89-
pageY: targetY
90-
});
91-
92-
triggerEvent(app, item, end, {
93-
pageX: targetX,
94-
pageY: targetY
95-
});
96-
97-
if (callbacks.dragend) {
98-
andThen(callbacks.dragend);
99-
}
100-
});
101-
102-
return wait();
103-
}
76+
if (callbacks.dragmove) {
77+
await callbacks.dragmove;
78+
}
79+
80+
await triggerEvent(itemElement, move, getCoords(halfwayX, halfwayY));
81+
82+
await triggerEvent(itemElement, move, getCoords(targetX, targetY));
83+
84+
await triggerEvent(itemElement, end, getCoords(targetX, targetY));
85+
86+
if (callbacks.dragend) {
87+
await callbacks.dragend
88+
}
10489

105-
function triggerEvent(app, el, type, props) {
106-
return app.testHelpers.andThen(() => {
107-
let event = $.Event(type, props);
108-
$(el).trigger(event);
109-
});
90+
return await settled();
11091
}
11192

112-
export default registerAsyncHelper('drag', drag);
93+
export default drag;

addon/helpers/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { default as reorder } from './reorder'
2+
export { default as drag } from './drag'

0 commit comments

Comments
 (0)