Merge pull request #5067 from terite/terite-loading-typescript
Migrate loading/loading to TypeScript
This commit is contained in:
commit
972715450d
4 changed files with 47 additions and 85 deletions
|
@ -1,79 +0,0 @@
|
||||||
import './loading.scss';
|
|
||||||
|
|
||||||
let loadingElem;
|
|
||||||
let layer1;
|
|
||||||
let layer2;
|
|
||||||
let layer3;
|
|
||||||
let layer4;
|
|
||||||
let circleLefts;
|
|
||||||
let circleRights;
|
|
||||||
|
|
||||||
export function show() {
|
|
||||||
let elem = loadingElem;
|
|
||||||
|
|
||||||
if (!elem) {
|
|
||||||
elem = document.createElement('div');
|
|
||||||
elem.setAttribute('dir', 'ltr');
|
|
||||||
loadingElem = elem;
|
|
||||||
|
|
||||||
elem.classList.add('docspinner');
|
|
||||||
elem.classList.add('mdl-spinner');
|
|
||||||
|
|
||||||
elem.innerHTML = '<div class="mdl-spinner__layer mdl-spinner__layer-1"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-2"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-3"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-4"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div>';
|
|
||||||
|
|
||||||
document.body.appendChild(elem);
|
|
||||||
|
|
||||||
layer1 = elem.querySelector('.mdl-spinner__layer-1');
|
|
||||||
layer2 = elem.querySelector('.mdl-spinner__layer-2');
|
|
||||||
layer3 = elem.querySelector('.mdl-spinner__layer-3');
|
|
||||||
layer4 = elem.querySelector('.mdl-spinner__layer-4');
|
|
||||||
|
|
||||||
circleLefts = elem.querySelectorAll('.mdl-spinner__circleLeft');
|
|
||||||
circleRights = elem.querySelectorAll('.mdl-spinner__circleRight');
|
|
||||||
}
|
|
||||||
|
|
||||||
elem.classList.add('mdlSpinnerActive');
|
|
||||||
|
|
||||||
layer1.classList.add('mdl-spinner__layer-1-active');
|
|
||||||
layer2.classList.add('mdl-spinner__layer-2-active');
|
|
||||||
layer3.classList.add('mdl-spinner__layer-3-active');
|
|
||||||
layer4.classList.add('mdl-spinner__layer-4-active');
|
|
||||||
|
|
||||||
for (let i = 0, length = circleLefts.length; i < length; i++) {
|
|
||||||
circleLefts[i].classList.add('mdl-spinner__circleLeft-active');
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0, length = circleRights.length; i < length; i++) {
|
|
||||||
circleRights[i].classList.add('mdl-spinner__circleRight-active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function hide() {
|
|
||||||
const elem = loadingElem;
|
|
||||||
|
|
||||||
if (elem) {
|
|
||||||
elem.classList.remove('mdlSpinnerActive');
|
|
||||||
|
|
||||||
elem.classList.remove('mdl-spinner__layer-1-active');
|
|
||||||
elem.classList.remove('mdl-spinner__layer-2-active');
|
|
||||||
elem.classList.remove('mdl-spinner__layer-3-active');
|
|
||||||
elem.classList.remove('mdl-spinner__layer-4-active');
|
|
||||||
|
|
||||||
for (let i = 0, length = circleLefts.length; i < length; i++) {
|
|
||||||
circleLefts[i].classList.remove('mdl-spinner__circleLeft-active');
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0, length = circleRights.length; i < length; i++) {
|
|
||||||
circleRights[i].classList.remove('mdl-spinner__circleRight-active');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const loading = {
|
|
||||||
show,
|
|
||||||
hide
|
|
||||||
};
|
|
||||||
|
|
||||||
window.Loading = loading;
|
|
||||||
|
|
||||||
export default loading;
|
|
|
@ -27,7 +27,7 @@
|
||||||
border-color: #00a4dc;
|
border-color: #00a4dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__layer-1-active {
|
.mdlSpinnerActive .mdl-spinner__layer-1 {
|
||||||
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
border-color: #00a4dc;
|
border-color: #00a4dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__layer-2-active {
|
.mdlSpinnerActive .mdl-spinner__layer-2 {
|
||||||
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
border-color: #00a4dc;
|
border-color: #00a4dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__layer-3-active {
|
.mdlSpinnerActive .mdl-spinner__layer-3 {
|
||||||
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
border-color: #00a4dc;
|
border-color: #00a4dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__layer-4-active {
|
.mdlSpinnerActive .mdl-spinner__layer-4 {
|
||||||
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@
|
||||||
transform: rotate(129deg);
|
transform: rotate(129deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__circleLeft-active {
|
.mdlSpinnerActive .mdl-spinner__circleLeft {
|
||||||
animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@
|
||||||
transform: rotate(-129deg);
|
transform: rotate(-129deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mdl-spinner__circleRight-active {
|
.mdlSpinnerActive .mdl-spinner__circleRight {
|
||||||
animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
37
src/components/loading/loading.ts
Normal file
37
src/components/loading/loading.ts
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import './loading.scss';
|
||||||
|
|
||||||
|
let loader: HTMLDivElement | undefined;
|
||||||
|
|
||||||
|
function createLoader(): HTMLDivElement {
|
||||||
|
const elem = document.createElement('div');
|
||||||
|
elem.setAttribute('dir', 'ltr');
|
||||||
|
elem.classList.add('docspinner');
|
||||||
|
elem.classList.add('mdl-spinner');
|
||||||
|
|
||||||
|
elem.innerHTML = '<div class="mdl-spinner__layer mdl-spinner__layer-1"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-2"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-3"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div><div class="mdl-spinner__layer mdl-spinner__layer-4"><div class="mdl-spinner__circle-clipper mdl-spinner__left"><div class="mdl-spinner__circle mdl-spinner__circleLeft"></div></div><div class="mdl-spinner__circle-clipper mdl-spinner__right"><div class="mdl-spinner__circle mdl-spinner__circleRight"></div></div></div>';
|
||||||
|
|
||||||
|
document.body.appendChild(elem);
|
||||||
|
return elem;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function show() {
|
||||||
|
if (!loader) {
|
||||||
|
loader = createLoader();
|
||||||
|
}
|
||||||
|
loader.classList.add('mdlSpinnerActive');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function hide() {
|
||||||
|
if (loader) {
|
||||||
|
loader.classList.remove('mdlSpinnerActive');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const loading = {
|
||||||
|
show,
|
||||||
|
hide
|
||||||
|
};
|
||||||
|
|
||||||
|
window.Loading = loading;
|
||||||
|
|
||||||
|
export default loading;
|
4
src/global.d.ts
vendored
4
src/global.d.ts
vendored
|
@ -5,6 +5,10 @@ export declare global {
|
||||||
ApiClient: ApiClient;
|
ApiClient: ApiClient;
|
||||||
Events: Events;
|
Events: Events;
|
||||||
NativeShell: any;
|
NativeShell: any;
|
||||||
|
Loading: {
|
||||||
|
show();
|
||||||
|
hide();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DocumentEventMap {
|
interface DocumentEventMap {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue