Ghost/ghost/admin/app/components/gh-loading-spinner.js
Kevin Ansfield 99dd49903d 🏃 improve navigation responsiveness with loading substates (#495)
no issue
- add loading substates for all routes that previously blocked transitions until their model had finished loading
  - enables immediate response on navigation click
  - loading templates include the title bar to provide immediate indication of which page is loading
  - loading templates include a new `{{gh-loading-spinner}}` component that will only show the spinner after 200ms to avoid flashing a spinner for users on fast connections
- updated Version Mismatch tests to match new behaviour of intermediate transitions when navigating
2017-01-17 17:44:08 -06:00

21 lines
511 B
JavaScript

import Component from 'ember-component';
import {task, timeout} from 'ember-concurrency';
export default Component.extend({
tagName: '',
showSpinner: false,
// ms until the loader is displayed,
// prevents unnecessary flash of spinner
slowLoadTimeout: 200,
startSpinnerTimeout: task(function* () {
yield timeout(this.get('slowLoadTimeout'));
this.set('showSpinner', true);
}),
didInsertElement() {
this.get('startSpinnerTimeout').perform();
}
});