Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable ember/no-component-lifecycle-hooks */
/* eslint-disable ember/no-side-effects */
import { A } from '@ember/array';
import Component from '@glimmer/component';
import identity from 'ember-collection/utils/identity';
Expand Down
34 changes: 4 additions & 30 deletions addon/components/collection-scroll-view/index.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,12 @@
import Component from '@glimmer/component';
import { reads } from 'macro-decorators';
import { cached, tracked } from '@glimmer/tracking';
import { cached } from 'ember-cached-decorator-polyfill';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { next, schedule } from '@ember/runloop';

// import { argument } from '@ember-decorators/argument';
// import { Action, optional } from '@ember-decorators/argument/types';

/* A component which integrates a ScrollView with ember-collection */
export default class CollectionScrollView extends Component {
// @argument('any')
// auxiliaryComponent;
//
// @argument(optional(Action))
// scrolledToTopChange;
//
// @argument(optional('number'))
// scrollTopOffset;
@reads('args.scrollTopOffset', 0) scrollTopOffset;

// @argument(optional('number'))
// initialScrollTop;
//
// @argument(optional('string'))
// key;
//
// @argument(optional('any'))
// revealService;
//
// @argument('any')
// items;
//
// @argument(optional('any'))
// buffer;

element;

@tracked headerDimensions;
Expand Down Expand Up @@ -76,7 +49,8 @@ export default class CollectionScrollView extends Component {
return Math.max(0, headerHeight - scrollTop);
}

@action updateHeaderDimensions(scrollViewApi, entry) {
@action
updateHeaderDimensions(scrollViewApi, entry) {
let isFirstMeasure = !this.headerDimensions;
this.headerDimensions = { width: entry.contentRect.width, height: entry.contentRect.height };

Expand Down
23 changes: 15 additions & 8 deletions addon/components/scroll-view.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* global Ember, Scroller */
/* global Scroller */
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action, computed } from '@ember/object';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
// import { argument } from '@ember-decorators/argument';
// import { Action, optional } from '@ember-decorators/argument/types';
Expand All @@ -14,7 +14,11 @@ import { timeout } from 'ember-concurrency';
import { task } from 'ember-concurrency-decorators';
import ScrollViewApi from 'yapp-scroll-view/utils/scroll-view-api';
import { DEBUG } from '@glimmer/env';
import { registerWaiter, unregisterWaiter } from '@ember/test';
import { buildWaiter } from '@ember/test-waiters';
import Ember from 'ember';
import { cached } from 'ember-cached-decorator-polyfill';

let waiter = buildWaiter('yapp-scroll-view:scrolling');

const FIELD_REGEXP = /input|textarea|select/i;
const MEASUREMENT_INTERVAL = 250;
Expand Down Expand Up @@ -121,9 +125,6 @@ class ScrollView extends Component {
this.setupScroller();
this.measurementTask.perform();
this.bindScrollerEvents(element);
if (DEBUG) {
registerWaiter(this, this._isScrollingForWaiter);
}
this.onKeyUpdated();
}

Expand Down Expand Up @@ -152,7 +153,6 @@ class ScrollView extends Component {
if (Ember.testing) {
window.SIMULATE_SCROLL_VIEW_MEASUREMENT_LOOP = null;
}
unregisterWaiter(this, this._isScrollingForWaiter);
}
}

Expand Down Expand Up @@ -534,7 +534,7 @@ class ScrollView extends Component {
}
}

