feat: 🎸 add support for loading indicator via ember-loading

This commit is contained in:
Randall Morey committed 2020-09-25 17:52:11 -04:00
1 parent 8ecee4c167
commit 0cb468f390
6 files changed
+124 -7

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
import Helper from '@ember/component/helper';
import { inject as service } from '@ember/service';
/**
* This helper returns true or false based on the state of the ember-loading
* service's `isLoading` attribute.
*/
export default class extends Helper {
// =services
@service loading;
// =methods
/**
* Returns true if "something" is loading according to ember-loading.
* @return {boolean}
*/
compute() {
return this.loading.isLoading;
}
}
+14
View File
@@ -5,6 +5,7 @@ import { getOwner } from '@ember/application';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { later } from '@ember/runloop';
import loading from 'ember-loading/decorator';
/**
* Entry route for the application.
@@ -60,11 +61,24 @@ export default class ApplicationRoute extends Route.extend(
this.session.invalidate();
}
/**
* Hooks into ember-loading to kick off loading indicator in the
* application template.
* @return {Transition} returns the transition on a passthrough basis,
* because it is a promise on which ember-loading can watch for resolution.
*/
@action
@loading
loading() {
return true;
}
/**
* Invalidates the session if a 401 error occurs and returns false to
* prevent further error handling.
* Returns true in all other cases, allowing error handling to occur (such
* as displaying the `error.hbs` template, if one exists).
* @param {Error} e
*/
@action
error(e) {
+25
View File
@@ -40,3 +40,28 @@
}
}
}
.rose-header {
position: relative;
&.loading {
&::after {
content: " ";
position: absolute;
top: 100%;
left: 0;
right: 0;
height: 3px;
background: repeating-linear-gradient(to right, #fff, #fff, var(--info), #fff, #fff);
background-size: 200% auto;
background-position: 0 100%;
animation: gradient 1s linear infinite;
@keyframes gradient {
0% { background-position: 0 0; }
100% { background-position: -200% 0; }
}
}
}
}
+1 -3
View File
@@ -4,9 +4,8 @@
<Rose::Layout::Global as |layout|>
<layout.header>
<Rose::Header as |header|>
<Rose::Header class="{{if (is-loading) " loading"}}" as |header|>
<header.brand @logo="logo-boundary" @text={{app-name}} />
{{#if this.session.isAuthenticated}}
<header.utilities as |utilities|>
<utilities.dropdown
@@ -25,7 +24,6 @@
</utilities.dropdown>
</header.utilities>
{{/if}}
</Rose::Header>
</layout.header>
+1
View File
@@ -63,6 +63,7 @@
"ember-inline-svg": "^1.0.0",
"ember-intl": "^5.1.1",
"ember-load-initializers": "^2.1.1",
"ember-loading": "^0.4.0",
"ember-maybe-import-regenerator": "^0.1.6",
"ember-modifier": "^1.0.3",
"ember-notify": "^6.0.0",
+59 -4
View File
@@ -4410,7 +4410,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
esutils "^2.0.2"
js-tokens "^3.0.2"
babel-core@^6.26.0, babel-core@^6.26.3:
babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.26.3:
version "6.26.3"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
@@ -4743,6 +4743,11 @@ babel-plugin-htmlbars-inline-precompile@^3.0.1:
resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-3.1.0.tgz#85085b50385277f2b331ebd54e22fa91aadc24e8"
integrity sha512-ar6c4YVX6OV7Dzpq7xRyllQrHwVEzJf41qysYULnD6tu6TS+y1FxT2VcEvMC6b9Rq9xoHMzvB79HO3av89JCGg==
babel-plugin-htmlbars-inline-precompile@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-htmlbars-inline-precompile/-/babel-plugin-htmlbars-inline-precompile-3.2.0.tgz#c4882ea875d0f5683f0d91c1f72e29a4f14b5606"
integrity sha512-IUeZmgs9tMUGXYu1vfke5I18yYJFldFGdNFQOWslXTnDWXzpwPih7QFduUqvT+awDpDuNtXpdt5JAf43Q1Hhzg==
babel-plugin-istanbul@^5.1.0, babel-plugin-istanbul@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
@@ -8410,7 +8415,7 @@ ember-cli-babel@7.19.0:
rimraf "^3.0.1"
semver "^5.5.0"
ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.16.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.9.2:
ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.16.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.2:
version "6.18.0"
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.18.0.tgz#3f6435fd275172edeff2b634ee7b29ce74318957"
integrity sha512-7ceC8joNYxY2wES16iIBlbPSxwKDBhYwC8drU3ZEvuPDMwVv1KzxCNu1fvxyFEBWhwaRNTUxSCsEVoTd9nosGA==
@@ -8585,6 +8590,26 @@ ember-cli-htmlbars@^4.0.0, ember-cli-htmlbars@^4.2.2:
strip-bom "^4.0.0"
walk-sync "^2.0.2"
ember-cli-htmlbars@^4.2.3:
version "4.4.0"
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-4.4.0.tgz#7ca17d5ca8f7550984346d9e6e93da0c3323f8d9"
integrity sha512-ohgctqk7dXIZR4TgN0xRoUYltWhghFJgqmtuswQTpZ7p74RxI9PKx+E8WV/95mGcPzraesvMNBg5utQNvcqgNg==
dependencies:
"@ember/edition-utils" "^1.2.0"
babel-plugin-htmlbars-inline-precompile "^3.2.0"
broccoli-debug "^0.6.5"
broccoli-persistent-filter "^2.3.1"
broccoli-plugin "^3.1.0"
common-tags "^1.8.0"
ember-cli-babel-plugin-helpers "^1.1.0"
fs-tree-diff "^2.0.1"
hash-for-dep "^1.5.1"
heimdalljs-logger "^0.1.10"
json-stable-stringify "^1.0.1"
semver "^6.3.0"
strip-bom "^4.0.0"
walk-sync "^2.0.2"
ember-cli-inject-live-reload@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.0.2.tgz#95edb543b386239d35959e5ea9579f5382976ac7"
@@ -8725,7 +8750,7 @@ ember-cli-typescript@3.0.0:
stagehand "^1.0.0"
walk-sync "^2.0.0"
ember-cli-typescript@^2.0.2:
ember-cli-typescript@^2.0.0-rc.2, ember-cli-typescript@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/ember-cli-typescript/-/ember-cli-typescript-2.0.2.tgz#464984131fbdc05655eb61d1c3cdd911d3137f0d"
integrity sha512-7I5azCTxOgRDN8aSSnJZIKSqr+MGnT+jLTUbBYqF8wu6ojs2DUnTePxUcQMcvNh3Q3B1ySv7Q/uZFSjdU9gSjA==
@@ -8918,6 +8943,16 @@ ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-co
ember-cli-version-checker "^2.1.1"
semver "^5.4.1"
ember-concurrency@^0.10.0:
version "0.10.1"
resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.10.1.tgz#aae4528540391a7278e2c193a146b5474cad5ec2"
integrity sha512-KdvR5TEfnLov4igeIZiVueFOL0kMjkabMQrioipegey+NF23SSYThc/y2rKv109D92lTAJgC6Vp7+j2RtXqD+w==
dependencies:
babel-core "^6.24.1"
ember-cli-babel "^6.8.2"
ember-compatibility-helpers "^1.2.0"
ember-maybe-import-regenerator "^0.1.5"
ember-concurrency@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-1.3.0.tgz#66f90fb792687470bcee1172adc0ebf33f5e8b9c"
@@ -8996,6 +9031,15 @@ ember-data@~3.16.0:
ember-cli-typescript "^3.1.3"
ember-inflector "^3.0.1"
ember-decorators-polyfill@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ember-decorators-polyfill/-/ember-decorators-polyfill-1.1.5.tgz#49203c302ea4486618ba4866923ec657cf2c9f3d"
integrity sha512-O154i8sLoVjsiKzSqxGRfHGr+N+drT6mRrLDbNgJCnW/V5uLg/ppZFpUsrdxuXnp5Q9us3OfXV1nX2CH+7bUpA==
dependencies:
ember-cli-babel "^7.1.2"
ember-cli-version-checker "^3.1.3"
ember-compatibility-helpers "^1.2.0"
ember-disable-prototype-extensions@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/ember-disable-prototype-extensions/-/ember-disable-prototype-extensions-1.1.3.tgz#1969135217654b5e278f9fe2d9d4e49b5720329e"
@@ -9190,7 +9234,18 @@ ember-load-initializers@^2.1.1:
ember-cli-babel "^7.11.0"
ember-cli-typescript "^2.0.2"
ember-maybe-import-regenerator@^0.1.6:
ember-loading@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/ember-loading/-/ember-loading-0.4.0.tgz#4909a6585b351c9540a26bf20ab086986b427acf"
integrity sha512-x5JDBdCc0AjoMcUyTFtO3lqZ5ye2Sn4STm0dInSYm21pOmwkHB9bxMH8vyWj9JEiLKY6+Vb6PC0WbRM/SOn31Q==
dependencies:
ember-cli-babel "^7.18.0"
ember-cli-htmlbars "^4.2.3"
ember-cli-typescript "^2.0.0-rc.2"
ember-concurrency "^0.10.0"
ember-decorators-polyfill "^1.1.5"
ember-maybe-import-regenerator@^0.1.5, ember-maybe-import-regenerator@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator/-/ember-maybe-import-regenerator-0.1.6.tgz#35d41828afa6d6a59bc0da3ce47f34c573d776ca"
integrity sha1-NdQYKK+m1qWbwNo85H80xXPXdso=