@star-ai/star-ui 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +167 -0
- package/lib/components/Button/Button.vue +325 -0
- package/lib/components/Button/index.js +8 -0
- package/lib/components/Input/Input.vue +404 -0
- package/lib/components/Input/index.js +8 -0
- package/lib/index.js +28 -0
- package/lib/styles/index.scss +102 -0
- package/lib/styles/mixins.scss +84 -0
- package/lib/styles/variables.scss +64 -0
- package/package.json +132 -0
- package/packages/components/Button/Button.vue +325 -0
- package/packages/components/Button/index.js +8 -0
- package/packages/components/Input/Input.vue +404 -0
- package/packages/components/Input/index.js +7 -0
- package/packages/index.js +64 -0
- package/packages/styles/index.scss +102 -0
- package/packages/styles/mixins.scss +84 -0
- package/packages/styles/variables.scss +64 -0
package/package.json
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@star-ai/star-ui",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "基于Uniapp的Vue2组件库",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"lib",
|
|
8
|
+
"packages"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"serve": "npm run dev:h5",
|
|
12
|
+
"build:lib": "node build/build.js",
|
|
13
|
+
"build": "npm run build:h5",
|
|
14
|
+
"build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build",
|
|
15
|
+
"build:custom": "cross-env NODE_ENV=production uniapp-cli custom",
|
|
16
|
+
"build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",
|
|
17
|
+
"build:mp-360": "cross-env NODE_ENV=production UNI_PLATFORM=mp-360 vue-cli-service uni-build",
|
|
18
|
+
"build:mp-alipay": "cross-env NODE_ENV=production UNI_PLATFORM=mp-alipay vue-cli-service uni-build",
|
|
19
|
+
"build:mp-baidu": "cross-env NODE_ENV=production UNI_PLATFORM=mp-baidu vue-cli-service uni-build",
|
|
20
|
+
"build:mp-harmony": "cross-env NODE_ENV=production UNI_PLATFORM=mp-harmony vue-cli-service uni-build",
|
|
21
|
+
"build:mp-jd": "cross-env NODE_ENV=production UNI_PLATFORM=mp-jd vue-cli-service uni-build",
|
|
22
|
+
"build:mp-kuaishou": "cross-env NODE_ENV=production UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build",
|
|
23
|
+
"build:mp-lark": "cross-env NODE_ENV=production UNI_PLATFORM=mp-lark vue-cli-service uni-build",
|
|
24
|
+
"build:mp-qq": "cross-env NODE_ENV=production UNI_PLATFORM=mp-qq vue-cli-service uni-build",
|
|
25
|
+
"build:mp-toutiao": "cross-env NODE_ENV=production UNI_PLATFORM=mp-toutiao vue-cli-service uni-build",
|
|
26
|
+
"build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
|
|
27
|
+
"build:mp-xhs": "cross-env NODE_ENV=production UNI_PLATFORM=mp-xhs vue-cli-service uni-build",
|
|
28
|
+
"build:quickapp-native": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-native vue-cli-service uni-build",
|
|
29
|
+
"build:quickapp-webview": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview vue-cli-service uni-build",
|
|
30
|
+
"build:quickapp-webview-huawei": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build",
|
|
31
|
+
"build:quickapp-webview-union": "cross-env NODE_ENV=production UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build",
|
|
32
|
+
"dev:app-plus": "cross-env NODE_ENV=development UNI_PLATFORM=app-plus vue-cli-service uni-build --watch",
|
|
33
|
+
"dev:custom": "cross-env NODE_ENV=development uniapp-cli custom",
|
|
34
|
+
"dev:h5": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
|
|
35
|
+
"dev:mp-360": "cross-env NODE_ENV=development UNI_PLATFORM=mp-360 vue-cli-service uni-build --watch",
|
|
36
|
+
"dev:mp-alipay": "cross-env NODE_ENV=development UNI_PLATFORM=mp-alipay vue-cli-service uni-build --watch",
|
|
37
|
+
"dev:mp-baidu": "cross-env NODE_ENV=development UNI_PLATFORM=mp-baidu vue-cli-service uni-build --watch",
|
|
38
|
+
"dev:mp-harmony": "cross-env NODE_ENV=development UNI_PLATFORM=mp-harmony vue-cli-service uni-build --watch",
|
|
39
|
+
"dev:mp-jd": "cross-env NODE_ENV=development UNI_PLATFORM=mp-jd vue-cli-service uni-build --watch",
|
|
40
|
+
"dev:mp-kuaishou": "cross-env NODE_ENV=development UNI_PLATFORM=mp-kuaishou vue-cli-service uni-build --watch",
|
|
41
|
+
"dev:mp-lark": "cross-env NODE_ENV=development UNI_PLATFORM=mp-lark vue-cli-service uni-build --watch",
|
|
42
|
+
"dev:mp-qq": "cross-env NODE_ENV=development UNI_PLATFORM=mp-qq vue-cli-service uni-build --watch",
|
|
43
|
+
"dev:mp-toutiao": "cross-env NODE_ENV=development UNI_PLATFORM=mp-toutiao vue-cli-service uni-build --watch",
|
|
44
|
+
"dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",
|
|
45
|
+
"dev:mp-xhs": "cross-env NODE_ENV=development UNI_PLATFORM=mp-xhs vue-cli-service uni-build --watch",
|
|
46
|
+
"dev:quickapp-native": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-native vue-cli-service uni-build --watch",
|
|
47
|
+
"dev:quickapp-webview": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview vue-cli-service uni-build --watch",
|
|
48
|
+
"dev:quickapp-webview-huawei": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-huawei vue-cli-service uni-build --watch",
|
|
49
|
+
"dev:quickapp-webview-union": "cross-env NODE_ENV=development UNI_PLATFORM=quickapp-webview-union vue-cli-service uni-build --watch",
|
|
50
|
+
"info": "node node_modules/@dcloudio/vue-cli-plugin-uni/commands/info.js",
|
|
51
|
+
"serve:quickapp-native": "node node_modules/@dcloudio/uni-quickapp-native/bin/serve.js",
|
|
52
|
+
"test:android": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=android jest -i",
|
|
53
|
+
"test:h5": "cross-env UNI_PLATFORM=h5 jest -i",
|
|
54
|
+
"test:ios": "cross-env UNI_PLATFORM=app-plus UNI_OS_NAME=ios jest -i",
|
|
55
|
+
"test:mp-baidu": "cross-env UNI_PLATFORM=mp-baidu jest -i",
|
|
56
|
+
"test:mp-weixin": "cross-env UNI_PLATFORM=mp-weixin jest -i"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@dcloudio/uni-app": "^2.0.2-4080720251210002",
|
|
60
|
+
"@dcloudio/uni-app-plus": "^2.0.2-4080720251210002",
|
|
61
|
+
"@dcloudio/uni-h5": "^2.0.2-4080720251210002",
|
|
62
|
+
"@dcloudio/uni-i18n": "^2.0.2-4080720251210002",
|
|
63
|
+
"@dcloudio/uni-mp-360": "^2.0.2-4080720251210002",
|
|
64
|
+
"@dcloudio/uni-mp-alipay": "^2.0.2-4080720251210002",
|
|
65
|
+
"@dcloudio/uni-mp-baidu": "^2.0.2-4080720251210002",
|
|
66
|
+
"@dcloudio/uni-mp-harmony": "^2.0.2-4080720251210002",
|
|
67
|
+
"@dcloudio/uni-mp-jd": "^2.0.2-4080720251210002",
|
|
68
|
+
"@dcloudio/uni-mp-kuaishou": "^2.0.2-4080720251210002",
|
|
69
|
+
"@dcloudio/uni-mp-lark": "^2.0.2-4080720251210002",
|
|
70
|
+
"@dcloudio/uni-mp-qq": "^2.0.2-4080720251210002",
|
|
71
|
+
"@dcloudio/uni-mp-toutiao": "^2.0.2-4080720251210002",
|
|
72
|
+
"@dcloudio/uni-mp-vue": "^2.0.2-4080720251210002",
|
|
73
|
+
"@dcloudio/uni-mp-weixin": "^2.0.2-4080720251210002",
|
|
74
|
+
"@dcloudio/uni-mp-xhs": "^2.0.2-4080720251210002",
|
|
75
|
+
"@dcloudio/uni-quickapp-native": "^2.0.2-4080720251210002",
|
|
76
|
+
"@dcloudio/uni-quickapp-webview": "^2.0.2-4080720251210002",
|
|
77
|
+
"@dcloudio/uni-stacktracey": "^2.0.2-4080720251210002",
|
|
78
|
+
"@dcloudio/uni-stat": "^2.0.2-4080720251210002",
|
|
79
|
+
"@vue/shared": "^3.0.0",
|
|
80
|
+
"core-js": "^3.8.3",
|
|
81
|
+
"flyio": "^0.6.2",
|
|
82
|
+
"vue": ">= 2.6.14 < 2.7",
|
|
83
|
+
"vuex": "^3.2.0"
|
|
84
|
+
},
|
|
85
|
+
"devDependencies": {
|
|
86
|
+
"@dcloudio/types": "^3.3.2",
|
|
87
|
+
"@dcloudio/uni-automator": "^2.0.2-4080720251210002",
|
|
88
|
+
"@dcloudio/uni-cli-i18n": "^2.0.2-4080720251210002",
|
|
89
|
+
"@dcloudio/uni-cli-shared": "^2.0.2-4080720251210002",
|
|
90
|
+
"@dcloudio/uni-helper-json": "*",
|
|
91
|
+
"@dcloudio/uni-migration": "^2.0.2-4080720251210002",
|
|
92
|
+
"@dcloudio/uni-template-compiler": "^2.0.2-4080720251210002",
|
|
93
|
+
"@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.2-4080720251210002",
|
|
94
|
+
"@dcloudio/vue-cli-plugin-uni": "^2.0.2-4080720251210002",
|
|
95
|
+
"@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.2-4080720251210002",
|
|
96
|
+
"@dcloudio/webpack-uni-mp-loader": "^2.0.2-4080720251210002",
|
|
97
|
+
"@dcloudio/webpack-uni-pages-loader": "^2.0.2-4080720251210002",
|
|
98
|
+
"@vue/cli-plugin-babel": "~5.0.0",
|
|
99
|
+
"@vue/cli-service": "~5.0.0",
|
|
100
|
+
"babel-plugin-import": "^1.11.0",
|
|
101
|
+
"cross-env": "^7.0.2",
|
|
102
|
+
"jest": "^25.4.0",
|
|
103
|
+
"postcss-comment": "^2.0.0",
|
|
104
|
+
"sass": "^1.97.1",
|
|
105
|
+
"sass-loader": "10",
|
|
106
|
+
"vue-template-compiler": ">= 2.6.14 < 2.7"
|
|
107
|
+
},
|
|
108
|
+
"browserslist": [
|
|
109
|
+
"Android >= 4.4",
|
|
110
|
+
"ios >= 9"
|
|
111
|
+
],
|
|
112
|
+
"keywords": [
|
|
113
|
+
"uniapp",
|
|
114
|
+
"vue2",
|
|
115
|
+
"component",
|
|
116
|
+
"ui",
|
|
117
|
+
"mobile"
|
|
118
|
+
],
|
|
119
|
+
"author": "DengChengBo",
|
|
120
|
+
"license": "MIT",
|
|
121
|
+
"repository": {
|
|
122
|
+
"type": "git",
|
|
123
|
+
"url": "git+https://gitee.com/chengboDeng/star-ui-library.git"
|
|
124
|
+
},
|
|
125
|
+
"bugs": {
|
|
126
|
+
"url": "https://gitee.com/chengboDeng/star-ui-library/issues"
|
|
127
|
+
},
|
|
128
|
+
"homepage": "https://gitee.com/chengboDeng/star-ui-library#readme",
|
|
129
|
+
"uni-app": {
|
|
130
|
+
"scripts": {}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view
|
|
3
|
+
class="star-button"
|
|
4
|
+
:class="[
|
|
5
|
+
`star-button--${type}`,
|
|
6
|
+
`star-button--${size}`,
|
|
7
|
+
{
|
|
8
|
+
'star-button--disabled': disabled,
|
|
9
|
+
'star-button--loading': loading,
|
|
10
|
+
'star-button--block': block,
|
|
11
|
+
'star-button--plain': plain
|
|
12
|
+
}
|
|
13
|
+
]"
|
|
14
|
+
:style="[customStyle]"
|
|
15
|
+
@click="handleClick"
|
|
16
|
+
>
|
|
17
|
+
<!-- 加载状态 -->
|
|
18
|
+
<view v-if="loading" class="star-button__loading">
|
|
19
|
+
<view class="star-button__loading-spinner"></view>
|
|
20
|
+
</view>
|
|
21
|
+
|
|
22
|
+
<!-- 图标 -->
|
|
23
|
+
<text
|
|
24
|
+
v-if="icon && !loading"
|
|
25
|
+
class="star-button__icon"
|
|
26
|
+
:class="icon"
|
|
27
|
+
></text>
|
|
28
|
+
|
|
29
|
+
<!-- 文字内容 -->
|
|
30
|
+
<text class="star-button__text">
|
|
31
|
+
<slot></slot>
|
|
32
|
+
</text>
|
|
33
|
+
|
|
34
|
+
<!-- 右侧图标 -->
|
|
35
|
+
<text
|
|
36
|
+
v-if="rightIcon && !loading"
|
|
37
|
+
class="star-button__right-icon"
|
|
38
|
+
:class="rightIcon"
|
|
39
|
+
></text>
|
|
40
|
+
</view>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<script>
|
|
44
|
+
export default {
|
|
45
|
+
name: 'StarButton',
|
|
46
|
+
|
|
47
|
+
// 组件属性定义
|
|
48
|
+
props: {
|
|
49
|
+
// 按钮类型
|
|
50
|
+
type: {
|
|
51
|
+
type: String,
|
|
52
|
+
default: 'default',
|
|
53
|
+
validator: (value) => {
|
|
54
|
+
return ['default', 'primary', 'success', 'warning', 'error', 'info'].includes(value)
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
// 按钮大小
|
|
59
|
+
size: {
|
|
60
|
+
type: String,
|
|
61
|
+
default: 'medium',
|
|
62
|
+
validator: (value) => {
|
|
63
|
+
return ['mini', 'small', 'medium', 'large'].includes(value)
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
// 是否禁用
|
|
68
|
+
disabled: {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: false
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
// 是否加载中
|
|
74
|
+
loading: {
|
|
75
|
+
type: Boolean,
|
|
76
|
+
default: false
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
// 是否为朴素按钮
|
|
80
|
+
plain: {
|
|
81
|
+
type: Boolean,
|
|
82
|
+
default: false
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
// 是否为块级按钮
|
|
86
|
+
block: {
|
|
87
|
+
type: Boolean,
|
|
88
|
+
default: false
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
// 左侧图标
|
|
92
|
+
icon: {
|
|
93
|
+
type: String,
|
|
94
|
+
default: ''
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
// 右侧图标
|
|
98
|
+
rightIcon: {
|
|
99
|
+
type: String,
|
|
100
|
+
default: ''
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
// 自定义样式
|
|
104
|
+
customStyle: {
|
|
105
|
+
type: Object,
|
|
106
|
+
default: () => ({})
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
// 点击防抖时间(毫秒)
|
|
110
|
+
debounce: {
|
|
111
|
+
type: Number,
|
|
112
|
+
default: 0
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
data() {
|
|
117
|
+
return {
|
|
118
|
+
canClick: true
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
methods: {
|
|
123
|
+
handleClick(event) {
|
|
124
|
+
// 防抖处理
|
|
125
|
+
if (!this.canClick) return
|
|
126
|
+
|
|
127
|
+
if (this.debounce > 0) {
|
|
128
|
+
this.canClick = false
|
|
129
|
+
setTimeout(() => {
|
|
130
|
+
this.canClick = true
|
|
131
|
+
}, this.debounce)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// 触发点击事件
|
|
135
|
+
if (!this.disabled && !this.loading) {
|
|
136
|
+
this.$emit('click', event)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<style lang="scss" scoped>
|
|
144
|
+
// 引入样式变量
|
|
145
|
+
@import "../../styles/variables.scss";
|
|
146
|
+
|
|
147
|
+
.star-button {
|
|
148
|
+
display: inline-flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
justify-content: center;
|
|
151
|
+
position: relative;
|
|
152
|
+
box-sizing: border-box;
|
|
153
|
+
padding: 0 16px;
|
|
154
|
+
height: 44px;
|
|
155
|
+
line-height: 44px;
|
|
156
|
+
border-radius: $border-radius-base;
|
|
157
|
+
font-size: $font-size-base;
|
|
158
|
+
font-weight: 500;
|
|
159
|
+
text-align: center;
|
|
160
|
+
vertical-align: middle;
|
|
161
|
+
transition: all 0.3s;
|
|
162
|
+
cursor: pointer;
|
|
163
|
+
user-select: none;
|
|
164
|
+
|
|
165
|
+
// 块级按钮
|
|
166
|
+
&--block {
|
|
167
|
+
display: flex;
|
|
168
|
+
width: 100%;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// 禁用状态
|
|
172
|
+
&--disabled {
|
|
173
|
+
opacity: 0.6;
|
|
174
|
+
cursor: not-allowed;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// 大小
|
|
178
|
+
&--mini {
|
|
179
|
+
padding: 0 8px;
|
|
180
|
+
height: 24px;
|
|
181
|
+
line-height: 24px;
|
|
182
|
+
font-size: $font-size-sm;
|
|
183
|
+
border-radius: $border-radius-sm;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
&--small {
|
|
187
|
+
padding: 0 12px;
|
|
188
|
+
height: 32px;
|
|
189
|
+
line-height: 32px;
|
|
190
|
+
font-size: $font-size-sm;
|
|
191
|
+
border-radius: $border-radius-sm;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
&--large {
|
|
195
|
+
padding: 0 20px;
|
|
196
|
+
height: 48px;
|
|
197
|
+
line-height: 48px;
|
|
198
|
+
font-size: $font-size-lg;
|
|
199
|
+
border-radius: $border-radius-lg;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// 类型 - 默认
|
|
203
|
+
&--default {
|
|
204
|
+
color: $text-color;
|
|
205
|
+
background-color: $bg-color;
|
|
206
|
+
border: 1px solid $border-color;
|
|
207
|
+
|
|
208
|
+
&:not(.star-button--disabled):not(.star-button--loading):active {
|
|
209
|
+
background-color: darken($bg-color, 5%);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// 类型 - 主要
|
|
214
|
+
&--primary {
|
|
215
|
+
color: $white;
|
|
216
|
+
background-color: $primary-color;
|
|
217
|
+
border: 1px solid $primary-color;
|
|
218
|
+
|
|
219
|
+
&.star-button--plain {
|
|
220
|
+
color: $primary-color;
|
|
221
|
+
background-color: transparent;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
&:not(.star-button--disabled):not(.star-button--loading):active {
|
|
225
|
+
background-color: darken($primary-color, 10%);
|
|
226
|
+
border-color: darken($primary-color, 10%);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// 类型 - 成功
|
|
231
|
+
&--success {
|
|
232
|
+
color: $white;
|
|
233
|
+
background-color: $success-color;
|
|
234
|
+
border: 1px solid $success-color;
|
|
235
|
+
|
|
236
|
+
&.star-button--plain {
|
|
237
|
+
color: $success-color;
|
|
238
|
+
background-color: transparent;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// 类型 - 警告
|
|
243
|
+
&--warning {
|
|
244
|
+
color: $white;
|
|
245
|
+
background-color: $warning-color;
|
|
246
|
+
border: 1px solid $warning-color;
|
|
247
|
+
|
|
248
|
+
&.star-button--plain {
|
|
249
|
+
color: $warning-color;
|
|
250
|
+
background-color: transparent;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// 类型 - 错误
|
|
255
|
+
&--error {
|
|
256
|
+
color: $white;
|
|
257
|
+
background-color: $error-color;
|
|
258
|
+
border: 1px solid $error-color;
|
|
259
|
+
|
|
260
|
+
&.star-button--plain {
|
|
261
|
+
color: $error-color;
|
|
262
|
+
background-color: transparent;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// 类型 - 信息
|
|
267
|
+
&--info {
|
|
268
|
+
color: $white;
|
|
269
|
+
background-color: $info-color;
|
|
270
|
+
border: 1px solid $info-color;
|
|
271
|
+
|
|
272
|
+
&.star-button--plain {
|
|
273
|
+
color: $info-color;
|
|
274
|
+
background-color: transparent;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// 加载中
|
|
279
|
+
&--loading {
|
|
280
|
+
cursor: not-allowed;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// 图标
|
|
284
|
+
&__icon,
|
|
285
|
+
&__right-icon {
|
|
286
|
+
font-family: "star-icon-font" !important; // 使用你自己的图标字体
|
|
287
|
+
margin-right: 4px;
|
|
288
|
+
font-size: inherit;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
&__right-icon {
|
|
292
|
+
margin-right: 0;
|
|
293
|
+
margin-left: 4px;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
&__text {
|
|
297
|
+
display: inline-block;
|
|
298
|
+
vertical-align: middle;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// 加载动画
|
|
302
|
+
&__loading {
|
|
303
|
+
margin-right: 4px;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
&__loading-spinner {
|
|
307
|
+
display: inline-block;
|
|
308
|
+
width: 14px;
|
|
309
|
+
height: 14px;
|
|
310
|
+
border: 2px solid;
|
|
311
|
+
border-color: currentColor transparent transparent transparent;
|
|
312
|
+
border-radius: 50%;
|
|
313
|
+
animation: star-button-spin 1s linear infinite;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
@keyframes star-button-spin {
|
|
318
|
+
0% {
|
|
319
|
+
transform: rotate(0deg);
|
|
320
|
+
}
|
|
321
|
+
100% {
|
|
322
|
+
transform: rotate(360deg);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
</style>
|