@computed
@cached
get scrollViewApi() {
return ScrollViewApi.create({
_scrollComponent: this,
Expand All @@ -558,7 +558,14 @@ class ScrollView extends Component {
});
}

_waiterToken;
_trackIsScrollingForWaiter(isScrolling) {
if (isScrolling && !this._waiterToken) {
this._waiterToken = waiter.beginAsync();
} else if (!isScrolling && this._waiterToken) {
waiter.endAsync(this._waiterToken);
this._waiterToken = undefined;
}
this._lastIsScrolling = isScrolling;
}

Expand Down
4 changes: 2 additions & 2 deletions addon/services/scroll-position-memory.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Service from "@ember/service";

export default Service.extend({
});
export default class extends Service {
}
1 change: 1 addition & 0 deletions addon/utils/scroll-view-api.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable ember/no-classic-classes */
import Evented from '@ember/object/evented';
import EmberObject from '@ember/object';

Expand Down
67 changes: 36 additions & 31 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,67 +27,68 @@
},
"dependencies": {
"@ember/render-modifiers": "^1.0.2",
"@glimmer/tracking": "^1.0.2",
"broccoli-stew": "^2.1.0",
"@glimmer/tracking": "^1.0.4",
"broccoli-stew": "^3.0.0",
"ember-auto-import": "^1.6.0",
"ember-cached-decorator-polyfill": "^0.1.0",
"ember-cli-babel": "7.22.1",
"ember-cli-htmlbars": "^5.3.1",
"ember-composable-helpers": "^4.3.0",
"ember-concurrency-decorators": "^2.0.0",
"ember-concurrency": "^1.2.1",
"ember-decorators": "^6.1.1",
"ember-named-blocks-polyfill": "^0.2.3",
"ember-cached-decorator-polyfill": "^0.1.3",
"ember-cli-babel": "7.26.6",
"ember-cli-htmlbars": "^5.7.1",
"ember-composable-helpers": "^4.4.1",
"ember-concurrency": "^2.0.3",
"ember-concurrency-decorators": "^2.0.3",
"ember-named-blocks-polyfill": "^0.2.4",
"ember-on-resize-modifier": "^0.3.0",
"ember-ref-modifier": "^1.0.1",
"ember-render-helpers": "^0.1.1",
"ember-render-helpers": "^0.2.0",
"ember-resize-observer-polyfill": "^0.0.1",
"ember-set-helper": "^1.1.0",
"ember-set-helper": "^2.0.1",
"ember-truth-helpers": "^3.0.0",
"hammerjs": "^2.0.8",
"macro-decorators": "^0.1.2"
},
"devDependencies": {
"@babel/core": "^7.10.2",
"@babel/core": "^7.14.3",
"@ember/optional-features": "^2.0.0",
"@glimmer/component": "^1.0.2",
"@ember/test-helpers": "^2.2.5",
"@ember/test-waiters": "^2.4.4",
"@glimmer/component": "^1.0.4",
"babel-eslint": "^10.1.0",
"broccoli-asset-rev": "^3.0.0",
"ember-cli": "~3.22.0",
"ember-cli": "~3.26.1",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-deploy": "^1.0.2",
"ember-cli-deploy-build": "^2.0.0",
"ember-cli-deploy-git": "^1.3.3",
"ember-cli-deploy-git": "^1.3.4",
"ember-cli-inject-live-reload": "^2.0.2",
"ember-cli-sass": "^10.0.1",
"ember-cli-sri": "^2.1.1",
"ember-cli-terser": "^4.0.0",
"ember-cli-terser": "^4.0.2",
"ember-collection": "1.0.0",
"ember-decorators-polyfill": "^1.1.5",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.1",
"ember-load-initializers": "^2.1.1",
"ember-load-initializers": "^2.1.2",
"ember-maybe-import-regenerator": "^0.1.6",
"ember-qunit": "^4.6.0",
"ember-qunit": "^5.1.4",
"ember-resolver": "^8.0.2",
"ember-simulant-test-helpers": "^0.3.1",
"ember-source": "~3.22.0",
"ember-simulant-test-helpers": "^0.3.2",
"ember-source": "~3.26.0",
"ember-source-channel-url": "^3.0.0",
"ember-template-lint": "^2.14.0",
"ember-template-lint": "^3.4.2",
"ember-try": "^1.4.0",
"eslint": "^7.11.0",
"eslint-plugin-ember": "^9.3.0",
"eslint": "^7.26.0",
"eslint-plugin-ember": "^10.4.2",
"eslint-plugin-node": "^11.1.0",
"layout-bin-packer": "^1.2.0",
"layout-bin-packer": "~1.4.0",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
"qunit-dom": "^1.5.0",
"release-it": "^13.6.2",
"release-it-lerna-changelog": "^2.3.0",
"sass": "^1.26.8"
"qunit": "^2.15.0",
"qunit-dom": "^1.6.0",
"release-it": "^14.6.2",
"release-it-lerna-changelog": "^3.1.0",
"sass": "^1.33.0"
},
"engines": {
"node": "10.* || >= 12"
"node": "12.* || >= 14"
},
"publishConfig": {
"registry": "https://registry.npmjs.org"
Expand Down Expand Up @@ -116,5 +117,9 @@
"npm": {
"publish": false
}
},
"volta": {
"node": "14.17.0",
"yarn": "1.22.10"
}
}
37 changes: 20 additions & 17 deletions tests/dummy/app/controllers/images.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';

function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex ;
Expand All @@ -19,23 +21,24 @@ function shuffle(array) {
return array;
}

export default Controller.extend({
itemWidth: 200,
itemHeight: 100,
containerWidth: 300,
containerHeight: 600,
export default class extends Controller {
@tracked itemWidth = 200;
@tracked itemHeight = 100;
@tracked containerWidth = 300;
@tracked containerHeight = 600;

actions: {
updateContainerWidth: function(value) {
this.set('containerWidth', parseInt(value, 10));
},

updateContainerHeight: function(value) {
this.set('containerHeight', parseInt(value, 10));
},
@action
updateContainerWidth(value) {
this.containerWidth = parseInt(value, 10);
}

@action
updateContainerHeight(value) {
this.containerHeight = parseInt(value, 10);
}

shuffle: function() {
this.set('model', shuffle(this.get('model').slice(0)));
}
@action
shuffle() {
this.model = shuffle(this.model.slice(0));
}
});
}
Loading