mirror of
https://gitee.com/ElemeFE/element.git
synced 2024-12-02 12:18:46 +08:00
Merge pull request #1039 from Leopoldthecoder/loading-css
Loading: remove unnecessary inline styles
This commit is contained in:
commit
9c5a713ff1
@ -1,4 +1,5 @@
|
||||
import Vue from 'vue';
|
||||
import { addClass, removeClass } from 'wind-dom/src/class';
|
||||
let Spinner = Vue.extend(require('./spinner.vue'));
|
||||
|
||||
exports.install = Vue => {
|
||||
@ -9,14 +10,14 @@ exports.install = Vue => {
|
||||
el.originalPosition = document.body.style.position;
|
||||
el.originalOverflow = document.body.style.overflow;
|
||||
|
||||
['top', 'right', 'bottom', 'left'].forEach(property => {
|
||||
el.maskStyle[property] = '0';
|
||||
});
|
||||
el.maskStyle.position = 'fixed';
|
||||
el.spinnerStyle.position = 'fixed';
|
||||
addClass(el.mask, 'is-fullscreen');
|
||||
addClass(el.spinner, 'is-fullscreen');
|
||||
|
||||
insertDom(document.body, el, binding);
|
||||
} else {
|
||||
removeClass(el.mask, 'is-fullscreen');
|
||||
removeClass(el.spinner, 'is-fullscreen');
|
||||
|
||||
if (binding.modifiers.body) {
|
||||
el.originalPosition = document.body.style.position;
|
||||
|
||||
@ -31,11 +32,6 @@ exports.install = Vue => {
|
||||
insertDom(document.body, el, binding);
|
||||
} else {
|
||||
el.originalPosition = el.style.position;
|
||||
|
||||
['top', 'right', 'bottom', 'left'].forEach(property => {
|
||||
el.maskStyle[property] = '0';
|
||||
});
|
||||
|
||||
insertDom(el, el, binding);
|
||||
}
|
||||
}
|
||||
@ -63,10 +59,6 @@ exports.install = Vue => {
|
||||
directive.mask.style[property] = directive.maskStyle[property];
|
||||
});
|
||||
|
||||
Object.keys(directive.spinnerStyle).forEach(property => {
|
||||
directive.spinner.style[property] = directive.spinnerStyle[property];
|
||||
});
|
||||
|
||||
if (directive.originalPosition !== 'absolute') {
|
||||
parent.style.position = 'relative';
|
||||
}
|
||||
@ -87,12 +79,7 @@ exports.install = Vue => {
|
||||
bind: function(el, binding) {
|
||||
el.mask = document.createElement('div');
|
||||
el.mask.className = 'el-loading-mask';
|
||||
el.maskStyle = {
|
||||
position: 'absolute',
|
||||
zIndex: '10000',
|
||||
backgroundColor: 'rgba(255, 255, 255, .9)',
|
||||
margin: '0'
|
||||
};
|
||||
el.maskStyle = {};
|
||||
|
||||
let spinner = new Spinner({
|
||||
data: {
|
||||
@ -102,9 +89,6 @@ exports.install = Vue => {
|
||||
});
|
||||
spinner.$mount(el.mask);
|
||||
el.spinner = spinner.$el;
|
||||
el.spinnerStyle = {
|
||||
position: 'absolute'
|
||||
};
|
||||
toggleLoading(el, binding);
|
||||
},
|
||||
|
||||
|
@ -1,37 +1,59 @@
|
||||
@charset "UTF-8";
|
||||
@import "./common/var.css";
|
||||
|
||||
.el-loading-spinner {
|
||||
top: 50%;
|
||||
margin-top: calc(- var(--loading-spinner-size) / 2);
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
@component-namespace el {
|
||||
@b loading-mask {
|
||||
position: absolute;
|
||||
z-index: 10000;
|
||||
background-color: rgba(255, 255, 255, .9);
|
||||
margin: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
||||
.el-loading-text {
|
||||
color: var(--color-primary);
|
||||
margin: 3px 0;
|
||||
font-size: 14px;
|
||||
@when fullscreen {
|
||||
position: fixed;
|
||||
}
|
||||
}
|
||||
|
||||
.circular {
|
||||
width: var(--loading-spinner-size);
|
||||
animation: rotate 2s linear infinite;
|
||||
}
|
||||
@b loading-spinner {
|
||||
top: 50%;
|
||||
margin-top: calc(- var(--loading-spinner-size) / 2);
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
|
||||
.path {
|
||||
stroke-dasharray: 1, 100;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-width: 2;
|
||||
stroke: var(--color-primary);
|
||||
animation: dash 1.5s ease-in-out infinite;
|
||||
stroke-linecap: round;
|
||||
}
|
||||
@when fullscreen {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
@when full-screen {
|
||||
margin-top: calc(- var(--loading-fullscreen-spinner-size) / 2);
|
||||
.el-loading-text {
|
||||
color: var(--color-primary);
|
||||
margin: 3px 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.circular {
|
||||
width: var(--loading-fullscreen-spinner-size);
|
||||
width: var(--loading-spinner-size);
|
||||
animation: rotate 2s linear infinite;
|
||||
}
|
||||
|
||||
.path {
|
||||
animation: dash 1.5s ease-in-out infinite;
|
||||
stroke-dasharray: 1, 100;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-width: 2;
|
||||
stroke: var(--color-primary);
|
||||
stroke-linecap: round;
|
||||
}
|
||||
|
||||
@when full-screen {
|
||||
margin-top: calc(- var(--loading-fullscreen-spinner-size) / 2);
|
||||
|
||||
.circular {
|
||||
width: var(--loading-fullscreen-spinner-size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -106,9 +106,7 @@ describe('Loading', () => {
|
||||
Vue.nextTick(() => {
|
||||
const mask = document.querySelector('.el-loading-mask');
|
||||
expect(mask.parentNode === document.body).to.true;
|
||||
expect(mask.style.left).to.equal('0px');
|
||||
expect(mask.style.right).to.equal('0px');
|
||||
expect(mask.style.position).to.equal('fixed');
|
||||
expect(mask.classList.contains('is-fullscreen')).to.true;
|
||||
vm.loading = false;
|
||||
document.body.removeChild(mask);
|
||||
document.body.removeChild(vm.$el);
|
||||
|
Loading…
Reference in New Issue
Block a user