mirror of
https://github.com/tusen-ai/naive-ui.git
synced 2025-02-11 13:10:26 +08:00
feat(spin):css in js
This commit is contained in:
parent
c24f475536
commit
56492a5112
@ -1,8 +0,0 @@
|
|||||||
/* istanbul ignore file */
|
|
||||||
import Spin from './src/main.vue'
|
|
||||||
|
|
||||||
Spin.install = function (Vue) {
|
|
||||||
Vue.component(Spin.name, Spin)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Spin
|
|
@ -27,7 +27,6 @@
|
|||||||
@import './Timeline.scss';
|
@import './Timeline.scss';
|
||||||
@import './Popconfirm.scss';
|
@import './Popconfirm.scss';
|
||||||
@import './Popselect.scss';
|
@import './Popselect.scss';
|
||||||
@import './Spin.scss';
|
|
||||||
@import './Slider.scss';
|
@import './Slider.scss';
|
||||||
@import './Tree.scss';
|
@import './Tree.scss';
|
||||||
@import './Grid.scss';
|
@import './Grid.scss';
|
||||||
|
@ -52,7 +52,7 @@ import Result from './result'
|
|||||||
import Select from './select'
|
import Select from './select'
|
||||||
import Scrollbar from './scrollbar'
|
import Scrollbar from './scrollbar'
|
||||||
import Slider from './Slider'
|
import Slider from './Slider'
|
||||||
import Spin from './Spin'
|
import Spin from './spin'
|
||||||
import Statistic from './Statistic'
|
import Statistic from './Statistic'
|
||||||
import Steps from './steps'
|
import Steps from './steps'
|
||||||
import Switch from './Switch'
|
import Switch from './Switch'
|
||||||
@ -160,6 +160,8 @@ import cascaderLightStyle from './cascader/styles/light'
|
|||||||
import cascaderDarkStyle from './cascader/styles/dark'
|
import cascaderDarkStyle from './cascader/styles/dark'
|
||||||
import checkboxLightStyle from './checkbox/styles/light'
|
import checkboxLightStyle from './checkbox/styles/light'
|
||||||
import checkboxDarkStyle from './checkbox/styles/dark'
|
import checkboxDarkStyle from './checkbox/styles/dark'
|
||||||
|
import spinDarkStyle from './spin/styles/dark'
|
||||||
|
import spinLightStyle from './spin/styles/light'
|
||||||
|
|
||||||
// Can be remove after refactoring
|
// Can be remove after refactoring
|
||||||
import baseSelectionLightStyle from './_base/selection/styles/light'
|
import baseSelectionLightStyle from './_base/selection/styles/light'
|
||||||
@ -349,6 +351,8 @@ export default create({
|
|||||||
cascaderDarkStyle,
|
cascaderDarkStyle,
|
||||||
checkboxDarkStyle,
|
checkboxDarkStyle,
|
||||||
checkboxLightStyle,
|
checkboxLightStyle,
|
||||||
|
spinDarkStyle,
|
||||||
|
spinLightStyle,
|
||||||
// Can be remove after refactoring
|
// Can be remove after refactoring
|
||||||
baseSelectionLightStyle,
|
baseSelectionLightStyle,
|
||||||
baseSelectionDarkStyle
|
baseSelectionDarkStyle
|
||||||
|
8
src/spin/index.js
Normal file
8
src/spin/index.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* istanbul ignore file */
|
||||||
|
import Spin from './src/Spin.vue'
|
||||||
|
|
||||||
|
Spin.install = function (Vue, naive) {
|
||||||
|
Vue.component(naive.componentPrefix + Spin.name, Spin)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Spin
|
@ -44,6 +44,8 @@
|
|||||||
import NBaseLoading from '../../_base/loading'
|
import NBaseLoading from '../../_base/loading'
|
||||||
import withapp from '../../_mixins/withapp'
|
import withapp from '../../_mixins/withapp'
|
||||||
import themeable from '../../_mixins/themeable'
|
import themeable from '../../_mixins/themeable'
|
||||||
|
import usecssr from '../../_mixins/usecssr'
|
||||||
|
import styles from './styles'
|
||||||
|
|
||||||
const STROKE_WIDTH = {
|
const STROKE_WIDTH = {
|
||||||
small: 22,
|
small: 22,
|
||||||
@ -55,11 +57,15 @@ const STROKE_WIDTH = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'NSpin',
|
name: 'Spin',
|
||||||
components: {
|
components: {
|
||||||
NBaseLoading
|
NBaseLoading
|
||||||
},
|
},
|
||||||
mixins: [ withapp, themeable ],
|
mixins: [
|
||||||
|
withapp,
|
||||||
|
themeable,
|
||||||
|
usecssr(styles)
|
||||||
|
],
|
||||||
props: {
|
props: {
|
||||||
stroke: {
|
stroke: {
|
||||||
type: String,
|
type: String,
|
15
src/spin/src/styles/index.js
Normal file
15
src/spin/src/styles/index.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import baseStyle from './themed-base.cssr.js'
|
||||||
|
import sizeStyle from './themed-size.cssr.js'
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
key: 'syntheticTheme',
|
||||||
|
watch: ['syntheticTheme'],
|
||||||
|
CNode: baseStyle
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'size',
|
||||||
|
watch: ['size'],
|
||||||
|
CNode: sizeStyle
|
||||||
|
}
|
||||||
|
]
|
44
src/spin/src/styles/themed-base.cssr.js
Normal file
44
src/spin/src/styles/themed-base.cssr.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import { c, cM, cTB, cB } from '../../../_utils/cssr'
|
||||||
|
import fadeInTransition from '../../../styles/_transitions/fade-in'
|
||||||
|
|
||||||
|
export default c([
|
||||||
|
({ props }) => {
|
||||||
|
const {
|
||||||
|
easeInOutCubicBezier
|
||||||
|
} = props.$base
|
||||||
|
const {
|
||||||
|
spinSpinningOpacity
|
||||||
|
} = props.$local
|
||||||
|
return cTB('spin-container', {
|
||||||
|
raw: `
|
||||||
|
position: relative;
|
||||||
|
`
|
||||||
|
}, [
|
||||||
|
cB('spin', {
|
||||||
|
raw: `
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%) translateY(-50%);
|
||||||
|
`
|
||||||
|
}, [
|
||||||
|
fadeInTransition()
|
||||||
|
]
|
||||||
|
),
|
||||||
|
cB('spin-content', {
|
||||||
|
raw: `
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity .3s ${easeInOutCubicBezier};
|
||||||
|
pointer-events: all;
|
||||||
|
`
|
||||||
|
}, [
|
||||||
|
cM('spinning', {
|
||||||
|
raw: `
|
||||||
|
pointer-events: none;
|
||||||
|
`,
|
||||||
|
opacity: spinSpinningOpacity
|
||||||
|
})
|
||||||
|
])
|
||||||
|
])
|
||||||
|
}
|
||||||
|
])
|
19
src/spin/src/styles/themed-size.cssr.js
Normal file
19
src/spin/src/styles/themed-size.cssr.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { c, cM, cB } from '../../../_utils/cssr'
|
||||||
|
|
||||||
|
export default c([
|
||||||
|
({ props }) => {
|
||||||
|
const { size } = props.$instance
|
||||||
|
const height = props.$local.height[size]
|
||||||
|
const width = props.$local.width[size]
|
||||||
|
return cB('spin', {
|
||||||
|
raw: `
|
||||||
|
display: inline-block;
|
||||||
|
`
|
||||||
|
}, [
|
||||||
|
cM(`${size}-size`, {
|
||||||
|
height,
|
||||||
|
width
|
||||||
|
})
|
||||||
|
])
|
||||||
|
}
|
||||||
|
])
|
18
src/spin/styles/_common.js
Normal file
18
src/spin/styles/_common.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
export default {
|
||||||
|
height: {
|
||||||
|
small: '28px',
|
||||||
|
medium: '34px',
|
||||||
|
large: '40px',
|
||||||
|
'in-small': '14px',
|
||||||
|
'in-medium': '16px',
|
||||||
|
'in-large': '18px'
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
small: '28px',
|
||||||
|
medium: '34px',
|
||||||
|
large: '40px',
|
||||||
|
'in-small': '14px',
|
||||||
|
'in-medium': '16px',
|
||||||
|
'in-large': '18px'
|
||||||
|
}
|
||||||
|
}
|
16
src/spin/styles/dark.js
Normal file
16
src/spin/styles/dark.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import create from '../../styles/_utils/create-component-base'
|
||||||
|
import sizeVariables from './_common'
|
||||||
|
|
||||||
|
export default create({
|
||||||
|
name: 'Spin',
|
||||||
|
theme: 'dark',
|
||||||
|
getDerivedVariables ({ base, derived }) {
|
||||||
|
const {
|
||||||
|
disabledOpacity
|
||||||
|
} = base
|
||||||
|
return {
|
||||||
|
...sizeVariables,
|
||||||
|
spinSpinningOpacity: disabledOpacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
16
src/spin/styles/light.js
Normal file
16
src/spin/styles/light.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import create from '../../styles/_utils/create-component-base'
|
||||||
|
import sizeVariables from './_common'
|
||||||
|
|
||||||
|
export default create({
|
||||||
|
name: 'Spin',
|
||||||
|
theme: 'light',
|
||||||
|
getDerivedVariables ({ base, derived }) {
|
||||||
|
const {
|
||||||
|
disabledOpacity
|
||||||
|
} = base
|
||||||
|
return {
|
||||||
|
...sizeVariables,
|
||||||
|
spinSpinningOpacity: disabledOpacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user